行业求职笔记(14分钟阅读)

TLDR AI 新闻

摘要

一位NLP博士的行业求职详细个人经历,涵盖时间线、面试策略和经验教训。

求职过程中的很大一部分涉及管理你在市场上面临的各种情绪。你需要应对许多社会观感。在信息不完整的情况下,做出重大决策可能令人压力重重,因为小选择可能带来不成比例的影响。本文带你了解当前求职体验的真实面貌。
查看原文
查看缓存全文

缓存时间: 2026/06/22 13:31

# 行业求职笔记 来源:https://alisawuffles.github.io/blog/job-search/ 在我读博的大多数时间里,求职在我脑海中就像分院帽:高年级博士生会消失(好几个月),然后带着被决定的命运出现。即使在我亲密的朋友们开始毕业并找到工作后,除了偶尔的“还活着”的证明,我对他们经历的也知之甚少。当终于轮到我的时候,我发现这个过程比我想象的要艰巨得多,感觉自己是在一边玩一边学规则。 回过头来看,我的许多经历都是共通的,一路上学到的东西现在也感觉像是常识。我写这篇文章是为了分享一个数据点,展示这段旅程可能的样子,并希望能让不久前的我所处位置的人少一些对求职的神秘感。 一点关于我的背景。我在华盛顿大学读完了6年的自然语言处理博士,申请的是研究科学家/技术专家岗位。我一辈子都在上学,本希望能永远当博士生,不过我的导师们最终还是劝我向前走。大部分读博期间,我并没有怎么思考之后要做什么,更多的是被有趣的想法驱动去做事。这导致我做了很多方向上的转变,但幸运的是,在最后两年我保持了一条一致的线索(关于 tokenization!),因为那很大程度上也伴随着乐趣。我认为建立自己的专业领域帮助我在求职中脱颖而出。 ## 我的时间线 下图展示了我求职的时间线(灵感来自 Nathan Lambert 的博文),灰色图标是面试,彩色圆圈是结果。注意:**ghosted** 表示招聘人员从未告知我结果或下一步骤,**withdrawn** 表示在收到一些令我兴奋的offer后,我礼貌地告诉公司我不再感兴趣。总共,我面试了11家公司,参加了57轮面试。没有展示的还有46次额外的招聘人员通话和16次发offer后的沟通,以及求职前无数非正式的社交对话。 求职时间线 公司顺序。我决定何时开始每个面试过程,综合考虑因素包括:我是否准备好了、公司的压力、我预计他们行动有多快、我对他们有多兴奋,以及一些不太有意的因素,比如拖延。这里的普遍智慧是先用几家练习,然后调整其他过程,使得所有offer大致在同一时间收到,以便进行谈判。虽然我认为大致精神是对的,但我还想补充几点考虑。 - 练习面试很有帮助,但也要认识到你的精力是有限的——注意不要到了你真在乎的地方时已经筋疲力尽了! - 时间安排上还有一些外部因素值得考虑,比如公司是否有编制、哪些团队在积极招聘,这些可能比你的准备更重要。你可以通过朋友和招聘人员了解一些信息。 - 截止日期通常比较灵活,所以offer时间并不需要非常精确。招聘人员知道你还有其他流程要完成,也有各种技巧可以延迟offer和决策。话虽如此,也有一些臭名昭著的例外(所谓的“爆炸式”offer),所以调查一下通常给候选人多少时间签署是很重要的。 获得第一个面试。说得直白点:在博士期间努力做出好工作、交朋友、多合作!要获得第一个面试,有时需要公司内部有人为你担保。你可以尽早通过参加会议时多社交、广泛合作、参加社交活动来为成功做好准备(当然这部分对每个人来说都不容易——对我肯定也不容易——所以也要照顾好自己的精力和舒适度)。在求职期间,联系你认识(或不认识)的人,询问机会。事实上,求职的一个很大部分就是重新联系那些你可能多年没说过话的人——这没关系,是意料之中的,并且最终会成为一个美妙的过程副作用。 ## 面试类型 我想大致有以下几个类别的面试。总体而言,技术技能和知识比研究经验更受重视,尽管后者可能首先让你获得面试机会。 **ML 编程**。这是迄今为止最常见的。这些问题可能要求你实现某个给定的架构、解码策略、传统 ML 算法,有时甚至更有创意。熟练使用 `PyTorch` 是必须的;少数情况下我会被要求只使用 `numpy`,比如从头编写反向传播,但我不需要熟悉 `numpy` 语法。 **通用编程**。基本上是 LeetCode,有时会加上一些额外的味道。在这里打好基础很好,因为概念经常也会出现在 ML 编程面试中。 **技术讨论**。这些面试不涉及编码,但非常技术性。有时,面试就是围绕一个话题展开的深入讨论,比如你会如何设计实验来回答某个研究问题或实现某个目标。面试官通常会对你的设计选择施加压力,要求你评论一些假设结果并设计后续实验。在其他情况下,面试由一系列快速提问组成(*“有哪些不同的位置编码方式?什么是5D并行?PPO和GRPO有什么区别?”*),目标是表明我懂行。前一种面试测试你如何思考,而后一种检查你在该领域的知识广度。 **研究讨论**。这些是我们读博期间练习最多的对话类型。面试官通常会让你先介绍一个过去的项目,然后剩下的讨论由此展开。他们也可能问你简历上其他论文的问题。准备这类讨论时,退一步想想你为什么选择做这些事情,你在过程中形成了哪些见解和观点,以及你如何看待未来的有益方向,是很有用的。我也会根据岗位调整我的研究介绍;面试官很累,所以击中关键词能让他们更容易相信你的背景是相关的。 **行为面试**。这些完全是教科书式的行为面试,除了偶尔会有关于AI安全或社会影响的问题。列举你博士期间令人难忘的故事,并将其映射到常见的行为问题上,这样在面试时就能立刻回忆起合适的轶事。我搞砸了第一次行为面试,因为我进去时觉得自己显然表现得很好,结果在最简单的问题上卡住了。相信我,一边模糊地回忆往事一边在面试中讲述,最后面试官说“你没有回答问题”,这真是特别痛苦。 **数学**。有些公司有数学面试,从有趣的逻辑谜题到用纸笔进行严肃的数学推导。我建议复习概率论、线性代数和微积分。 **工作报告**。工作报告的形式有些差异,但与学术报告相比,它往往更短,聚焦于一篇论文或一个方向。我的工作报告全是关于 tokenizer 的;我大部分时间花在共同一作的工作上,然后简要介绍了几个二作和进行中的工作,幸好它们很好地串联在一起。 ## 准备 没有什么比花时间为面试学习更有价值了。对我来说,这种感觉就像回到了本科:我记笔记(见我的 LLM 笔记,我在整个过程中持续更新;还有我的数学笔记,只为了一个特定的面试而做),画图,做练习题,在咖啡店待上一整天,确保我深入理解了基本的 ML 概念。技术面试很难,测试的技能需要你在研究之外付出专门的努力去培养。对我和大多数我交谈过的人来说,求职本身就是一份全职工作。 我开始的时候先看了斯坦福大学《从零开始的语言建模》课程的所有讲座,这有助于了解我需要学习的广泛话题,并帮助我把脑子里许多零散的概念组织成对这个领域的一个连贯图景。在覆盖基础之后,我把剩下的时间用于一个一个地深入概念,通过阅读相关的博客文章和论文、大量与 ChatGPT 和 Claude 讨论,以及练习从头实现东西。作业1 至关重要:在面试中实现/调试 transformer 非常常见,将其变成肌肉记忆会有巨大的回报,真的不值得在这里丢分。确保你在完全关闭AI辅助的情况下练习编码,以模拟面试环境(否则你会低估自己对AI的依赖)! 我发现每次面试都是独一无二的,可以从小量——有时是大量——的专门准备中受益。你通常可以从提供的描述、公司感兴趣的话题、招聘人员的暗示以及公司的声誉中对面试的范围有一个直观的理解。当我密集面试时,我发现自己不断地在脑中对信息进行替换,使得针对特定面试最相关的知识保持新鲜。我最好的描述是:每次面试都是一门略微不同的数学或CS课,你从未上过课,现在你有大约3天时间临时抱佛脚准备期中考试。 面试当天。可能是因为我老了,但没有什么比面试前一夜睡个好觉更重要了。我犯了个错误,第一次技术面试只睡了2个小时,因为临时把LLM推理的复杂细节塞进脑子——所有临时知识都没用上,反而因为脑子几乎转不动,花10分钟解决了一个差一错误。面试后记得记些笔记,这对你之后的学习和反思会有帮助。 附带好处。学习给我带来了巨大的附带好处。更广的知识面直接提升了作为研究者的信心。我在对话中变得更自信,因为我更不用担心自己的知识缺口被暴露,也不再觉得必须在出现缺口时隐藏它们。我真的相信,如果我在博士早期做了一些这样的学习,它本可以扩展我能思考和有想法的问题空间,当然也会增加我寻求的对话数量。不可思议的是,我还发现学习让我在手头的项目上变得更高效。我能够获得以前无法获得的技术想法,做更多的技术工作,这令人兴奋。 ## 谈判 我很震惊地发现,在收到offer之后工作远未结束。相反,还有(可能延长的)一段时间让你了解更多选择并谈判offer。这涉及许多与未来潜在队友/经理的对话、午餐拜访和招聘人员通话。在这个阶段,我需要处理大量沟通,总有一些邮件我因内疚而没有回复。 事实是,谈判很难。我们的博士没有为我们准备这一点,而且与面试不同,这一部分不能通过学习来克服。与招聘人员相比,你在市场知识和谈判技巧上都处于劣势,而每个与你交谈的人都想从你这里得到不同的东西。你可能会想,“我对我的offer很满意,可以独立于薪资做出决定!”,的确,了解自己的价值是很好的!但如果你不谈判,你就是在对自己不利。初始offer故意留出了谈判空间;招聘人员常常明确邀请我玩这个游戏,说些“我不指望你接受我们的第一个offer”之类的话。在这里投入几周的精力,从字面上看,可能相当于在初始offer下工作好几年。 在这个阶段,关键是依靠你的朋友,学习如何与招聘人员互动,并获得更多数据点来校准你的要求。在每次与招聘人员通话前,我写下哪些我愿意分享,哪些不愿意,以及一些可以逐字背出的引语。在发offer后的阶段,我会预想他们可能问的问题和可能提出的观点,并仔细构建既能让我自在地表达又能为自己辩护的回应。虽然耗时,但在过程的每个方面都深思熟虑是非常值得的。 ## 结语 在这篇博文中,我重点讲了求职的具体部分,但实际上我个人经历中很大一部分是管理身处求职市场带来的各种情绪。有很多社会认知需要应对:拿自己和同龄人比较感觉很不好,每个人都对你去哪里或不不去哪里有自己的看法,而且人们对你的生活变得异常关注。我也发现在信息不完全的情况下,在巨大的决策空间中导航很有压力,那些没有对错之分的小选择(比如什么时候联系谁)却会产生不成比例的影响。坦白说,有几个月我感到压力、痛苦,无法在生活的其他方面正常运作。希望你找到更多快乐,但如果没有,也请知道你并不孤单。 几个月来我一直在冲向博士的终点,而现在一切结束,我无比伤感地要离开这一章人生。博士是一段特殊的时光,我们唯一的工作就是有好想法并执行它们,作为研究者学习和成长,*而无需*担心立即找到一份真正的工作。因此,虽然我希望这篇博文能帮助你做好心理准备(我当然也认识到今天行业力量有多分散),但我也希望你能珍惜博士作为那段独特时光。毕竟,这些目标可能是互补的——我一直发现,当我玩得开心并追逐那些我无法放下的问题时,我做得最好。 --- ## 附录:学习资源 - LeetCode 75 (https://leetcode.com/studyplan/leetcode-75/) / Neetcode Blind 75 (https://neetcode.io/practice/practice/blind75) - Stanford CS336: Language Modeling from Scratch (https://cs336.stanford.edu/spring2025/) - Self-Attention & Transformers (https://web.stanford.edu/class/cs224n/readings/cs224n-self-attention-transformers-2023_draft.pdf) - The Illustrated GPT-2 (https://jalammar.github.io/illustrated-gpt2/) - Backpropagation (https://cs231n.github.io/optimization-2/) - Introduction to Policy Gradient for LMs (https://ivison.id.au/2026/02/09/policy-gradient.html) - Lightweight Guide to understanding GRPO and RL principles (https://gitlostmurali.com/blog/grpo-intro) - How to Scale Your Model (https://jax-ml.github.io/scaling-book/)

相似文章

关于成为研究工程师的建议 [D]

Reddit r/MachineLearning

一位拥有40多年经验并曾担任高级职位的软件工程师寻求关于转型为研究工程师的建议,讨论了在技术背景扎实但近期应用机器学习工作有限的情况下,现实前景、所需经验及策略选择。