当 Claude 能解掉你的招聘笔试题:设计「抗 AI」的技术面试

本文作者 Tristan Hume,Anthropic 性能优化团队负责人之一。他设计——并反复重新设计——了那套帮 Anthropic 招到几十名性能工程师的 take-home(带回家做的)笔试。

AI 越强,技术面试就越难评。 一道今天能很好区分人类水平高低的笔试,明天可能被模型轻松秒掉——那它作为筛选工具就废了。

2024 年初起,我们性能团队一直用一道 take-home:让候选人为一台仿真加速器优化代码。超过 1000 人做过,几十人现在在这工作,包括把我们 Trainium 集群跑起来、参与过 Claude 3 Opus 以来每一代模型的工程师。

每出一代 Claude,都逼我重做一次题。同样的时限下,Claude Opus 4 已经赢过大多数人类应聘者——好在还能区分最强候选人;可接着 Opus 4.5 连这些最强的也追平了。人类在无限时间下仍能赢,但在 take-home 的时限约束内,我们再也没法区分顶尖候选人和最强模型的产出

我已经迭代了三个版本。每一次,都让我对「什么样的评估扛得住 AI、什么样的扛不住」多懂一点。


题目的由来

2023 年 11 月,我们正准备训练和发布 Claude Opus 3,拿下了新的 TPU/GPU 集群,但性能工程师严重不够。我在 Twitter 发帖让大家投邮箱,结果涌进来的好苗子远超我们标准面试流程的处理能力。

于是我花两周设计了这道 take-home,想要既能真实反映岗位要求、又能高分辨率地识别出最强的人。

设计目标

take-home 名声一向不好——通常塞满无聊的通用题,筛选效果还差。我的目标不一样:做一道真正有意思、让人兴奋着想做的题。相比现场面试,它还有几个好处:

此外还有几条我设计任何面试都遵循的原则:贴近真实工作、高信号(别押在单个灵光一现上、要有宽的分数分布、深到连强者都做不完)、不要求特定领域知识、好玩

那台仿真机器

我用 Python 写了个仿真加速器,特性类似 TPU。候选人在上面优化代码,配一个热重载的 Perfetto trace 显示每条指令——和我们在 Trainium 上的工具很像。这台机器有让加速器优化变有趣的特性:手动管理的暂存内存、VLIW(每周期多个执行单元并行,要高效打包指令)、SIMD(一条指令处理多个元素)、多核。

任务是并行树遍历——故意不做成深度学习味儿的,因为多数性能工程师当时还没碰过深度学习。候选人从一个纯串行实现起步,逐步榨出机器的并行能力。

早期效果

效果很好。Twitter 那批里有个人分数远超其他人,2 月初入职,立刻就开始优化 kernel,还绕过了一个会卡发布的编译器 bug(张量索引运算溢出 32 位)。接下来一年半约 1000 人做过,帮我们招进了现在性能团队的大部分人。它对纸面经验有限的候选人尤其管用——好几位最强的工程师是本科应届,全靠 take-home 上的表现让我们敢招。


然后 Opus 4 攻破了它

到 2025 年 5 月,Claude 3.7 Sonnet 已经强到超过 50% 的候选人不如直接全权交给 Claude Code。我又拿一个预发布的 Opus 4 测——它在 4 小时内做出的方案比几乎所有人类都更优。

这不是第一次有 Claude 攻破我的面试题(2023 年那道现场题,Claude 3 Opus 破了第一部分、3.5 Sonnet 破了第二部分)。但 take-home 有个直接的修法:题的深度远超 4 小时能探完,于是我用 Opus 4 找出它开始卡壳的地方,把那里当成版本 2 的新起点——写更干净的起始代码、加新的机器特性增加深度、去掉 Claude 已经会的多核。同时把时限从 4 小时砍到 2 小时(更容易塞进一个周末)。版本 2 强调巧妙的优化洞见而非调试和码量。它顶了好几个月。

然后 Opus 4.5 又攻破了版本 2

我拿预发布的 Opus 4.5 测时,看着 Claude Code 干了 2 小时,不到一小时就过了及格线。然后它停了,确信自己撞上了「无法逾越的内存带宽瓶颈」——多数人类也会得出同样结论。但有些利用问题结构的巧技能绕过去。当我把「其实可以做到的周期数」告诉它,它想了一会儿就找到了那个技巧,接着调试、调参、继续优化。到 2 小时整,它的分数追平了该时限内最好的人类成绩——而那个人还是重度借助 Claude 4 才做到的。

我有麻烦了:我们即将发布一个模型,而它在我招聘题上的最佳策略就是「把活全交给 Claude Code」


几种选择

有同事建议禁用 AI。我不想——除了难以执行,我更觉得既然人在我们的工作里仍然关键,就应该能找到一种让人在「有 AI 的环境里」也能脱颖而出的方式,就像他们在真实工作里那样。我还不想这么早就认输、承认人类只在「几小时以上的任务」上才有优势。

也有人建议把门槛抬到「显著超过 Claude 单干」。但 Claude 快,人类通常要花一半时间读懂题才动手——人去 steer(引导)Claude 很可能一路落后,只能事后才搞懂 Claude 做了什么,主导策略可能变成「坐着看」。

如今 Anthropic 的性能工程师仍有大量工作,但更像是:硬核调试、系统设计、性能分析、想办法验证系统正确性、把 Claude 的代码改得更简洁优雅——可惜这些都难在没有大量时间或共同背景的情况下客观考察。设计「能代表岗位」的面试一直难,现在更是难上加难。


尝试一:换一道优化题

我意识到 Claude 能帮我快速实现任何我设计的东西,这反而鼓励我去做更难的题。我选了一道基于我在 Anthropic 做过的较棘手 kernel 优化——二维 TPU 寄存器上的高效数据转置(同时避免 bank conflict),蒸馏成仿真机上的简化版,让 Claude 一天内实现完。

结果 Opus 4.5 找到了一个我都没想到的妙招:它发现可以转置整个计算而非纠结于怎么转置数据,于是把整个程序重写了。我的真实场景里这招行不通,于是打补丁堵掉。Claude 接着有进展但找不到最优解——看似我有新题了。但我心里发虚,又用 Claude Code 的 ultrathink(更长思考预算)复核了一遍……它解出来了,连修 bank conflict 的技巧都懂。

事后看,这题选错了:数据转置和 bank conflict 是无数平台工程师都钻研过的老问题,Claude 有海量训练数据可借。我是从第一性原理找到解法的,Claude 却能调用一个大得多的经验工具箱。

尝试二:往更怪的方向走

我需要一道人类推理能赢过 Claude 庞大经验库的题:足够分布外(out of distribution)。可惜这和「要像真实岗位」的目标冲突。

我想起最喜欢的几个非常规优化问题,落在了 Zachtronics 游戏 上。这类编程解谜游戏用极度受限的怪异指令集,逼你用非常规方式编程。比如《深圳 I/O》里,程序被切到多个互相通信的芯片上,每个芯片只放约 10 条指令、一两个状态寄存器,巧妙优化常常要把状态编码进指令指针或分支标志。

我设计了一套用极小、严重受限指令集的谜题,目标是把指令数压到最小。先做了一道中等偏难的,拿 Opus 4.5 测——它失败了。我补全更多谜题,并让没我这么钻研的同事验证:普通人仍能胜过 Claude

和 Zachtronics 不同,我故意不提供任何可视化或调试工具——起始代码只校验解的有效性。造调试工具本身就是考点:你可以插精心设计的 print,也可以让编码模型几分钟生成个交互式调试器。「怎么投入在工具上」的判断力,也是信号的一部分。

我对新题还算满意。它可能比原题方差更小(由更多独立子题组成)。早期结果不错:分数和候选人过往工作的水准相关性很好,我一位最强的同事拿到了迄今最高分。

我仍为放弃原题的真实感和深度而难过。但真实感也许是我们再也负担不起的奢侈品了。原题之所以管用,是因为它像真实工作;新题之所以管用,是因为它模拟了全新的工作


一个公开挑战

我们把原版 take-home 放出来,供任何人在无限时间下挑战。在足够长的时间跨度上,人类专家对当前模型仍有优势——史上最快的人类解法,大幅领先 Claude 即便砸上大量 test-time compute 所能达到的成绩。

性能基准(单位:仿真机时钟周期,越低越好):

周期数谁、在什么条件下
2164Opus 4,在 test-time compute 框架里跑了很多小时
1790Opus 4.5,随手开个 Claude Code 会话,约等于 2 小时内最好的人类成绩
1579Opus 4.5,在我们 test-time compute 框架里 2 小时
1548Sonnet 4.5,远超 2 小时的 test-time compute
1487Opus 4.5,在框架里 11.5 小时
1363Opus 4.5,改进版框架里跑很多小时

题在 GitHub 上。如果你能优化到 1487 周期以下(即超过 Claude 发布时的最佳成绩),把代码和简历发到 performance-recruiting@anthropic.com。或者走我们常规流程——它用的是那道(现在)抗 Claude 的新 take-home,我们也好奇它能撑多久。


总结

每一代模型都在重画「可被自动解决的难题」的边界。一道好评估的生命,如今要用「它能跑在最强模型前面多久」来计量。真实感和抗 AI 性,正越来越难兼得——而当二者必须取舍时,也许我们只能选后者:用「模拟新颖工作」去换那一点点宝贵的、属于人类的信号。

本译文采用 CC BY-NC-SA 4.0 协议发布,仅供学习交流。

原作品版权归 Anthropic(Anthropic Engineering)所有,原文请见 这里