当前位置:首页>Linux>Linux面试年年考,这些高频题你居然还没背完?看完稳拿offer!

Linux面试年年考,这些高频题你居然还没背完?看完稳拿offer!

  • 2026-10-11 07:51:03
Linux面试年年考,这些高频题你居然还没背完?看完稳拿offer!
说说你对Linux的理解和常用目录作用

你投Linux运维相关岗位的时候,第一轮电话面第一句基本都是这个问题。 很多人上来就扯源码开源,内核开发,说半天抓不住重点。 面试官根本不想听你讲开源历史,他只想知道你真的用过Linux没。 直接说就行,Linux是开源的类Unix操作系统,现在服务器领域基本都是它,我们常用它来做后端服务部署、集群管理这些。

然后说常用目录,别把所有目录都背一遍,挑常用的说就行。 /root 是超级管理员的家目录,普通用户进不去,/home是各个普通用户的家目录,你新建一个用户就会在这生成对应的文件夹。 /bin放的是所有用户都能用的基础命令,/sbin放的是只有管理员才能用的系统命令。 /etc太重要了,所有系统和服务的配置文件都在这,比如装了Nginx,配置文件就在/etc/nginx下面,改配置基本都是在这里改。 /var放的是不断变化的日志啊运行数据这些,比如日志默认就在/var/log下面。 /usr放的是你装的应用程序,相当于Windows的Program Files。

我当年第一次面试的时候,把/tmp忘了说,面试官还特意提醒,说tmp目录是干嘛的?我才反应过来,tmp是临时文件目录,系统重启的时候会自动清空这里的内容,所以别把重要数据放这。

说说你常用的查找命令区别是什么

这个题真的考烂了,find、locate、grep三个放一块问,十个面试八个问。 很多人容易搞混,grep是找文件内容啊!find和locate是找文件位置啊!别搞反了!

先说locate,它是基于系统提前建的数据库来查找,速度特别快,缺点是新建的文件没更新数据库的话它找不到,一般用来快速找文件,不需要实时准确的时候用。 find才是实时查找,它直接遍历磁盘目录,所以速度慢一点,但准确,想要找哪个时间修改的、多大权限的文件,find都能筛,find功能最强,基本所有查找需求都能满足,就是费时间。

举个例子,你要找当前目录下面所有名字带test的txt文件,find就是 find ./ -name "*test*.txt",这个命令写出来面试官就知道你会用了。 那grep呢?grep是在文件里面搜内容啊,你改完代码忘了哪个文件写了个TODO,直接grep "TODO" ./ -r,就能搜出来所有包含TODO的文件行,这个才是grep的用法。

别去背那些没用的参数,你说几个常用的就行,比如find的-name按名字找,-size按大小找,-mtime按修改时间找,够了,面试官不会难为你,知道你会用就行。

讲一讲软链接和硬链接的区别

这个也是必考题啊,记不住的话就记一句话:硬链接相当于给文件起了个别名,指向同一个inode,软链接相当于一个快捷方式,存的是原文件的路径。

硬链接不能跨文件系统,也不能链接目录,只能链接普通文件,你删掉原文件,硬链接还能用,因为inode还在,数据没丢,只有所有链接都删了,inode才会释放。 软链接就不一样了,它有自己的inode,它里面存的是原文件的地址,你删掉原文件,软链接就失效了,打开会提示找不到文件。软链接可以跨文件系统,还能链接目录,平时我们装软件版本管理经常用软链接,比如你装了jdk11和jdk8,切换版本改一下软链接就行,不用改一堆环境变量。

我第一次面试答错了,说硬链接可以链接目录,面试官笑了一下,我才反应过来自己记错了,后来每次复习都特意把这个点记下来,千万别再错了。

讲一下讲一下进程状态,僵尸进程和孤儿进程是什么

Linux进程有五种基本状态,运行、中断、不可中断、僵尸、停止,不用讲太细,你主要说僵尸和孤儿就行,面试官就爱问这个。

孤儿进程很好理解,父进程退出了,子进程还在运行,这些子进程就变成孤儿进程,会被init进程收养,init进程会给它们收尸,退出的时候清理进程表,所以孤儿进程没什么危害。 那僵尸进程呢?父进程没调用wait或者waitpid去回收子进程,子进程退出之后,进程表的那个条目还没删掉,就变成僵尸进程了。僵尸进程会占用进程号,系统进程号是有限的,如果大量僵尸进程,会占满进程号导致没法新建进程,所以是有危害的。 怎么解决僵尸进程?杀掉父进程啊,僵尸进程变成孤儿进程被init收养,init会自动回收它们。或者你父进程重启一下,把那些僵尸都收了就行。

别把两个搞混了,孤儿没事,僵尸才是有问题的,很多人反过来答,直接就扣分了。

说一下怎么查看系统负载,负载高了怎么排查

查看系统负载太简单了,top、w、uptime这些命令都能看,输出的那三个数字分别是1分钟、5分钟、15分钟的平均负载,平均负载就是单位时间内等待CPU的进程数,不是CPU使用率哦,这个要分清楚。

负载高了你怎么排查?首先你得搞清楚负载高是CPU不够用了,还是IO太多了,还是开了太多进程抢资源了。 先敲top看一眼,按P排序看哪个进程占CPU最高,是不是有业务进程死循环,或者流量突增了,把CPU占满了。 如果CPU使用率不高,那就是IO负载高,用iostat看看哪个磁盘IO高,再看看哪个进程占IO多,是不是有程序疯狂打日志,或者磁盘读写出问题了。 还有可能是内存不够用了,开始大量用swap,交换分区在磁盘上,IO慢,也会导致负载升高,free看一下内存使用率,是不是swap用了很多。

我之前遇到过一次,线上服务器负载突然飙高,上去一看就是某个程序打日志没控制,把磁盘打满了,还把IO占满了,把日志清了,重启进程就好了,排查就是这么一步步来的,你说的时候别干巴巴说命令,说一下排查的思路,面试官就觉得你真处理过问题,比背知识点好用多了。

说说TCP四次挥手为什么不能三次

这个题也是网络+运维面试必问,很多人背了答案还是说不清楚。 其实很简单,TCP是全双工,就是双方都能发数据,也都能收数据,四次挥手就是双方各关一次发送通道啊。 客户端说我发完了,要关了,给服务器发FIN,服务器回ACK给客户端,说我知道了。 那服务器这时候可能还有数据没发完呢啊,不能马上关啊,所以得等服务器发完所有数据,服务器再发FIN说我也发完了,要关了,客户端回ACK,这才完事。 那为什么不能三次?就是因为服务器的FIN和ACK不能合并成一次发啊,服务器还有数据要发的时候,得先回ACK,等发完了再发FIN,所以必须四次,当然有时候服务器会把ACK和第二次FIN合并,变成三次挥手,但那是特殊情况,正常情况就是四次。

别讲太复杂,讲这么多就够了,讲多了错多,点到为止,说清楚全双工,服务器需要时间发完剩余数据就对了。

说了这么多,最后给大家提个醒

面试Linux运维也好,开发岗要考Linux也好,其实面试官最看重的还是你真的用过,真的排过错,不是靠背题。 你背了一堆参数,不如说一句我之前遇到过什么问题,我用哪个命令排查出来,怎么解决的,这个加分多了。

这些题都是我面了十几家公司总结出来的高频题,每次面试基本都会碰到一两个,把这些搞清楚,基础分就拿到了,剩下的就看你项目经验了。

没整理过的同学赶紧存一下,面试前翻一遍,别在基础题上丢分,太可惜了。

最新文章

随机文章