Linux 高频面试题(50道 + 详细答案)

Linux 高频面试题(50道 + 详细答案)
✅ 覆盖:基础概念、文件系统、安全加固、性能排查、常用命令、实战场景等
🎯 适用于运维工程师、后端开发、DevOps、SRE 等岗位

一、Linux 基础与概述

1. 什么是 Linux?

Linux 是一套免费、开源、类 Unix的多用户、多任务操作系统,支持多线程和多 CPU。

  • 基于 POSIX 标准
  • 继承 Unix “一切皆文件” 和 “网络为核心” 的设计思想
  • 广泛用于服务器、嵌入式、云计算等领域
💡 Web 项目几乎全部部署在 Linux 上。

2. Windows 和 Linux 的区别?

对比项WindowsLinux
授权商业闭源,需付费开源免费
用途桌面娱乐、办公服务器、开发、高性能计算
界面图形化为主,效果绚丽CLI 为主,GUI 可选
性能资源占用高轻量高效,可深度优化
安全性易受病毒攻击权限控制严格,更安全
✅ 普通用户用 Windows,开发者/运维用 Linux。

3. Unix 和 Linux 的区别?

特性UnixLinux
开源性闭源商业软件(如 AIX、Solaris)完全开源(GPL 协议)
跨平台依赖特定硬件(如 Sun SPARC)支持 x86/ARM 等多种架构
成本昂贵免费
用户群体银行、电信等大型企业个人、中小企业、互联网公司
GUI多为纯命令行支持 KDE、GNOME 等桌面环境
🌟 Linux 是 Unix 的“平民版”,功能强大且免费。

4. 什么是 Linux 内核?

内核是 Linux 系统的核心,负责:

  • 内存管理
  • 进程调度
  • 设备驱动
  • 文件系统管理
  • 系统调用接口
🔧 用户不能直接操作硬件,必须通过内核。

5. Linux 的基本组件有哪些?

  • 内核(Kernel):核心控制
  • Shell:命令解释器(如 Bash)
  • GUI(可选):图形界面(如 GNOME)
  • 系统工具lscpgrep 等
  • 应用程序:Nginx、MySQL、Docker 等

6. Linux 体系结构?

分为两大空间:

空间组件
用户空间(User Space)应用程序、C 库(glibc)
内核空间(Kernel Space)系统调用接口、内核、硬件相关代码
🔒 分离目的:保护内核安全,防止用户程序直接操作硬件。
🔄 切换方式:系统调用硬件中断

7. BASH 和 DOS 的区别?

特性BASH(Linux)DOS(Windows)
大小写区分大小写不区分
路径分隔符/ 是目录分隔符\ 是目录分隔符
转义字符\ 用于转义/ 用于参数
文件名规则无限制8.3 格式(如 FILENA~1.TXT

8. Linux 开机启动过程?

  1. BIOS 自检(POST)
  2. 加载 MBR 中的引导程序(GRUB/LILO)
  3. GRUB 加载 Linux 内核
  4. 内核初始化硬件,挂载根文件系统
  5. 启动第一个进程 init(PID=1)
  6. 根据 /etc/inittab 进入运行级别
  7. 启动服务,显示登录界面
⚙️ 现代系统多用 systemd 替代 init。

9. Linux 默认运行级别?

级别说明
0关机
1单用户模式(维护用)
2多用户,无网络
3多用户,命令行(服务器默认
4未使用
5多用户,图形界面(桌面默认)
6重启
💡 CentOS 7+ 使用 systemctl get-default 查看。

10. Linux 进程间通信(IPC)方式?

  1. 管道(pipe):匿名,父子进程通信
  2. 命名管道(FIFO):有路径,任意进程通信
  3. 信号(signal):如 kill -9
  4. 消息队列(Message Queue)
  5. 共享内存(Shared Memory):最快
  6. 信号量(Semaphore):用于同步
  7. 套接字(Socket):跨网络通信

11. 重要系统日志文件?

  • /var/log/messages:系统综合日志(最重要)
  • /var/log/secure:SSH 登录日志
  • /var/log/cron:定时任务日志
  • /var/log/maillog:邮件日志
  • /var/log/dmesg:内核启动日志
🔍 入侵排查首选 /var/log/securemessages

12. 安装多个桌面环境有帮助吗?

  • 不推荐
  • 不同桌面(KDE/GNOME/XFCE)可能冲突
  • 某些应用只兼容特定环境
  • 增加资源消耗和安全风险
✅ 服务器应禁用 GUI,桌面用户选一个即可。

13. 什么是交换空间(Swap)?

当物理内存(RAM)不足时,系统将部分内存数据临时存放到磁盘的 Swap 分区,以避免 OOM(Out of Memory)。

  • 类似 Windows 的虚拟内存
  • 速度远慢于 RAM,仅作应急
⚠️ 云服务器常关闭 Swap(如阿里云建议)。

14. 什么是 root 账户?

  • 超级管理员账户
  • UID = 0
  • 拥有系统最高权限
  • 可创建/删除用户、修改任何文件、安装软件等
🔒 生产环境应禁止 root 直接登录!

15–18. 常见术语解释

术语说明
LILO早期 Linux 引导加载器(现多用 GRUB)
BASHBourne Again Shell,Linux 默认 shell
CLI命令行界面,高效、低资源
GUI图形用户界面,易用但资源消耗大

19–20. 开源与 GNU

  • 开源优势:免费、透明、社区协作、快速迭代
  • GNU 项目:由 RMS 发起,提供自由软件生态(如 GCC、Glibc),Linux 内核 + GNU 工具 = 完整操作系统
🐧 正确称呼应为 GNU/Linux

二、文件系统与磁盘管理

21. Linux 文件系统核心思想?

“一切皆文件”(Everything is a file)
  • 普通文件、目录、设备(/dev/sda)、进程(/proc/123)都视为文件
  • 通过统一接口(open/read/write)访问

22. Linux 目录结构(FHS 标准)

目录作用
/bin基础命令(lscp
/sbin系统管理命令(ifconfigreboot
/etc配置文件
/home普通用户家目录
/rootroot 用户家目录
/usr应用程序(类似 Windows Program Files)
/opt第三方软件(如 Tomcat)
/var可变数据(日志、缓存)
/tmp临时文件
/proc虚拟文件系统,反映内核和进程状态
/dev设备文件
/lib系统库文件
/boot启动文件(内核、grub)
/mnt临时挂载点
/lost+found文件系统修复残留文件

23. 什么是 inode?

  • inode(索引节点) 存储文件的元信息:
    • 文件大小、权限、所有者、时间戳
    • 指向数据块的指针(13 个直接/间接块)
  • 文件名 ≠ inode,文件名只是目录项到 inode 的映射
🔗 删除文件 = 删除目录项,inode 和数据块在无引用时才释放。

24. 硬链接 vs 软链接(符号链接)

特性硬链接软链接
inode与原文件相同新建 inode
跨分区❌ 不支持✅ 支持
目录链接❌ 仅 root 可创建✅ 支持
原文件删除数据仍存在(链接数 > 0)链接失效(悬空)
命令ln file linkln -s file link
✅ 实际多用软链接(灵活、安全)。

25. RAID 是什么?

RAID(独立磁盘冗余阵列):将多个硬盘组合成逻辑卷,提升性能或可靠性。

级别特点
RAID 0条带化,高性能,无冗余
RAID 1镜像,高可靠,容量减半
RAID 5条带+奇偶校验,兼顾性能与容错(坏1块盘可恢复)
RAID 10RAID 1+0,高性能+高可靠,成本高
☁️ 云环境多用云盘(自动三副本),无需手动 RAID。

三、安全加固

26. Linux 初始化后安全措施?

  1. 禁用 root 登录,创建普通用户 + sudo
  2. 修改 SSH 端口(如 22 → 22222)
  3. 启用密钥登录,禁用密码认证
  4. 配置防火墙iptables / firewalld
  5. 关闭 SELinux(或设为 permissive)
  6. 安装 fail2ban 防暴力破解
  7. 限制 IP 访问(仅允许可信 IP 登录)
  8. 最小权限原则:Web 服务用 www 用户运行
  9. 定期更新系统yum update

27. CC 攻击 vs DDOS 攻击?

攻击类型原理防御
CC 攻击模拟大量用户请求动态页面(如登录接口)WAF、限流、验证码
DDOS 攻击利用僵尸网络耗尽带宽/CPU流量清洗(ISP/云厂商提供)
🌪️ 两者本质都是“资源耗尽型”拒绝服务攻击。

28. SQL 注入是什么?如何防御?

  • 原理:用户输入未过滤,拼接到 SQL 语句中执行
  • 危害:脱库、删表、提权
  • 防御
    • 使用预编译语句(PreparedStatement)
    • 输入验证 + 白名单
    • Web 层部署 WAF(如 Nginx + ModSecurity)

29. Shell 脚本是什么?

  • 包含一系列命令的文本文件(.sh
  • 用于自动化任务:备份、监控、部署等
  • 执行方式:bash script.sh 或 chmod +x script.sh && ./script.sh

四、实战与运维

30. 如何选择 Linux 发行版?

场景推荐系统
桌面用户Ubuntu
企业服务器CentOS / Rocky Linux / AlmaLinux
高安全性Debian / FreeBSD
新技术尝鲜Fedora
商业支持RHEL / SUSE
✅ 互联网公司主流:CentOS 7/8Rocky Linux(替代 CentOS)

31. 如何规划一台 Linux 主机?

  1. 明确用途:Web / DB / 缓存 / 日志?
  2. 硬件选型:CPU/内存/磁盘/网络
  3. 系统安装:最小化安装 + 分区(//var/home 分离)
  4. 安全加固:如上第 26 条
  5. 性能调优:内核参数、文件描述符、TCP 优化等

32. 用户反馈网站访问慢,如何排查?

排查步骤:
  1. 确认问题范围:自己能否复现?是否全用户慢?
  2. 浏览器调试:看是 HTML/CSS/JS/图片/接口慢?
  3. 服务器资源
    • top / htop:CPU、内存
    • sar / iftop:网络带宽
    • iostat:磁盘 I/O
  4. 应用层
    • Web 日志(Nginx access.log)
    • 慢查询日志(MySQL slow_query_log
  5. 外部因素:CDN、DNS、跨运营商
解决方案:
  • 带宽不足 → 升级带宽 or CDN
  • 数据库慢 → 优化 SQL、加缓存(Redis)、读写分离
  • 代码问题 → Profiling、异步化
  • 架构瓶颈 → 微服务、负载均衡

33. Linux 性能调优方法?

  1. 关闭无用服务(systemctl disable xxx
  2. 禁用 GUI(服务器)
  3. 调整内核参数(/etc/sysctl.conf):
    • net.core.somaxconn
    • vm.swappiness
    • fs.file-max
  4. 文件系统优化:ext4 → xfs,挂载选项 noatime
  5. 网络调优:TCP 缓冲区、TIME_WAIT 复用

五、常用命令速查(高频考点)

34. 核心命令分类

文件操作
cd /path # 切换目录 pwd # 显示当前路径 ls -alh # 列出详细信息(含隐藏文件) touch file # 创建空文件 mkdir -p dir # 递归创建目录 cp -r src dst # 复制目录 mv old new # 移动/重命名 rm -rf dir # 强制删除(慎用!)
文件查看
cat file # 全文输出(小文件) more file # 分页查看(不支持回滚) less file # 分页查看(支持上下滚动) tail -f log # 实时查看日志 head -n 10 file # 查看前10行
搜索与过滤
grep "error" log # 搜索关键词 ps aux | grep nginx # 查找进程 find / -name "*.log" # 全局查找文件
压缩解压
tar -zcvf archive.tar.gz dir/ # 压缩 tar -zxvf archive.tar.gz # 解压
系统状态
top # 实时进程监控 free -m # 内存使用 df -h # 磁盘空间 netstat -tunlp # 查看端口占用 ss -tuln # 更快的 netstat 替代
编辑器(vim)
  • i → 插入模式
  • Esc → 命令模式
  • :wq → 保存退出
  • :q! → 强制退出
  • /keyword → 搜索
  • dd → 删除一行
  • yy + p → 复制粘贴
其他实用命令
ping ip # 测试连通性 ifconfig / ip a # 查看 IP date # 查看时间 ntpdate ntp.aliyun.com # 同步时间 reboot # 重启 halt # 关机 rz / sz # 上传下载文件(需 lrzsz)

Read more

Leetcode 202题 快乐数:数字世界中的奇妙旅程

Leetcode 202题 快乐数:数字世界中的奇妙旅程

Leetcode 202题 快乐数:数字世界中的奇妙旅程 * 视频地址 * 解题思路:从数字到链表的思维转换 * 链表思维的巧妙应用 * 快慢指针:龟兔赛跑的智慧 * 算法实现:C++代码解析 * 关键函数:数字变换 * 快乐数判断主逻辑 * 数学深度:数字会无限增大吗? * 快乐数的性质与统计 * 复杂度分析与优化 * 扩展思考 视频地址 因为想更好的为大佬服务,制作了同步视频,这是Bilibili的视频地址 在数学的奇妙花园里,有一种特殊的数字被赋予了"快乐"的称号。快乐数(Happy Number)就像一位在数字迷宫中寻找出口的旅人,它遵循着特定的变换规则,一步步走向最终的归宿——1。 快乐数的定义:对于一个正整数,如果将其各位数字的平方和不断进行替换,最终能够得到1,那么这个数就被称为快乐数。反之,如果陷入一个不包含1的循环,那么这个数就是不快乐的。 让我们以19为例,展开这段数字的奇妙旅程: 19 → 1²

By Ne0inhk
【动态规划】打家劫舍类问题

【动态规划】打家劫舍类问题

一、按摩师 17.16. 按摩师 题目描述: 题目分析: 1、状态表示 每个预约都只会有两种选择,即选或不选。因此我们可以用  * dp[i][0] 表示不选择第 i 个预约时,最长的预约时长 * dp[i][1] 表示选择第 i 个预约时,最长的预约时长 2、状态转移方程 对于 dp[i][0] : * 如果我们选择了第 i 个预约,那么第  i-1 次预约就一定不会选择,这时我们只需要知道不选第 i-1 次预约时的最长预约时长即可,即 dp[i-1][0] 的值,再加上 num[i]  即可。

By Ne0inhk
【安装教程】Linux系统安装Python

【安装教程】Linux系统安装Python

一、适用环境 1、操作系统:Linux 2、依赖软件:VMware / VirtualBox虚拟机或WSL子系统 二、操作步骤 1、首先,登录管理员用户 sudo su 2、更新软件包及安装开发依赖库 (1)更新软件包索引列表(确保安装时软件保持最新版本) apt-get update (2)安装开发依赖库(为编译软件Python提供编译环境) apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev 3、下载压缩包及解压等操作 (1)执行命令进入/usr/local路径 cd

By Ne0inhk

Python + Blender 5.0 几何节点全栈实战教程1

前言 1.1 为什么选择 Blender 5.0 + Python? 在三维创作与程序化建模领域,Blender 一直以开源、强大且免费的特性占据核心地位。而 Blender 5.0 对几何节点(Geometry Nodes)的颠覆性更新,彻底打破了 “程序化建模 = 专业门槛” 的固有认知 —— 从 “平面操作” 到 “空间操控” 的体积数据支持,从 “连线迷宫” 到 “模块化复用” 的包与闭包机制,让新手也能快速上手复杂效果,让资深开发者的创意实现效率翻倍。 Python 作为 Blender 的内置脚本语言,通过 bpy 模块实现了对 Blender 全功能的可编程控制。当 Python 的自动化能力与 Blender 5.

By Ne0inhk