腾讯os内核虚拟化面经
中秋节接的offer,属于是意外之喜了。
投的时候比较早,腾讯刚开,只有一个技术大咖可选的岗位不多,然后看了一圈都不合适,选了个“其他方向”,想着随便吧,谁捞我我就面谁。不过有老哥说可能录用的不是大咖,我看官网也不显示是啥岗位,只能到时谈薪问问了。
timeline上7.13投递,8.24一面(一个月才有消息),8.26二面,8.30 hr面,9.29意向,结结实实等了一个月。去的岗位是做os内核虚拟化的,还算对口。
8.24 一面
刚接到面试不知道是啥岗位,我自己盲猜是存储部门或者数据库的,因为不知道腾讯有os部门,我自己投的也大多是存储岗位。
上来手撕代码:1~10000000所有数字中总共1的个数,感觉中等,主要是总结递归公式。
问:
- 自我介绍
- page cache,架构设计、如何平衡内存占用,系统调用从用户态到内核态的流程
- page reclaim,与page cache的交互,rebalance、回收算法,与kmalloc的交互
- 阿里云存储部门的实习
- 简历文件系统项目
- cpu乱序,reorder buffer,内存序
- x86 vs. arm内存序,store buffer
- tlb consistency,多核上的tlb shootdown算法,如何保证race condition下正确性,kernel的具体实现
- 倾向于去哪个base,愿意去成都吗
反问:
- 啥部门
- os部门面向的业务
- 不同base地之间区别、负责的内容
- 工作强度
- 虚拟化主要是哪部分的虚拟化
一开始因为不知道是啥部门,我回答os相关问题的时候还可以收敛一点,因为不做内核的人很多术语可能没听过。直到面完了反问的时候才知道是os部门,有点吃惊没想到歪打正着。
面试难度的话除了开头page cache的一些细节因为很久之前看的了,需要回忆一下,其他还是比较轻松的。而且我话比较多,甚至于最后面试官说“好了好了差不多了,我这边没问题了”...
8.26 二面
问的问题非常多,而且非常细。我有很多次觉得差不多时间了吧,问完这个是不是就该“我的问题问完了你有什么要问的”,结果还有下一个问题,这么反复了四五次。一个半小时全是问题,没有手撕,而且我语速还非常快,不然估计更久。后来hr面hr说才知道竟然是整个虚拟化的负责人....
问的问题实在太多,面完累死了也没记问了啥。印象最深的一个,甚至要问我你刚才说的这个设计是在内核哪个结构体实现的,我说struct page,后面问到reverse mapping,我说anon vma的时候提到了struct page的union,他甚至问我rmap是在page的哪个字段实现的.... 还好我看过答上来了,总之就感觉问的非常多非常细。
给自己知乎专栏打个广告,大爷走过路过来看看啊~:https://www.zhihu.com/column/c_1576639032024567808
#晒一晒我的offer#