1. 为什么喜欢数据库
2. 数据库为什么要用 buffer pool,不用 mmap 管理内存。答的不好,面试官不是很满意。
3. nested loop join 具体怎么做。与hash join 的区别。什么是由用 hash join 什么时候 用 nested loop join ?
4. 什么是火山模型,火山模型有什么好处
5. 除了火山模型还了解什么?有什么区别?
6. 用火山模型一次一次吐出多个 tuple 和向量化模型有什么却别?
7. 怎么实现基于代价优化?为什么交换表的顺序就能达到优化效果。
8. 事务ACID
9. 事务持久化是通过什么实现的
10. 具体讲讲脏读幻读不可重复读
11. raft选举流程
12. raft term id 有什么用
13. 出现网络分区对 raft 有什么影响?
14. 讲讲 leveldb (简历写了)
15. 为什么 lsm 对磁盘友好?
16. 讲一讲 leveldb 压缩
17. 一直添加不相同的key,compaction 还有用吗?
18. c++ 迭代器失效怎么处理?
19. c++ 虚函数表
20. tcp状态机
21. listen 不 accept 有什么问题
22. 一直连连连 理论上有什么问题?
23. 了解go协程吗?
24. go 协程一直在跑一个死循环,什么时候被调度?
25. 进程线程区别?
26. 协程切换在用户态怎么完成?死循环能切走吗?切换的时机?怎么切换?
27. 线程一直再跑,kernel 什么时候切换?
28. go 怎么实现生产者消费者模型?
29. 不用 channel 怎么实现?
30. 如何避免超卖?
31. 条件变量和channel实现的区别?
32. channel能知道指哪个协程接受了吗?
模拟 filesystem 实现 mkdir touch ls
总结:网络八股不熟悉被薄纱,go 协程不熟悉