公众号原文: https://mp.weixin.qq.com/s/Byvu-w7kyby-L7FBCE24Uw
在字节跳动,我学到了如何使用结构化面试法来考查应聘者的技能。
所谓结构化,指的是将各种知识技能做好划分,例如编程语言,操作系统,数据库,网络,算法,工程 /架构设计,并通过几个面试官之间的多轮交叉面试来考查掌握程度。
这样的面试方法,可以避免某个面试官考察太偏,并充分挖掘候选人的亮点。
在具体的面试中,每一个方向都会由浅入深去考查。
以编程语言为例,比如某个应聘者常用语言是 Python,我会先考查一些语言的基础特性,例如什么是 magic function,__repr__ 和 __str__ 的区别等。
确认候选人对语言的使用掌握符合预期后,再考查候选人对 python 底层实现的理解,例如展开聊聊 python 的 gc 相关知识。
更进一步,可以结合一些具体的应用场景来考查候选人对语言的综合应用能力,例如使用 Python 的多线程,需要考虑什么,如何提高某些任务中的效率等。
值得一提的是算法 /数据结构,这是字节跳动面试的一大特点,也是网上各面经都会提(tu)到(cao)的。
通常来说每一轮面试都会要求候选人完成一道算法题,现场面试就直接在纸上写,远程面试则是在在线共享编辑的 IDE 环境里完成。
可能早期常有面试官让候选人手写红黑树,以至于"手写红黑树"已经成为一个内部梗。
实际上难度没有太夸张,通常来说 15 分钟内完成 Leetcode Medium 级别的题目,就能满足面试要求了(划重点)。
我更倾向于考查操作基础数据结构的题目,关注点放在对代码的掌控力,而不是某个具体的算法。
不过,对于有 ACM 经历的同学,面试官可能会尝试用 Hard 级别题目来 challenge。比如我内推的某同学被问了 manacher's algorithm,可能是和面试官八字不合。
但也不用太担心,毕竟不是谁都像他一样拿了 ACM 金牌。
候选人的沟通能力也是考查的重点。
例如,在面试中的工程设计题通常是开放式问题,题面往往不是精确的,问题的规模,可能存在的问题,或者可以忽略的一些细节,都可以在前期的沟通中确认,然后再开始设计。
还有,在面试过程中的知识盲点,要注意避免不懂装懂的强行作答,但利用已有知识做出的合理推测则是加分项。两种行为的边界可能有点模糊,这就考验候选人的沟通技巧了。
我想要招什么样的候选人?概括而言就是:聪明,勤奋,有潜力。
更具体的,大佬早就讲过了,推荐阅读字节跳动创始人张一鸣的演讲《我面了两千个年轻人,发现混得好的都有这 5 种特质》: https://www.toutiao.com/i6681549238490366472
最后,我目前在字节跳动的网盟广告业务线(穿山甲),由于业务持续高速发展,长期缺人、不限 HC,欢迎踊跃投递:
后端开发(上海): 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.