您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 大数据 > 正文

6大角度击破数据科学面试套路!助你找到理想工作

发表于:2019-03-04 作者:李洁翻译 来源:数据分析

本文拆解数据科学工作的一般面试考察方式,为你分析面试工作时的准备及技巧。

简介

2012年,《哈佛商业评论》宣布数据科学将成为21世纪最性感的工作。从那以后,围绕数据科学的炒作一直呈增长趋势。最近的报告显示,对数据科学家的需求远远超过供应量。

然而,现实是,这些工作大多是为那些已经有经验的人准备的。另一方面, 由于供应/需求的动态变化,入门级的数据科学工作竞争非常激烈。数据科学家来自从社会科学到传统的计算机科学等各种背景。许多人还将数据科学视为一个重塑自我的机会,这导致大量希望获得数据科学家作为第一个角色标签的人涌入该领域。

更复杂的是,与具有更标准化面试流程的软件开发职位不同,数据科学面试可能会有很大的多样性。这部分是因为作为一个新兴行业,数据科学家的定义依然没有达成共识。Airbnb认识到了这一点,并决定将他们的数据科学家分为三个方向:算法,推理和分析。

因此,在开始寻找一份工作之前,确定什么方面的数据科学对你来说有吸引力很重要。根据你对此问题的回答,你学习的内容和将被问到的问题会有所不同。尽管类型不同,一般来说,他们会遵循一个类似的面试流程,只是提出的具体问题可能会有所不同。

在本文中,我们将探讨在面试过程的每个步骤中会发生什么,以及一些提示和准备方法。

6大角度击破数据科学面试套路!助你找到理想工作


一、编程能力考查

编程能力考查的范围可以从简单的Fizzbuzz问题到更复杂的问题,例如从混乱的数据中构建时间序列预测模型。根据问题的复杂程度,答题时间限定在30分钟到一周不等。这些考查可以在HackerRank,CoderByte等网站上进行。

通常情况下,考官会用一份已经写好的测试样例来判断你是否通过考试。判断标准通常会既考虑正确性也考虑复杂性(例如运行代码需要多长时间)。如果考官没有提供测试样例,那么你应该编写自己的测试样例。对于数据科学的编程能力考查来说,你甚至可能会遇到统计学的多项选择问题,因此请务必询问你的考官你将会被考查哪些方面的内容。

当你解答考题的时候,请务必牢记公司并不总是在寻找“正确”的解决方案。他们也可能在寻找代码可读性,良好的设计,甚至是特定的最佳解决方案。因此,不要主观判断考查结果,即使通过了所有测试用例,你也有可能没有进入下一阶段的面试流程。

二、HR的筛选

HR的筛选包括行为方面的问题,要求你解释简历总的某些部分,比如为什么你想申请这家公司,以及你可能在工作中遇到过的特殊情况的例子。偶尔你可能会被问到几个简单的技术问题,也许是一个SQL或一个基础的计算机科学理论问题。之后,你将有几分钟时间提出自己的问题。

请记住,与你交谈的人不太可能是技术人员,因此他们可能不太深入了解组织的岗位或技术方面。考虑到这一点,尝试将你的问题集中在公司、那里人员的履历以及面试流程等后勤问题上。如果你有他们无法回答的具体问题,你可以随时要求招聘人员将你的问题转给能够回答的人。

记住,面试是双向的,所以在花更多的时间去面试这家公司之前,你最好先识别一下是否有问题存在。

三、技术电话面试

在面试的这个阶段,你将有机会接受团队的一位技术人员的面试。诸如此类的电话面试通常使用Coderpad(https://coderpad.io/)等平台进行,平台包括代码编辑器以及运行代码的方法。有时可能会要求你在Google文档中编写代码。因此,你需要在没有语法突出显示或代码完备的情况下完成编程。语言方面,通常会要求你用Python和SQL,但是这可能会因你面试的岗位和公司而异。

这个阶段的问题可能很复杂,从使用Windows函数解决的简单SQL问题到涉及动态规划的问题。无论难度如何,你都应该在开始编程之前提出澄清性的问题。 一旦你对问题和期望有了充分的了解,就从做一个有效解决方案开始,这样你至少可以处理一些东西。但是,在考虑优化之前,务必告诉面试官你首先会以非最佳的方式解决问题。在你有成果之后,开始优化你的答案并使你的代码更具可读性。在整个过程中,描述你的方法是很有帮助的,因为面试官偶尔可能会帮助引导你正确的方向。

如果你在面试的结尾有几分钟的时间,请充分利用你正在与团队的技术人员交流的机会。向他们询问编程的标准和流程,团队如何处理工作以及他们的日常工作。

四、作业项目

作业项目在数据科学面试中越来越受欢迎,因为它们往往与你开始工作后将要做的事情有更紧密的联系。这一过程一般设置在技术面试之前、第一轮HR筛选之后,或者作为现场面试的可交付物。公司可能会测试你的处理模糊性的能力(例如,给定一个数据集,找到一些趋势或和业务利益相关的地方)或关注更具体的可交付成果(例如,给定一些数据,构建一个分类器)。

如果可能的话,尝试提出声明性的问题以确定你知道他们正在测试你的内容以及你的受众群体。如果你的作业项目的受众是商业利益相关者,那么填满幻灯片的技术术语并不是一个好主意。取而代之的,把重点放在表述可操作性的见解和建议,并给出技术术语的附录。

虽然所有作业项目可能在目标上有所不同,但共同点是你将收到公司的数据。 因此,无论他们要求你做什么,第一步始终是探索性的数据分析。幸运的是,有一些自动的EDA解决方案,如SpeedML(https://speedml.com/automate-exploratory-data-analysis/)。 你需要做的主要是研究数据的特殊性。通常情况下,公司已经合成地生成数据,留下特定的“复活节彩蛋”供你查找(例如,以客户收入为基础的电力分配法)。

完成作业之后,你可以试着从朋友或导师那里得到一些反馈意见。通常,如果你在一个作业工作了足够长的时间,你可能会专注于细节而忽略整体,所以从一个不知道具体细节的人那里得到反馈总是很好的。

五、现场面试

现场面试将包括一整天的一系列面试,包括一个午餐面试,通常用于评估你的“文化适应性”。

重要的是要记住,任何让你进入这个阶段的公司都希望看到你成功通过面试。 他们已经花了大量的金钱和时间来面试候选人并将其范围缩小到现场面试的规模,所以你要对你的能力有点信心!

务必向你的招聘人员索要一份将会面试你的人员名单,以便你有机会事先做一些研究准备。如果你将要和一个经理进行面试,你应该专注于准备更高层次的问题,例如公司战略和文化。另一方面,如果你将要与软件工程师进行面试,他们可能会要求你编写展示一个编程问题。如前所述,面试官的背景将影响他们会问的问题类型。

六、录用和协商

与许多人进行协商可能听起来很不舒服,特别是那些没有过工作经验的人。然而,现实情况是,协商几乎没有任何不利因素(只要你有礼貌)反而拥有很多好处。

通常,公司会通过电话通知你他们计划给你录用通知。此时,你很有可能立即允诺并接受录用。正确的做法是,你应该表达你对这个录用的兴奋,并要求他们给你一些时间与你重要的人或朋友讨论。你也可以预先告诉他们你还在其他几家公司进行面试,并且你很快就会回复他们。有时候录用会有截止日期,但是,这些录用通知通常是非常随意的,可以通过你的简单请求推迟。

你的协商能力最终取决于各种因素,但最大的因素是可选性。如果你手头有两个很棒的录用通知,那么协商要容易得多,因为你可以选择离开。

当你在协商时,有各种各样的杠杆你可以拉。三个主要因素是基本工资、股票期权和签约/安置奖金。每个公司都有不同的政策,这意味着一些杠杆可能比其他杠杆更容易拉动。一般来说,签约/安置费是最容易谈判的,其次是股票期权,然后是底薪。所以,如果你在一个比较弱势的位置,就要求更高的签约/安置奖金。然而,如果你处于强势地位,增加基本工资可能对你最有利。原因是,它不仅会在你加薪时起到更大的乘数作用,还会影响公司的福利,如401K匹配和员工股票购买计划。也就是说,每种情况都是不同的,所以要确保根据需要重新确定协商内容的优先级。

记住,面试是一种可以学习的技能,就像其他任何东西一样。希望本文能够让你对数据科学面试流程中的内容有所了解。

这个过程也并不是完美的,有时候你没有给面试官留下深刻的印象因为你没有一些晦涩的知识。但是,通过反复坚持和充分准备,你将能够很快获得一份数据科学的工作!

译者简介:李洁,香港科技大学电信学硕士毕业生,现任北京师范大学香港浸会大学联合学院 数据科学系助教。喜欢数据科学,喜欢阅读,喜欢研究代码和做手工。