字节跳动基础架构四面面经(已意向书)
base杭州,整个流程包括周末下来10天左右,因为没有录屏做记录,所以很多问题给忘了,只记得部分。
大部分时间是在聊实习经历和项目,其他问题问的不多。
8.27 一面(70分钟)
1. 实习业务相关
2. lvs四层转发和nginx七层转发的区别?
3. 为什么要有lvs四层转发?
4. close_wait和time_wait是什么?为什么要time_wait?
5. 499和502出现的原因是什么?
6. session和cookie区别,解决了协议的什么问题?
7. 转账过程中,会出现什么事务的问题?
8. from_count -> to_count,to_count是热点用户,可能有多个请求要修改,怎么处理?
9. 什么场景需要建立索引,为什么要建立索引?
10. 排序数据要建索引吗?范围查询要建索引吗?txt文本数据要建索引吗?
11. 用户id怎么生成?(DB自增不可靠,因为可能有多个机器共用一个DB,自增会溢出。从代码层面解释如何生成)?
12. 怎么保证DB里面的数据不会被修改(权限问题不考虑,假设用户有权限)?
算法:任意三个数之和最接近0
2. lvs四层转发和nginx七层转发的区别?
3. 为什么要有lvs四层转发?
4. close_wait和time_wait是什么?为什么要time_wait?
5. 499和502出现的原因是什么?
6. session和cookie区别,解决了协议的什么问题?
7. 转账过程中,会出现什么事务的问题?
8. from_count -> to_count,to_count是热点用户,可能有多个请求要修改,怎么处理?
9. 什么场景需要建立索引,为什么要建立索引?
10. 排序数据要建索引吗?范围查询要建索引吗?txt文本数据要建索引吗?
11. 用户id怎么生成?(DB自增不可靠,因为可能有多个机器共用一个DB,自增会溢出。从代码层面解释如何生成)?
12. 怎么保证DB里面的数据不会被修改(权限问题不考虑,假设用户有权限)?
算法:任意三个数之和最接近0
8.31 二面(60分钟)
1. 实习经历(20分钟)
2. 三次握手具体过程(要说自己的理解,不能直接背),seq可以从0开始吗?
3. 数据库索引引擎为什么用B+树,和B树区别在哪,为什么不用红黑树/AVL树(从磁盘IO,查找稳定性,数据量去分析)?
4. B+树的双向有序链表有什么用?
5. 进程和线程机制上的区别,应用上的区别,线程共享/独有的,进程通信方式(一个一个往后推理,为什么要有这个)。
6. 线程和goroutine的区别,为什么协程比线程轻量级?
算法:lc124. 二叉树中的最大路径和
2. 三次握手具体过程(要说自己的理解,不能直接背),seq可以从0开始吗?
3. 数据库索引引擎为什么用B+树,和B树区别在哪,为什么不用红黑树/AVL树(从磁盘IO,查找稳定性,数据量去分析)?
4. B+树的双向有序链表有什么用?
5. 进程和线程机制上的区别,应用上的区别,线程共享/独有的,进程通信方式(一个一个往后推理,为什么要有这个)。
6. 线程和goroutine的区别,为什么协程比线程轻量级?
算法:lc124. 二叉树中的最大路径和
9.1 三面(60分钟)
1. golang,defer的底层执行过程,顺序是怎么样的,多个defer执行顺序
2. 实习项目,开发流程,遇到的问题(20分钟)
3. golang的slice扩容原理(顺带提了下vector的扩容)
4. 网络IO模型有几种,分别是什么(阻塞IO、非阻塞IO、IO多路复用、信号IO、异步IO,详细介绍)
5. socket编程的流程(服务端、客户端)
6. session和cookie
2. 实习项目,开发流程,遇到的问题(20分钟)
3. golang的slice扩容原理(顺带提了下vector的扩容)
4. 网络IO模型有几种,分别是什么(阻塞IO、非阻塞IO、IO多路复用、信号IO、异步IO,详细介绍)
5. socket编程的流程(服务端、客户端)
6. session和cookie
7. 进程和线程在应用上的区别,机制上的区别,什么场景选择哪种,为什么?
9.6 四面(45分钟)
1. 实习项目(20分钟)
2. C++和golang在并发场景下的应用区别
3. socket编程心得
4. 个人项目(问了个RPC框架)
5. 算法:
(1)合并两个有序数组(简单)
(2)找一个数,它两边的数都比它大(二分查找变种)
2. C++和golang在并发场景下的应用区别
3. socket编程心得
4. 个人项目(问了个RPC框架)
5. 算法:
(1)合并两个有序数组(简单)
(2)找一个数,它两边的数都比它大(二分查找变种)
面试完隔天,也就是9.7号,HR联系发意向书,当天中午收到意向书。
总结:
面试的大部分时间在聊实习经历(我在腾讯云有过一段实习经历,做cdn),和基架那边的业务线有些关联,所以聊得来。然后大多是一些开放性的问题,不是那种八股直接背出来就行的,我这里列的问题可能不全,但每个问题面试官都会追问。二面后问面试官表现怎么样,他说底层技术知识还是不错的,不会停留于表面,因此面试问到不会的可以尝试和面试官讨论下,不要停留在背八股的层面。
最后,祝大家都能拿到心仪的offer,顺利结束秋招!