TIMELINE
3月11日开始投简历,接连投了四五个音视频岗秒挂,百度挂、字节三投三挂、牛客投网易被嫌弃webserver烂大街,故一边继续背八股、音视频,一边开始突击CMU15445。开始考虑放弃学了三个月的音视频方向
3月底投了最后一个字节的音视频岗,秒挂,转而投了快手基架、字节后端。彻底放弃音视频,只要是个C++沾边的岗就投
4月初接到了快手一面和字节一面(后端挂了被转到了基架岗),于是又接着投了华为云计算、腾讯后台开发(TEG基架)。有种C++投后端都被 Java干掉了的感觉,所以之后只投基架/偏嵌入式方向
4月中旬因快手字节面试情况不容乐观,官网投了小米自动驾驶,BOSS上投了蔚来和百度(至今未读),几天后毫无进展,又在官网投了360、字节、百度
4月底意料之外,一周内小米、快手先后OC,总算从字节被挂又被捞、循环往复的主线里解脱了出来,没时间拖着面后边的了,实际也心累了,接了快手offer
5月初腾讯、字节、华为约面,腾讯是微信搜索部门大概率KPI,华为面试不刷人至少泡到六月,所以全拒了没面
反思的结论就是:3月初神仙打架,简历不完善,项目不充分,而且投递的岗位不对路,天真的以为简历里一句“熟悉音视频“就匹配岗位了,所以在个位数HC和满配项目/实习的大佬面前像个小丑。一个月前有个面试邮件都会小激动,如今只想赶紧做个了结,耗不动了
时间久远,很多面试细节已经记不清了,不知道实习之后再看是什么感想
快手
一面 80min
Webserver:QPS、Epoll八股、如何区分多个客户端并发的请求
CMU15445:高位可扩展哈希(这个没组织好语言,解释了好久)、B+树索引的优点
算法:手写堆,包括数组初始化、push()、pop()、empty()
发挥较好,因HR离职导致招聘流程停滞了两周,15天后约二面,一度以为挂了
二面 50min
CMU15445:介绍这个项目、高位可扩展哈希、闭散列和开散列(后来才知道就是开放地址法和拉链法)、乐观锁并发优化、如何不加锁实现读写并发
CPP:虚函数表、好多忘了
算法:没见过的题,上来看见O(n)复杂度宕机了,后来发现就是回溯实际就是O(n)。但面试官要求优化常系数,经提醒得出了拓扑+回溯的思路,硬着头皮写出来了,中途两次想放弃
算法发挥的一般,但毕竟题难凑合写出来了,15min后约HR面
HR面 10min
介绍项目中自己负责的部分、成果和收获,遇到的最大困难、如何解决
三个词形容自己,对于第三个词举个例子证明
到岗时间和实时时长
三个小时后OC
总结
问八股比较少,主要针对项目问的比较细、但不刁钻,大部分时候是在解释项目,压力不大
小米
一面 50min
CS144:介绍这个项目、如何实现和真实网络通信、还有一些计网八股,基本都会就没啥印象了
CPP:关于数据类型表示的范围、size_t范围、可移植性、如何表示一个非常大的数等等,这方面没了解过,所以一头雾水,面试官耐心的引导+讲解了一番
算法:链表版两数相加秒了,面试官很满意
最后还有一些时间,面试官看我不了解小米造车,就很的详细的介绍了部门的具体工作
发挥较好,第二天上午约二面
二面 50min
无项目,全八股
操作系统:虚拟内存、指令乱序、内存屏障、一个线程写完变量,另一个线程能立即读到吗、volatile具体从哪级内存中读
CPP:编程时候如何解决死锁、死锁的条件、破坏循环等待条件怎样实现、介绍智能指针、malloc原理、mutex实现原理、map和unordered_map区别
算法:LRU cache、判断链表是否有环(追问快慢指针是否可能判断不出来,这个答错了。实际当慢指针步数1、快指针步数为圈长+1时,两者永远不会相遇)
发挥不太好,但第三天直接HR电话面
HR面 4min
电话简单沟通入职时间和实习时长
总结
TCP/IP协议栈项目和部门工作匹配度高,算法稳定发挥,所以虽然八股答错的不算少,但也很快OC了
字节
一面 65min
CMU15445:LRU-K算法、SQL执行器优化
CS144:缓冲区结构优化
Webserver:异步日志、Epoll、为什么用多个线程处理任务,而redis却是单线程
CPP:static、vector、多线程并发写的安全问题、构造和析构函数可以抛异常吗
算法:写LRU-K伪代码,项目场景太复杂,结构体都写了好久,最后没写完讲了讲思路
发挥较好,10min后约二面
二面 60min
算法:
- 第一题是很抽象的一个场景题,搞清楚题意就10min,也没想到好算法,随便说了说思路
- 第二题合并K个有序链表,很快写完了,但飞书环境编译就各种报错,最后全注释掉只cout都没输出,硬生生拖到了45min,最后看实在不行就把代码讲了一遍
CMU15445:解释下SQL执行器、火山模型、调用的三方库了解吗、自己实现有什么思路、了解哪些SQL语法
Webserver:解释基于最小堆的定时器、epoll_wait有什么优点、定时器有什么问题/什么时候不准
发挥不好,算法拖太久八股都来不及问,第二天HR告知加一轮技术面再看看
三面 60min
Mysql:binlog、如何保存某一时段的日志、sql注入攻击、写一个例子、了解orm吗
CPP:C++内存分区、auto和使用场景、迭代器的使用、遇到过什么bug
计网:TCP可不可以两次握手、两次握手有什么问题、TCP和HTTP的keep-alive区别
算法:
- 接雨水进阶:高度为0时水可以漏下去,秒了
- 数组从任意处分为左右两部分,求两侧最大值的差最大多少,没想出一次遍历的方法,遍历了两次
发挥一般,“深度够,广度不足”,因为算法第二题没写出最优解,还是挂了
四天后被另一个部门捞了,不过太晚了就没面
总结
字节很重视基础,各方面考察的很综合,但不至于很深很刁钻,算法题是底线,写不出来必挂