面试高级开发人员应注意事项

资深工程师David Eastman分享了面试高级开发岗外来应聘者的经验,提出了面试中的常见问题线索和提问策略。

译自 How to Conduct an Interview for a Senior Developer Role,作者 David Eastman 一直是驻伦敦的专业软件开发人员,曾在甲骨文公司和英国电信任职,也是一位帮助团队以更敏捷的方式工作的顾问。他写了一本关于UI设计的书,从那时起一直在撰写技术文章......

在之前的一篇文章中,我建议了如何作为一个候选人面试。这篇文章将带您进入桌子另一边。在这里,我将讨论如何面试申请高级开发人员职位的外部候选人,其中工作说明您有一定的相关经验。

大多数面试过程分为某种自动化编码测试,然后是与适当的员工进行面试。您可能来自某个组织内部进行面试 - 可能是因为候选人将加入您的团队。

简历审核和屏幕测试

您将最初从候选人的简历开始工作。如果您熟悉候选人从哪里汲取经验,面试会更轻松。

我对基于屏幕的测试有些怀疑,但它们的确可以过滤掉不适合继续其余过程的人。我使用了约 50 个问题的名单,所以它可能需要一个多小时 - 这就是在事先过滤候选人的原因。我尝试提出不同类型的问题,以免候选人陷入重述的境地。例如,我会混合一些关于估计的常规问题或新闻话题,只是为了确保候选人得到适当的启发(如果实际上没有被摇晃)。一个问题应该深入一个主题,而不仅仅是一个词的答案。不要仅仅关注与工作说明相关的主题,因为我们都知道那可能会改变。您正在寻找有经验的开发人员,他们可以满足您组织的需求。

您当然会有自己感兴趣的领域,这些领域可能不再反映其他开发人员的知识。经过几次面试后,如果问题不能引起回应,您需要从问题名单上删除一些问题。例如,“您理解事件一致性是什么”这个问题让我一头雾水。只需重新措辞问题。

面试策略

现在是面对面的面试。在进行这种技术面试时,您要考察知识质量、经验范围以及与协作的态度。是的,协作不仅仅是一个社交品质,它也是一个技术品质。

允许候选人自己构建答案叙述。您正在寻找精确高效的定义,但随着主题的发展,答案需要更加广泛。尽管您应坚持您的面试者角色,但氛围应保持会话和肯定(即不具侵略性)。偶尔打开门户(例如“许多人一开始缓慢地回答这个问题!”)可以帮助候选人放松一点。从技术上讲,您是一个审问者,但候选人并不受审。

尽管幻觉通常与生成式 AI 相关,但在面试过程中从候选人那里获得幻觉相当普遍。事实上,这部分原因是为什么一些研究人员认为 AI 可能正在接近人类的思维方式。当候选人正在构建答案时,他们可能会即兴发挥或在继续时“胡言乱语”。这意味着关键词会迷失在无关的材料中。

作为面试官,您应该通过将候选人重新引导至一个领域,直到他们的回答赶上问题来试图避免这种情况。这不一定表示缺乏知识;更有可能是他们正在结合不同的记忆。显然不正确的答案应该表示是时候转到下一个问题了。

问题名单上的几个问题

我将介绍您可能会向高级开发人员提出的示例问题,以及问题可能的发展方向。如果他们不知道或开始回答不正确,那么立即转移话题。请记住,您正试图评估他们如何理解自己所知道的——而不是他们不知道的。

示例:"您理解“REST”一词的含义吗?"

尽管这在一定程度上是一个学术术语,但大多数候选人会对其定义有所了解。如果他们知道它代表“表征状态转移”,那就是一个加分项。但是您需要从候选人那里快速获得的信息是:这是 Web 上进行通信的某种体系结构。

当然,您正在寻找某些关键词。明确的主要动词是 GET、POST、DELETE 和 PUT。如果他们提到 PATCH,那是一个加分项。术语“无状态”也应被提及。

一个引导性问题可能是“您理解‘CRUD’一词的含义吗?”这应该让他们回到将 REST 动词与数据库操作进行类比的想法上。

您可能希望候选人举出他们实现过 REST 系统的示例——显然这应该反映他们简历中的证据。如果工作说明涉及 Rails 或 Django,那么这可能是一个预期的问题。

一个简单的延伸问题将是“为什么许多组织停止 PUT 和 DELETE 请求?”您要找的是对可能擦除数据的操作所存在的安全问题的简单认识。

让我们只是根据上述术语总结谈话的阶段:

  • 候选人应该将问题中的概念或组件与计算的全貌放在一起,并提供一个简单的定义。
  • 答案应该包含表示实际理解的关键词。
  • 面试官可以使用引导性问题使候选人不离题。
  • 候选人经验的示例有助于加强对答案的信任。
  • 使用延伸问题来检查候选人知识范围。

示例:"您理解正则表达式吗?"

同样,候选人必须迅速将其放在正确的领域;在这种情况下是“文本处理”和“工具”。您希望他们知道这代表正则表达式。

答案中应出现“模式”和“特殊字符”等关键词。如果候选人没有使用“模式”一词,那么您可以引导他们反思符号字符串所代表的含义。

候选人应该举出一个正则表达式擅长的例子(例如解析电子邮件格式),并描述一个简单的模式。

一个有趣的延伸问题是“为什么正则表达式不适合处理 HTML?”。即使候选人没有任何直接的经验,他们通常也能弄明白。

示例:"您理解史诗、故事和任务的含义吗?"

您要提出多少敏捷问题取决于雇主和工作说明,但是高级开发人员必须直接参与敏捷(或同等)开发,因为这是协作的最前线。在这种情况下,定义可以以任何顺序出现。

这里的关键词是“利益相关者”、“产品负责人”、“计划”和“实施”,但您真正要寻找的是这些术语之间的协作关系。未提及任何人际关系的候选人可能从未真正实践过敏捷开发。

引导性问题将帮助候选人将问题放在运营业务中,与需要知道工作完成时间的非技术同事在一起。

您可以为候选人提供一个理论上的要实现的功能,并查看他们如何分解它。

敏捷的延伸问题通常会关注仪式的含义。例如,如何检查任务是否及时完成。

整理响应内容

您最后的任务是编制一份报告,对候选人的每一个答案给出绿色、黄色或红色评分。黄色意味着在一定安抚后给出了一个令人满意的答案,或者在一些细节缺失的基础上给出的答案。您还可以看看有哪些领域是候选人回答的问题较少的。

但是您可能需要做的只是对候选人是否可以继续进入下一轮面试过程给出是/否的答复。还要反思您自己的过程——检查您完成了多少问题,以及是否有任何问题实际上没有给予候选人扩展的机会。并准备好下一次面试——可能会有很多轮。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注