字节跳动 C++客户端 一面/二面/三面(已发offer)
11.2更新:
晚上开奖了,SSP,不过还是选择了🐧
9.24更新:
中午问了一下HR,要了身份证马上就发意向书了。
9.4更新:
HR傍晚六点说终面通过,下周审批offer。许愿oc🙏🙏🙏
楼主虽是计算机专业,但平时🈶体育竞赛任务,老在外面训练,所以没什么时间混lab,一直磨磨蹭蹭到7月把论文投了才开始准备。7月初毫无准备投了微信直接一面挂(二分查找都不会的那种),所以8月中旬前感觉非常没底,就一直没投简历。
8月19在牛客刷到一篇字节内推贴,抱着试一试的心态投了字节。23号下午约一面时间,定在25下午5点面试。面试官很帅,面试过程顿时愉悦起来。
一面(30mins)- 飞书视频面试
先自我介绍,扯了下项目,问我熟不熟C++,我说海星,然后开始问。
基础知识:
1. new与malloc
2. vector扩容机制,以及为什么是2倍(主动深入一下,把分配器也讲了)
3. vector、list、map的对比(对应的结构、迭代器、底层实现)
4. 死锁四个条件(当时忘了一个,🤦🏻♀️)
5. 静态链接、动态链接区别
6. 了解过啥设计模式?写一个(我说单例和工厂,然后问了问不用static怎么访问单例的成员函数,我:?八知道)
7. 类大小,考虑空类、非静态成员变量、成员函数、虚函数这四种情况的组合
8. TCP/UDP的区别,然后你觉得网游里面用哪种
讲完上面的大概20分钟。
算法题:
环形链表,就那个快慢指针的,没用IDE和牛客,直接在飞书里面某个页面写过去。
二面(1hour) 8.30 下午5点 - 飞书视频面试
一看面试官就知道是大佬,问了说是工作了十多年,现在主要做管理(这不是三面才有的🐎)。 基础知识:
1. 内存对齐(how、why),如何修改对齐?(使用指令#pragma pack)
2. 再次问到了vector的扩容,以及为何2倍(这次回答:根据一些统计结果,两倍扩充可以达到最少的扩容次数)
3. map底层、list底层
4. 虚函数那一套,比如虚表多少个啊什么的
5. 类对象初始化的过程:内存分配、虚指针赋值(若有)、列表初始化、构造函数。第二个比较细,一般八股也没有,答一下挺好。
算法题
二叉树的最大最小深度,必须使用迭代实现(面试官说递归那太简单了,没意思)。大家可以去去lc找那几个二叉树遍历的基础题,解析里面就有的。
这一面有点追问的那种感觉,所以我尽量控制好自己的节奏,常规作答即可。5点20分说过了二面,约三面时间。
三面(1hour) 9.2 下午4点 - 牛客网在线面试
三面面试官比较和蔼,有点像leader。 主要是软性问题为主:1. 详细说说简历里面项目的一些难点
2. 为什么硕士做那么多算法却来客户端
3. 平时喜欢如何学习一些新的技术和知识(我说先去wiki查概念,然后去github找实现的例子,再没有才去百度)
4. 有用过什么代码管理软件嘛(svn、git那些)
5. 有没有用过什么开源的库(项目中的那些,提了几个)
6. 学习c++的过程中看过什么书么?当场抄出脚边的《C++ Primer Plus》、《Effective C++》、《Effective Modern C++》、《STL源码剖析》
7. 协程知道不?我说不太清楚,好像是C++20的新玩意,是一种用户级线程,然后他就让我通过已有的知识大概猜测一下工作原理。
8. 除了继承,还有一种东西叫组合,你知道么?这个我雀食不知道,我就说好像是和多重继承差不多,其实组合是避免多重继承的问题的另一种设计方式。
9. 说说输入网址后发生的事情
算法题
LC 151 反转字符串里的单词 要求空间O(1)
这题之前做过但不是空间O(1),好在我面试前几天瞄到过一个什么"手摇算法",就是先单词内反转,再整个字符串反转。
这题之前做过但不是空间O(1),好在我面试前几天瞄到过一个什么"手摇算法",就是先单词内反转,再整个字符串反转。
草稿纸上推了一下好像可以,然后一波直接写了出来。
大概就这么多吧,7月初才开始刷题&看八股,自己已经尽力。
字节给我的感觉就是非常在乎基础知识的掌握,每一面都会考察算法。流程顺序都是先自我介绍,问问项目(如果面试官感兴趣),基础知识,最后才做题。
一面简单基础,二面会有深入,三面开始考察开放性问题以及应变能力,层次感很强。此外面试官比较和善,不会的也不会难为你,并且都会开摄像头,很尊重面试者。
以上是我的经历,但不保证每个人都是如此。