找工作好难啊!
在当今市场,机器学习相关职位的求职比以往任何时候都更加复杂。尽管公开报道声称工作需求机器学习工程师(MLE)的需求正在快速增长,但事实上,过去几年市场已经转向雇主市场。在 2020 年、2022 年和 2024 年寻找 ML 工作可能会是完全不同的经历。此外,有几个因素导致了不同地域、领域和资历级别之间求职困难的差异:
- 地理: 根据人工智能领域人士报告, 顶级城市招聘2024年北美地区有湾区、纽约、西雅图等。如果用专业人员#与职位#的比例来评价找工作的成功率,那么湾区的成功率为3.6%。然而,如果你住在洛杉矶或多伦多,需求就低得多,这导致成功率下降到1.4%,与湾区相比只有40%。如果您住在其他城市,成功率可能会更低。
- 领域:每个领域的机器学习工程师角色所需的技能组合差异很大。以深度学习模型为例;CV通常使用ResNet、Yolo等模型,而NLP则涉及了解RNN、LSTM、GRU和Transformers;欺诈检测使用 SpinalNet;LLM侧重于Llama和GPT的知识;推荐系统包括对Word2Vec和Item2Vec的理解。然而,并非所有领域都雇用相同数量的机器学习工程师。如果我们搜索标签Evidly AI 的系统设计案例研究,标签CV对应30个用例,欺诈检测对应29个,NLP对应48个,LLM对应81个,推荐系统对应82个。推荐系统的用例几乎是CV的2.7倍。这个比例可能存在很大偏差,并不能真实反映就业市场的实际情况。尽管如此,它仍然表明机器学习工程师的推荐系统可能会提供更多机会。
- 工龄级别。根据365 数据科学报告,尽管 72% 的帖子没有明确说明所需的 YOE,但对具有 2-4 YOE 的工程师的需求量最高。这意味着您可能会在获得入门级工作机会时面临更大的困难。(大多数需求是针对具有 2-4 年经验的工程师,这可以解释为 MLE 在五年前并不是一个典型的角色,正如这篇博文中所解释的.)
本文将总结 MLE 面试准备的材料和策略。但请记住,这只是我收集的经验信息列表,可能对您的背景或即将到来的面试有用,也可能不起作用。希望本文能为您的职业发展之旅提供一些启发或指导。
面试前 – 会发生什么?
面试的旅程可能会很漫长,痛苦而孤独。当您开始申请工作时,您应该考虑并做出相应的计划:
- 面试时间表
- 角色类型
- 公司类型
- 领域
- 地点
采访时间表。每家公司的时间表都不同。对于规模较小(<500)的公司,通常处于种子期前或 A/B 轮融资阶段,时间表通常会更快,您可以期望在几周内完成申请流程。然而,对于规模较大的公司(> 10k 或 FAANG),从提交申请到最终报价阶段,可能需要 3-6 个月甚至更长的时间。
角色类型。我会参考Chip Huyen 的机器学习访谈书有关不同 ML 相关角色的更详细讨论。MLE 的角色可以有不同的名称,例如机器学习工程师、机器学习科学家、深度学习工程师、机器学习开发人员、应用机器学习科学家、数据科学家等。归根结底,典型的机器学习工程师角色是端到端的,这意味着您将首先与产品经理(有时与客户)交谈并定义 ML 问题,准备数据集,设计和训练模型,定义评估指标,服务和扩展模型,并不断改进结果。有时,公司会混合使用这些名称,例如 MLE 和 ML Ops。重要的是责任,而不是头衔。
公司类型。再次,Chip Huyen 的机器学习访谈书讨论应用程序公司和工具公司、大型公司和初创公司以及 B2B 和 B2C 公司之间的差异。此外,值得考虑的是该公司是上市公司还是私营公司,是销售驱动型还是产品导向型。这些概念不应被忽视,特别是如果您正在寻找第一份行业工作,因为它们将构建您的“职业生涯镜头”,我们将在后面的面试策略部分中讨论这一点。
领域。正如引言部分提到的,MLE 的工作可能属于不同的领域,例如推荐系统和 LLM,你需要花时间准备基础知识。您需要确定您最感兴趣的一两个领域,以最大限度地提高您的机会;然而,为所有不同的领域做好准备几乎是不可能的,因为它会分散你的精力和注意力,让你准备不足。
地点。除了上述所有要点之外,位置也是一个严重的问题。除非您居住在湾区或纽约市等高需求地区,否则寻找 MLE 工作将会更加困难。如果搬迁是不可能的,您可能需要计划更长的时间才能获得满意的工作机会;然而,如果您保留搬迁选项,那么申请高要求地区的机会可能是一个好主意。
面试期间——如何准备?
一旦您开始申请流程并开始接受面试,您需要搜索和准备以下几件事:
- 面试形式
- 推荐、网络
- LinkedIn 或作品集
- 采访资源和材料
- 策略:规划、跟踪、发展、提示、评估你的水平、戴上你的“职业镜头”、寻找面试搭档、危险信号
- 接受报价
面试形式
不同公司的面试形式有所不同。没有哪两家公司的 MLE 职位面试形式是相同的,因此您必须提前做好“功课”,研究面试形式。例如,即使对于 FAANG 公司来说,苹果也以其初创公司式的面试形式而闻名,而且每个团队的面试形式也各不相同。另一方面,Meta 在公司层面倾向于采用一致的面试形式,包括一到两轮 leet 代码轮和 ML 系统设计轮。通常,招聘人员会提供有关大公司面试形式的详细信息,因此您不会感到惊讶。然而,对于较小的公司来说,该流程的结构可能会较差,并且变化会更加频繁。有时,较小的公司会用其他编码问题替换 leet 代码,并且只涉及建模部分,而不是进行整个 ML 系统设计会议。你应该在Preply、Glassdoor、Interview Query等免费网站或其他付费网站上搜索信息,全面了解面试形式和流程,以便提前做好准备。最后,不受采访形式的限制由于这不是标准测试,因此技术面试期间可能会涉及行为因素,招聘经理面试期间可能会涉及技术问题。做好准备,但要灵活并准备好迎接惊喜。
推荐和网络
许多网络文章都会夸大推荐的好处,但获得推荐只是您通过招聘人员轮次并直接进入第二轮(通常是招聘经理轮次)的捷径。除了获得推荐之外,面对面的交流几乎同样重要,例如,利用黑客马拉松的机会与公司交谈、参加现场招聘会以及参加由您感兴趣的公司赞助的线下志愿者活动。请不要依靠推荐或人际网络来找到工作,但要利用它们作为机会,增加从招聘人员和招聘经理那里获得更多对话的可能性,从而最大限度地提高面试效率。
LinkedIn 或作品集。LinkedIn 和 Portfolio 只是广告工具,可帮助招聘人员了解简历中文字信息之外的您是谁。作为初级 MLE,将课程项目和 Kaggle 挑战包含在 GitHub 存储库中将有助于展示更多相关经验;然而,当你达到更高的水平时,玩具项目就没那么有意义了,但大型开源项目中的公关、有洞察力的文章和分析、SOTA 研究或工具箱的教程,将使你从其他候选人中脱颖而出。
采访资源和材料
一般来说,您需要涵盖五个领域的材料:i) 编码,ii) 行为,iii) ML/深度学习基础知识,iv) ML 系统设计,以及 v) 通用 MLE 面试建议书。
i) 编码。如果您不是 Leet Code 专家,那么我建议您从以下资源开始:
ii) 行为:
iii) 机器学习/深度学习基础知识:
iv) 机器学习系统设计:
v) 一般 MLE 面试建议书:
您还需要有一些面试伙伴 - 如今,您可以订阅在线面试准备服务(不要使用昂贵的面试准备服务,这些服务会花费您数千美元;总有更便宜的替代品)并与其他 MLE 候选人进行技能和信息交流。
策略:规划、跟踪、发展、提示、升级面试、戴上你的“职业镜头”、寻找面试搭档、危险信号
规划、跟踪和发展。理想情况下,如本文所述,您应该至少接到一些招聘人员的电话,并将您的面试按不同的兴趣级别进行分类。一方面,就业市场不断变化,很少有人能在第一次面试中计划出最佳策略。另一方面,你会在面试过程中学习和成长,所以你会变得与几个月前求职阶段开始时不同。因此,即使您是市场上最有才华的候选人,也必须将谈话时间分散在几个月内,并且从您最不感兴趣的对话开始熟悉市场,磨练面试技巧,把最重要的留到后期。跟踪您的进度、反馈和想法在你的面试过程中。设定具体的学习目标并随着面试的进行而发展。过去几年你可能从未有机会接触 GenAI 知识,但你可以利用面试过程从在线课程中学习并构建小型副项目。最好的事情是面试后找到工作,其次是即使没有得到工作机会也能学到有用的东西。如果你不断从每次面试中学习,最终,这将大大增加你获得下一份工作机会的机会。
提示。这是LLM的时代,你应该明智地利用它。在职位描述或职责中查找关键词。如果面试涉及“软件工程原理”,那么您可以提示您最喜欢的法学硕士为您提供机器学习的软件工程原理列表,以供准备。再次强调,及时的答案不应该是您唯一的知识来源,但它可以弥补您日常阅读来源中的一些盲点。
面试升一级。有时,层次之间的界限是模糊的。除非您是该领域的绝对初学者,否则您始终可以尝试高一级的机会,并在工作机会阶段为低一级的机会做好准备。如果您正在面试高级职位,准备或申请员工级别的机会不会有什么坏处。它并不总是有效,但有时它可以为你打开大门。
戴上你的“职业镜头”。不要只去参加面试而不考虑你的职业。除非你出于特定原因迫切需要这份工作,否则问问自己,这份工作在您的整体职业地图中处于什么位置?这个问题从两个角度来看很重要:首先,它可以帮助你选择你想去的公司,例如,一家初创公司可能在短期内提供更高的薪水,但如果它不优先考虑健全的软件工程原则,那么你就从长远来看,将失去发展成为有前途的职业的机会;其次,它有助于诊断面试的结果,例如,你的拒绝大多来自初创公司,但最终你收到了知名上市公司的offer,那么你会发现拒绝并不意味着你——你不是一名合格的 MLE,而是因为初创公司的面试需要不同的技能,而这些技能不属于你的职业道路。
合作起来。五年前,还没有找到面试伙伴这样的事情。但如今,互联网上到处都有面试服务,价格从极高的费用(我不推荐)到几百美元不等。请记住,这是一个不断变化的市场,因此没有人了解整个情况。获取信息的最佳方式是与非竞争性同行(例如,您在简历领域,而您的合作伙伴在推荐系统领域)合作,共同练习和改进。比单纯的合作更好,你应该寻求合作伙伴——寻找资历更高的人,同时你仍然可以为他们提供有用的东西。你可能会问,这怎么可能?为什么比我年长的人要和我一起修炼?请记住,没有人是完美的,您可以始终如一地为他人提供一些东西。有些高级软件工程师想成为 MLE,您可以用您的 ML 知识换取他们的软件工程最佳实践。有些产品经理需要 ML 相关的输入,你可以要求行为实践作为回报。即使对于没有入门级行业经验的人,您仍然可以要求进行编码练习作为回报,或者聆听他们的生活故事并获得灵感。作为 MLE,尤其是高级/职员级别的 MLE,您需要展示领导技能,而您可以展示的最佳领导技能就是聚集不同级别的专业人士来帮助实现您所追求的目标 - 您的目标梦想的报价。
红旗。有些危险信号是明确的,例如直接要求你加班或在面试中进行鬼影。然而,一些危险信号更加微妙或故意伪装。例如,你的招聘经理可能会礼貌地解释他们的情况,并希望你“一开始不要抱有太高的期望,几个月后就决定离开”——听起来很体贴。尽管如此,它仍然掩盖了营业额高的事实。避免危险信号的最佳策略包括阅读 Glassdoor 评论并在面试过程中了解公司文化。具体来说,“文化”并不意味着公司网站上定义的“文化主张”,而是您和团队之间的实际动态。面试官是否只问准备好的问题而不试图了解你解决问题的能力?当你提出问题时,面试官能否抓住这个问题并给出有助于你更好地了解公司价值的答案?最后,永远记住用你的直觉来决定你是否喜欢你未来的团队。毕竟,如果你决定接受这份工作,在接下来的几年里你每天都要面对这些人八个小时;如果你的直觉告诉你你不喜欢他们,那么它无论如何也不会高兴。
接受报价。一旦你克服了所有的挫折、失望和所有的辛苦工作,就该谈论这个offer了。许多网络线程讨论了谈判报价的必要性,但我建议保持谨慎,尤其是在这个雇主市场上。如果你想谈判,最好的做法是有两个可比的报价并为最坏的情况做好准备。此外,应该使用 Levels.fyi 和 Glassdoor 等网站来研究补偿范围。
面试后 – 接下来做什么?
恭喜!现在您已经接受了您的邀请并准备开始您的新旅程,但是您还能做些什么吗?
总结一下你的面试过程。面试的旅程是漫长而痛苦的,但你也从中收获了很多东西!现在你感到轻松愉快,这是反思的最佳机会,感谢在面试过程中帮助过你的人,并与那些仍在面试过程中遇到困难的人分享一些信息。此外,过去几个月你一定收集了很多笔记和待办事项清单,但一直没有时间坐下来整理它们,现在就是最好的机会!
规划你的职业道路。在过去的几个月里,你的自我理解可能发生了变化;现在,您已经更好地了解了自己在压力下的学习能力和解决问题的能力。您已经与如此多的初创公司和大型科技公司进行了交谈,并开始对未来五年的发展有了更好的了解。如果您处于中高层级别,那么您可能已经与员工级别的许多人进行过交谈,并且更好地了解了您在职业生涯的下一阶段将从事的工作。现在是进行所有这些计划的时候了!
继续学习。如果您有学术背景,您可能习惯于阅读论文并学习 SOTA ML 技术。然而,MLE 的作用不仅仅是学院的作用。它将研究、应用机器学习实践和软件工程相结合,以产生真正的业务影响。现在是考虑从多个来源不断学习以使自己保持最新状态的最佳策略的好时机。
为新角色做好准备。您已经与新公司的其他 MLE 进行了交谈,并了解他们正在使用哪些模型或技术堆栈。在偶尔的情况下,您已经非常了解该技术堆栈,但大多数时候,您需要为新角色学习许多新东西。制定一个计划来学习它们,并设定小里程碑来实现目标。此外,了解您的新公司,浏览其主页并了解其业务目标。这将有助于在您开始新工作并与新同事交谈时树立良好的基调。
参考
- Sophie Magnet,“2024 年最受欢迎的机器学习工程师技能”链接:https://365datascience.com/career-advice/career-guides/machine-learning-engineer-skills
- 显然,AI、ML 和 LLM 系统设计:500 个可供学习的案例研究,链接:https://www.evidentlyai.com/ml-system-design
- Sam Jones,《2024 年机器学习工程师就业市场》链接:https://www.peopleinai.com/blog/2024-job-market-for-machine-learning-engineers
- Jennifer Robertson,《为什么寻找高级机器学习工程师如此困难》链接:https://blog.qwasar.io/blog/why-its-so-difficult-to-find-senior-machine-learning-engineers
- Chip Huyen,“机器学习访谈简介”书籍,链接:https://huyenchip.com/ml-interviews-book/
- NeetCode 路线图,链接:https://neetcode.io/roadmap
- Gayle Laakmann McDowell,“破解编码面试:189 个编程问题和解决方案”,2015 年
- Alex Xu,“编程面试模式:钉牢你的下一次编程面试”,2024 年
- Alejandro Companioni,“关于 2024 年机器学习工程师的求职”链接:https://acompa.net/mle-job-hunt-2024.html
- 邵鹏,《机器学习访谈内部:来自 FAANG 的 151 个真实问题以及如何回答》,2023 年
- Chip Huyen,“设计机器学习系统:生产就绪应用程序的迭代过程”,2022 年
- Ali Aminian、Alex Xu,“机器学习系统设计访谈”,2023 年
- Christopher M. Bishop、Hugh Bishop,“深度学习:基础和概念”,2023 年
- Tanya Reilly,“主管工程师之路:个人贡献者应对增长和变革的指南”,2022 年
- Melia Stevanovic,“软件工程师行为面试:所有必须知道的问题以及经过验证的策略和答案,让您获得这份工作”,2023 年