深信服一面,刚刚面完在回去的车上,我尽量回忆我记得的。
0.你认为你的优势是在哪里。
我大概回答都懂一点但懂的不深。看他可能觉得我答非所问,最后脑残加了一句,可能操作系统和网络比较熟一点。
然后面试官就开始疯狂问操作系统了。
1.操作系统之内存管理。
当时感觉这个问题问的有点大,我首先想到的是内存分配,所以我先答了内存分配的策略,名词也有点想不起来了,我就说,先分配最大的再分配……
然后面试官打断我,说分两块答吧,第一是刚刚开机的时候,操作系统会怎么管理内存,第二是程序执行的时候。
我说开机的时候,BIOS会加载一些初始化程序,然后操作系统从硬盘被加载到内存里(废话),然后……然后操作系统再……再做一些初始化工作……(我实在编不下去了)。程序执行的时候……我把程序执行时候的内存组织答了一遍,什么堆区栈区啦等等。面试官接了话问数据区里有什么,我说放一些常量之类的东西。
我感觉这个问题我主要没理解清楚面试官想问的点,也就是内存的分页和分段。主要是这一块我确实有点模糊了,虽然之前准备考研的时候有复习到。面试官可能也看出来了吧,后来逮着机会又问了一次。
2.简单说一下进程和线程。
我简单答了一下定义和区别还有他们的特点。面试官进一步问,如果你有一个32核内存128G的服务器,在处理高并发请求的时候你会怎么进行编程?我:……?面试官补充什么进程线程…他也没说一个整句,大概就是说采用进程还是线程?我说当然用线程(我还以为真的要我去编程),线程更小更灵活,资源开销更小……对吧。他不置可否。
看到他这个态度,我也搞不明白他真正想问的是什么了。
3.简述分页分段机制。
我说大概都是一个基址加上一个偏移来,来,来寻址吧……
这段我实在有点模糊了,我脑海里只有一些残缺的片段,如果他能给点提示我应该能答出来。可是面试官全程无提示,我的回答他也不置可否。当然,我也不是怪他,只是给接下来面试的同学提个醒。
4.手写一段字符替换代码
其实刚刚拿到题目我也大概懵了五秒钟,好在然后很快想好写完了。有个地方我后来才想起来要用continue而不是break,算是比较大的失误吧,面试官也不置可否。
5.printf实现多参数的机制。
printf的参数为什么是可变的?坦白讲,这个问题我从来没有考虑过。有变参数,我只能说重载,他问我,要重载多少次,我:……
面试官看我回答不出就打住了。这也是最后一个问题,然后面试官说差不多了,让我等,如果通过一个星期以内会有消息。
基本上就这样。比较遗憾的是关于内存的那个问题没答上,还有自称操作系统还不错。其实昨天晚上我基本上都在看C和数据结构,操作系统也有一段时间没看了,当时那句话纯粹是凭直觉说的……