头条面经 后台开发
经过三轮堪比ACM的头条笔试,勉强进了面试。
10.13三轮技术面,本人主修JAVA,头条后台偏Go/python,面试过程如履薄冰
一面:
1. 计算机为什么要用补码?
2. 计算机内部的存储结构?虚拟内存和物理内存的区别?
3. TCP流量控制和拥塞控制?
4. Time_wait有什么用(面试官补充了一个教科书上没有提到的作用,关于网络异常、数据失序的辨识)
5. nagle算法了解么?
6. 各种排序算法及其效率
7. 多进程和多线程的区别
8. 算法题:如何利用rand(1,8)实现随机生成1-5
9. 手撕堆排
二面:
1. 如何改进UDP的不可靠传输,保证数据有序性?
2. TCP三次握手和四次挥手的描述
3. 一致性哈希了解么?
4. 进程间的通信,文件通信了解过么?线程间共享的有哪些东西?
5. 算法题:一个链表,奇数位升序,偶数位降序,如何整体排成升序?
6. 算法题:千万级别的数据量,实现队列FIFO,如何设计数据结构节省内存空间(数据+链表)
三面:
1. 问论文发了什么?具体讲内容
2. 问哪个项目最有收获,具体讲内容
3. Oracle高可用集群的共享存储怎么实现?
4. Redis和数据库一致性怎么实现?
5. 手撕数据库连接池(质疑我没有考虑高并发时的同步和效率问题)