AI 面试毫无区分度:为什么你的流程无法识别能交付 LLM 产品的人才
我认识的一个团队花了六个月的时间,在他们标准的资深工程师面试流程中额外增加了一个“AI 环节”。他们面试了 70 名候选人,录用了 3 名。但这三个人中,没有一个交付的 Agent 能在生产环境平稳度过一个周末。团队将此归咎于人才市场。但人才市场没问题,问题出在面试流程。
标准的工程面试是为这样一套技术栈校准的:正确性可验证,性能可通过基准测试衡量,优秀的工程师是那些能将问题分解为确定性组件,并根据已知规范推导边缘情况的人。那套技术栈依然存在,那些技能依然重要,但预测交付 LLM 产品能力的技能群与此基本是正交的。你的流程是在为错误的职位询问正确的问题。
这是一个结构性问题,而非校准上的微调。在为确定性系统设计的流程中加入 45 分钟的“AI 环节”,并不能筛出 AI 开发者——它筛出的是既擅长经典系统又精通 LLM 的候选人交集,这是一个极其微小的群体。这导致了长达六个月的失败招聘,而大家还在纳闷 AI 工程师都去哪儿了。
你的面试流程未测试的五项技能
有五种能力将能交付 LLM 产品的工程师与不能交付的人区分开来。在标准的编码环节、典型的系统设计环节或针对确定性系统工作的行为面试中,这些能力都无法显现。
对非确定性的适应力。 现代 LLM 即使在温度(Temperature)为 0 的情况下也无法完全复现——浮点运算、GPU 并行计算、混合专家模型(MoE)路由以及批处理级别的依赖性,使得同一输入在不同运行中会产生不同的输出。如果一个工程师坚持要为创意写作界面编写单元测试,并且在被告知正确的测试方法是使用带有校准评判器的留出评估集(held-out eval set)时感到恼火,那么无论他的编码能力有多强,他都不适合。这不是通过指导就能快速弥补的知识差距,而是一种性格特质。一些资深工程师将非确定性视为一种冒犯,并在入职后的前六个月里试图通过规则将其从系统中剔除,而不是围绕它进行设计。
Prompt 调试的直觉。 这种技能表面看起来像 Prompt 工程,但更接近于实验方法:形成一个关于模型为什么执行 X 的假设,设计能证伪该假设的最微小扰动,在固定切分的数据集上进行测量,然后重复。那些说“我只是不断尝试直到成功”的候选人也可以交付产品,但速度很慢,而且他们无法解释为什么评估得分最高的 Prompt 是值得保留的那一个。能够清晰说明为什么要使用 XML 标签而非 Markdown、为什么示例放在指令之前,以及为什么采用某种结构化输出的候选人,其调试速度要快十倍。
评估(Eval)设计。 如果没有冻结的数据切分、校准锚点以及模型更改与评判器更改之间的增量归因,“模型变得更好了”这句话就毫无意义。从未主导过评估集的候选人会将指标视为绝对真理。交付过 Agent 的候选人知道,评估套件是一份契约——存在于定义目标的团队、把控发布的团队以及解释回归问题的团队之间——并且评估集本身也会发生偏移,需要版本控制、校准,以及在评判器模型升级时的应对方案。
成本直觉。 在被要求设计一个功能时,候选人思考的是 Token、扇出(fanout)和缓存命中率,还是仅仅思考 QPS 和延迟?对于 LLM 产品来说,单次任务成本是核心运营变量,其重要性在云时代早期之后从未如此凸显。如果候选人在设计功能时没有提到 Token 预算、Prompt 缓存策略或模型分级路由,那么你不能把盈亏(P&L)责任交给他。而能谈论感知缓存的 Prompt 结构如何将成本降低一个数量级的候选人,则是在向你展示他确实交付过产品。
容错与恢复意识。 经典的系统工作追求“这绝不该发生”。LLM 产品则要求接受系统有时会出错的事实,并设计恢复方案,而不是追求那不存在的 100% 正确率。如果候选人坚持认为正确的设计是将故障率降至零,这表明他会在入职后的第一个季度里为那些更适合通过“撤销”按钮、确认步骤或人工介入机制解决的问题,编写日益复杂的防护栏。
