程序员面试指北:面试官视角

结构化面试

在字节跳动,咱们用结构化面试法来考查应聘者的技能。python

所谓结构化,指的是将各类知识技能作好划分,例如编程语言,操做系统,数据库,网络,算法,工程/架构设计,并经过几个面试官之间的多轮交叉面试来考查掌握程度。程序员

这样的面试方法,能够避免某个面试官考察太偏,并充分挖掘候选人的亮点。面试

技能

在具体的面试中,每个方向都会由浅入深去考查。算法

以编程语言为例,好比某个应聘者经常使用语言是Python,我会先考查一些语言的基础特性,例如什么是 magic function,__repr____str__ 的区别等。数据库

确认候选人对语言的使用掌握符合预期后,再考查候选人对python底层实现的理解,例如展开聊聊python的gc相关知识。 编程

更进一步,能够结合一些具体的应用场景来考查候选人对语言的综合应用能力,例如使用Python的多线程,须要考虑什么,如何提升某些任务中的效率等。segmentfault

经过这样的综合考察,咱们成功地避开了全部学过下面这本书的程序员。后端

image.png

算法

值得一提的是算法/数据结构,这是字节跳动面试的一大特色,也是网上各面经都会提(tu)到(cao)的。微信

image.png

一般来讲每一轮面试都会要求候选人完成一道算法题,现场面试就直接在纸上写,远程面试则是在在线共享编辑的IDE环境里完成。网络

可能早期常有面试官让候选人手写红黑树,以致于"手写红黑树"已经成为一个内部梗。

image.png

实际上难度没有太夸张,一般来讲15分钟内完成 Leetcode Medium 级别的题目,就能知足面试要求了(划重点)。

我更倾向于考查操做基础数据结构的题目,关注点放在对代码的掌控力,而不是某个具体的算法。

不过,对于有ACM经历的同窗,面试官可能会尝试用 Hard 级别题目来challenge。好比我内推的某同窗被问了manacher'salgorithm,多是和面试官八字不合。

但也不用太担忧,毕竟不是谁都像他同样拿了ACM金牌。

image.png

沟通

候选人的沟通能力也是考查的重点。

例如,在面试中的工程设计题一般是开放式问题,题面每每不是精确的,问题的规模,可能存在的问题,或者能够忽略的一些细节,均可以在前期的沟通中确认,而后再开始设计。

image.png

还有,在面试过程当中的知识盲点,要注意避免不懂装懂的强行做答,但利用已有知识作出的合理推测则是加分项。两种行为的边界可能有点模糊,这就考验候选人的沟通技巧了。

image.png

总结

我想要招什么样的候选人?归纳而言就是:聪明,勤奋,有潜力。

更具体的,大佬早就讲过了,推荐阅读字节跳动创始人张一鸣的演讲《我面了两千个年轻人,发现混得好的都有这5种特质》,推荐拜读。

image.png

硬广

最后,我目前在字节跳动的网盟广告业务线(穿山甲),因为业务持续高速发展,长期缺人,欢迎踊跃投递:

后端开发(上海)
https://job.toutiao.com/s/sBAvKe

后端开发(北京)
https://job.toutiao.com/s/sBMyxk

广告策略研发(上海)
https://job.toutiao.com/s/sBDMAK

测试开发(上海)
https://job.toutiao.com/s/sBUKuh

其余地区、职能线
https://job.toutiao.com/s/sB9Jqk

欢迎关注

微信扫码
image.png

相关文章
相关标签/搜索