如何面试一名程序员?

4 sec read

STAR面试法中“STAR”是SITUATION(背景)、TASK(任务)、ACTION(行动)和RESULT(结果)四个英文字母的首字母组合。在招聘面试中,仅仅通过应聘者的简历无法全面了解应聘者的知识、经验、技能的掌握程度及其工作风格、性格特点等方面的情况。而使用STAR技巧则可以对应聘者做出全面而客观的评价。

  1. 了解背景(SITUATION),通过不断提问与工作业绩有关的背景问题,可以全面了解该应聘者取得优秀业绩的前提,从而获知所取得的业绩有多少是与应聘者个人有关,多少是和市场的状况、行业的特点有关。
  2. 了解任务(TASK),每项任务的具体内容是什么样的。通过这些可以了解应聘者的工作经历和经验,以确定他所从事的工作与获得的经验是否适合所空缺的职位。
  3. 了解行动(ACTION),即了解他是如何完成工作的,都采取了哪些行动,所采取的行动是如何帮助他完成工作的。通过这些,可以进一步了解他的工作方式、思维方式和行为方式。
  4. 关注结果(RESULT),每项任务在采取了行动之后的结果是什么,是好还是不好,好是因为什么,不好又是因为什么。

通过STAR式发问的四个步骤,一步步将应聘者的陈述引向深入,一步步挖掘出应聘者潜在的信息,通过应聘者过去的经历来预测其是否胜任目标职位。所以,确保应聘者提供的事件信息真实有效,就成了追问的另一目的。要通过得到更多、更详细的信息,来保证应聘者回答的真实性,因为所得到的结果越具体,说明事件越真实,做出的评价也就越准确。

面试其实说白了就是根据一个人之前的经历,来判断出后续这人会做得怎样,如果你之前从没做成过一件事情,凭什么让别人相信你之后能做成呢?因此无论哪里的面试都会问你之前做过的项目。需要注意的是两个平庸的项目不如做了一个好项目。针对STAR面试法设计的问题:

  1. 你做过最满意的项目是什么?可以是多人协助开发一个产品,也可以是自己个人做过的业余应用。
  2. 项目背景是什么?为什么要做这件事情?
  3. 你在项目中处于什么样的角色,起到了什么方面的作用?
  4. 在项目中遇到什么技术问题?具体是如何解决的?
  5. 此项目最终达到什么效果?
  6. 如果再做这个项目,你会在哪些方面进行改善?

除了STAR面试外,还需要对面试者的技能及其他内容做深入了解。比如技术相关问题,探测面试者基础知识的掌握程度及技术深度和广度的了解。技术相关问题:

  1. 描述一个你遇到过的技术问题,你是如何解决的?有没有遇到过很不常见的问题?比如在网上根本搜不到解决方法的?
  2. 是否有设计过通用的组件?你会提供什么接口?调用过程是怎样的?可能会遇到什么细节问题?
  3. 你最擅长的技术是什么?你觉得你在这个技术上的水平到什么程度了?你觉得最高级别应该是怎样的?
  4. 在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的?
  5. 你最熟悉哪一套版本控制系统?

除此之外,还需要问一些非技术相关问题:

  1. 如果你参与到一个项目中,发现他们使用 Tab 来缩进代码,但是你喜欢空格,你会怎么做?
  2. 在之前做过的项目中,有没有什么功能或改进点是由你提出来的?是否有参与和改进其它开源项目?
  3. 编写代码的哪些方面能够使你兴奋或感兴趣?做什么方面的事情最让你有成就感?需求设计?规划?具体开发?
  4. 你在昨天/本周学到了什么?接下来半年你打算学习什么?如果今年你打算熟练掌握一项新技术,那会是什么?
  5. 后续想做什么?3 年后你希望自己是什么水平?

以上为个人梳理的面试的一些技巧。期望多多交流。

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

Nicholas C. Zakas:我收到的最好的职业建议

Nicholas C. Zakas 是全世界最著名的 JavaScript 程序员之一。 Nicholas 编
4 sec read

为了效率你不应该做的7件事[译]

当我17岁的时候,我曾经每天花20小时在工作和学习上。我在学校的课休时间做家庭作业并在晚上管理一个非盈利的组织
30 sec read

英特尔公司前CEO Andy Grove的管理学

战略性转折点与偏执狂 战略性转折点 我们生活在一个技术飞速变化的时代,它的震波传遍所有的产业。无论你靠什么为生
1 sec read

发表评论

电子邮件地址不会被公开。 必填项已用*标注