想描述一下我们团队怎么进行面试, 还算是蛮有特点的.
进入面试之前, HR会让面试者填一份情况表, 部分内容与简历中的项目一致. 我也困惑过为什么要搞得这么繁复, HR说有些人在这一步会将简历和情况表填的�有出入, 可以作为初筛的指标.
在情况表这一步, 确实见过以隐私为由只填写部分信息的, 也见过一些干脆嫌麻烦不填的, 当然他们都会进入正式面试的环节, 我也会解释情况表的来由, 并以此判断面试者的性格反弹点到底有多高, 作为初步的性格判定比较有效.
面试开始, 我会介绍一下公司、产品、团队和我们在招聘的职位的状况, 并提醒面试者"你可以根据这些描述调整你的面试方向". 注意细节的或情商略高的面试者就会在之后的环节将方向往有利于自己的方向上靠, 并不是说这些面试者会更有优势, 这一步是提醒面试官在之后的环节上是不是要适当引导面试者来发挥自己的特长.
之后的环节, 会从面试者的过往经历聊起, 凡是写在简历上的技术方向基本都会问到, 每一个方向由浅入深, 直到探到某一个方向的底, 再换另一个方向.
在面试官熟知的方向里, 可以追问一些细节, 比如碰到了什么问题, 如何分析, 怎么解决, 现在回想起来是不是还有漏洞. 很多面试者是不记得很详细的细节, 那可以告诉面试者"抛弃过往的经验, 现在重新面对这个问题, 再分析一次, 需要什么资源, 能达到什么结果".
��时常会遇到面试官掌握不了的方向, 可以邀请面试者用具有逻辑的方式介绍清楚在这个方向上的成就, 背景可以假设为"听众是完全不懂这个方向的人"或者"听众是有XX基础的�从业者", 背景还可以加上一张大小受限的白纸作为�绘图区.
这个阶段重点会偏向面试者在过往的工作/学习经验中, 掌握了什么样的方法论, 积累了哪些领域的知识, 思维的逻辑�性偏好, 是否有独立学习的能力.
下一个环节是代码, 万事最终都要落在笔上. 给面试者一个限定的区域写代码, 不限语种, 根据面试者的经验设定问题, 问题要贴近面试者的过往特长, 要分几个层次, 看面试者最后能达到哪个层次.
这个阶段中, 限定区域写代码是要看面试者的代码规划能力, 往往落笔之后会发现各种问题, 需要的区域比预想的要大.
问题的设定不建议使用算法题, 算法题虽然经典, 但会就是会, 不会就是不会, 很难在面试现场创造一套算法出来. 面试中尤其注意不要用自己的知识局限来框死面试者的可能性.
不管什么样的代码提交上来, 首先是要发还给面试者让他检查是不是还有问题, 不同�方法论的�面试者在这一步会有不同的表现.
之后反馈给面试者一些代码或设计上的问题, 对于�面试者的考虑不周, 看他给出怎样的反应.
如果合适, 可以将问题再提升一个层次, 修改需求, 看看面试者是否会改进设计.
最后, 要问一下是否愿意重新再做一次, 看看能不能做得更好.
代码的阶段往往非常消耗体力, 中间可以穿插一些闲聊, 减少场面压力.
面试的最后环节, 要给面试者关于面试的反馈, 回顾面试的整个过程, 对每一个步骤做出点评, 并询问是否存在某些疏漏, 是否所有擅长的技术都涉及到了, 以及是否有哪些材料需要补充, 比如blog/github等.
面试的时间会比较长, 对双方都是体力和精力的折磨. 一个神奇的现象是, 一些上手比较端着的面试者, 在面试快结束的时候会完全放松下来, 可以和面试流程很好的互动.
以上只是面试的大致流程, 根据每个面试者的不同, 会有不少改变. 比如如果面试者紧张, 可能会先闲聊一段, 或者先谈谈公司的福利待遇. 面试者略焦躁, 需要适当提醒.
我想对于我们这样的小公司来说, 说"招人"不如说"请人". 在面试台上挖坑让人跳的是"招人", 跳进别人的坑里看看究竟还能跳出来的, 则是"请人".
最后�说一句, 找个给力的HR实在是非常重要, HR对面试者的相性判定是很重要的一部分. 做技术面试的要跟HR不断沟通磨合, 在面试价值取向上达成一致, 事半功倍.