最近公司又要招人,一般我面试别人都是随口出题,想到什么问什么,感觉这样不太尊重面试者,所以今天总结一下最佳面试实践,追求在最短的时间衡量面试者水平。
程序员面试官揭秘:我是如何刁难候选人的?_哔哩哔哩_bilibili
根据UP主“欲三更”所说,好问题分为下面5类
高区分、多维度、防准备
题目要区分度高,任何人都能答上来两句,但水平不一样说的话也不一样
多维度:既考察思维,又考察经验,问题很宽泛
防准备:答案在网上搜不到,或者说答案不唯一
例如:谈谈你对XX的理解
听面试者回答不仅仅只看答案结果本身,还要看面试者语言组织能力,思维表达是否顺畅,回答的深度在项目中的占位
大体量
答案的体量非常大,甚至能写一本书。看面试者描述答案的系统性、全面性,对答案的前因后果的理解。
例如:我的网页加载很慢,如何优化?
好的回答应该从DNS,缓存,首屏加载优化,优化技巧(懒加载骨架屏预加载),代码裁剪,素材优化,渐进增强开始展开。
而差一点的,明显没有实际研究过的,只会背背网上答案。
面向切面提问
主要看知识的广度和深度。
比如问:react与vue的异同?为什么react需要各种性能优化手段,而vue不需要优化便能有很高的性能?
这通常是不同框架实现的不同,若是对框架有深入思考,回答这类问题就很简单了。
灵魂追问之认知层次
认知层次分为:
记忆->理解->应用->分析->评价->创新
一般问到分析,就可以了解面试者对一类知识的思考深度。
比如:前端路由是什么?是用来解决什么问题?是用什么方式解决问题的?
没有思考过的只知道使用,而不知道其存在的意义,其原理所在。
又如:前端vue-router配置路由表是通过统一定义到route里面,而像nestjs或者springboot是通过装饰器/注解定义到方法上面,比较分散。这两种方式的区别?优缺点?你会选择哪一种实现?理由是?
这类问题没有标准答案,需要言之有理,属于分析层次,类似问市面上竞品优缺点。
STAR分析法
有时候怀疑面试者项目经验造假,只需要问几个问题便知道深浅了。
S:situation情景,你当时为什么做这个项目,当时遇到了什么问题
T:task任务,这个项目的目标是什么,对团队有什么效果
A:action行动,为了实现目标,做了哪些事
R:result结果,项目做完后结果是什么,最好是量化数据
比如:
FAQ项目当时几个客服?每天订单量多少,是否是客服不够用了?这是S
当时做FAQ的目标是什么?这是T
你在FAQ项目中做了哪些事?这是A
FAQ为客服省了多少时间?这是R
提问时不会直接问题目,而是先猜测面试者处于项目中的位置,然后提问问题去验证。