身边朋友跟我分享面试字节跳动和腾讯的经历,抽空整理成博文与大家分享一下。
1. 字节跳动
头条技术面共三面,之后是HR面,面试形式是 视频。时间均控制在1个小时。
1.1 第一面:
第一面主要考察基础,先简单自我介绍,以及介绍一下项目,然后开始考察基础。
1.1.1 TCP相关基础知识
- 问题1: 请详细描述三次握手和四次挥手的过程 要求熟悉三次握手和四次挥手的机制,要求画出状态图。
- 问题2: 四次挥手中TIME_WAIT状态存在的目的是什么?
这个问题是画出四次挥手状态图,会引申问你。不排除还会问为什么四次挥手是四次不是二次等问题。最好是把相关问题均掌握。 - 问题3: TCP是通过什么机制保障可靠性的?
从四个方面进行回答,ACK确认机制、超时重传、滑动窗口以及流量控制,深入的话要求详细讲出流量控制的机制。
1.1.2 语言的相关基础知识
字节跳动的技术栈是Go和Python,会问一下相关语言的基础。
问题1: 描述线程、进程以及协程的区别? 描述线程、进程以及协程的定义和区别,顺便描述Python语言中三者的使用。
问题2: GO语言中的协程与Python中的协程的区别? 主要讲解Go中GMP机制。
1.1.3 网络编程相关基础
1.问题1: 网络IO模型有哪些?
5种网络I/O模型,阻塞、非阻塞、I/O多路复用、信号驱动IO、异步I/O。从数据从I/O设备到内核态,内核态到进程用户态分别描述这5种的区别。
2.问题2: I/O多路复用中select/poll/epoll的