【面经】字节跳动研发技术面试实录
字节跳动是近几年发展特别迅速的互联网公司,凭借短视频平台【抖音】和自由创作平台【今日头条】等一系列以内容创造价值的应用异军突起,已经成为动摇BAT地位的一大狠角色。
同时,字节跳动公司也是出了名的出手阔绰,在校招生薪酬上的投入不菲,是互联网行业高薪资、高福利的代表。因此,字节跳动也成为广大应届生心中必须争取的大厂之一。
在去年秋招,我有幸拿到了字节跳动抖音客户端开发工程师的offer。现将整个过程做个回顾,分享给大家。(面试环节对于个人项目的提问省去啦~)
2019.7月底 提前批简历投递
字节跳动在秋招提前批就会开始大批量的简历收集工作,时间是在每年暑期7、8月份。去年暑期我还在准备面试基础,因此没有很早投递字节。
直到八月初才试着找师兄内推了抖音的C++开发岗位。但是很不幸的是,简历关直接被刷了。原因我猜测是因为非科班的简历不够突出,加上提前批的大佬太多,没有对口的项目和亮点,很难获得面试机会。
简历被刷之后,心情跌入谷底。天天只想着刷题和复习,直到正式秋招的来临。在正式批再次投递抖音之前,已经手握几个还不错的offer,因此心里倒是踏实不少。
2019.8.26 正式批简历投递 岗位:客户端
由于提前批简历被刷,因此在正式批的时候有些不太敢去尝试别的岗位。加上师兄所在的岗位同为客户端,机会会更大些。所以也没有太多的考虑,便选择投递了抖音客户端的岗位。在字节跳动的招聘页面上,具体的岗位名称为互娱研发-客户端开发。
进入正式批的环节,一般来说简历筛选通过后,是需要进行笔试环节的。字节的笔试可以参加多次,按照时间顺序大概有4轮,自由选择参加一轮即可。
幸运的是,我在简历通过筛选之后,跳过了笔试环节,直接收到面试邀约。
2019.8.27 面试邀约 形式:电话面试
在投递简历的第二天,便收到了面试邀约的电话和邮件。我自己感觉字节的HR小姐姐特别好,每次都能先打电话确认时间,再确定具体的面试时间。并且说话又温柔体贴,还非常有耐心,还有……咳咳。
2019.8.30 电话一面
一面时间定在简历投递过后的第四天左右。之前我了解到,字节的面试环节都逃不开手撕代码,因此收到电话面试的邀请,还是有些诧异的。后来才了解到,电话面可相当于简历面,是对候选人基本的筛选,不算在技术三面里面。并且也不是所有人都会有简历面这关。
不管怎样,兵来将挡,火来水掩。当天下午四点钟准时接到了面试小哥的电话,小哥的声音听起来比较年轻,估计跟我们年纪相差在五岁以内。小哥的面试问题集中在编程语言基础、操作系统理解、TCP/IP协议理解以及设计模式上。其中对C++的语言基础问的特别详细,能够问到很底层甚至源码实现的层次。另外对于HTTPS的加密过程也问的很细,似乎他最近正在做相关的工作。
整个基础知识提问的时间大概在半个小时左右,最后还象征性的让我口述二叉树前序遍历、二分查找基本的代码实现。说实话,如果是手写其实是最基本的代码了,但是如果要逻辑清晰的有语言表达出来,发现还是有一些难度。
最后反问环节,我问小哥给我的面试评价如何。一般来说,面试官都是会对面试评价保密的,所以有时候面试官会说不方便透露。不过小哥还是简单对我的表现简单评论以下,觉得我的计算机基础还是不错,然后让我等消息。
其实一向听闻,字节的面试效率奇高。往往候选人还没在刚刚的面试中缓过神来,就已经收到了感谢信。
所以在面试之后的一两天里,没有消息便是最好的消息了。
2019.9.2 视频一面邀约
在电话一面过后的两天,再次收到了HR小姐姐的电话。告知之前的面试通过,并且将视频一面的时间定在了9.6日。视频一面的时间与电话一面的时间相差大概在一周。
2019.9.6 视频一面 牛客网面试平台
字节的面试一向都是一鼓作气,经常技术三面一天搞定,轮着来。所以在面试之前还是有点紧张的,毕竟中间没有喘息机会。
一面的面试官同样是一个小哥哥,发量还很茂盛。提问的问题集中在操作系统相关,大部分问题比较常见,比如线程进程、IO复用模型、僵尸进程、孤儿进程、虚拟内存、页面置换、进程调度等等;还有穿插一些开放题,在比较广的维度上考察操作系统原理,比如复制粘贴的实现过程等。当然C++相关的语言基础肯定是必问的。
最后手写了两道代码题,一个是LRU页面置换。可见文章 面试高频算法详解-LRU
另一个是计算化学分子式每个元素的个数,如HMg2(H2O(P2S3))3NH3,每个元素以大写字母开头。这道题稍微比较复杂,采用递归的思想处理括号就行。
整个面试过程我自我感觉比较良好,大部分的基础问题都是常规题,没有非常刁难的问题,只不过有时候面试官不会直接问你什么什么原理是什么,而是会给你一种场景,让你解释其中的原理。最后的代码也不算特别难,只不过由于时间关系,第二道题没有写完。
一面过后,面试官让我在线等待,不用退出面试房间。我心里就略放松了一点,这说明等会还有二面。
2019.9.6 视频二面 牛客网面试平台
一面过后十分钟,二面面试官上线。这位面试官稍微要严肃一点,很快就直接进入了面试主题。提问的问题主要针对于C++语言基础,常见的高频的问题基本都有问到。每个问题没有问的特别细致,但是开放度很高。
比如问了一个问题之后,他会一直问,“还有吗?”就让我把所有自己了解到的东西都讲述出来,其实这个过程还是很过瘾的。只不过有时候还是要注意不要给自己挖坑了。
基础题过后有几道开放题目,就是考察计算机思维的。具体的题目不太记得了,但是回答的过程应该还是挺顺利的。
最后的代码环节也没有我想象的那么可怕,以为会比一面难很多。但是没想到就是一道链表操作的题目。面试官说重要是看对于链表指针的操作。
题目不是很难,在有限的时间内还是搞定了,虽然中间有点紧张。
面试完之后,面试官同样也说让我保持在线。我心中窃喜,叹了口气,终于又撑过了一关。
但是几分钟后也没见有动静。然后又接到了HR小姐姐的电话,告知今天三面是主管面,但是主管这个时候在开会没有时间。我这才一看时间,从下午三点已经面到了快六点钟。
最终三面的时间定在了9.9日的晚上。
2019.9.9 视频三面 牛客网面试平台
三面是主管面,提前问了下HR姐姐,主管面是问技术还是人生规划。被告知可能都会有。
怀着忐忑的心情等到主管上线后,感觉面试官是个比较随性的人。没有很严肃,说话听起来比较随性。
随后就是直接开放题上手,从最简单的情况到越来越多的约束条件,一一分析可以采取的解决方案。比如
诸如此类。
之后顺带问了些C++的常规题。在提问的期间,感觉面试官比较注重的是思维能力和分析问题的能力。或许问题本身没有多大的难度,但是面试官希望看到的是我思考的过程,从理解问题、分析问题到提出解决方案、寻找漏洞、优化方案等环节上的思考。
最后的代码题也让我松了一口气,同样是一道链表操作题。
这是leetcode 25的原题,虽然是一道困难的题,但是其实没有那么难。
我怕时间不够,就采取了一种取巧的方法,也是写出来了。最后有一点点小bug,经过面试官的提示还是搞出来了。
整体感觉上还是挺顺利的,没有遇到特别让我无法回答的提问,代码题也没有那么吓人。可能是客户端的面试稍微要简单一点。
面试完之后,我尝试着去问HR姐姐有没有出结果,但是HR姐姐说主管去开会了,并且面试结果也没上传,所以暂时只能等待了。
2019.9.10 11:00 HR面
在面完主管面的晚上,HR小姐姐加了微信,说第二天简单聊聊。我问这意味着技术面通过吗。她说不一定。
HR面的过程比较简单,就是问一问人生规划之类的问题,总结来说就是要有字节范儿~基本上不会因为HR面挂人。最后HR小姐姐说等待消息就可以了。
这一等就是十天。在等待的期间,招聘系统里面的状态变成绿色为底色“面试已结束”。
2019.9.18 收到录用意向书
经过十天的等待,终于等来了意向书。收到的那一刻其实是有些平静的,因为感觉面试过程都比较顺利,一路上没有太多的卡顿,但是或许也没有太多的亮点。一个词评价的话,就是中规中矩。
总结
抖音作为字节跳动的拳头产品,是其公司内部的核心部门。能够有幸加入抖音其实很大一部分也是有运气的成分在的。
字节跳动的招聘十分火热,基本上全年都是铺天盖地的宇宙条的招聘信息。但是其实录取率并不高。许多人也认为客户端的难度相较于后端而言,要简单不少。但是其实如果你的基础扎实,差别也不会很大。
无论是找后端方向还是其它方向,我相信整个面试的过程和时间节点都能对你有一定的帮助。字节跳动的面试流程基本上是我面过的公司中最快的,效率最高的。整体上来说,面试的难度与BAT相当,比较看重计算机基础和代码能力。如果你已经准备好了简历、项目、算法和基础知识,不妨尽早投递试试。
Git 常用命令操作整理汇总
某程序员动了公司的祖传代码“屎山”,半年后怒交辞职报告!
分享一套学习资料