面试官如何进行一场技术面试

在当前职位竞争激烈的工做背景下,技术面试是一个很热门的话题。但更多文章是站在面试者的角度来分析,告诉你如何准备关键基础知识、如何调理心态,甚至收集大厂常见的面试题来进行题海战术,最终目的都是为了帮助咱们经过面试考核,得到预期中的工做职位。我的认为,面试官的面试准备、沟通、评价工做一样重要。如何识别优秀的候选人,如何帮助团队找到更合适的工做伙伴,对面试官的技术能力、我的素养要求更高。同时,长远来看,人才积累是性价比最高的投资,招聘当前条件下最适合的人才,对公司、团队的总体收益价值也更好。前端

这篇文章的原型原本是几个月前,本身根据最近几年在不一样公司、团队的面试官经历,整理而出的一些总结、心得。而最近一次偶然的机会,刚好跟几位朋友聊到相关话题,有感而发,因此从新整理了下内容(主要是移除了一些公司、业务的敏感信息),指望有更深刻的探讨空间。vue

这篇文章更适合有面试官背景或者即将成为面试官的同窗阅读,尤为是刚开始接触面试官的角色,不知道如何进行技术面试的同窗。面试

面试官的面试流程

对面试官而言,一个完整的面试流程大概会通过三个阶段:算法

  • 面前准备
  • 面中沟通
  • 面后评价

咱们下面会从这三个方面来聊聊具体的操做细节。vuex

面前准备

不管候选人仍是面试官,都须要作面试准备。根据我的经验,面试官的准备工做能够主要集中在如下几个方面:编程

  • 团队职位预期
  • 候选人基本状况
  • 面试流程
  • 面试问题

1. 明确团队职位预期

首先,咱们须要清楚当前团队的职位预期是什么。避免因为跟候选人的目标误差较大致使浪费面试的精力、资源,须要知道面试也是一种成本付出,也要考虑效率和产出。浏览器

职位预期能够理解为:假如候选人来到团队,咱们指望候选人能去执行什么事项,能去承担多大职责,能给团队创造多大价值。 你们都喜欢动手能力强、发展潜力大,技术能力、我的素质都很不错的同窗,但在实际面试中不多会遇到这么完美的候选人,咱们更多的时候是要评判候选人是否能够在预期范围内为团队带来更多收益。markdown

另外,有些团队还对候选人的教育背景、管理经验、技术能力、当前职级等有比较特殊的要求。这个时候就须要特别注意,发现不符合条件的时候应该尽快提早终止面试流程,减小后续消耗。前端工程师

2. 了解候选人基本状况

做为面试官,咱们更可能是经过简历中来初步了解候选人的基本信息,如工做年限、教育背景、技术栈等,这些信息对咱们初步评判候选人能力、后续准备面试问题帮助都很大。架构

不少状况下,面试官会从简历中推断本身的初步评判结论,后续面试过程只是在一步步验证本身的结论、矫正偏差。因此,简历中的信息对候选人、面试官都很重要。

有些时候咱们也会在简历中遇到一些不太符合常规的信息,如毕业时间、工做时间等,能够提早跟 HR 或者候选人沟通下,保证双方认知一致。毕竟如今这种社会背景下,造假的成本仍是比较低的,为减小后续麻烦,须要提早排除这些意外因素。

3. 沟通面试流程

必定要提早跟 HR 或者候选人作下沟通,明确本身进行面试的时间、方式、流程等信息,为面试过程当中的问题花点时间作准备。同时,提早规划本身的日程,避免工做安排冲突。

面试的形式会给咱们的面试效果带来必定影响。如今不少公司都会在正式面试前进行一轮电话面试,你们都清楚电话面试不太适合考察编程能力,这个时候能够更多侧重考察一些特定知识点的广度和深度。不过双方应该都心知肚明,电话面试更多状况下只是为了考核候选人是否具备必定的基础常识,提早作候选人过滤,来下降大量候选人面聊的时间、人力成本。

加入面试过程须要特定场所的,必定要提早预约,避免临时预定不到而致使面试没法正常进行的尴尬场景(我曾经待过的一家公司,会议室就是一种极其稀缺的资源)。

4. 准备面试问题

为了保证整个面试流程顺畅,咱们须要提早了解清楚候选人的背景信息,准备好面试问题。

面试问题的设计有很大的技巧性,虽然不少有价值的信息都是在面试中临时问题引伸而来的,但提早准备的面试问题依然具备很强的指导性,方便咱们肯定双方深刻沟通的具体“大纲”,让面试过程有的聊,不尴尬。

咱们应该如何制定题目?我的认为能够从一下几个方面来考虑:

候选人项目背景

主要用来了解候选人对相关业务的了解深度,是否有足够的业务场景处理经验,是否在长期的业务支持过程当中获得我的成长。

咱们举几个问题示例:

  • 项目 A 产生的业务背景是什么(考察对项目 A 的了解程度)?
  • 本身在项目 A 中主导了哪些功能开发(考察候选人的参与程度,对项目的贡献大小等)?
  • 你是如何解决项目中遇到的 B 问题的(考察候选人处理问题的前期调研、方式、手段等)?
  • 为何选择方案 C 而不选择方案 D 来解决(考察候选人多角度思考、解决问题的能力)?
候选人技术栈

主要用来了解候选人基础知识水平,判断是否具备知足在当前团队进行业务开发、技术探索的能力。

咱们举几个问题示例:

  • Vue 如何实现数据双向绑定的(考察对框架底层原理的了解程度)?
  • 假如开发一个简易的 MVVM 框架,你会首先处理哪些问题(考察对框架本质的认知)?
  • 你在业务开发都是如何使用 vuex 的(考察基本的使用方式、最佳实践等)?
候选人工做年限

主要用来了解候选人在预期年限的能力范围内所处的水平,判断后续的一些发展潜力,题目的形式可能更多样化些。

咱们举几个问题示例:

  • 项目 A 的总体架构是什么样的(考察候选人对项目的认知高度)?
  • 浏览器的渲染一个页面的流程是怎样的(考察候选人对相关技术原理的认知程度)?
  • 如何实现多个整数数据中查找重复数据的功能,时间、空间复杂度如何计算(考察基础的编程能力)?
候选人管理情况

主要用来了解候选人在技术管理方面的能力,如没有相关管理经历,能够不设定相关题目。

咱们举几个问题示例:

  • 当前团队中,你负责几个同窗的平常开发工做?
  • 如何在我的成长、业务开发、团队收益之间达到利益最大化?
  • 如何帮助团队内的新同窗快速成长?

面中沟通

开始正式面试前,最好先打印一份候选人简历,方面面试过程当中随时查阅候选人信息(另外一方面也是对候选人的尊重),并准备一两张白纸和笔方便本身记录相关信息(为后续面试评价作分析)。

必定准时联系候选人,必定不要迟到,特殊事由可提早跟候选人沟通下。疫情期间远程视频面试比较常见,咱们须要提早调试好本地设备,开始面试流程。

面试具体过程因人而异,但仍是有一些环节是必不可少的:

  • 面试官介绍:如公司没有强制要求,能够不说明面试官我的相关信息,可直接说明为 XX 公司 XX 团队技术面试官便可。
  • 面试流程介绍:能够简单说明下面试相关信息,如持续时间(20~45 min 为宜)、问题处理方式(如遇到不清楚的问题能够跳过,缓解候选人压力)等。
  • 正式面试过程:通常按照准备的题目开展面试过程,能够根据状况临时补充一些问题,能达到本身了解候选人总体状况的目的便可。
  • 候选人反问环节:面试最后能够问下候选人是否有想要了解的内容,能够适度描述一些团队的正向宣传内容,切记要适可而止,禁止涉及公司内部隐私(如产品战略规划、员工薪资状况等)。
  • 结束环节:尽可能不要直接告知面试结果,只需说明会将状况反馈给 HR,由 HR 同窗沟通后续面试流程,从而避免产生一些没必要要的尴尬。

针对正式面试过程,也有一些固有的套路可供参考:

  1. 开始可让候选人先花一分钟简述下本身的工做、项目经历。 一方面,可让候选人缓解下压力,这样在后续沟经过程中能够更好发挥。另外一方面,咱们面试官能够快速判断下候选人描述的状况跟简历内容是否匹配(简历造假、信息不匹配的状况很常见,基本遇到就铁定不会有后续结果了,快速决断避免后续浪费时间)、是否符合公司/团队要求的“及格线”(教育程度、经验年限等,如工做 5 年,前端只有 1 年开发经验,而咱们想要一个高级前端开发,遇到这种状况不多能符合岗位预期)。

  2. 发现简历信息多而杂,不知道如何下手时,可让候选人本身介绍下技术挑战最大的项目。 经过候选人对技术挑战大的理解和回答,能够快速预估出候选人的能力“天花板”有多高。而后,再经过候选人详细描述和双方沟通,基本能够认定候选人的业务处理能力、动手实践能力和项目规划能力。

  3. 在准备的问题基础上,能够适度考虑“压力”提问。 针对项目中的特定领域问题,接二连三追问一些具体实现、底层原理、业务逻辑等,目的是为了让候选人更完全的去回答为何、是什么、怎么作、怎么评估、怎么优化的问题,从而更全面了解候选人在开发过程当中的调研广度、思考深度、执行力度和结果高度。“压力”状况下,候选人是否依然表现符合预期,是考察发展潜力的重要标准。知识的广度和深度做为额外补充,两点结合起来就能够推断出候选人的技术职级。

  4. 写一写算法。 算法是最适合考察动手能力的方式,不管什么职级的同窗建议都考核一下算法代码实现。为避免大量刷题同窗碰运气的成分,建议提早准备一些算法时间/空间复杂度分析、算法优化等更高程度的问题,能更真实的反馈结果。过去有候选人曾由于面试流程不安排算法而以为面试流程不专业,因此为了提升公司的“逼格”,算法环节最好不要省略。单千万别提难度过高的问题,有限时间内除非候选人有相关经历和背景,否则很难达到预期考核效果。咱们只须要作一些稍微有点挑战或者须要灵活变通下的题目,来考察候选人解决问题的思路和编码能力,可否真正写出获得预期结果的 code 反而不那么重要了。

面后评价

相较前面两个步骤,评价部分相对而言流程比较规范化。咱们评价候选人的整体原则是:真实描述、客观评价

真实描述是指,评价中的面试记录内容必定要是面试官和候选人的原文记录,即便有些是错误的提问或者回答也须要真实记录。

客观评价是指,按照团队预期和职级标准,在不参杂任何外界条件的影响下,根据本身的判断来最终认定候选人面试结果和预估职级。

最后,若是以为不适合当前团队需求,但又以为我的能力不错,也能够考虑转推荐给其余部门,珍惜公司辛苦搜集整理的人才资源。

一个标准的面试评价模板大概是这样:

【面试评价】XXX - 前端工程师 - 初面
面试时间: 2020-10-01 10:30
面试地点: XXX 会议室
面试官: XX
面试结论: XXX 符合当前职位预期技术能力要求,经过当前轮次面试。后续面试轮次可重点考察 xxx 方面的能力。
面试记录:

    1. Q: xxxx ? A: xxxx.
    1. Q: xxxx ? A: xxxx.
  • ...

面试总评: (能够详细描述下候选人业务、技术能力如何,发展潜力如何,自身优点、劣势,是否适合当前团队需求,适合那些团队类型等等)

相信经过上面对一些面试环节的分析,会让你对面试官的面试工做处理的更加游刃有余。

总结

本文说起的面试内容是根据本身以往的面试经历总结而出的面试心得,仅供你们参考借鉴。不一样公司、团队有不一样的业务背景和要求,但愿你们能够在本文基础上结合自身诉求推演出一套本身团队的面试方法论,成为更优秀的技术面试官,从而创造更好的团队价值。