当前位置:首页>Linux>Linux面试高频题全整理 看完这篇真的能拿到大厂offer吗太惊喜了

Linux面试高频题全整理 看完这篇真的能拿到大厂offer吗太惊喜了

  • 2026-10-11 07:53:45
Linux面试高频题全整理 看完这篇真的能拿到大厂offer吗太惊喜了
 1 
经常遇到面试官问你进程之间怎么通信 你能说全吗

讲真,很多人背了几种常见的就去面试,一被追问就露馅。其实面试官考这个,就是看你对Linux内核机制理解到什么程度,不是要你全背下来,但常见的几种必须说清楚应用场景。

管道其实就是半双工的通信方式,只能在父子进程或者兄弟进程这种有亲缘关系的进程之间用,你要是说现在要两个完全不相关的进程传数据,管道肯定不行啊。有名管道就不一样了,它是存在文件系统里的,就算没关系的进程也能拿它通信,这点要区分开别搞混。

消息队列是内核存的消息链表,发的人往队列里塞,收的人按需拿,比管道灵活多了,不会像管道那样读了数据就没了,而且自带结构,不用自己折腾数据格式。但是有个限制,就是消息大小不能太大,内核也会限制系统里总的消息队列数量,真要传大量数据还是得配合别的方式。

共享内存应该是速度最快的进程间通信了吧? 直接把同一块物理内存映射到各自的进程地址空间,都不用来回拷贝数据,省了多少开销啊。可问题也来了,就是得自己做同步啊,你这边写着我那边就读了,数据乱了谁负责?所以一般共享内存都会配着信号量用,这点一定要讲出来,面试官就爱听这个细节。

信号量其实不算真正传数据的通信方式,它就是个计数器,用来控制多个进程对共享资源的互斥访问嘛,说白了就是一把锁,你拿到了就能进临界区操作,用完了释放给别人用。很多新手上来就说信号量是传消息的,直接就扣分了。

还有套接字和内存映射文件这些,跨网络跨主机都能用,哪怕是本机进程通信也可以用,现在很多微服务架构里,进程间通信基本都靠套接字,你要是提一句这个,印象分直接拉满。

我当初面试的时候,上来就把这个分场景说清楚,面试官直接点头,说比好多只背名词的人强太多了。

 1 
软链接和硬链接到底差在哪 这个问题太容易踩坑

这个题真的是高频中的高频,十次Linux面试八次会问,可还是好多人答不对。

你先记住最核心的区别:硬链接本质就是文件的另一个名字,和原文件指向同一个inode,你删了原文件,硬链接还能访问数据啊,因为inode只要链接数没降到0,数据就不会真的删。软链接是单独的一个文件,它有自己的inode,里面存的只是原文件的路径,你删了原文件,软链接就断了,打开会报错找不到文件。

还有很多细节点,能说出来直接就让面试官刮目相看。比如硬链接不能跨文件系统,你想啊,每个文件系统的inode都是单独编号的,跨了文件系统inode就不对应了啊,怎么可能做硬链接?软链接就没这个限制,跨文件系统跨主机都没问题。

还有目录,普通文件你做硬链接随便做,但是目录一般只有超级用户才能做硬链接,为什么?因为要是你给目录做了硬链接,很容易搞出循环,文件系统遍历的时候直接绕晕了,所以系统默认不让普通用户弄。软链接链接目录随便弄,你看我们日常用的ln -s链接个目录太常见了对吧。

你要是面试的时候只说一个删原文件的区别,那说明你只背了最表面的东西,把这些细节加上,面试官肯定觉得你真的用了很久Linux,不是死背面试题的。

 1 
说一下怎么查看进程占用的资源 这个题考的就是基本功

很多人上来就说ps aux,或者top,说对了,但不全啊。面试官要的不是你只说个命令名字,是要看你会不会看输出,会不会根据场景选工具。

top是动态看的,能实时看到每个进程占了多少CPU多少内存,还有负载信息,这个大家都知道。那要是我想一次性把结果导出来做分析,总不能一直盯着top截吧?这时候ps就派上用场了,ps aux能把所有进程的信息一次性列出来,你还能加grep过滤找你要的进程。

那要是我想看进程打开了哪些文件呢?总不能ps吧?这时候就要用lsof了,lsof -p 进程号直接把所有打开的文件、套接字、库都列出来,排查问题的时候太好用了,比如你删了文件但是空间没释放,去看是不是哪个进程还握着这个文件的句柄,一查一个准。

还有想知道进程占了多少内存,除了top,还有个更好用的叫pmap,pmap 进程号能把进程地址空间每一块用了多少内存都列出来,非常详细,找内存泄漏的时候特别有用。

还有现在很多机器都用docker了,你要是会说ctr或者docker top,再加一句能配合nsenter进入容器命名空间看进程,那直接就超出面试官预期了,谁不想要会排查容器问题的人啊。

还有一点要注意,很多人分不清top里的VIRT和RES,经常说错,这里一定要记清楚:VIRT是进程申请的所有虚拟内存大小,包括了还没加载到物理内存的,还有共享库这些,不是真的占了这么多物理内存;RES才是进程实际占用的物理内存大小,这个才是你要看的实际占用,这个点一讲错,直接就露怯了,一定要记牢。

我之前有一次面试,面试官就是让我讲怎么排查一个占了满负载CPU的进程,我就说先top看哪个进程占比高,然后用ps看进程的启动信息,再用top -H看是哪个线程出问题,然后把线程id转成十六进制,用jstack或者gdb去栈里找问题,整个流程说下来,面试官直接说这个问题答得满分。

 1 
说一下僵尸进程是怎么来的 怎么处理

这个题真的太爱考了,好多人说僵尸进程就是杀不死的进程,直接就错了。

首先要搞清楚,僵尸进程是啥?子进程先退出了,父进程没有调用wait或者waitpid去回收子进程的退出状态,那子进程的PCB进程控制块就还留在系统里,这就变成了僵尸进程。说白了就是死了没埋嘛,尸体还放在那儿占着位置。

那僵尸进程能不能用kill -9杀死?当然不能啊,它都已经死了,你还杀谁啊?kill命令是给活的进程发信号,僵尸进程都没运行了,当然没用。

那怎么处理僵尸进程?方法说起来也简单。最直接的就是杀死父进程啊,父进程死了之后,僵尸子进程会被init进程接管,init会自动调用wait回收它们,系统资源就释放了。还有一种方法就是给父进程发SIGCHLD信号,告诉父进程赶紧去调用wait回收已经退出的子进程,很多正常的程序其实都会自己处理SIGCHLD信号,自动回收,就不会产生僵尸进程了。

那僵尸进程和孤儿进程又有啥区别?别搞混了啊,孤儿进程是父进程先退出了,子进程还活着,就变成孤儿了,最后也是被init收养,不会有啥问题,也不会浪费资源,和僵尸完全不一样。

很多人面试把这俩搞混,你要是能分清楚说清楚,一下子就拉开差距了。

 1 
讲一下swap分区是什么 什么场景下会用到swap

很多新手说swap就是内存不够的时候拿硬盘当内存用,物理内存够大就不用开swap,对不对?其实不全对。

swap确实是当物理内存不够用的时候,系统会把不常用的内存页换出去到swap分区,腾出来空间给正在运行的进程用。但哪怕你物理内存很大,现在很多系统还是会留一点swap,为啥?还有两个作用啊,一个是当系统内存真的耗尽的时候,有swap能兜底,不至于直接触发OOM杀死进程,还有一个就是有些笔记本或者服务器,休眠的时候会把内存里所有的数据都写到swap里,唤醒的时候再读回去,要是没有swap,你都没法休眠。

那swap开多大合适?以前说要开两倍物理内存,那都是老黄历了,现在物理内存动不动就几十上百G,哪需要开那么大。一般来说,要是你内存小于2G,开两倍没问题,要是内存8G以内,开个和内存一样大就行,再大的话,开个8G到16G就足够兜底用了,太大了也是浪费硬盘空间。

还有个问题,就是swap用多了会不会卡?当然会啊,硬盘的速度比内存慢太多了,当系统频繁换页的时候,就是内存不够用了,这时候就会出现在swap分区来回倒腾,系统卡得动都动不了,这就是我们常说的swap颠簸,碰到这种情况,加内存才是正经事。

还有很多人不知道,swap不一定非要用整个分区,也可以用swap文件啊,你要是临时需要加swap,直接弄个文件开swap就行,不用重新分区,太方便了,你面试提一句这个,说明你真的懂实际操作,不是只会背概念。

 1 
为什么说你看完这些就能拿offer

其实Linux面试考来考去,高频题就那些,很多人栽跟头不是不会,就是只背了表面,没搞清楚背后的原理和实际的使用场景。

面试官问你这些基础题,就是看你平时有没有真的用Linux干活,有没有遇到问题自己去查过搞懂,不是那些只会背面试题的应届生。

你把这些题的细节都理清楚,说的时候能结合自己实际用的经验,比你说一堆虚头巴脑的东西有用多了。

不信你下次面试之前过一遍这些点,肯定能碰到至少两三道原题,答得好,面试官对你的印象直接就上来了,offer还不是稳稳妥妥的?

最新文章

随机文章