偶数科技面经
8.14 一面 1h
拷打项目
1. paxos算法的优缺点
3. 讲一下paxos算法的二阶段提交
4. 为什么是二阶段提交,如果只有一阶段提交该怎么办
5. MVCC如何实现可串行化
6. 可重复读和可串行化有什么区别
7. 分布式事务,分布式事务的二阶段提交
8. 死锁的预防有什么优点,有什么缺点,死锁的预防相比较于死锁的检测有哪些优缺点?
8.17 二面 1h30min
1. spinlock底层是怎么实现的
2. pthread_mutex是怎么实现的
3. pthread_lock和pthread_unlock是系统调用吗
4. epoll了解吗,epoll_wait能同时通知两个线程吗
5. 链接了解吗,链接中的符号是如何实现的,两个cpp文件中的同名函数能成功链接吗
6. CFS调度了解吗,CFS调度是如何实现的
7. cpu的分支预测器了解吗
8. cpu之间的缓存时共享的
9. 共享的缓存如何实现缓存一致性
10. MESI协议当中,MESI分别表示什么意思
11. push_back为什么是二倍扩容,push_back的均摊复杂度怎么计算
12. 手撕vector,要求实现构造,拷贝构造,移动构造,push_back,clear,resize,reserve,shrink_to_fit,要求最终能够存放std::unique_ptr<int>
13. 信号量是如何实现的,信号量当中的计数器和链表是使用什么保护的
14. 大内核锁讲一下,大内核锁是怎么实现的
15. 从汇编的角度讲一下函数调用过程中参数的传递
16. C++的智能指针有了解吗
17. Linux的信号有了解吗
18. 讲一下epoll的两种触发方式
19. free是如何知道malloc的大小的
20. 原子操作的底层实现原理
21. 多个cpp文件当中全局变量的初始化顺序
8. 22 三面
1. 写程序的时候如何保证不内存泄漏
2. 如何自动的关闭文件,如何保证文件的内容被正常关闭,close的返回值有哪些
3. 如何修改max file size
4. 整个系统recovery的时间是多少
5. 是先写日志再进行状态之间的传递吗
6. 知道火山模型吗
7. 火山模型是pull base吗
8. 共享内存知道吗
9. 如何保证共享内存不会内存泄漏
10. 如何给客户的数据库排查内存泄漏(asan和varligrind都是再编译期间排查的,不能用),如何生成coredump file