本篇不是一篇讲面试题的技术贴,而是来自一位技术面试官的深层思考。
其实很久以来就想写写关于前端开发工程师们面试的那些事儿。之所以现在才提笔,一来是因为笔者的自我约束力实在不强,其次是我觉得自己还没有牛到有资格分享。不过笔者这几年前前后后被面了十几回,也面了别人十几回,还是可以聊聊面试时容易误入的一些误区。
面试官篇 1 企业需要的是在工作中能取得成功的人,面试官需要理性的对待面试其实就是在一定时间内,企业和候选人相互交换信息以最终确认是否适合的一种形式。
很多企业是为了招人而招人——项目比较急,急需几个 FE 顶上去,按时完成交付。这句话似乎成了前端的 Leader 们无可置否的招聘理由。
印象中,我曾经面试过一个前端工程师(小王,化名),与他进行了愉快的交流。项目背景与预期很符合,实际编码能力也不错。于是我给他打了个很高的分数。正向我预期的那样,他很快拿到了 Offer。
然而,事情没有向愉快的方向发展,小王刚来了不到一个星期,就提出了离职。究其根本,他说:“我英文底子不好,纯英文的环境感觉压力太大。” 我愕然。
的确,在这种外企,英文要求很高,几乎所有的邮件,每天与同组人员的技术方案讨论都必须要用英语。我甚至已经发现每次站会时,小王都会以各种理由不参加也没有与他沟通交流过原因。回想当时面试时,我发现小王的英语听说有一定困难,但并没有把这个作为一个重要的点写到评估结果上,也是太过于感性。
2 基于行为面试法的技术知识的考核做前端的小伙伴都知道前端的发展是非常快的,而且知识体系相对来讲比较繁杂。因此,在有限的时间内对基础知识的涉猎面面俱到是不太可能的。掌握有效的面试手法相对来讲比较重要。
笔者曾想起当年 BAT 面试的经验。
-
某度小伙(一面面试官)抱着笔记本(里面列了近 100 道面试题),从 Javascript 闭包,问到 CSS 优先级,很淡定的扫荡完所有的面试题,然后一言不发的走掉。
-
某宝大牛(一面面试官) ,拿着小本。从前端相关理论知识体系聊到算法复杂度,再到 linux 操作系统。让笔者在小本上如数写出并探讨。
-
某鹅厂 MM,从垮域问到构建工具,由于描述和铺垫较多,一个小时时间讨论了三个 Topic 就匆匆结束。
相信上面几个例子列举了大多数面试官的普遍面试方法。不得不承认这样的面试方法可以了解到面试者的知识体系情况,但这仅仅是构建在面试官的认知和知识掌握情况而上的。预设的问题永远是面试官的认知为基础的。无法真实的考量候选人的知识和能力。
有经验的面试官会以候选人的简历为基础,通过行为面试法来引入基础知识的问答,并且通过追问和探询,从而获取候选人对该知识的掌握情况。
什么是行为面试法呢?
行为面试法是一种专注的,基于事实的面试技巧。集中精力寻找候选人过去的行为证据(过去的行为可以很好的预示将来的行为)注重与工作相关的行为。
讲干货的确有点抽象,让我们看一个具体的例子。前一段时间我面试了刚毕业几年的小伙小 A。
笔者:看到你的简历上完成一个电商系统的设计和开发,能谈谈你是如何带领团队成员从设计到具体实施的吗?
小 A:。。。。。
笔者:看到你这个项目中使用了 Angular 框架,这个项目不同的 directive 是如何拆分的,不同的组件间又是如何进行通讯的呢?
小 A:。。。。。
笔者:这个案例你有没有想过,如何能让开销做到最小呢?怎么保证性能?
当然,这只是行为面试法的一个小例子,笔者的方式也许不是最优的。但从这个例子中,我们可以看到, 这种方式潜在的考察了面试者对于框架 Angular 的掌握情况,对于性能优化的经验,也考察了问题的解决能力和学习能力。
其次,行为面试法的一个优秀的特质在于:大量的被证实的信息和数据,候选人很难“粉饰”过往的工作经验。
这就保证了信息的有效性和可评估性,要知道在互联网的时代,任何基础知识的答案都可以在度娘和谷歌上轻松找到,足以迷惑面试官的双眼。
3 尊重候选人,感谢候选人面对合适的候选人自然不必说,对不合适的候选人,往往会不知道该说什么。以至于很多面试官的结束语都是:“下一轮的面试官今天刚好有事,没来。要不你先回去等消息。”
对于这种说辞不想做太多评价,只是想说一句。不管怎么样,今天的候选人,也许明天就会坐在你我的对面成为新一代的面试官。毕竟每一个人都在学习和成长。所以,尊重候选人,对不于不适合的侯选人表示感谢和付出,无疑会给企业树立一个非常好的品牌形象。
面试者篇 坑 Top1:所谓的正确答案上面提到:面试官期望在有限的时间内找到能在工作中取得成功的人。那么在面试过程中,可能会问到种种技术问题。如:
“Javascript 的闭包有什么作用?什么时候会发生内存泄露呢?”
“CSS Position 有哪些?分别如何使用?”
“说说浏览器什么时候会重绘,什么时候回流吧!”
“HTTP 301 状态码代表什么?”
面对如此洪水猛兽式的提问,可能会使我们感到压力以导致原本会答的问题答不好甚至答不出来。然而,我们并没有必要惧怕它。要知道,面试官的目的并不是得到一个所谓的“标准答案”,而是通过这种方式打开双方的话匣子,从而在有限的时间里,获取最大的信息量。因此,巧妙的回答问题,并带出相关知识点,并尽量全面,深入的回答尤为重要。
举个栗子
“HTTP 301 状态码代表什么?”
小 A:“记不清了。”
小 B:“这个记不太清了,但我知道 2XX 代表请求被成功处理,3XX 代表重定向,4XX 代表客户端错误,5XX 代表服务器端错误。”
此栗中,小 B 的答案虽然谈不上完美,但是与小 A 相比,小 B 的答案,会给到面试官两个信息量:
-
面试者对 HTTP 状态请求有一个完整的概念
-
就这个问题我们还有继续探讨的可能
于是这个时候面试会心一笑,继续问道:“那你了解哪些重定向的状态码?”
小 B:"比较常见的是 304:Not Modifed 代表所请求的资源并没有更新,缓存继续有效。还有 302, 短网址就是基于这个状态码实现的。我们请求一个短网址,服务器会返回重定向,定向到新的地址。"
这个时候面试官其实心里已经在给小 B 点赞了。说明小 B 还仅知其然,还知其所以然。并且有一定学习能力。而小 A 呢?因为面试官无法再继续就这个话题提问,而只能切换其它的问题。
坑 Top2: 切忌生搬硬套据笔者观察,误入此坑的同志甚多啊!尤其是刚刚毕业,来到 BAT,TMD 所谓的高薪企业找工作的小鲜肉们。
刚从校园里走出来的小伙伴,面试经验还不多。大多会从网上找各种攻略,刷面试题。《JAVA 面试宝典》人守一本,有木有?做前端的至少也会把犀牛书刷一遍。
这种方式本无可厚非,只怕读的书多了,没有实践加以佐证,容易在面试时生搬硬套理论,而产生相反的效果。
我曾经面试过一个刚毕业的小伙。我出了一道智力题,本意是考核他分析问题,解决问题的能力,而他则是搬出的教研室研究的人工智能,贝叶斯理论,从头到尾给我上了一课。我也只好直言他并不适合这份工作。
坑 Top3: 虚虚实实的简历说起面试,第一步就是要准备靠谱简历了,这里提醒大家:虽然一张光鲜的简历对于敲开名企大门格外重要,但千万不要于过修饰,以免带来不必要的麻烦。
我面曾经面试过一个 Contractor,本来技术方面是没什么问题的,也通过了几轮面试,马上要到公司任职。就在这个节骨眼上,被发现简历有不实之举。例如,本是自考本科修饰成了统招本科。不仅丢了工作,也给职业生涯带来污点。
其实兄弟姐妹们啊,归根到底还是因为不自信啊。要知道英雄莫问出处,只要自己技术过硬,为何还要在意出身呢!许多知名的公司是不在乎学历的。归根到底还是那句话:企业还是在寻找能在工作中取得成功的人。只要你够牛逼!
其次,面试官是根据简历上的经历来进行提问的。所以,尽量避免夸张某项技术特长,例如,没听说过的写成了解。了解的写成掌握,掌握的写成精通。话说我当年校招的时候就在这个坑摔过。我是这样写的:“精通各种算法,并有对复杂算法进行甄选的能力。”结果也是可想而知,被虐千百遍。不说了,全是眼泪。
前端之巅关注「前端之巅」,紧跟前端发展,共享一线技术。各位淀粉投稿请发邮件到 editors@cn.infoq.com,注明“前端之巅投稿”。