一面
1.进程线程的区别
2.线程间竞态同步的手段
3.RCU锁了解吗
4.说一下原子锁的实现
5.说一下Linux内存管理模块
个人觉得这种范围大问题一定要事先整理描述条理。Linux内存管理模块分为两大部分,虚拟内存管理(进程地址空间、vma),物理内存管理(slub、伙伴系统、缺页中断、物理内存申请、释放、内存规整、内存迁移),这两者的桥梁是虚拟地址到物理地址的转换
6.详细说一下虚拟地址到物理地址的转换
7.进行上述转换的物理硬件叫什么(mmu)
8说一下tlb
9.聊项目
10.arm和x86架构了解吗
10.leetcode 86(很尴尬,本来应该秒出来的,但面试官让手写输入输出,自己构造链表,在输出的时候有个bug一直没发现,导致有个case一直没法过,搞了很久才解决。当时以为铁凉,没想到还是过了)
二面
1.对leveldb了解的程序是什么,有深入源码吗
2.说一下leveldb读写的过程
3.现在有个黄页数据,比较一下LSM-Tree、哈希存储、B+-Tree三种存储引擎的优劣以及性能瓶颈
4.现在有种新的存储介质,随机读写和顺序读写的速度相近,你有什么优化leveldb的存储引擎的方案
个人觉得,类似上面这种的开放场景题,可以多和面试官交流。这种题考察面试者的计算机思维的同时也考察沟通的软实力。毕竟以后大家是一起共事的,你提出一个方案之后,其实是面试官和你一起解决、优化这个方案。
5.说一下slub解决了什么问题
6.你了解过什么用户态的内存管理方案吗
7.手撕岛屿数量
三面
1.项目一个个聊过来(聊了很久)
2.知不知道不编译内核代码,怎么在内核添加钩子函数(kprobe,很尴尬,记得这玩意的使用过程,但忘记叫什么名字了)
3.说一下Linux内核的时间轮算法,了解过它的优化吗
4.Linux内核的同步手段
5.什么时候需要考虑机器的大端、小端存储(举了一个两台机器序列化传输一个数据结构的例子)
6.手撕内核改进的自旋锁算法
面试官详细说了了一下这个锁的原理,铺垫了一下写的时候一些可能的注意事项,然后让你手写。
7.职业规划
全部评论
(12) 回帖