字节跳动日常三部门打捞一二三四五六面面经(已OC)
鼠鼠被三个部门捞了,总共面了六次,写一下这六次面试的面经。
一面:总共45分钟
项目拷打、项目八股,涉及到tcp、http协议的常规问题。
cpp const, statics 等常规问题,例如const类能不能调用非const函数,单例模式等等。
其他的部分就一直拷打内存分配的内容,包括栈、堆、malloc实现、mmap的使用,mmap和io的比较,最后问我让我自己实现一个类似于valgrind的功能,要怎么写,讲讲思路。我从freelist,sbrk的角度回答,感觉面试官也算满意。
其他的内容记不太清了,代码题两道,都比较简单,二叉树中序遍历和括号匹配。第二天约二面。
二面:总共40分钟
全程cpp八股拷打,涉及define宏、inline、const、指针、引用、多态、智能指针等等,问题比一面常规。
代码题:二叉树层序遍历,以及岛屿面积。整体难度也很常规。面试半小时后约三面。
三面:总共45分钟
闲聊一段时间,然后项目拷打,问我为什么这个项目用cpp和python来写,cpp和python比较,为什么速度更快,以及编译类语言什么的,这个完全没答上来。。。。。
代码题:找k个最大的,要求:手写priority_queue。代码题中规中矩,但是写完后,面试官要求我手写一个priority_queue,也顺利完成。
三面都算常规,感谢面试官不杀之恩,等待通知中~许愿许愿。
四面:总共1小时
项目拷打,线程池改进策略,网络模型reactor改进策略,如何实现更高的并发等等;
操作系统:虚拟内存,mmap
cpp相关,模版类、智能指针等等
算法题:矩阵中求A到B最短路径,bfs解决
算法题大概5-8分钟写完,其他时间一直在问项目问题,不断深挖
感觉难度整体很大,一直追问,追问到不会为止
五面:40分钟
闲聊,职业规划,留学生活等等,然后八股拷打,数据库相关,B+树、B树、哈希等等,http 1.1 2.0 3.0全家桶等等
没做题目
六面:80分钟
项目拷打,LRU相关,https相关,数据库相关,stl容器相关,malloc,allocator等等,set和unordered-set区别
两个读代码:都没回答好,一个完全回答错误,一个回答后被追问
一个hard:力扣440,字典序排序,之前没写过,用了trie树的思路,写了一个0-9的10个节点的树,并且trie树遍历回朔,讲了思路,面试官说思路大致正确,但没跑通
·········
6.13 更新一下,获得两轮加面。 hr说原岗位招满了,问我要不要转岗,于是又加了两面
6.14更新一下,新一轮一面通过,面试两小时后安排6.15二面
6.15更新一下,hr没说五面过没过,问我转不转岗,于是又安排了技术面。
6.16更新一下,六面通过,安排hr面
hr面结束,提交审批
6.21更新 正式offer
·········
整体复盘:
前三面都比较简单,后三面难度明显上升,字节面试官、hr的效率很高,基本是当天或者第二天更新结果,面试官亲和力也不错,hr电话的语气也很温柔,以下是关于个人的一些面试反思:
- 关于cpp的一些细节,鼠鼠掌握的不好,比如读代码题,算是一个细节的基础问题,难度很小,但还是没回答上来。
- 对操作系统了解太少,源码读得太少,以及项目中用到的包、api等等,面试官都问过读过源码吗,可惜鼠鼠没读过。
- 一些应用场景题目,鼠鼠接触的场景,项目太少,无法回答。
- 鼠鼠的力扣题量260题,还有待加强
········