作者 | Shervin Minaee
来源 | TowardsDataScience
编译 | 安可
在过去的一年里,我采访了一些在Expedia Group担任数据科学职位的人,职位从入门级到高级的都有。我想分享我的经验,这些经验适用于对申请数据科学职位的人。在这篇文章里,我还会给出关于你可能在面试中会遇到的问题的一些提示。
面试候选人帮助我认识了一些有广泛背景和技能的人。从CS / ECE,统计/数学到土木/机械工程,这些领域的人我都接触过。所幸我有机会能在这里与这些出色的人交谈。
在我讲更多细节之前,我想提一下,近年来,业界把“数据科学家”也叫做“机器学习科学家”或“应用科学家”。虽然在一些公司中这些职位有着略有着不同的任务或者需要具备不同的技能,但对于大多数公司来说,这三个职位或多或少都指的是同一个东西。所以在这篇文章中,我提到的“数据科学”,跟上面的“机器学习”“应用科学”是一样的。
虽然每个人都有一套自己解决问题的技能,但是大多数公司都会要求数据科学候选人具备一些特定的基本技能。我将这些基本技能大概分为以下几类,然后再讨论这些技能具体是什么。根据公司和职位级别的不同,你可能会被问到以下提到的一个或多个相关问题:
1、关于你的简历和之前工作相关的问题
2、通用机器学习(和深度学习)知识
3、通用统计和数学知识
4、编程和软件工程技能
5、统计建模技巧
6、计算机视觉(CV),自然语言处理(NLP)和定价策略(Pricing Topics)
7、面试中沟通和表达能力
8、行为问题
9、系统设计技巧(取决于职位级别)
10、管理和领导技能(取决于职位级别)
你的简历在你面试时会被问到的那类问题中起着至关重要的作用。因此,请确保你对自己在简历中提到的任何内容有足够的了解,内容包括从课程和研究项目到编程语言。如果被问到诸如“介绍一下你自己”,或者“介绍一下你现公司的工作” 的一般性问题是很常见的,不仅如此,你还会被问到关于你简历的问题。
例如,如果你在简历中提到几个以前的与NLP相关的项目,那么你应该对NLP有一个很好的理解,并且你很可能会在NLP上被问到一些技术问题,来评估你的技术含量。因此,如果你在一个项目上跟别人做了一些合作的东西,但对这项工作的贡献很小,我建议你让自己更熟悉该项目的技术方面。
或者,如果你提到Python或Scala作为你最喜欢的编程语言,请确保你足够了解这些语言(至少在数据科学职位所需的范围内),以及每个语言中的一些机器学习相关库。我看过很多候选人在他们的简历中提到了Scala / Python,但当我问他们关于这些语言的一个简单问题时,他们根本不知道它,这会给我一个负面信号。如果你使用这些语言的经历非常有限,那么最好是诚实地告诉面试官,并且我相信大多数面试官都不会因为在你没有丰富经验的事情上对你进行评判。
虽然不同公司的数据科学工作可能涉及广泛的问题和技能(包括数据提取和预处理,运行SQL查询,简单数据分析,深度学习,NLP和CV),但机器学习是一个基础,现在大多数顶级公司都希望这些“数据科学候选人”懂得这一概念。因此,如果你正在申请数据科学职位,请确保你对以下机器学习概念有充分的了解。诸如“统计学习要素”[1]和“模式识别与机器学习”[2]等书籍对这些主题非常有用。
上面列出的问题涵盖了一些与数据科学职位相关的高级机器学习概念,但你可能会被问到有关上述某些主题的更详细问题,例如你可能会被问到:
今天的许多数据科学家曾经是统计学家和分析人员,许多机器学习的模型就是(重新包装为)统计学习模型(如线性回归,岭回归,LASSO,逻辑回归)。因此,许多面试官喜欢在统计学或数学方面提出一些问题也就不足为奇了。
对于统计学和概率学,如果你熟悉以下概念,那将是很好的:
对于数学问题,你可能会被问到以下问题:
任何数据科学家都需要会编程。在创业公司(员工人数较少)中,数据科学家可能需要自己做很多软件工程,例如数据提取和清理以及模型部署。相比之下,在大公司中,还有其他人负责数据工程和模型部署,数据科学家主要负责培训和测试特定产品的模型。作为数据科学家,你还需要了解数据工程角色所需的一些术语和任务,例如ETL(提取,转换,加载)。在这里,我将介绍数据科学家使用的一些最广泛使用的编程语言,库和软件。
Gayle Laakmann McDowell [3]的“Cracking the Coding Interview”等书籍让你在解决软件工程和算法问题上做好准备非常有帮助。这里还有几个很棒的网站,它们有一个很好的软件工程问题数据库,比如leetcode,hackerrank和geeksforgeeks。
4.1 编程语言
在编程语言方面,Python,Scala,SQL和R似乎是人们使用的最流行的语言,但我也看到人们使用其他语言,如Java,C ++和Matlab(尽管它不是一种编程语言))。
4.2 有用的Python库
在这里,我将提到一些与数据科学职位最相关的Python包:
4.3 云服务
根据你要处理的数据规模,你可能需要在云服务上运行代码,例如AWS,Azure或Google Cloud。因此,拥有在云环境中运行代码的经验可能是一个加分项。你绝对不需要了解所有不同的云服务,但熟悉AWS中的EC2等计算服务可能是一个优势。
有些公司也可能在AWS或Azure之上使用其他大数据服务,例如Databricks和Qubole,但我认为不需要事先体验它们,因为这些很容易学习。
4.4 部署工具
在为任务训练模型(例如推荐系统或适度模型)之后,理想情况下,你希望在实际生产中使用它。因此,某人(可能是你,或你正在使用的工程团队)需要将你的模型部署到生产环境中。为此,熟悉Docker和Python中的Flask可能会有所帮助。如果你想在AWS等云服务上部署模型,那么熟悉Sagemaker可能会有所帮助。我个人并不认为熟悉部署工具对于入门级数据科学职位是必要的。
作为数据科学家,你需要为各种产品/问题构建数学和ML模型,因此在面试过程中可能会遇到一些建模问题。这些问题通常与公司的域名有关。目标是看看你是否可以将你在概念上理解的内容应用于特定问题。你可能会遇到的一些示例问题可能是:
根据你的答案,你可能还会被问到一些跟进问题,包括你需要的数据类型,评估模型的方式以及如何随着时间的推移改进模型。如果你想查看更多问题,https://medium.com/acing-ai/acing-ai-interviews/等网站非常有用。
在面试过程中,重要的是你的思维过程以及你能想到为产品构建ML模型的各个方面的能力。你绝对不需要给出最好或最完美的答案; 只要你对问题的高层次理解是合理的,你就是很棒的。
根据你申请的团队的重点产品,你可能还会被问到有关CV,NLP或产品定价的一些问题。因此,在面试之前,请确保对你申请的团队进行一些研究,以便更好地了解他们的重点。面试官可能会问你关于NLP或视觉中非常高级的概念,一些其他面试官可能会提出更具挑战性的问题。
以下是你可能获得的一些与 NLP 相关的问题:
以下是你可能会被问到的一些计算机视觉相关问题:
数据科学职位通常涉及大量的沟通和演示。这可以用于与产品经理讨论新项目,或向你的团队展示你的模型。因此,能够与其他人(技术人员和非技术人员)交流关于你的工作和想法是非常重要的。
有时你可能需要以非常技术性的方式向同事或经理传达你的新发现,有时你可能需要说服产品经理你的模型对他们有用,不用描述太多的技术细节。
面试官通常不需要问你一个具体的问题来评估你的沟通和表达能力,他们可以在面试过程中了解面试者的这些能力。我的建议是:
有些人在面试时也可能会问行为问题。这些问题可能包括你过去的工作经历(为了了解你是否具备工作所需的技能),以及你的个人兴趣。这些问题也可以集中在你过去如何处理各种工作情况上。你对这些问题的回答可以展示你的技能,能力和个性。以下是你可能会被问到的一些示例问题:
根据你申请的职位级别,你可能还会被闻到一些系统设计面试(SDI)问题,这些问题主要是关于“设计大规模分布式系统”的问题。
由于缺乏足够的开发大规模系统的经验,以及没有标准答案的设计问题的开放性,这些问题可能具有挑战性。
我不打算在这里谈论SDI问题太多,因为它不是这篇文章的重点,但我会提供一些示例问题,以及一些有用的资源,如果你想在这方面得到更多的练习。
以下是一些示例系统设计问题:
以下是面试中,关于设计问题的一些有用资源:
如果你正在申请数据科学经理职位(有时甚至是高级或主要职位),面试官将需要评估你的管理和领导技能,并了解你之前的管理经验。
这个候选人的理想背景是在机器学习和预测建模等领域具有强大理论背景的人,以及良好的软件工程技能。要成为有效的领导者,候选人还需要具备良好的沟通技巧和良好的规划技能,以便能够以考虑构建数据驱动产品所带来的许多风险的方式进行优先排序和规划。
我不会谈到太深入到管理技能的方面,但我将在这里提供一些示例问题:
在这篇文章中,我尝试提供一些提示,以及你在DS面试期间可能遇到的一些高级问题。鉴于数据科学角色的范围不断扩大,当然有一些主题和问题在此未讨论。但我试图涵盖一些对数据科学面试中非常重要的一般性主题。
我的最终建议是对你申请的团队/公司进行更多研究,并更好地了解他们正在处理的问题。然后,你可以将主要重点放在为与该团队相关的主题做好准备。
参考链接
[1] https://web.stanford.edu/~hastie/ElemStatLearn/
[2] https://www.microsoft.com/en-us/research/uploads/prod/2006/01/Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf
[3] http://www.crackingthecodinginterview.com/
文章来源:https://towardsdatascience.com/giving-some-tips-for-data-science-interviews-after-interviewing-60-candidates-at-expedia-395fff7e073b