最近好多朋友在准备跳槽后台私信里问Linux面试题的真不少。想想也是不管是做运维、后端开发、测试还是嵌入式Linux基础几乎是躲不掉的必考题。我自己这些年既当过求职者也坐在面试官的位置上问过别人对这类的套路算是比较熟了。这篇文章就直接点把我在实际面试里高频遇到的Linux题目整理出来每一道都带上考察点分析、参考答案以及面试官追问的思路。不是为了让你死记硬背而是帮你把这些知识点真正理解透面试的时候不管怎么变着法子问都能接得住。准备面试的朋友可以按章节着重复习平时工作的也可以当个查漏补缺的清单来用。1. 系统基础与启动流程必拿分的送分题很多人觉得Linux基础题简单结果一开口就翻车。这类题目表面上考记忆实际上考你有没有真正理解Linux的运行机制。1.1 Linux开机启动流程问题描述Linux系统从按下电源键到登录界面的完整启动过程。考察点面试官想确认你是否对系统全局有概念而不是只会敲命令。参考答案完整流程大致分为五个阶段。第一阶段BIOS/UEFI自检检测硬件设备然后根据启动顺序找到引导介质。现代机器基本走UEFI老一些的机器还是传统的BIOS方式。第二阶段引导加载器GRUB2为主加载。GRUB2会读取配置文件/boot/grub2/grub.cfg把内核镜像vmlinuz和initramfs镜像加载到内存。第三阶段内核初始化。内核会解压自己初始化CPU、内存管理、驱动等核心子系统。第四阶段systemd作为1号进程启动PID 1它是所有进程的祖先。systemd读取默认目标target比如multi-user.target或者graphical.target并行启动各项服务。第五阶段启动getty终端或显示管理器然后用户就能看到登录界面了。面试官的追问init和systemd有什么区别——init是串行启动一个服务挂了后面的就卡住systemd是并行启动依赖关系由unit的Requires、After等指令管理启动速度大幅提升。开机自启动的服务怎么加——systemctl enable/disable xxx本质是在/etc/systemd/system/multi-user.target.wants/目录里创建或删除软链接。如果启动过程中卡住了怎么排查——内核启动参数加systemd.log_leveldebug或者用systemctl list-jobs查看卡在哪个unit上。1.2 内核版本和发行版本的区别问题uname -r和cat /etc/os-release分别查看什么两者的区别是什么这是个特别基础的题但我发现很多两三年经验的人也会说混。参考答案uname -r查看的是内核版本号比如5.4.0-26-generic这是Linux内核本身的信息cat /etc/os-release查看的是操作系统发行版的版本信息比如Ubuntu 20.04、CentOS 7.9、Debian 11这些。内核是Linux系统的核心发行版是在内核之上打包了GNU工具链、包管理器、桌面环境等组成的完整可用操作系统。注意内核版本号和发行版版本号没有直接关系。同一个Ubuntu版本可以跑不同版本的内核CentOS 7上也能手动升级到新版内核。面试时能说清这一层印象分会明显不一样。2. 文件与文本处理命令最常见的实战考区命令类题目是Linux面试里题量最大的但光背命令参数没有用面试官更关心你会不会在实际场景里用它们。这里挑几个出现频率最高的。2.1 软链接和硬链接的区别问题ln -s创建的是什么硬链接和软链接有什么区别考察点对文件系统底层inode机制的理解。参考答案硬链接是通过目录项dentry指向同一个inode多个文件名对应同一个文件数据块。软链接符号链接则是一个独立的文件数据里保存的是目标文件的路径字符串。数一下核心区别硬链接不能跨文件系统软链接可以。硬链接不能指向目录软链接可以。删除源文件后硬链接依然可以正常访问文件内容软链接则变成悬空链接访问报No such file or directory。硬链接的inode号相同软链接的inode号不同。硬链接的链接计数字段st_nlink会递增软链接不影响源文件链接数。面试官的追问为什么硬链接不能跨文件系统因为硬链接直接指向inode而inode编号只在当前文件系统内是唯一的跨文件系统可能指向错误的inode所以内核直接限制了这种操作。2.2 统计日志里出现次数最多的IP问题有一个access.log日志每行记录一条访问日志第一列是IP怎么统计出现次数最多的前10个IP参考答案经典的管道组合拳。awk {print $1} access.log | sort | uniq -c | sort -rn | head -10拆开解释一下awk提取第一列IPsort把相同IP排在相邻位置这是uniq -c能正确计数的大前提uniq -c给每个IP统计出现次数sort -rn按数字倒序排列head -10取前10名。面试官的追问uniq -c能直接对没排序的文本生效吗不能uniq只会去重相邻行必须先sort。如果文件特别大几个GB这个命令还能跑吗能跑sort会把中间结果落盘到临时文件但耗时较长。更高效的方式是用awk直接计数只消耗很少内存或者用TopN堆的思想只保留前10个。其实awk直接计数更实用awk {count[$1]} END {for (ip in count) print count[ip], ip} access.log | sort -rn | head -10这个方案避免了sort整个文件内存占用只取决于IP的种类数。2.3 解压缩文件的乱码问题热搜词里有个linux 解压文件乱码说明这个问题在实操里太常见了。问题在Windows上压缩的文件传到Linux解压后是乱码怎么处理原因分析Windows上Zip打包时文件名编码默认是GBK/CP936而Linux默认使用UTF-8两边编码对不上就显示成了乱码。推荐方案用unzip时指定编码或者用7z解压时指定编码。# 方案一unzip需要系统支持-O选项 unzip -O CP936 file.zip # 方案二使用7z解压并指定编码 7z x file.zip -cpm936 # 方案三如果zip包内文件名直接废了先解压再用convmv批量转码 sudo apt install convmv convmv -f gbk -t utf8 --notest -r 目录名/实操心得我接手过同事留下的烂摊子整个备份目录全是乱码文件名最后就是用convmv批量转码救回来的。这里有个坑convmv的--notest参数必须带否则只是预演不会真正改名。另外如果文件名本身包含了GBK无法映射到UTF-8的字符convmv会提示无法转换那些个别文件只能手动处理。3. 权限与用户管理绕不开的硬骨头权限这块涉及Linux安全模型的核心面试官一般会从基础概念问起然后逐渐往深挖看你有没有真正理解。3.1 Linux文件权限位怎么读问题rwxr-xr--这串字符代表什么数字权限怎么算参考答案这串字符共10位第1位表示文件类型-代表普通文件d代表目录l代表软链接后面9位每3位一组分别代表属主u、属组g、其他人o的权限。r4、w2、x1数字权限就是这三组数字的累加。rwxr-xr--对应的数字权限是754。rwx7rx5r4。面试官的追问目录的r和x分别控制什么目录的r权限控制能否列出目录内容lsx权限控制能否进入目录cd以及访问目录内文件的元信息。很多人栽在这里会说没有x权限就进不去目录实际上没有r权限也看不到目录里有什么两个权限是配合使用的。如果没有x权限只有r权限你ls看到文件名但cd不进去也无法读取文件内容。3.2 SUID、SGID和粘滞位问题认识setuid吗为什么passwd命令有SUID权限参考答案SUIDSet User ID是在执行程序时让进程以文件属主的身份运行而不是以执行者身份运行。典型例子是/usr/bin/passwd普通用户执行passwd修改密码时需要写/etc/shadow这个只有root能写的文件passwd程序设置了SUID位执行时进程euid就临时变成了root才能完成对shadow文件的写入。查看方式ls -l /usr/bin/passwd看到的是-rwsr-xr-x属主权限位里的x变成了s。补充SGID和粘滞位SGID对目录生效时在该目录下新建的文件会自动继承目录的属组。粘滞位Sticky Bit主要用于/tmp这类共享目录设置了粘滞位的目录即使其他人对目录有写权限也不能删除或重命名不属于自己的文件。查看/tmp权限位是drwxrwxrwt最后的t就是粘滞位。3.3 批量创建用户问题如何一次性创建10个用户用户名从user1到user10初始密码统一为123456并要求他们首次登录强制改密参考答案用for循环加useradd命令。for i in $(seq 1 10); do useradd -m -s /bin/bash user$i echo 123456 | passwd --stdin user$i passwd -e user$i done关键点解释-m创建家目录-s /bin/bash指定登录shellpasswd --stdin从标准输入读取密码这个参数CentOS支持Ubuntu默认没有--stdin参数就需要改用chpasswdpasswd -e强制用户下次登录时修改密码。如果面试时能主动说出Ubuntu和CentOS在这条命令上的差异面试官会认为你踩过实际的坑这一点在真实环境里非常常见。面试官的加分题怎么让一个用户加入sudo组usermod -aG wheel用户名CentOS系或usermod -aG sudo用户名Ubuntu系别忘了-a参数不加-a会把用户从其他附加组里全部移除。4. 进程管理与性能排查从会用到会调优4.1 什么是僵尸进程如何处理问题系统里出现很多PID后面标着defunct的进程怎么处理参考答案僵尸进程是已经终止但父进程没有调用wait()系统调用回收其状态的进程。它已经释放了绝大部分资源只在内核进程表里保留一个条目所以不占CPU和内存但僵而不死的状态会占用进程表项。大量堆积时会导致系统无法创建新进程。处理步骤# 第一步找到僵尸进程及父进程PID ps -ef | grep defunct # 第二步找到PPID看父进程是谁 ps -o pid,ppid,stat,cmd -p 父PID # 第三步正常的处理方式是让父进程退出由init/systemdPID 1接管后回收 kill -9 父进程PID注意kill -9杀不掉僵尸进程本身因为僵尸进程已经死了不能被kill。必须处理它的父进程父进程退出后僵尸进程会被1号进程收养并回收。如果父进程是个长时间运行的服务比如Java应用强行kill -9会造成业务中断稳妥的做法是先排查父进程为什么没有正确回收子进程多半是代码里没处理SIGCHLD信号或没写wait()逻辑。4.2 CPU负载和CPU使用率的区别问题load average 34.2, 28.1, 19.7这台机器负载高吗和CPU使用率是一回事吗参考答案不是一回事。CPU使用率是CPU忙碌时间占总时间的百分比。负载则是处于可运行状态和不可中断睡眠状态的进程平均数量。简单理解负载高说明有很多任务在排队等待CPU使用率高说明CPU在持续忙碌。判断标准要看CPU核数。如果机器是32核负载34比32略高说明任务略有过载还在合理范围附近如果是4核机器负载34那就是严重过载大量任务在排队等待。排查负载高的常用三板斧# 查看CPU使用率最高的进程 top -o %CPU # 看每个核的使用情况按1展开 top # 确认是否存在大量D状态不可中断睡眠进程一般是IO卡住了 ps -eo pid,stat,wchan:30,cmd | grep ^ *[0-9] | grep -E D这里有个很重要的实战经验负载高不等于CPU忙也可能是磁盘IO卡死导致大量进程进入D状态。遇到负载高先看D状态进程数量再决定往CPU方向还是IO方向排查千万别一上来就去kill进程。4.3 线上服务变慢排查思路问题一个Java服务刚上线两天用户反馈响应变慢你怎么排查参考答案我会按照从整体到局部、从硬件到应用的顺序来。第一先看主机基础负载top、free -h、df -h排除CPU、内存、磁盘是否被打满。第二看网络连接情况ss -s看整体连接数ss -antp | grep 进程名看具体连接队列。第三看Java进程内部状态jstack 进程ID抓线程快照看是否有大量线程处于BLOCKED或WAITING状态jstat -gcutil 进程ID 1000看GC的频率和耗时如果Full GC频繁那基本就定位到问题了。第四结合日志和监控查access log的响应时间分布看是全部变慢还是某个接口变慢是偶发还是持续。面试官的追问如果发现是GC频繁导致的怎么处理常见手段是调整JVM堆参数-Xmx、-Xms设置更合理的GC回收器比如G1排查是否有内存泄漏检查是否有不合理的对象缓存。这个问题经常在Java面里出现但很多人只背了答案没真正处理过线上问题一追问就露馅。5. 网络配置与排障生产环境必备技能因为内容安全的原因这里我不会提任何涉及穿墙相关的工具或操作只讲企业里正常使用的网络配置与排障技术。5.1 排查服务端口通不通问题我部署的服务在8080端口用户说访问不了你怎么排查参考答案我会按照客户端到服务端这条链路逐步排查。# 第一步服务端确认端口在监听 ss -lntp | grep 8080 # 第二步确认防火墙放行 # CentOS 7及以上 firewall-cmd --list-ports # Ubuntu的ufw ufw status verbose # 或者用iptables查看 iptables -L -n | grep 8080 # 第三步本机回环测试服务是否正常 curl http://127.0.0.1:8080 # 第四步同网段其他机器测试连通性 telnet 服务IP 8080 # 或者 nc -vz 服务IP 8080 # 第五步SELinux是否拦截 getenforce # 查看SELinux对服务的审计日志 ausearch -m avc -ts recent实操心得我遇到过最恶心的情况是前面全查了都没问题最后发现是云平台的安全组规则没放行这个在云服务器上特别容易踩坑。检查顺序建议是安全组如果有云环境- 本机防火墙 - 端口监听 - 服务本身。还有一次问题是SELinux造成的关掉防火墙能通、开着防火墙就不通查了半天发现是SELinux的布尔值没开。5.2 DNS解析问题排查热搜里有linux中配置dns出现的问题这个在面试里也常问。问题/etc/resolv.conf配置了DNS后还是解析不了域名怎么排查参考答案分布排查# 第一步确认配置内容 cat /etc/resolv.conf # 第二步用nslookup或dig测试解析 nslookup www.example.com dig www.example.com # 第三步确认网卡配置是否覆盖了resolv.conf cat /etc/sysconfig/network-scripts/ifcfg-eth0CentOS cat /etc/netplan/*.yamlUbuntu新版这里的坑在于CentOS系统重启或重启NetworkManager后/etc/resolv.conf可能会被网卡配置文件里的DNS配置覆盖你手动改了resolv.conf一重启就被打回原形。正确的做法是改网卡配置文件里的DNS1、DNS2再重启网络服务。还有一个常见坑是systemd-resolved。Ubuntu 18.04后默认启用了systemd-resolved/etc/resolv.conf被改成指向127.0.0.53的符号链接你以为改了配置实际上没生效。如果确实想用自己的DNS配置要么改netplan配置要么直接关掉systemd-resolved再把resolv.conf替换成真实配置文件。5.3 抓包工具tcpdump实战用法问题怎么证明A机器能访问B机器但B机器回包不到A参考答案这种问题光靠ping很难定位需要抓包看数据包流向。在B机器上抓包tcpdump -i any host A的IP and port 8080 -nn -c 100看B机器是否收到了A的TCP SYN包如果收到了SYN但回发的SYN-ACK没到A那就是回包路由问题如果B压根没收到SYN包那就是中间链路或防火墙把A的入站包拦了。补充一个常用技巧tcpdump抓包结果保存到文件里然后用Wireshark打开看比在终端里看滚动日志高效得多。tcpdump -i eth0 -w /tmp/capture.pcap -s 0 host 目标IP-s 0表示抓取完整包默认只抓前96字节的快照长度做协议分析时经常不够用。6. 存储与文件系统从入门到扩容实战6.1 df和du的区别问题df和du都能查看磁盘占用它们有什么区别什么时候会用du而不是df参考答案df从文件系统的层面查看磁盘分区使用情况统计的是整个文件系统占用的块数量。du从文件层面统计会递归计算目录下每个文件占用的空间。两者结果不一致的常见原因一个文件被删除了但还有进程持有它的句柄没释放du不会统计这个文件df却会显示空间被占用。遇到df显示满了但du统计不出来大文件的情况十有八九是这个原因。排查大文件# 找出当前目录下占用最大的子目录 du -h --max-depth1 /var | sort -hr | head -20 # 查看被删除但仍被占用的文件 lsof L1处理方式找到持有已删除文件句柄的进程重启该进程或kill掉具体看业务能否接受空间就会释放。千万不要去重启整台服务器那是最后手段因为重启后句柄全部释放了空间会回来但会中断所有业务属于以命换命。6.2 inode用完了是什么情况问题df -h显示磁盘还有空间但创建文件时报No space left on device为什么参考答案大概率是inode耗尽了。磁盘空间用尽会报同样的错误但df -h根本看不出inode问题需要用df -i查看inode使用率。当分区上的文件数量超过inode总数时即使还有空闲容量也无法创建新文件。排查和处理# 查看inode使用率 df -i # 统计哪个目录文件数最多 find / -xdev -printf %h\n | sort | uniq -c | sort -k1 -rn | head -20 # 如果是小文件碎片过多考虑定期清理常见产生海量小文件的场景应用日志没有按天滚动切割session临时文件没有定时清理邮件队列堆积或者定时任务频繁生成临时文件但又没清理。这个题我在面试里比较喜欢问因为这直接反映候选人有没有真正处理过生产环境的问题。6.3 磁盘满了怎么定位大文件问题/分区使用率100%怎么快速找出哪个目录占用最大参考答案我用得最多的命令组合# 查看根分区各一级目录的大小 du -h --max-depth1 / 2/dev/null | sort -hr | head -10 # 定位到具体目录再逐层往下 du -h --max-depth1 /var 2/dev/null | sort -hr | head -10 # 超过100M的文件直接找出来 find / -xdev -type f -size 100M -exec ls -lh {} \;实战提醒对根分区执行du -h --max-depth1 /时如果挂载了其他独立分区比如/home是单独挂载的du仍然会扫描这部分并计入根但实际这些空间是其他分区的。所以建议用find / -xdev或者du -x跳过其他文件系统。这个细节能体现你踩过坑面试时主动说出来很加分。7. Shell脚本与文本处理进阶拉开差距的地方7.1 从日志中提取指定时间段的报错信息问题有一个应用日志格式是2025-01-15 10:23:45 ERROR 某某异常怎么提取某一天的所有ERROR日志参考答案grep ^2025-01-15 app.log | grep ERROR如果日志量很大还可以用sed按行号范围截取或者用awk直接按条件过滤awk /^2025-01-15/ /ERROR/ app.log接着一般会问如果是提取某个时间段比如10点到11点之间呢awk /^2025-01-15 10:/ || /^2025-01-15 11:/ app.log | grep ERROR再进阶一点的问法统计每个小时产生的ERROR数量。grep ERROR app.log | awk {print $2} | cut -c1-2 | sort | uniq -c这套题目由浅入深考察awk处理文本的基本思路。我建议大家把awk的字段分割、内建变量、条件过滤逻辑熟练掌握这是Linux文本排查的吃饭本事。7.2 文件内容批量替换问题把config目录下所有.conf文件里的IP 192.168.1.10全部替换成10.0.0.10怎么写参考答案sed -i s/192.168.1.10/10.0.0.10/g config/*.conf如果目录下还有子目录用find组合find config -name *.conf -exec sed -i s/192.168.1.10/10.0.0.10/g {} \;注意事项sed的-i参数是老演员了CentOS和Ubuntu都支持但如果在macOS上跑-i后面必须跟一个后缀字符串哪怕是空的sed -i .bak s/xxx/yyy/ file否则直接报错。另外建议在生产环境批量替换前先不加-i跑一遍确认输出结果无误再真正执行替换。sed s/xx/yy/g file只是打印不会改动文件。7.3 shell脚本里的$?、$0、$#分别代表什么*问题Shell脚本里$?、$0、$#、$、$分别是什么意思参考答案$?是上一条命令的退出状态码0表示成功非0表示失败$0是脚本本身的名称$#是传入脚本的参数个数$和$*都是所有参数的列表区别是$把每个参数当作独立的词加了引号时差异最明显$*把所有参数当作一个整体字符串。顺带提一下退出码的冷知识退出码范围是0-255如果程序退出的状态码超过255会被对256取模。写脚本时如果你自定义退出码尽量不要超过255的边界否则结果会出乎意料。7.4 查找最近修改过的文件问题找出/etc目录下最近24小时内被修改过的文件怎么查参考答案find /etc -type f -mtime -1-mtime -1表示24小时内修改的-mmin -60表示60分钟内修改的如果是查找120分钟内修改的参数就是-mmin -120。这个命令在排查配置被谁改过、系统被入侵时非常有用。进阶变体查找最近修改但排除特定目录。find / -type f -mtime -1 -not -path /proc/* -not -path /sys/* 2/dev/null8. 高频面试场景与加分回答技巧8.1 面试官问你用过哪些Linux发行版时真正想听什么很多候选人喜欢说我用过CentOS、Ubuntu、RedHat然后就没下文了。这个问题本质上是想了解你的环境经验但面试官真正关注的是你是否有差异化的认知。能说出来不同发行版之间的包管理区别yum/dnf vs apt、systemd的差异、默认防火墙的区别firewalld vs ufw远比报菜名式列举版本号有说服力。8.2 被问遇到不认识的命令怎么办时的高分回答这个题我也经常问。标准回答是man一下或者查百度/谷歌这里只指通用信息查询方式但高分回答会说第一先man看帮助或者用命令 --help第二用type 命令名确认这个命令是不是内建命令、外部命令还是别名第三用which或whereis找到命令位置第四如果是配置文件相关的用rpm -qfCentOS或dpkg -SUbuntu反查这个文件属于哪个包。这套回答展现的不止是查文档的习惯而是系统化的排错思维。8.3 关于国产Linux发行版的问题近几年面试里越来越多地看到候选人的简历里写了适配国产化操作系统的经验。这里只讲通用技术讨论国产Linux发行版大多是基于开源社区版本构建的基本操作、命令语法、systemd管理这些核心技能是完全通用的。如果你在面试中被问到是否了解国产操作系统核心是展示你对操作系统底层原理的掌握以及你的技能具备跨发行版的迁移能力不必把关注点放在特定品牌上。8.4 面试过程中最好避免的说法我可以学——面试官要的是能直接上手的人换成我之前用类似的方案处理过相关问题核心原理是相通的会好得多。这些命令我平时都用工具不用手敲——工具提高了效率但排查问题时命令行的基本功是兜底的生存技能。系统出问题我就重启——典型的大忌回答。很多公司对生产环境的稳定性要求极高不能轻易重启会重启不能解决任何问题反而掩盖了根因。9. 经典综合案例分析一题串起多个知识点9.1 案例网站响应慢的完整排查题目背景线上Web服务反馈变慢CPU不高内存充足怎么排查核心思路这个情况CPU不高说明不是计算瓶颈内存充足排除内存不足那方向就是IO、网络、锁竞争对Java这类多线程应用来说。排查线# 1. 看负载和D状态进程 uptime ps -eo pid,ppid,stat,cmd | grep D # 2. 确认是不是磁盘IO问题 iostat -x 1 3 # 观察%util如果长期接近100%说明磁盘IO饱和 # 3. 确认是不是等待IO的进程 pidstat -d 1 # 4. 查看具体进程的IO情况 iotop -o -P # 5. 定位是读还是写结合业务判断 lsof 查看进程打开的文件确认是不是日志写的太频繁对应的解决手段根据定位到的根因选择磁盘IO饱和日志写太频繁就调整日志级别或异步写数据库IO压力大就优化慢查询日志盘和数据盘分离。NFS网络文件系统卡顿很多服务会把日志写到NFS挂载盘上NFS服务端抖动或网络抖动会导致进程卡在D状态这种问题杀进程没用要先解决NFS链路。如果是Java应用还可能遇到GC导致的停顿前面已经介绍过用jstat/jstack看GC和线程状态。为什么这个案例值得好好理解因为它覆盖了进程状态、文件系统、磁盘IO、网络、日志分析多个知识点是综合能力面试的最常见出题方式。而且这类场景在真实环境里发生率极高我前公司就遇到过NFS抖动导致全线应用假死的事故整个排查过程跟上面这个思路完全一样。9.2 案例定时任务不执行问题crontab配置了定时任务但不执行怎么排查典型排查步骤# 1. 确认cron服务在运行 systemctl status crond # 2. 确认当前用户的crontab列表 crontab -l # 3. 查看cron执行日志 grep CRON /var/log/cron # Ubuntu是查syslog grep CRON /var/log/syslog # 4. 手动执行脚本确认脚本本身没问题 # 特别是脚本里有相对路径、有环境变量依赖时 # 手动执行正常cron里执行却失败多半是PATH和shell环境问题大多数不执行的根因cron的PATH极其精简它不会加载你用户目录下的.bash_profile。脚本遇到相对路径找不到文件、java/php等命令找不到都很常见。解决方案是脚本里写绝对路径并且在脚本开头source环境变量文件比如source /etc/profile。另外脚本要有可执行权限执行权限配置不正确的话cron也会静默跳过。cron的错误输出默认会发到系统邮箱mail命令可以查看很多人忽略了这个入口。10. 几条面试实战的心得这篇文章写了这么多最后说几句实际的。Linux面试题的分水岭从来不在于你会不会背命令参数而在于你有没有真正理解系统的工作机制。文件系统为什么要分inode和block进程和线程的区别不止是概念而是CPU调度的最小单位到底是哪个负载高的时候为什么会卡字形猜到原理才能答出面试官追问的那一层。我给准备面试的朋友们一个建议不要只看面经找台虚拟机或者云服务器把文章里提到的排查场景自己亲手跑一遍。自己把某个目录填满小文件看到No space left on device再统计出是哪个目录惹的祸比背十遍df -i都管用。面试官问到这类问题时你说一句我之前遇到过操作是...比任何标准答案都有说服力。另外一点面试时如果遇到不会的题诚实说这个问题我没用过我了解的是...比编一个漏洞百出的答案强太多。我面过不少候选人其实技术底子不差但面对不会的问题慌了就开始编越编越圆不回来反而比说不会扣的分更多。面试本质上是交流不是考试。最后祝各位都能拿到心仪的offer。Linux这块内容需要长时间积累本文提到的也只是高频考点的集合平时工作中多留意系统日志、多看性能数据能力到了面试就是走个过场。