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++工程师#