You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
7.0 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 期末测试 | 这些操作系统问题,你真的掌握了吗?
你好,我是刘超。当你看到这篇文章的时候,说明你已经历经九九八十一难,完成了整个课程的学习,你是否已经悟到操作系统的“真谛”了呢?我们今天就来测试一下。
先和你说一下,期末测试题的设计,我采取了和入学测验不一样的思路。当时入学测验里的题目比较细节,类似你在大学里学完操作系统课之后的考试题目。现在整个专栏学完了,我们需要换一种检测方式。所以,期末测试题,我设计成了选择题+开放式问题的形式。这才是我们现实生活中,不管是面试还是工作中,常常会遇到的“考试”方式。
有人说,面试的时候问操作系统知识,就是“面试造航母,上班拧螺丝”,没有啥用。其实不然,这些看似简单开放的问题,其实最能检验真本事的。面试官毕竟阅人无数,带人无数,看似他只是在问你这个问题的答案,其实这些问题背后都有实际的工作场景——只是你可能不了解或者想象不到而已。
因此我把专栏内容中最核心的知识点总结成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需要写一个脚本能在上面安装软件
长发哥:去哪里找这么老的系统啊,帮我申请一台物理机,我找找老镜像装一个。
秃头哥:……