招聘

评估体系

技术层面:

  1. 抽象、拆分、解决问题的能力
  2. 代码设计与实现能力
  3. 软件系统分析和设计能力
  4. 综合工程能力
  5. 计算机基础

非技术层面:

  1. 沟通、学习、管理能力
  2. 潜力:
  3. 视野、技术深度、职业素养

面试计划

在面试候选人之前做好整个面试流程的设计:

  1. 几轮面试
  2. 谁来面试
  3. 如何面试
  4. 考察哪些问题

把控好计划流程完整性,在一轮完整的面试中,要合理分配时间,把要考察的点都点到,优先让面试者主导,但为了避免被带偏或者遇到困难,可以主动介入结束阻塞

问题设计

反面案例:

设计原则

设计技巧

算法与数据结构考察

反面案例:

  1. 对于一个算法题,啥也不问,吭哧吭哧就写代码
  2. 只写伪代码,真实的编码相比伪码,可以看出思维的严谨程度
  3. 纠结编码细节,api的命名、变量名

技巧:

  1. 白板编码
  2. 跟随候选人思路,逐步引导其前往更高的难度

系统设计考察

反面案例:

  1. 排斥不一样的思路,摒弃最佳设计的想法
  2. 无意义深挖:发现面试者弱点一昧深挖没好处

技巧:

  1. 面试者熟悉的领域,但这种方式对面试官不利,面试者是可以准备的
  2. 全新的问题:可以考察面试对于未知问题的分析、解决能力

其他工程能力

代码设计

通过面向对象范式为切入点,考察面试者的代码设计能力,不论有没有设计模式,只要代码具备良好的可读性、可复用性、可扩展性,就够了

API设计

能够从相当程度上,看出面试者是否在代码接口和客户端与 service 的交互方面有一个平衡的理解,并也能从此看出面试者的网络协议功底与相关经验

测试

测试能力是工程师必备的重要素质,可以从单元测试入手、到白盒、黑盒甚至到自动化

项目与任务管理

项目是怎样管理的,产品是怎样上线的,任务是怎样管理的,优先级又是怎样排

行为型问题

一类用来观察候选人过去在特定的工作情境下,是怎样解决困难并取得成功的问题,候选人在过去遇到困难的时候,遵循的逻辑和采取的行为,这相当程度上反映了未来候选人将怎样应对类似的困难,见微知著

面试反馈

反馈模板:

考察重点:
主要考察内容:
优势:
不足 / 担忧:
结论:其它重要信息:

简历识别

  1. 确认简历与职位匹配,最简单的当然是要开发,那就要过滤掉很明显是运维的简历,另一方面,级别也要匹配,别一个十年的老兵给他一个初级工程师的职位
  2. 收集技术背景等重要信息,同时需要过一遍简历上的疑问,无论是空窗期,还是原来从运维转开发之类的
  3. 深挖事实数据,而非主观模糊描述
  4. 对于简历列出的技术点,留意掌握程度的表述,如果一项声称精通的技术可以被问得很深,那么基本上精通这种描述就不会有太大水分,可以类推到其他其声称精通的技术点