2022 字节跳动 提前批 四轮面试(已完结)
投递岗位:后端开发工程师
一面 (60mins)
- 手撕代码:复杂链表的复制
 
思路1:使用 map 来映射结点与对应的位置索引
思路2:面试官提示可以从链表扩充的角度想一想,所以想到了对原链表每个结点进行复制,如 123 复制后变成 112233 然后对复制后的链表使用两个指针来调整随机指针的位置,最后分离两个链表。
- HTTP 的头部有哪些属性? 
- HTTP 有哪些状态,表示什么含义? 
- MySQL 事务了解吗? 
- MySQL 的隔离级别有哪些?是如何实现的? 
- Redis 数据结构有哪些?跳表的底层是怎么实现的? 
- 集群有了解吗?(不了解) 
- 协程了解吗? 
二面 (50mins)
- 手撕代码:
(1) 盛最多水的容器
 
(2) 132 模式
 
- TCP 与 UDP 的区别有哪些? 
- HTTPS 是什么?是如何加密的? 
- Cookie 和 Session 了解吗? 
- Redis 持久化机制有哪些? 
- 数据库并发一致性问题有哪些? 
- 数据库的悲观锁与乐观锁? 
- 假如有一个学生成绩表,有学生 ID 和成绩字段,要求找出成绩相同的学生,SQL 语句怎么写? 
- RPC 有了解吗?(不了解) 
三面(45mins)
- 聊一聊做过的项目
详细介绍、交流了研究生做的课题,占据了三面的大部分时间;
- 进程的内存和线程内存的区别?协程是什么? 
- 手撕代码:组合总和 
 
四面(30mins)
- 聊一聊研究生做过的项目- 项目背景,自己做的课题吗?
- 解决了什么问题,有哪些创新点,和当前主流有什么不同?
 
- 课外有做过什么项目吗?介绍一下,和别人做的有什么不同?
- 讲一下你觉得最有成就感的事情?
- 你觉得你自己的优势是什么?
- 对分布式、微服务等有了解吗?
总的来说,四面和三面差不多,主要是问项目经历,而且问得更加细致,好在最近在准备论文相关细节比较清晰,所以回答都比较清楚。在反问阶段,问了一下这个四面是什么性质,面试官说是因为前面有面试官评价挺高,所以加了一面 double check 一下。
总结
目前已经收到意向书,总体感觉字节跳动是近两个月来面试体验最高的了,不仅效率高,而且不论是面试官还是分配的 HR 小姐姐都非常和蔼、周到,后面还是需要继续加油!
#面试复盘##面经##校招##C++工程师#