【字节跳动】Go岗-后台开发社招面经

一面:

1、请详细描述三次握手和四次挥手的过程,要求熟悉三次握手和四次挥手的机制,要求画出状态图。

2、四次挥手中TIME_WAIT状态存在的目的是什么?

3、TCP是通过什么机制保障可靠性的?(从四个方面进行回答,ACK确认机制、超时重传、滑动窗口以及流量控制,深入的话要求详细讲出流量控制的机制。)

4、描述线程、进程以及协程的区别?

5、GO语言中的协程与Python中的协程的区别?

6、网络IO模型有哪些?(5种网络I/O模型,阻塞、非阻塞、I/O多路复用、信号驱动IO、异步I/O)

7、I/O多路复用中select/poll/epoll的区别?

8、客户端访问url到服务器,整个过程会经历哪些?

9、描述HTTPS和HTTP的区别。

10、HTTP协议的请求报文和响应报文格式。

11、HTTP的状态码有哪些?

12、描述一下redis有哪些数据结构。(基础的数据结构有5种,String/List/Hash/Set/Zset;高级数据结构有:HyperLogLog/BitMap/BloomFilter/GeoHash)

13、面试官还问了BloomFilter的原理以及Zset的实现原理。

14、MySQL场景题目(面试官提供场景,要求写出查询SQL,考察联合语句,如何分页以及复杂语句的优化)

15、裸写算法:树的非递归先序遍历。

二面:

1、先详细介绍最近的项目,之前项目经验里写了一个分布式的项目,面试官着重讨论了这个项目的实现方案,引申出分布式事务以及分布式一致性等问题,同时会要求在当前项目的基础上附加条件,要求提供解决方案。

2、还问了一些API业务的架构问题,负载均衡、CDN、DNS等问题。

3、也问到了HTTP相关问题,要求描述HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别。

4、裸写算法:回行矩阵遍历。

三面:

1、首先也是考察项目经验,但是着重系统设计,会抽一段之前的项目经验(跟二面的经验肯定不同),要求你描述目前的方案,以及缺点。

2、要求模块化,如果要求对目前系统做微服务架构,如何进行服务的拆分,拆分的规则是什么,考察微服务架构相关知识,服务治理(限流、降级、熔断)。

3、裸写算法:二叉树多个节点的最近公共祖先。

发表评论

后才能评论