字节后台开发实习一二三面
之前字节第三面挂了(写unordered_map写炸了),以为春招已经结束了,结果字节在2周后把我捞了.在一个下午连续面完了一二三面。注:受限于篇幅,只列出重难点,较简单的八股文就不再罗列了。加粗部分为我个人掌握一般的,日后强化。
一、一面
基础知识
- 用户态、内核态;什么样的操作要内核态;为什么要陷入内核态,有什么优点。
- 进程和线程的区别;为什么切换、创建进程开销大;为什么不能都用线程而不用进程;内存隔离是怎么实现的(不重叠的虚存空间实现内存隔离;虚存空间的一部分重叠来实现内存共享)
- 开放题:让我设计一个线程池,然后有不同需求,不断完善阿巴阿巴。其中有个问题:线程执行完如何释放(言外之意就是保证资源释放,哪怕被调用者忘了),我答了用RAII机制,通过类封装,有惊无险的过了。
- IP怎么转MAC地址(ARP协议)。
- HTTP可以用UDP协议发送吗;如果用UDP实现有什么注意点。。。
- TCP的可靠性有哪些;是如何实现的。
- ACID是什么;一致性是什么(保证事务只能把数据库从一个有效的状态“转移”到另一个有效的状态。而事务开始和结束之间的中间状态不会被其他事务看到);四个隔离等级;为啥用B+树做索引。
算法题
双队列实现栈。
二、二面
基础知识
- 乐观锁,悲观锁的区别,适用场景(响应时间、效率、冲突概率、重试代价