近期参与了一些社会招聘的技术面试,记录了这些面试的过程和结果。闲暇时翻看这些文档,觉得面试开发人员还是有很多学问的,又在网上搜集了一些资料,结合以前看过的书,简单的梳理一下如何面试开发人员。
输入输出原则
做任何事情都是要有输入输出的。
就技术面试的输入而言,一是是确定面试的一些基本信息,比如面试地点、面试时间和面试用时限制等;二是要明确用人要求,比如人员等级、需要掌握哪些技术、年龄学习是否有限制、要求有哪些能力等等;三是要认真阅读应聘者的简历,深入了解应聘者的信息,为准备面试问题打基础;四是明确面试输出结果的要求,比如下面将提到的面试结果表。
就技术面试的输出而言,这几次技术面试都要求最后填写一张面试结果表,内容包括应聘者的基本信息、面试时间、最终评分、基本评价和面试结果,基本上按照这些内容填写即可。
寻找机敏成事的人
以前参加过校园招聘,除了专业知识的考察外,很重要的是一些基本素质的考察,比如解决问题的能力,逻辑思维能力,沟通表达能力,兴趣与发展潜力等。我很赞同《Joel说软件》中关于要找的人的标准——机敏、成事,这和上面说的哪些基本素质要求也是契合的。
如何判断一个人是否有这些基本素质呢?
最重要的一点是观察你们之间的交流是否顺畅即沟通表达能力,因此面试要营造一种氛围,让应聘者充分展示其才干。
其次要认真设计面试问题列表。比如问解决过哪些棘手的问题,可以考察其解决问题能力和沟通表达能力;比如问一些没有答案的问题,可以观察其是否够机敏等等;
还可以让应聘者写一些小程序,比如折半查找、n的阶乘、转链表、字符串长度、反向排列字符串等笔试题,观察其是否敏捷高效、基本功是否扎实、考虑是否缜密全面等。
专业生存
当今社会“专业生存”是根本,我们招人也是要招专业能力强的人!因此除了考察基本素质外,专业技能方面也要着重考察。
如何考察专业技能呢?准备一些常见的专业技能问题,包括基本的,中等难度和高难度的问题,通过应聘者对问题的解答程度来判断其专业水平。
常见面试问题
从上面的梳理可以看出,技术面试主要从基本素质和专业技能两个维度进行考察,下面从这两个维度再梳理一下常见的面试问题。
基本素质相关问题
做一个自我介绍。(观察其表达能力,是否有条理,有重点)
介绍最近从事项目的情况。(是否有激情,表达能力,是否愿意承担责任,是否愿意担当领导)
你为什么来我们公司应聘?(求职动因)
你对我们公司有哪些了解?(态度是否端正,准备是否充分,是否是一个细致的人)
你遇到过哪些技术难题,如何解决的?(解决问题能力,表达能力)
若因自己的原因工作未完成,是否接受加班?有没有先例?(责任心,目标感)
现在软件行业的现状如何?(专业水平,工作兴趣)
专业技能相关问题(Delphi)
面向对象是一个什么概念?多态、封装、继承的基本概念?
是否用过设计模式?什么概念?用过哪些设计模式,为什么要这么使用?
模块化是什么概念?实际工作中如何体现?
DLL的基本概念?什么情况下可以使用?如何使用?