面试就像相亲,除了考察面试者的硬性能力是否过硬,也得看缘分。缘分这一部分说实话就主要看面试官的主观感受了.
以下内容是站在面试官的角度,来评判一个合格的前端工程师是怎样的。
简历
有博客或者 github 链接的一般都会去看看,内容好加分,内容差减分,甚至直接简历不通过。
日常工作中的思考
一般一开始我都会让他介绍下做过的项目,然后在描述过程中找一些我觉得可以深挖的点来问,或者也会直接问他觉得做过的比较有技术挑战或者有意思的事情,如果是现场面试的话可以让他在纸上边画图边阐述。这部分如果是一些经验比较丰富或者 title 是架构师、技术经理之类的面试者,可以把重点放在架构设计方面,让他讲讲做过的技术方案,画一画架构图,说说他的方案和一些市面上已有方案的对比,当时面临一些选择时的思考角度和评判标准等等。
代码能力
代码能力其实是核心能力,包括对思维逻辑和 JS 语言熟练度的考察。笔试题上的两道代码题如果答得不是特别好的话(当然至少要能答出一题,两题都答不出一般笔试就不通过了),可以跟他聊聊优化的思路,给一些提示,看看对方的反应。如果笔试题答得很好,在问一些其他问题的时候也可以顺势让他再手写实现一些东西。譬如:
问 JS 中函数内部的 this 指向问题,能答出谁调用就指向谁,就问问改变 this 指向的方法,能答出 call/apply/bind,就可以让他手写个 call 试试,哪怕他之前没实现过,但结合自己之前说的“this 是谁调用就指向谁”和“call 可以改变 this 的指向”,也应该要能想到只要把函数赋值给 this 的第一个参数 obj,然后通过 obj 来调用该函数就可以令函数里的 this 指向 obj。 面试者熟悉 Vue 的话可以问问他 Vue 的数据绑定原理,一般人都能答出 defineProperty 和观察者模式(订阅发布模式),那就让他描述下观察者模式,能描述出来的话就可以让他实现一个 Observable 构造器。
当然有很多东西可以让他写,因为我们不是要招什么算法大牛,不用找艰深的算法题给人家做,最好就在问问题的过程中顺势找一些需求让他实现下。也可以是一些具体的场景题,譬如问到节流防抖什么的,可以找个实时搜索的例子,让对方实现下 debounce,就算对方没听过节流防抖这样的概念,具体的场景描述清楚了,也应该有正确的思路能实现出来。
框架相关和 JS 基础
一般面试者的简历里会写一点他擅长的东西,写到什么就问什么,尽量由浅入深地问。譬如他说熟悉 Redux,那可以问问他们项目里是怎么用 Redux 的,用过哪些 Redux 中间件,对中间件的实现机制有没有了解,你觉得哪些场景是真的适合用 Redux 的,对 Redux 的实现原理有没有了解……以我的面试经历来看,很多人写着熟悉 Redux,其实只停留在“用过”。
然后 JS 相关的话,如果他简历上有写,闭包啊原型链啊一些 ES6 的特性,像什么 Promise/Proxy 这些都可以问问。如果简历比较单薄的话,也可以直接问他比较擅长的是哪方面,然后尽量问一些相关的东西。
技术广度
主是一些“前端”领域外的知识,这部分不强求,简历上如果有的话我会问一问,主要是看看主动学习能力以及对技术的兴趣。
软技能
面试过程中其实是可以看出一个人的沟通能力和大致的工作态度的,在问项目的时候可以问一些跟人合作相关的事情,如何推动自己的项目落地之类的。还有就是面试的时候适当紧张是可以理解的,但有一些同学,明明简历很不错,从博客和 github 上看也很好学,但是特别紧张,话都说不利索,我一般也不会过……毕竟心理素质和抗压能力也是工作中必不可少的部分。
最后
面试不是考试,面试的过程无非是在交流中让面试官认可面试者的能力。
自己是从事了五年的前端工程师,本篇文章来自于某HR,在我看来在他的这个职位顶多价值10K吧。
如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加入web前端学习交流-q-u-n-:731771211 里面可以与大神一起交流并走出迷茫。新手可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行!群里不停更新最新的教程和学习方法(进群送web前端系统学习路线,详细的前端项目实战教学视频),有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入
点击: