本文总结一下2025年上半年跳槽的全过程。主要申请的是senior machine learning engineer岗位。
本人背景:PhD学位 + 5年工作经验
专业方向:NLP,搜广推,LLM(在Amazon干了两年半的NLP和推荐,在蚂蚁做了两年半的LLM post-training和agent)
目标岗位:senior machine learning engineer
求职进展:
因为年初被reorg到一个完全陌生的project,所以我从二月中旬的时候下定决心跳槽,到四月底签完offer截止,一共历经两个多月的时间。还好我的manager后期因为他自己也要跳槽的原因,基本不管我们了,因此倒是因祸得福,相当于全职刷了两个月的题。
一开始的时候,因为自己很久没有进入市场找工作了,对于行情不是很了解,所以我首先疯狂在LinkedIn上加recruiter和看各种公司的open position。大概看了一两周摸清了下当前都有什么公司之后,我决定基本从三个方面找和自己背景相似的公司:
- 大中型上市公司(FAANG,Pinterest, Snap等)
- 比较火的startup (主要参考了福布斯最近几年的Top50 AI公司名单)
- LinkedIn推荐的小的startup。
之所以这么选择,一是不太清楚自己的定位如何,二是反正自己时间充足,不如先选一些小的startup面试练练手,同时还能增长点面试自信心。现在看来这种策略还是很有用的,像behavior question以及past project deep dive 这种面试轮次,经过前期面试打磨之后,后期面试我都面得非常得心应手。
投简历的时候,除了一部分是我开了LinkedIn会员,并且把状态改成Open to Work之后有recruiter主动联系的之外,90%的公司我都是直接从官网海投的。我个人的感觉是如果你的背景和job description相关并且比较有竞争力的话,还是很快能收到回复的。找人内推的话,如果内推的人背景和自己并不相似,其实也未必能有什么作用。
最终大概统计了下,我自己投了80+家公司,其中有30+家有recruiter联系,给面试机会(phone screen)的公司有22家。其中走到onsite轮的有15家(最终面了11家,因为offer定了所以推掉了4个VO),拿了8个offer。不过这些offer的含金量相对一般,因为大部分dream company要么挂在了面试上,要么根本就没给面试机会,要么被强行down level了,而且有两个offer由于后期没有headcount的原因到最后也没正式发下来。
- 挂在phone screen/hiring manager面试的公司:OpenAI, Meta, Atlassian, Vanta, Anyscale, Shopify, XAI (offer来了就没继续面)
- 挂在on site的公司:Pinterest, Bosch, Abridge
- 因为定了offer所以取消on site的公司:Bloomberg,Apple, Capital One, Snap
- offer: Tiktok, Amazon, Coupang, Microsoft, Accenture, Moveworks, Inworld AI, Kai Cyber
面试经验:
说实话面试真的是体力活,我最多的时候一天要面3家公司,有一段时间平均每天都要2场面试。前前后后一共面试了得有100+轮。因为重复了太多次,我后期面试做self introduction的时候都感觉完全不过脑子了。每家公司的phone screen会有1-2轮,具体会包括至少一轮coding,此外还会涉及到past project deep dive或者ML fundamental。onsite的话一般都有4-5轮,包括coding, ML system design,ML fundamental,和behavior这四个方面。除了个别公司之外,绝大部分的onsite现在都是virtual onsite。以下是我准备面试时的一些个人经验:
- coding的话大部分公司都还是leetcode style, 需要在coderpad或者hackerrank上做到bug free(测试几个自己写的test case,或者要通过公司提前设置好的test case),然后分析下时间/空间复杂度。面试中一般真正给coding的时间大概是35分钟,考察一道题+follow up的情况比较多,两道题的情况也有。准备coding面试也没什么捷径,只能多刷leetcode了。这些公司的coding体感下来大概都是medium左右的难度,我从来没有被考过DP的问题。我这些年前前后后一共刷了700道题,每周的leetcode contest平均能做2.5题左右。除了有两家公司电面coding没发挥好之外,其他的coding轮次都还是比较顺利的。网上leetcode题目讲解的文档还是挺多的,我参考的比较多的是https://github.com/doocs/leetcode/tree/main/solution 和https://fuxuemingzhu.cn/leetcode
- ML system design对于MLE来说也是必考的一轮。虽然说有一些八股的套路,但是考官有时候会问到具体的一些模型(比如推荐系统的经典算法)和数据处理方法(比如处理缺少labeled data的具体算法),所以最好还是得有相关实践经验以及一些ML modeling方面的知识储备。Alex Xu的Machine Learning System Design Interview我觉得写的还是挺好的,一开始列了八股的模版,后面又结合了几个具体的例子,最起码对我还是有一定作用的。ChatGPT其实也很有用,提供的system design答案也挺好的。
- ML fundamental目前我还没有找到什么特别好的参考资料,基本上都是根据个人背景自己一点一点零散的记录起来的。知乎、一亩三分地、甚至小红书都有很多所谓的ML fundamental知识的整理,但是要么写的比较简单,要么就是链接跳转来跳转去最终要付费,所以只能自己慢慢探索了。如果是junior level的MLE的话,西瓜书我觉得是必读书籍之一。但是一般来讲还是得根据自己的research background 以及申请的job description来进行针对性的准备。比如申请搜广推的岗位,那就得准备下推荐系统的算法;申请大模型相关的岗位,transformer以及各种SFT/RL的方法要熟练掌握。
- Behavior question的话,主要考的还是讲故事的能力,这一轮其实非常非常的重要,是bar raiser用来决定给不给offer以及定级别的。我大概准备了十几个故事,面对不同的问题轮着用,目前体感下来也够用了。Amazon的leadership principle https://www.amazon.jobs/content/en/our-workplace/leadership-principles 必须得烂熟于心,此外强推《彻底击碎行为问题
》这篇文章, 熟读此文档我觉得面对各种behavior question都能轻松应对。
总结:
感觉对于machine learning engineer来说,当前的市场还是很有机会的,很多公司都在招和LLM相关方向的人才。但是从有面试机会到最终给offer还是有很长的路要走的。每家公司基本都是6轮面试打底,最多的一家我一共面了9轮。而且给口头offer和拿到official offer letter之间也有很多事情会发生,比如Moveworks一开始给了我offer,后面因为审批原因又撤回了。Microsoft一开始也给了offer,但是紧接着就因为headcount没了也撤回offer了。此外现在所有的公司发了offer之后都要求最多5个工作日之内给回复,导致competing offer不太能及时有,还导致我签了现在的offer之后来了一个给钱更多一点的offer,我衡量了半天之后还是没敢撕签好的offer。我还感觉到或许是因为行情不好(?)的原因,现在的公司特别喜欢down level, 我有至少3个收到的offer都是明显故意down level了。哪怕在低一级别上为了match我对工资的期望去找VP签字,也不愿意给我正常的level。
其实面了这么多公司,还有一个让我很沮丧的点,就是我觉得phd学位对我好像没什么用。对于我这种背景比较普通的phd来说,去不了顶尖的research lab, 只能申请普通的MLE岗位。而这些MLE岗位其实并不需要phd学位。再加上我面试的时候也没有流弊到让所有的面试官都刮目相看,这种情况下公司在定级别的时候,更多的还是会考虑工作年限,所以最多给我senior甚至更低一档的级别。而我master同期的同学因为比我多了5年工作经验,很多人现在都在各大公司里面当上staff了。