当前位置:网站首页>字节跳动技术面试官现身说法:我最想pick什么样的候选人
字节跳动技术面试官现身说法:我最想pick什么样的候选人
2022-07-06 09:29:00 【字节跳动技术范儿】
字节跳动的研发面试官们,到底是怎么考核候选人的?
在这金三银四的季节,无论你是刚刚收到面试通知,还是已经结束了面试,或者刚投出简历,这个问题都是围绕在心头的最大好奇。
面试前要准备什么?面试官会问什么问题?怎样的面试表现才能通过?
为了解决你的疑惑,我们邀请了3位分别担当一面、二面、三面面试官字节跳动研发同学,请他们「透露」了一点技术面试的评判标准。
我面过的offer收割机,
做完题还会优化一遍代码
面试官:三井
方向领域:飞书后端研发
面试轮次:一面
投飞书后端岗位的候选人,不管是实习生还是社招,都有可能会碰上我。
大部分时候我是一面的面试官,偶尔会去做二面面试官。
当然,一面和二面的面试内容差不太多,我们面试讲究「三位互补」,也就是说三轮面试的考察点是互补的,一面问过了某些方面的问题,二面面试官就会从其他方面考察候选人的技术水平。
当面试官压力还挺大的,有时候招人多,一天会有几十份简历需要看,但并不是所有人都适合这个岗位,比如专精的领域和岗位要求不匹配,或者过往的面试评价出现了太多硬伤。
简历通过后,面试的时候我会看候选人的经历,根据他了解的领域和做过的项目来提问。
我会把重点放在候选人对项目的思考上,具体从项目里获得了哪些经验、学到了什么,比如做了一个项目,中间出了什么问题、怎么改进、有新的需求怎么实现等等。因为如果他真的特别深入地做了一个项目,肯定会遇到很多问题,里面很多具体的点都是可以深挖的。
比如之前有一个候选人,说自己做过一个秒杀系统,我就问他:系统的QPS能达到多少?具体实现了哪些功能?流程是怎样的?发现这些细节他都答不上来。
其实,一个有探索精神的人会把里面这些问题都研究明白,这也是工作经验的积累。随着一个人工作年限的增长,他应当不仅做出了成绩,同时也有一些思考和沉淀,这是更深度的能力提升。
如果候选人的项目经历和这个岗位不太相关,或者所熟悉的领域我不是很懂,那我就会问一些计算机基础知识、基础组件的原理和应用、通用的技术方案或者算法题之类的。
其实说到基础知识和算法题,网上都有很多总结好的内容,但是希望不要死记硬背,因为我总会找到一个追问的角度,看看候选人是真的理解了这些知识,还是单纯的背答案。
另外大部分时候我都会给候选人出题。做题主要是看思路啦,很多时候他一开始可能想不到最优的解法,但也有一个可行的解法也是可以的,我能看出来候选人在尽力解决问题,我会看情况给一些提示,要是他实在没思路,我可能会换个题;如果时间来不及换题,但是基础知识和项目讲得不错的话我也会给通过,然后请二面面试官再评估一下。
不过提到做题,有位海外候选人,让我印象很深刻,他不仅思路清晰,代码格式也很好。
当时,我给他出了一道算法题,他想了一会儿,有了思路之后,很快就把框架写出来了。
令我很意外的是,他并没有直接把答案写完就给我,而是自己又优化了一遍,最终的呈现非常完美。
其他的基础知识问题、项目问题,他也回答得也很清晰。你可以看出来他虽然水平很高,但不是那种过于自信、骄傲自大的人,沟通态度不卑不亢。
这种一般就是offer收割机了,而且你会发现他整个人的状态和求职的心态都很健康阳光,不像很多人一上来就疯狂吐槽自己目前做的工作,这种心态下可能他到别的地方工作也会一直持有一种负面心态。
总之,我面试的时候一是希望候选人技术过硬,二是希望他能坦诚沟通、顺畅协作,这是我最希望遇见的人才。
探索技术是必须,
沟通协作也加分
面试官:小陆
方向领域:商业化前端
面试轮次:二面
自从成为面试官以来,我已经面试过170多位候选人了。
之前一面的面试官已经对候选人的技术基础进行了考察,所以我见到的候选人基础一般不会太差,我主要考察的是候选人深入思考的能力和对业务的理解。
刚毕业一两年的同学,其实和校招差不多,我对他业务上的要求相对会低一点,但基础一定要很稳——也就是说,除了一面面试官问的基础知识之外,对技术的探索和钻研精神是必须的。
比如问项目,我会针对候选人项目里涉及到的一两个方向深入挖掘,有人真的会钻研这些,但有的候选人项目能运行就行,稍微深挖就只能回答“不知道,没有了解”,这其实就是考验一名研发的探索精神。
对于超越了新人阶段的候选人,比如工作了四、五年的人,就应当有足够的经验来解决一些具体的问题。
比如在某一个特定场景下,网页加载非常慢,要怎么设计一个技术方案来解决这个问题?分几步来做?每一步做什么?我需要看到候选人的技术规划能力。
所以整体上字节跳动的招聘要求还是很高的,虽然有一些不是非常合适的候选人,如果你睁一只眼闭一只眼放进来,他可以完成工作,但公司还是希望招非常优秀或者潜力很高的人,所以整体团队实力都很不错。
除了技术底子和技术规划的思考,其实我还会看重更多软素质:
第一个是候选人的沟通协作能力。
拿最近的校招来说,我上学的时候总想做全栈工程师,把所有领域都搞懂,一个人完成很厉害的系统;但工作之后才发现,大部分人脱离团队都成不了事,看起来很虚的「软素质」变得非常重要。
毕竟,除了一部分做专精方向研究的人之外,大部分人的工作都是围绕公司业务的发展和迭代展开,要实现一个业务目标,怎么调动资源,让不同团队配合你,需要的就是沟通、协调、项目推进能力。
一个人负责的事情越重要,就需要推动越多的人和团队来配合,但每个人都会有自己的考虑:张三的另一项工作优先级更高、李四不认可这个方向、王五自己构思了另一套方案……怎么求同存异,照顾到大家的顾虑,提出一个让大家都认可的方案,是非常重要的能力。
所以面试时我会重点考察表达沟通和团队协作能力,这方面比较好的人能清晰地讲出重点,一般也都参与甚至负责过多人协作的项目;但有的候选人,要么说话像挤牙膏一样,问一句答一句,要么说半天都没有重点,想要推动团队合作就更难了。
第二个是候选人的潜力。
潜力有时候很难判断,但总可以旁敲侧击地感受候选人对技术和业务的关注程度。比如我们商业化团队,一些候选人本身刷抖音的时候就会对这些广告感兴趣,他不觉得广告只是单纯的打扰人,反而会研究抖音广告的形态,研究这些广告如何给产品和用户带来价值。
这些对产品和业务的思考影响了一个人的成长潜力,决定了他未来能不能更深入业务、能不能对市场有一定认知。
最后也要考虑候选人的性格,有些人确实挺优秀,但是面试全程都表现出了一种莫名的优越感,过于桀骜不驯,可能也很难和团队合作。
只要动手能力强,
非计算机专业也来写代码
面试官:杜乾
方向领域:大力智能前端
面试轮次:Leader级以下候选人三面面试官
我面试前端的同学,最看重的是他的动手实践能力。
前端跨专业的同学不少,比如之前我面过一个实习生同学,虽然不是计算机科班出身,但他的投入度会比一部分计算机科班出身的同学更高,动手实践的能力更强。
他前面一二面评价已经很高了,说明基础技术能力很不错,我面试他的时候就不问具体技术问题了,直接让他展示自己在GitHub开源的一些小工具,其中有一个是用来生成代码的前端脚手架,还有一个基于Vue的模板动态生成方案,也有一些小游戏之类的。
这些项目证明,他整体动手实践能力非常强,因为要做这些脚手架,必须对一些打包工具、前端代码压缩之类有所了解,懂得底层的代码原理。
对这一类同学来说,前端就是他的兴趣,因此他会去研究前端的各个方面,虽然是学生,可能研究得不会很精深,但知识面非常广,这也证明他未来发展的上限会非常高,对非计算机专业出身的同学,我会更看重未来发展的上限。
但对社招三五年的同学来看,光有兴趣和动手能力不够,思考和沉淀还是很重要的。比如是否在公司主动推动过一些性能优化的事情,能讲得出优化过程中他关心哪些指标、采取了哪些措施、最后效果如何。
举个例子,如果我问前端的性能优化,候选人泛泛地回答说需要代码压缩、图片优化,那可能只是参与了一点;但如果说得很详细,讲出代码压缩和图片优化到底是怎么做的,那说明他在这方面做了丰富的思考和沉淀。
这也能证明一个人的发展潜力,如果一个工作了8、9年的人,技术能力还可以但技术深度不够,工作没有主动性,没有主动推动过一些项目的落地,甚至还需要我去push,可能就很难委以重任了。
因为我最需要的人都有点极端:
要么技术能力过硬,有很多动手实践、很多开源贡献,哪怕综合素质差一点我也可以接受;
要么专业能力稍微差一点点,但综合素质很强——很会沟通,在产品和业务上有很好的想法,甚至有带小团队的经验,可以朝管理方向发展。
因为虽然都是前端开发,但大家的优势和分工不同,有些人是技术型选手,只要钻研技术、解决难题就可以了;而有些人是明显的业务性选手,不能光靠产品经理来给你喂需求,有时候也要反哺产品、做业务尝试、给产品提一些好点子,对很多研发来说,这一部分是有所缺失的。
但在技术能力一样好的情况下,我会选择对业务更敏感的同学。跟候选人聊业务时,如果他熟悉行业目前主要产品的大致的运营数据、遇到的问题、下一步怎么做,那可能更适合我们团队,未来可以成为业务owner。
最后说了这么多,我们简略地总结一下「面试必过经」:
项目经历要牢记,展现深度和潜力。
知识理解灵活用,不能全指望背题。
沟通坦诚说重点,推动合作与对齐。
求职心态放平稳,不卑不亢最客气。
懂技术还懂业务,idea反哺PM。
若无专业和学历,动手实践最高级。
但总结面试经验的同时,别忘了更重要的是不断提升技术能力和综合素质,这样才能在一场又一场面试中拿到理想的offer。
加油哦~
边栏推荐
猜你喜欢
Solr new core
Basic principles of video compression coding and audio compression coding
Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
~Introduction to form 80
音视频开发面试题
Erlang installation
was unable to send heartbeat
这116名学生,用3天时间复刻了字节跳动内部真实技术项目
SQL快速入门
Chapter 1 overview of MapReduce
随机推荐
Gridhome, a static site generator that novices must know
LeetCode 1640. Can I connect to form an array
第5章 消费者组详解
Chapter 5 namenode and secondarynamenode
Research Report of desktop clinical chemical analyzer industry - market status analysis and development prospect prediction
~77 linear gradient
Li Kou leetcode 280 weekly match
字节跳动2022校招研发提前批宣讲会,同学们最关心的10个问题
~79 Movie card exercise
LeetCode 1447. Simplest fraction
~82 style of table
Introduction to microservices
Chapter III principles of MapReduce framework
LeetCode 1584. Minimum cost of connecting all points
Use JQ to realize the reverse selection of all and no selection at all - Feng Hao's blog
MP4格式详解
~Introduction to form 80
LeetCode 1566. Repeat the pattern with length m at least k times
Restful style interface design
was unable to send heartbeat