115 lines
7.0 KiB
Markdown
115 lines
7.0 KiB
Markdown
# 期末测试 | 这些操作系统问题,你真的掌握了吗?
|
||
|
||
你好,我是刘超。当你看到这篇文章的时候,说明你已经历经九九八十一难,完成了整个课程的学习,你是否已经悟到操作系统的“真谛”了呢?我们今天就来测试一下。
|
||
|
||
先和你说一下,期末测试题的设计,我采取了和入学测验不一样的思路。当时入学测验里的题目比较细节,类似你在大学里学完操作系统课之后的考试题目。现在整个专栏学完了,我们需要换一种检测方式。所以,期末测试题,我设计成了选择题+开放式问题的形式。这才是我们现实生活中,不管是面试还是工作中,常常会遇到的“考试”方式。
|
||
|
||
有人说,面试的时候问操作系统知识,就是“面试造航母,上班拧螺丝”,没有啥用。其实不然,这些看似简单开放的问题,其实最能检验真本事的。面试官毕竟阅人无数,带人无数,看似他只是在问你这个问题的答案,其实这些问题背后都有实际的工作场景——只是你可能不了解或者想象不到而已。
|
||
|
||
因此,我把专栏内容中最核心的知识点总结成20道选择题,并且把每个部分面试可能会考到的问题,也总结成11道开放式面试题。你可不要小看这些面试题,也不要以为,面试官真的只是单纯地在问你这些问题的答案。因为这些面试题都产生于真实的工作场景中。
|
||
|
||
在这个场景中,秃头哥因为工作经验丰富,发际线已经非常可怜。长发哥是新进入公司的员工。你可以看看,他们在工作中是怎么互动的,感受一下长发哥回答不出问题的“尴尬”。
|
||
|
||
同时,你可以想一想,如果换作是你,在面试或者工作中遇到这些问题,你会怎么回答呢?你可以把思考之后的答案写在留言里。当然,如果你的朋友也在为面试或者操作系统知识烦忧,你可以把这篇文章分享给他。
|
||
|
||
这里呢,我还给你准备了几个回答问题的小Tips。你在答题的时候,可以参照下面这三个Tips,组织你的答案。
|
||
|
||
**第一,回答尽量体系化。**不仅仅回答这个问题的知识点,还可以简单描述一下这个点背后完整的体系,然后根据面试官接下来的追问,更详细地描述其他相关的内容。
|
||
|
||
这样做的好处是:一,防止你因为这个点没有回答好而丢掉所有的分;二,可以体现你的知识掌握比较全面,可以加分;三,还可以避免冷场和尬聊。
|
||
|
||
面试官开放式地提问,最不想听到的就是“封闭式”回答。有的面试者“惜字如金”,有的人能聊一个小时,有的人不到半个小时就答完了,让面试官没有办法深入全面地了解你。
|
||
|
||
**第二,在体系化的阐述过程中,可以加入一些你使用过的相关工具或者技巧的阐述。**例如,操作系统干这个事情有十个步骤。第三步会在某个日志文件里面打印这样的日志,如果发现打印出xxx说明可能有错误,第七步可以通过某个命令行查看某某状态,等等。诸如此类,可以让面试官感觉到你是实战派而非理论派。
|
||
|
||
**第三,在体系化的阐述过程中,如果能加入一些项目经验就更好了。**例如,在第九个步骤,当时在做某项目的时候,因为客户现场的版本问题,导致了什么结果,最后如何进行解决的等等。
|
||
|
||
我刚才说了,面试官问问题的时候,脑子里都是有实际工作场景的。如果你能把他带到你的工作场景里面,有利于面试官对你当时的情形感同身受,你的分数自然不会很低。
|
||
|
||
看我说了这么多,你是不是已经迫不及待的想要答题啦?别着急,我们来说说这两套题的答题顺序,我建议你先做选择题,再做面试题,因为这更像我们实际的面试过程,先笔试、再面试。
|
||
|
||
## 选择题
|
||
|
||
好了,现在开始答题吧!
|
||
|
||
[![](https://static001.geekbang.org/resource/image/28/a4/28d1be62669b4f3cc01c36466bf811a4.png?wh=1142*201)](http://time.geekbang.org/quiz/intro?act_id=152&exam_id=337)
|
||
|
||
## 面试题
|
||
|
||
* * *
|
||
|
||
### 1.你能说一下操作系统的启动和初始化过程吗?
|
||
|
||
秃头哥:给虚拟机做一个镜像,让系统起来以后做一些初始化。
|
||
长发哥:才初始化,怎么连进去呢?
|
||
秃头哥:……
|
||
|
||
### 2.请问进程和线程的概念和区别是什么?
|
||
|
||
秃头哥:把Dubbo线程池调大一点!
|
||
长发哥:好,我调到10000了。线程越多是不是性能越高啊?
|
||
秃头哥:……
|
||
|
||
### 3.请问函数调用堆栈的原理是什么?
|
||
|
||
秃头哥:这个接口调用性能比较差,排查一下哪里慢!
|
||
长发哥:好的,一定认真排查。
|
||
秃头哥:怎么样了?有思路了吗?
|
||
长发哥:正在一行行看呢!
|
||
秃头哥:……
|
||
|
||
### 4.对内存管理了解吗?请说一下物理内存和虚拟内存的概念。
|
||
|
||
秃头哥:你看这个进程GC这么严重,看看问题在哪儿?
|
||
长发哥:这么多变量,看哪个?
|
||
秃头哥:……
|
||
|
||
### 5.请介绍一下虚拟文件系统的机制。
|
||
|
||
长发哥:这个程序运行时间一长就挂了,咋回事呀?
|
||
秃头哥:这不有异常吗?超过最大打开文件数了。
|
||
长发哥:打开文件还有限制?
|
||
秃头哥:……
|
||
|
||
### 6.你了解文件写入的流程吗?
|
||
|
||
秃头哥:咱们的消息队列模型要慢慢换成Kafka!
|
||
长发哥:我大概瞄了一下,Kafka的消息存储是基于硬盘的。这么慢的方式怎么能用?
|
||
秃头哥:……
|
||
|
||
### 7.进程间通信的管道机制了解吗?
|
||
|
||
秃头哥:帮我把这些监控数据里面的第三列拿出来,取一个平均数!
|
||
长发哥:好的,等我打开Excel。
|
||
秃头哥:……
|
||
|
||
### 8.请讲一下信号和中断机制。
|
||
|
||
秃头哥:为了让这个进程能够优雅的关闭,要给他发一个信号!
|
||
长发哥:怎么发信号?
|
||
秃头哥:kill呀!
|
||
长发哥:那不就强制干掉了吗?没法儿优雅呀?
|
||
秃头哥:……
|
||
|
||
### 9.请讲一下TCP/IP的分层模型。
|
||
|
||
长发哥:客户要求数据一个不能丢,是不是要通过可靠的协议TCP才行?
|
||
秃头哥:当然应该TCP呀!
|
||
长发哥:可是客户还要求数据一个不能多,TCP重传可能会导致数据重复啊!
|
||
秃头哥:……
|
||
|
||
### 10.请讲一下三次握手和四次挥手以及状态转换。
|
||
|
||
长发哥:进程明明启动了,为啥连不上呀?
|
||
秃头哥:看一下有没有监听端口,处于什么状态!
|
||
长发哥:我看配置文件了,端口配置得没错呀。
|
||
秃头哥:你看监听的端口和配置的不一样,是不是配置文件有冲突了?
|
||
长发哥:你真牛,你怎么知道另一个jar里面还有一个配置文件?
|
||
秃头哥:……
|
||
|
||
### 11.最新的云或者容器的技术了解过吗?
|
||
|
||
秃头哥:客户有一台老的centOS 6,需要写一个脚本能在上面安装软件!
|
||
长发哥:去哪里找这么老的系统啊,帮我申请一台物理机,我找找老镜像装一个。
|
||
秃头哥:……
|
||
|