机器之心编译
机器之心编辑部
OpenAI 在 AI 领域引领了一波又一波浪潮,想必很多人好奇,这些创新背后的研究人员是如何通过面试的?
尤其是现在,OpenAI 已经成为全球最受瞩目的 AI 公司之一,吸引了无数顶尖人才投递简历。想要加入这个团队,着实不容易。
近日,一位入职 OpenAI 不到两个月的新研究员 Bas van Opheusden 分享了他的求职经历,面试指南长达 8 页。


根据领英数据显示,Bas van Opheusden 今年 7 月加入 OpenAI,现在是一名研究员,拥有纽约大学博士学位。
在这份指南里,他谈到了心态调适、准备策略、编程技巧等多个方面,并将自己的经验教训、建议分享给大家。
OpenAI 新员工分享面试技巧
以下是原文内容:

原文地址:https://docs.google.com/document/d/1ZV73D2vgaj2yu_tjN3TVOP6QVLWVPXJB2rrqSZQxYtI/edit?tab=t.0
Opheusden 强调首先是保护好自己的身心健康。面试过程充满压力,短短 30 分钟的谈话,就可能让你的人生发生巨大变化,不论是好的还是坏的,过程会很艰难。确保你有朋友和家人组成的亲友团支持,不要低估心理压力加上熬夜对身体造成的影响。
大家都以为面试官非常刁钻,恰恰相反,Opheusden 表示面试官也希望面试者能顺利通过并签下 Offer,在面试过程中,你可能会觉得一切是对抗性的、令人沮丧甚至不公平的。但请记住,所有参与其中的人,包括推荐人、招聘人员、面试官、招聘经理等,其实目标是一致的:希望你顺利通过并接受 Offer。通常公司会尽量帮你成功,因为任何其他结果对他们来说也是损失。虽然每个人在其中扮演的角色不同,但这是一场团队协作的比赛。
失败本就是常态。这已不是 Opheusden 第一次申请 OpenAI,但今年成功了。Opheusden 认为职业轨迹都在向上延伸,只要你在任何公司通过过一个环节,他们通常很乐意在 1-2 年后再次接触。
重在享受过程。在等待结果的那段时间里让人难以放松,但面试本身也充满乐趣。你会探访酷炫的新创公司,与所在研究领域的顶尖专家一对一交流,还能掌握新技能。编程面试在某种程度上也挺有意思,当然是那种事后回想才觉得有趣的类型。
尽早准备
为求职面试做准备,几乎是你人生中投资回报率最高的事情之一,准备的越早越好。面试准备还有额外的好处:你能学到新技能、阅读论文,或者重温一些经典内容。通过模拟面试,你还能获得真诚的反馈,并从更高的视角审视自己。
以量级来衡量的话,Opheusden 建议大概花 100 个小时做 LeetCode 练习,并用差不多的时间去阅读论文、复习知识(可以用 Deep Research!)、以及和朋友交流探讨。
不存在真正的非正式交流
招聘人员可能会邀请你与招聘经理聊一聊,或者和团队一起吃午餐,并将这些交流称为非正式,但这通常只是意味着没有正式的评分标准。事实上,你与任何公司或其代表的每一次互动,都是展示你个人品质、能力和热情(无论是积极还是消极)的机会,这种情况从第一次交流开始,一直到你签署 offer 当天都适用。
和朋友多练习
面试,尤其是编程面试,本身就是一种尴尬的体验。它要求你在一个从未见过面的人面前写程序、并希望你边做边讲的情况下,调试诸如索引偏移一位这样的错误。而且你不能使用 Codex、Copilot 或任何 LLM 工具来辅助,就像平时的工作流程一样。你绝不希望第一次经历这种情况是在一次高风险的面试中。
能多练习就多练习,找朋友一起模拟,练习在时间压力下写代码,特意挑一些让人头疼的问题,让朋友假装不认识你。这会很尴尬,但这正是练习的目的:学会适应并接受这种尴尬感。
一些简单的小技巧
面试的目的是评估你的能力以及与公司的匹配度,在某种程度上,你要么达标,要么不达标。不过,你仍然可以通过很多小细节来提高成功的概率,这些做法也能传达出你的用心与专业度。
投资一个好的设备环境。Opheusden 买了一套线上面试设备, Yeti Nano 麦克风和 C922 Pro 摄像头。并使用双屏设置,可以在通话时做笔记,他还会把视频通话窗口移动到屏幕合适的位置,让对方看起来像是在进行眼神交流。保持房间光线充足,每次面试前清理书桌,并准备好纸笔。
照顾好自己的基本需求。 面试前一天早点睡觉。根据需要开空气净化器、空调或取暖器。面试前 30 分钟,可以出去走走或者陪猫玩。确保自己吃饱,上过厕所,并且手边有水(Opheusden 通常会准备水、咖啡、冰茶并一字排开)。如果有腰颈问题,可以提前吃点止痛药并做伸展运动。
提前到场。如果你的面试是下午 2 点,那就 1:55 加入会议。面试官可能会在 2:03 左右出现,如果到 2:05 还没来,就用事先准备好的邮件联系招聘人员,他们通常会在 2:07 左右出现。这是很正常的情况。
熟悉视频会议工具。不同公司可能使用 Zoom、Google Meet、Microsoft Teams、Amazon Chime 等不同平台。确保你知道如何共享屏幕或打开聊天窗口。同样,对于编程面试,要提前熟悉将要使用的工具。如果是 CoderPad 或 Google Colab,你可能会有语法补全和高亮,但有些公司使用纯文本,甚至不允许运行代码。据说 Meta 计划将面试切换为允许使用 AI 工具的模式。
如何获得面试机会
想要进入大型科技公司并非易事。他们虽然有招聘页面,但申请通常非常困难,成功率很低。通过内部招聘或推荐获得的成功率更高。
做好研究,并让成果被看见。把你的成果发布出来,并在会议上进行展示;在 GitHub 上发布带有演示和 README 的库;参加行业交流活动和招聘会,在演讲中提出有价值的问题,主动提供合作并兑现承诺。积累引用次数、GitHub star 数,参与开源项目,赢得黑客马拉松等。很多公司都有招聘人员和人才发掘专员,他们的工作就是发现优秀人才。如果你持续产出高质量成果,他们一定会注意到你。而且,你让他们发现你的过程越简单越好。
争取内推。最好的进入途径是内部推荐。考虑到 Google、Meta、Apple、Amazon 等公司员工众多,你很可能有朋友在这些公司。向朋友或熟人请求推荐是完全正常的。即便他们不能帮你(因为大多数公司对内部推荐次数有配额限制),你也会因此重新联系上一些老朋友,并结识朋友的朋友,他们会乐意认识你并给你建议。这个行业有很强的传递善意文化。
维护好你的 LinkedIn、简历和个人主页。如果你在职位栏里写着 AI Research Scientist - Large Language Models,你就会收到很多主动找上门的机会,其中还包括一些你从没听说过的很酷的初创公司。
与招聘人员的初步电话沟通
大多数公司,面试流程的第一步通常是与招聘人员进行一次简短的非正式电话沟通。他们会向你介绍面试流程,告诉你招聘经理是谁、所在团队是做什么的;如果是初创公司,还会讲公司的使命和战略。他们可能还会问你对薪酬的期望。
在这通电话中,一定要记笔记!Opheusden 表示自己当时没记,后来很后悔。这可能是唯一一次有人向你详细解释组织架构和团队结构的机会。因而在 2-3 周后的编程面试中,被问到自己申请的职位是什么时,Opheusden 却答不上来。
与招聘经理的沟通
几乎每家公司都会在流程早期安排一次与招聘经理的面谈。通话结束后,招聘经理需要相信你具备胜任他们所招聘岗位的技能,并且相信在接下来的几年里,他们会愿意与你紧密合作。
这个环节没有什么所谓的作弊技巧或秘密窍门。招聘经理通常比你有更多经验,判断力更强,并掌握你所不了解的内部信息(比如岗位的精确描述)。不过,你仍然可以采取一些方法来提高成功的可能性。
做好调研。如果你已经知道招聘经理是谁,就去 Google Scholar 上查查他们的学术主页,读读他们的论文,看看他们的推特,观看他们做过的演讲或报告。这样你能更好地理解他们的动机和兴趣,而大多数人都喜欢别人关注他们的内容。这并不是什么社交工程技巧;提前花时间去了解他们,本身就是展示你热情的真诚方式。
真诚。如果你在面试中刻意扮演一个人设版的自己,面试官会察觉,而且几乎是瞬间就能看出来。人类在这方面是很敏感的。
保持谦逊。这一点很难把握。你会陷入一种左右为难的境地,既想展示自己的能力,介绍自己之前工作成果,但又不想给人留下自负的印象。
还有就是保持热情。
编程面试
编程面试通常会占据你大部分的面试时间,也是决定成败的关键环节。一个非常重要的概念是,要理解编程面试背后的心理学,并利用这一点为自己加分。面试的目标并不是写出完美的代码、通过所有测试,而是让面试官对你作为未来同事的印象是积极的。
面试官是希望你通过的。因为面试官既出题又评分,你可能会误以为你和他们之间是对立关系。事实恰恰相反:对面试官来说,最理想的情况是你表现出色,他们可以写一份赞不绝口的推荐。通常他们会尽力帮助你通过,而你也可以利用这一点。
简短自我介绍。时间对你不利,寒暄性的长介绍会浪费时间。你应该准备一个简短版本,比如:我叫 Bas van Opheusden,目前在研究团队负责安全与对齐的评测工作。
解决一个问题后,马上进入下一个。很多人会忍不住在一个题上花过多时间,但如果是多轮题目的面试,尽快进入下一个问题才是核心目标。
练习在压力下编程。编码和调试的难点在于,你必须在脑中精准模拟机器逻辑。而当有人盯着你、时间又紧迫时这就更难了。你应该在和面试相同的条件下练习:有时间压力、也有心理压力。
准备白板编程面试。有些公司会用这种形式。不知道为什么,但这是一个需要提前准备的技能。练习在没有运行环境、没有语法高亮的情况下写代码。虽然很糟心,但你会庆幸自己练过。
练习 Python。大多数科技公司都用 Python 和 PyTorch。有些公司会在面试中要求用 Python,有些则不会,但很大概率你的面试官最熟悉的就是 Python,这样他们也能更好地帮助你。
值得准备的面试题目:
- Debug Transformers。这是经典题型之一:你会拿到一个有问题的自注意力模块实现,需要进行调试。一定要练习调试张量的形状,并特别注意因果注意力掩码(causal attention mask),这里是最容易出错的地方;
- Top-k /kNN。选出前 k 个最大元素的问题在机器学习的很多场景中都会出现,非常适合作为面试题,尤其是因为其解法并不是能现场发明出来的东西。一定要确保你熟悉堆的概念和用法;
- 实现 BPE。Tokenizer 是大语言模型中最麻烦的部分,而不出错地实现 BPE 并不容易。这也是比较常见的考察点;
- 从头实现反向传播。包括手写自动微分、链式法则等的基础版本;
- KV Cache。本质上就是构建一个矩阵,但如果你之前没见过,可能会用一种很绕的方式来做;
- 二分查找、回溯、Dijkstra 算法等。
机器学习领域面试
你可能会被安排一次研究领域的面试,可能是考试式的问答、讨论你写过的一篇论文,或者只是让你介绍一下你目前正在做的工作。
准备应试类问题。掌握基础知识!你的面试可能会从这样的问题开始:请描述监督学习与无监督学习的区别或者什么是线性回归。你需要能够简洁准确地回答这些问题。同时,确保你了解最新的前沿技术或近期发展。例如,如何训练一个上下文长度为 1000 万的模型?GSPO 与 GRPO/PPO 有何区别?什么是(有害的)人格向量?有些面试官还喜欢问历史性问题,比如请说出 Vaswani 2017 年论文提出的架构与 GPT-OSS-120B 架构在质上的三大主要区别。
可以用 ChatGPT 来做准备。如果必须的话,也可以用 Claude 或 Gemini。
准备一个演讲。有些公司可能会要求你做一次演讲,即使不要求,也可能会让你讨论之前的工作,而有幻灯片辅助要比单纯口述好得多。
准备好讨论你当前的工作。你可能会被问到当前项目的情况,你需要能够解释项目目标、你的方法、目前的进展、下一步计划,以及你设想它最终如何融入产品。这可能会有些尴尬,因为有些问题你可能无法回答,或者面试官的直觉与你不同,甚至他们已经知道你的方法行不通,但这是机密所以不能告诉你……
面试通过后,还要保持谨慎
当你通过正式的面试轮次,并接到招聘人员的恭喜电话后,一个新的面试流程才刚刚开始。此时,公司已经确认你符合他们的技术标准,也认同你在文化上的契合度。
但他们并不知道自己到底有多想要你、你又有多想去他们那里工作,以及他们应该为你开出多少薪水。
到这个环节,不要只盯着薪资,不要让数字分散了你对其他影响生活质量因素的注意力,比如团队、使命、地点、公司文化,以及(真的)食堂的饭菜。钱确实很重要,但如果为了钱牺牲了幸福感,就失去了它本来的意义。
有些招聘人员会出阴招。Opheusden曾遇到过公司撤回 offer、直接消失不再回复等。尽量把一切都落实到书面上(这本身可能也需要谈判),而且不要以为自己比对方更会谈判。你这一辈子可能只会经历几次谈判,但他们每天都在做这件事。
一个重要的资源是你的招聘经理。你可以请求再聊一次、认识更多团队成员,或者在压力消除后再次参观办公室。但要记住,没有真正的非正式面试!
总有一个时刻,你需要真正决定自己的人生要往哪个方向走。如果没有,就选择那家能让你每天推开公司大门都露出笑容的企业去工作。