2018 — 2026蒸汽教育 · 八周年

ChatGPT 写、Claude 审、Gemini 找 Bug,面试官接下来问什么?

一张把三款 AI 写进软件工程拒信的截图引出了一个招聘问题。本文结合公开面试指南和一个工程实例,拆解面试官怎样通过技术决策、反例与测试判断候选人的贡献。

浅蓝细线插画中,一位候选人指着白板上的架构分支向面试官解释,桌上摊开三张小纸
📅 时效更新资料核对至 2026-11-11。X 帖所附拒信的真实性无法确认,作为段子解读。Webhook 问答为原创教学示例。

把项目讲到经得起工程追问

带上目标岗位和一个已有项目,练习解释架构取舍、复现故障,以及说明你如何验证 AI 的改动。

11 月 10 日,Jahir Sheikh 在 X 发了一张软件工程岗位的拒信截图。截图里的候选人让 ChatGPT 写代码、Claude 审代码、Gemini 找 Bug。发现问题后,又在几个工具之间来回转述。面试官请他解释架构时,他答了一句“我先交代一下背景”,随后邮件直奔拒绝。截图只显示泛称的招聘团队,缺少可以独立核实的雇主信息。把它当段子看,最值得琢磨的是面试官那句追问。 Jahir Sheikh 的 X 帖与配图

交了代码为什么还要解释取舍

段子的笑点在于,候选人已经组织了一次像模像样的多模型协作,最后却卡在解释自己的决定。招聘方更关心的是接下来的工作。假设你的改动今天合并,明天出了故障,团队能不能跟你一起定位问题?换一个约束之后,你能否指出哪一部分要改?

一份可运行的提交能证明当前输入可以跑通。面试官接着追问,通常希望看到更贴近岗位的证据。你知道哪些请求会走到这段代码吗?你做了什么测试来确认旧行为还在?如果原假设不成立,你会先检查日志、数据库状态,还是外部服务响应?这些回答让面试官更容易区分实际做过的判断和事后熟悉的说法。

微软的技术面试指南把解决问题和岗位技能放在一起,也明确提醒候选人展示怎样测试自己的解法。它举出的检查包括边界情况、错误条件,以及让功能出问题的因素。用这样的标准看,解释思路只是开头。一个能快速定位到代码、样本或测试的回答,才方便另一位工程师验证。 Microsoft Careers 技术面试指南

招聘方怎样看工具使用和个人判断

招聘联系人或考核组织者负责说明这轮允许怎样用工具,工程面试官则需要弄明白候选人对提交掌握到了什么程度。以 Anthropic 为例,其公开指南允许用 Claude 辅助准备和润色自己先写的申请材料,带回家测评和实时面试则默认独立完成,除非该环节明确另有说明。工具规则可以具体到环节,收到题目时值得读一遍随附说明。 Anthropic 候选人 AI 使用指南

获准使用工具时,问法可以更细。例如你让三个模型分别给方案,其中两个都认同同一段代码。如果它们共同沿用了错误的前提,回答彼此一致也无法证明程序正确。面试官可以请你拿一个真实输入,预测输出,再运行验证。这样,一段“我做过 AI 交叉审核”的描述,就落到团队可以重跑的检查上。

反过来,说明自己用了哪些工具也有价值。比如“初稿由 AI 生成,我自己补了两条并发测试,因为顺序执行看不出重复写入”。这句话很短,但有三件事可追问。代码初稿覆盖了什么,测试怎样安排两个请求,跑出来的结果为什么会改变实现。

一道追问就能把架构讲具体

假设作品是个接收 Webhook 的服务。同一个来源可能重复投递同一事件。你的任务是让本地业务记录只更新一次。真实服务确实会遇到重投,Stripe 的文档就明确提醒处理重复事件。下列问答使用简化的模拟场景,目标是在一次数据库事务里完成事件登记和本地业务更新。 Stripe Webhook 文档

“两个相同的事件同时到达,会发生什么?”面试官可以从这里问起。

一个常见初稿会先查处理表。如果没有记录,就更新业务表,再记下事件已处理。顺序测试会通过。并发时,两个请求却可能都在写入前查到空记录,接着各做一次更新。面试官如果只看到一次正常回调的演示,很难发现这个问题。

解释你怎样处理时,可以直接把原实现和修改后的结果说出来。

我先在本地构造了两条相同事件,让两个请求同时进入,发现业务记录被更新两次。后来把来源和事件 ID 作为数据库的唯一键。在同一事务里,只有成功插入事件记录的请求执行后续更新。如果更新报错,整个事务回滚,下一次重试仍可以处理。改完以后我重新跑并发用例,检查数据库里只有一次业务更新。

面试官接下来可能问,写库后还要调用外部服务怎么办。外部调用不受本地事务保护。可以先解释当前提交只覆盖本地写入,再讨论把待发送任务与本地更新一起写入数据库,由后台处理,并给外部调用加幂等键或根据外部状态恢复。若作品没有实现这些步骤,面试时可以坦白讲到方案层面。

工程面试官还可以追问,你怎么知道刚才真的测到了并发?两条请求如果恰好前后跑完,原本有竞态的代码也可能通过。可以让两个请求在查完处理记录后同时继续,先在旧实现上稳定复现,再用相同输入并发检查新实现。断言应落在业务记录实际更新了几次。两条 HTTP 响应都返回成功,有可能恰好是服务正常确认了首次投递和重复投递。测试中还可以让业务更新中途失败,再重新投递一次,检查第一次失败有没有把事件误标成已处理。

把一次 AI 审查变成能展示的面试材料

从你已有的项目中挑一个很小的改动,比如解决重复提交、修正权限校验,或补齐失败后的回滚行为。先把当时的要求、复现输入和你看到的实际结果写在同一页,然后顺着时间把代码改动贴出来。给别人看时,可以用三句话开场。

  1. 我选了什么。 先说决定,然后说明当时有哪两个可行方案。
  2. 我用什么确认。 展示一个能让原方案失败的输入,并说清怎样检查结果。
  3. 条件改变后我从哪里改。 说出原方案依赖的前提,以及最早受影响的模块。

也可以让练习伙伴专门打断你一次。如果对方在你讲背景时问“所以最后选了什么”,先用一句话回答选择,再补解释。如果对方要看测试,直接打开用例,说明怎样触发失败和应该观察哪个结果。熟悉自己的改动,也包括能按对方的问题调整讲述顺序。

准备材料时优先选你能重跑的项目。实际用了 AI,可以如实说哪些部分由工具提出、你验证了什么、最终保留哪些改动。若有别人负责的代码,说明你实际参与的范围。一个具体且能被查证的决定,给面试官留下了比工具列表更多的追问空间。

讲项目时从你的决定说起

那封截图拿“先交代一下背景”开玩笑。现实中,适量背景有助于面试官理解取舍。可以先说“我让数据库处理并发去重”,等对方知道你选了什么,再解释为何顺序测试掩盖了竞态。若面试官临时删掉一个约束,就从原假设出发,给出你会怎样重跑测试的答案。

有些团队还会专门让候选人使用 AI,然后回看整个过程。Manus 联合创始人在 Web Summit 介绍的四小时任务就是一个公开例子。无论考核如何安排,作品中能经得起追问的地方,通常具体到一次选择、一个反例和一次可复现的检查。 Manus 四小时任务的报道与模拟练习。

常见问题(FAQ)

网上流传的这封 AI 面试拒信是真的吗?

目前只能确认 Jahir Sheikh 发布了配图。截图没有可独立核实的雇主身份或完整邮件信息,本文将它作为段子分析。

面试允许使用 AI 时,能同时用几款工具吗?

取决于该轮明确允许的工具和使用方式。获准用一个工具也要确认能否把题目或代码交给其他服务,必要时向招聘联系人核对。

怎样证明 AI 写过的代码自己能接手?

选一个关键决定,说明当时的约束和你考虑过的方案。现场跑一个能区分两种方案的测试,再说清变更条件下你会从哪里改起。

参考资料与官方说明
把项目讲到经得起工程追问

带上目标岗位和一个已有项目,练习解释架构取舍、复现故障,以及说明你如何验证 AI 的改动。