2021找人工智能相关工作的五个技巧

May 07, 2021 by Zhang in  Blog

机器学习越来越受到人们的关注,但想找到一份机器学习的工作,仍然非常困难,今天小编跟大家谈一谈找人工智能相关工作的五个技巧,助你一臂之力。

在大公司担任工程师,不仅要了解数据科学,还需要了解编程和系统设计等方面的知识。通常情况下,申请一个新职位需要做大量的研究和学习。

我在面试开始的前两个月就开始准备进行机器学习的面试了。那时我才真正明白了我想要做数据科学或机器学习职位需要些什么。幸运的是,许多招聘人员都允许并鼓励你花时间做准备。

但是,这带来一个重要的问题:到底该如何为这个职位做准备?在本文中,我将分享一些拿机器学习offer的策略,从了解市场、建立作品集、到技能提高和应用程序本身来谈。

#1 熟悉机器学习

机器学习工程师的一些工作描述 – 1 and 2

每一个机器学习工作都是不同的,并且都有不同的侧重点。例如,有的专注于机器学习,有的专注于机器学习管道,有的专注于大数据,而有的专注于深度学习。

但是,任何机器学习工程师(MLE)的核心工作都是机器学习。因此,在申请任何机器学习工程师的职位之前,也请确保你首先是了解机器学习的。着手实践各种机器学习项目,建立你自己的基本系统来了解它们是如何工作的。了解像Spark这样的大数据平台和像Pytorch这样的深度学习库。

达到以下几点,你就知道你已经做好了充分的准备:在你快完成机器学习的准备的时候,你应该能将一个业务问题转换为一个机器学习系统。理想情况下,你应该能够设计一个端到端的系统,其中包含数据的收集,探索性的数据分析,功能工程,模型评估,模型测试和部署。

#2 创建一个机器学习作品集

在Github和Kaggle上给人留下印象

仅仅是获得面试机会,都是申请机器学习工程师职位的巨大挑战。那么,如何让公司发现你?又如何让自己脱颖而出?

答案之一是,发挥你的技能去创建并完成项目。尝试许多新的趣味性项目,并使用像Kaggle这样的资源来找灵感。而参加论坛讨论是另一种受益满满的途径。在推销自己的同时,你又能向他人学习,与他人讨论。

尽可能的发挥创造力和积极主动性。在GitHub上建立个人资料页真的很有帮助,编写大量代码,并解决各种问题。自己一个人可能很难找到这些东西,但参加Kaggle比赛会是一个很好的开始。

做编程项目是建立作品集的另一种选择。在最开始时,我会做一些自己喜欢的或者那些我感兴趣的项目。有一段时间我会试着自己写一些游戏,但现在我经常会通过实现论文中的系统来理解它们的理论。理解理论是一回事,而写代码和实现系统则是另一回事。在你申请机器学习工作时,要确保这两点你都能做到。

#3 提高你的编程技能

很多公司在其面试过程中都会进行多次编程测试。到目前为止,这还是准备工作中最关键的部分,因为即使是做机器学习,最终也还是个工程师。虽然给人感觉这是寻找合适人选的次优过程,但它仍然是当前结构的一部分,所以如果你想作为MLE工作,你将需要理解工作领域相关的各种数据结构和算法。这里有一些建议和资源可以给你提供帮助。

如果想了解数据结构的基础知识, Gayle Laakmann McDowell的《Cracking the Coding Interview(破解编程面试)》一书包含了许多的准备技巧。这是一本简明扼要的书,其中包含了足够的信息来应对编程面试。每个数据结构都在2-3页间进行了解释,并附有练习题,可以加深理解。

我还建议你根据自己的喜好、经验等,创建一个需要准备的主题列表。举个例子,我的列表是这样的:

数据结构:数组(Array),Stacks/Queues,字典(Dictionary),树(Trees),Heaps,图(Graphs)。

算法:排序(Sorting),分治法(Divide-and-Conquer),动态编程/记忆化(Dynamic Programming/memoization),递归(Recursion),二进制搜索(Binary Search),广度优先搜索/深度优先搜索(Breadth-First Search/Depth First Search),树遍历(Tree traversals)。

理想情况下,准备到最后,你应该已经阅读了所有必要的主题,并在Leetcode这种地方练习了一些简单和中等难度的问题。

#4了解大型系统的工作原理

在公司工作,创建端到端系统的同时,要牢记如延迟,可维护性和可测量性等因素。因此,很多公司会把系统设计作为面试过程的一部分。他们想评估你对他们系统的理解程度,以及有没有可能改善他们的系统。为此,问题可能会涉及以下方面:

  • 你会如何设计Netflix?
  • 你会如何设计Youtube?
  • 你会如何设计Twitter/Facebook 推送?

这些问题看似复杂,但当你开始准备的时候,它们的答案是相当开放的。另外请记住,没有一个答案是错误的。网上有很多帮助准备工作的好资源,但我想特别提出其中两个:

  • Donne Martin的《系统设计入门(System Design Primer)》:这是任何准备系统设计的人都至少应该学习一次的资源。它在性能,延迟,可测量性,可用性,吞吐量,一致性,CDN,数据库,缓存,负载平衡等基本主题上都有出色的讲述。
  • Techdummies:虽然Youtube上有很多关于最受欢迎和最大型服务(Netflix, Youtube, WhatsApp, Facebook, Gmail, Amazon等)的系统设计视频,但这是我经常参考的一个频道:https://youtu.be/umWABit-wbk

最后,最重要的是理解某个特定系统在最基本的层次上是如何工作的,如何设置它来减轻各种故障,以及该系统是如何为大量用户工作的。通过这些构建模块,你能展示自己真正的系统设计能力。

#5 怎样开始申请机器学习工作

如果你对数据科学很有信心,了解数据结构,知道各种系统是如何工作的,而且已经建立了一个很棒的作品集。那你应该怎样开始求职呢?这是一个基本问题,但很难有实际的细节可以回答。因此,如果我向我朋友就找工作提出建议,我将给他们建议以下流程:

  • 研究并列出你的公司:首先要研究并列出提供你想要的职位的目标公司。
  • 试着让别人内推:如果你有朋友或同事在这些列出的公司工作,试着让他们帮忙内推。
  • 不要完全依靠你的推荐人:如果没有认识的推荐人(即使有),也试着和该公司的人力资源代表联系,或通过LinkedIn联系招聘人员。我建议每家公司至少联系3到4名招聘人员,这将增加你得到回复的机会。
  • 按喜爱度对公司进行排序:从你接到的面试电话中,尝试按兴趣最小到兴趣最大的顺序对公司进行排序。例如,如果你的目标公司是Google,那么尽量把Google面试留到后面。这样前面的面试也能成为你最重要面试的练习机会。很多公司都会有一段冷静期,所以你不要浪费这个机会。
  • 持之以恒:如果你成功找到了工作,那就太好了!但事实可能是你还没有,这种情况下,你可以从列表顶部从头开始。不要气馁!

# 结论

本文列出了我是如何为机器学习工作的面试做准备的,以及我为目前的工作做了哪些研究和准备。正如我一开始所说的,这不是一个简单的过程,所以,重要的是要付出时间和耐心。

不要放弃希望!专注于学习,每天提高一点点,这没有捷径,每个人都是如此的,所以你必须坚持下去。毕竟,只有通过一次一小步,一步接一步地走,你才能走的很远。所以,下定决心,坚持下去,好的结果一定会到来。

感谢你的阅读。

原文作者:Rahul Agarwal
翻译作者:Lea
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/5-tips-on-how-to-land-machine-learning-jobs-8eb5c1c3ee95

北美求职60秒:面试中的行为问题考察有什么作用?(8月第3周)

Aug 25, 2023

本期话题,带你了解“面试中的行为问题考察有什么作用?

解析网络开发员与软件开发员的岗位差异

Oct 31, 2022

近年来,基于网络的软件和内部部署软件之间的界限已经相当模糊。几乎每个应用程序似乎都需要网络连接。这是否消除了网络开发员和软件开发员之间的大部分差异?

如何准备数据科学的现场编程面试?

Mar 16, 2022

现在,大多数数据科学职位都要求候选人掌握一到两种编程语言,而现场编程是面试过程的一个重要组成部分。以下技巧可以帮助你为下一次面试做准备。

Leave a Comment

Your email address will not be published. Required fields are marked *

Comment *