今天就来分享一下字节跳动的测试开发面试流程。
形式
现在是疫情期间,头条呢开启了全程视频面试,所以我也不用跟公司请假,选的都是晚上正常下班时间后的时间。
这对想要背着公司偷摸出去寻找机会的人来说,体验真的一级棒 nice~
面试一共会有四轮,视频面试一晚上也就能面一轮,本轮通过后很快 HR 就会发消息通知结果。
同时,对于大致要考察哪些内容,头条的 HR 也会进行简单的介绍,让面试者有个了解和准备。
面试会考察计算机基础知识、算法、数据结构,可能会需要写码
视频面试用的是牛客网,HR 会把视频面试的链接通过邮件发出,这是我面试的窗口:
由于我面试的岗位是测试开发工程师,所以需要线上撸码,朋友说去公司现场面的话,是给一张纸写的,比起纸条,用键盘还是舒服多了。
而且不光测试开发,测试工程师也是要撸码的,所以想进大厂做工程师,写代码的基本功要打扎实了,在准备面试期间要脱离 IDEA,PyCharm 等具备代码提示的 IDE,而是在文本编辑器中进行训练。
面试内容
自我介绍
一开始,面试官会需要我做个自我介绍,而我也认真准备了一段一分钟左右的内容,并进行了熟练背诵。
虽然自我介绍不能说明求职者的技术如何,但对考察求职者的表达能力还是很直观的。
说到这里,昨天我刚刚面试了一个来求职的人,坦白说他没有对自我介绍进行准备,讲了一些没什么用的废话,听完之后也不知道他擅长什么,这一点给我的印象不是太好。
了解项目情况
说完自我介绍后,面试官会针对简历上的内容,尤其是做过的项目进行一些询问了解,考察你对项目是否熟悉。
这里有个重点大家要记住,自己不熟的东西千万别往上写,写上去的每一句话都一定是自己答起来游刃有余的。
这两天看一个模拟面试视频,里面的一份简历上写着,对 JVM,GC 非常熟悉,结果面试官问了几个基础的问题,面试者就各种我记不清了,大概,好像这样的词不停从嘴里蹦出来。
这样写简历是非常不好的习惯。假设真的要写对某个技术很熟悉,那么一定要认真做好复习功课,如果简历上写着各种熟悉,面试时却各种不会,面试官心中就会开始给你画叉叉了。
编程题
了解完一轮项目的内容后,面试官会开始出题,编程语言不限,可以通过网页编辑器下拉框选择自己熟悉的语言。
基本上所有常用编程语言都可选。
但据我的经验,用脚本语言写会方便很多,一个是它的语法简洁,另一个是不需要关注行尾分号,如果写 Java,就会很繁琐。
另外,虽然没有明确限定时间,但如果 10 分钟写不出来就算答题失败了,同时还需要注意下时间复杂度,O(n^2) 及以上的解法也是不认可的。
情景题
虽然是测试开发岗位,但头条的业务工作很重,测试开发也需要深度参与业务测试,所以一面面试官问了我 3,4 个测试情景题,大致就是描述一个场景,然后问我如何进行测试。
这里对本身不在互联网行业工作但却希望进入互联网的读者提个建议,多去网上找找互联网的测试内容来学习,了解他们的业务流程,系统结构等,后续,我也会多更一些跟互联网测试相关的内容,帮助大家熟悉。
逻辑题
头条还会出一道逻辑思维题来考察思维反应能力,其实就类似脑筋急转弯那种,比如我这次遇到的题目就是:
“ 有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同, 而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?”
这种题答不上来也没有太大关系,前提是业务方面的技能,编程技能已经得到了面试官的认可。
基础考察
由于我面的是 Android 方向测试开发,所以针对 Android 的基础内容也进行了发问,主要都是测试需要关注的内容,比如 ANR 是怎么产生的,APP 的启动流程等
另外还问了一些 Java 的基础,不会太难,但都是编程中会经常遇到的知识点,比如 StringBuilder 和 StringBuffer 的区别。
这里提醒大家,在复习或者日常工作学习时,对某个知识点要把细节也搞清楚,回答问题时避免说,“ 好像是这样 ”等模棱两可的话,斩钉截铁把问题回答了,哪怕错了也要很肯定的作答。
提问环节
通常一个小时左右面试官考察环节就结束了,如果聊的好,时间长一点也是有可能的,接下来就是提问。
面大厂一定一定切记,不要什么都不问,也不要问加不加班,有没有补助这种低级问题。
可以问问自己面试的岗位工作内容是什么,业务系统复杂度如何,自动化率如何,目前团队有没有什么需要亟待解决的问题等等,从团队的角度出发,尽可能让面试官从你的问题中了解到你对团队充满好奇与期待,显示出自己的专业性。
最后总结一下
面试大厂,要认真准备,好好复习:
1、基础知识点要扎实,对细节要非常清楚,不能只停留在思路正确上,而是把具体的点也讲清楚;
2、刷编程题,LeetCode 的题经常被拿来考;
3、脱离代码提示撸码,要提高编写速度和语法结构正确性;
4、简历里写的每一个字,都是自己非常熟悉的,不熟悉或者了解很少的不要写;
5、对测试流程要非常清楚,同时明确如何将工作进行分解;
6、自身基础扎实的话至少提前准备一个月,基础不扎实三个月起。
源自公众号 henryWoo