Skip to content

Latest commit

 

History

History
205 lines (103 loc) · 18.4 KB

secrets-data-science-interview.md

File metadata and controls

205 lines (103 loc) · 18.4 KB

成功数据科学面试的秘诀

原文:www.kdnuggets.com/2019/07/secrets-data-science-interview.html

c 评论

作者 Himanshu Jain,数据科学家 / 机器学习工程师 & Suresh Venkatasubramanian,首席数据科学家

Header image


我们的前三大课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业。

2. Google 数据分析专业证书 - 提升你的数据分析水平

3. Google IT 支持专业证书 - 支持你的组织的 IT


那么,你已经被邀请参加数据科学面试……但你是否对如何破解数据科学面试感到困惑?你是否担心在数据科学面试中被拒绝?你是否对数据科学面试的准备感到困惑?如果你有上述问题,那么你来对地方了。我们希望分享我们在被面试者和面试官的经历中学到的东西。

你正在阅读本文档,这反映了你在成为成功数据科学家的认真态度。在数据科学领域——一个已经很广泛且快速扩展的领域——接受面试对你作为候选人来说,是一种挑战,对面试官而言也是如此。面试试图在几轮每轮持续一个小时的时间里评估你的数据科学能力,而你的学习则是终身的。这使得面试官(我们曾经也是!)处于一个不值得羡慕的位置,即如何评估像你这样非常热情和知识渊博的人? 好的面试官将你视为潜在的未来同事:他们需要你的帮助。我们相信,如果你是面试官,而我们是被面试者,你可能会希望我们按照以下提到的内容进行配合。

如何开始?

一切都从你简历上写的内容开始。预计会有基于你简历中与数据科学相关的任何内容的问题。理解这些问题可能涉及你过去的经历(> 三年),但不要因此感到困扰。我们相信你能够在简历上的任何内容上给出一个很好的答复。请重温你的过去。重新熟悉你的过去。*考虑到你过去用方法 X 解决了某个问题,如果现在要解决它,你是否有更好的方法 Y?*同时问问自己:*我是否在简历上写了一些内容只是为了让面试官留下深刻印象,但不希望他们基于这些内容提出问题?*如果你是面试官,你会觉得这样公平吗?注意:这也适用于简历中存在的技术博客和 GitHub 链接。

问题解决:开放性与封闭性

你的数据科学深度将根据你解决问题的能力来评估。这些问题可能是:

  1. 给定一个需求,如何解决它。例如,你的业务正在失去客户,找出原因和解决方案。

  2. 给定一个解决方案,是否可以改进?例如,现有解决方案的‘转化率’为 90%,你将如何将其提高到 91%。

你是否能够重用你过去的方法,并使其在一个新的但不同的背景下发挥作用?你是否也能在最近学到的知识背景下重新思考你旧的方法?

这些是开放性问题,可能在面试范围内没有完整的解决方案。记住,这些问题不是为了从你那里免费获得价值十亿美元的创业点子或可专利的创意;恰恰相反,这些问题纯粹是为了评估你的问题解决能力。实际上,其中一些问题可能与面试官在工作中试图解决的数据科学问题有一定的共鸣。

现在我们已经完成了开放性问题,这里有一些封闭性问题的示例:推导 CNN 的反向传播,解释梯度提升等。前者帮助面试官评估你对未计划情况的反应,而后者则建立了一个根植于标准理解的基线筛选。尽力在这两方面都表现出色。练习是关键。

机器学习

数据科学使用机器学习作为关键技术之一。是的,它也可能使用神经科学、行为经济学、博弈论、统计力学、复杂性理论、非欧几里得几何以及你擅长的诸多领域。然而,你在行业背景下需要解决的问题要求对机器学习技术有扎实的知识作为主要技能;面试官会很高兴你在其他主题上也很专业,但请确保你在机器学习方面也要成为专家。

这就是他们如何评估你的机器学习技能。

  1. 标准机器学习课程和书籍中涵盖的主题:CS229(斯坦福)、CS4780(康奈尔)、6–034(MIT)、PRML(Chris Bishop)、大规模数据集挖掘。<在此处添加你喜欢的课程和书籍。> 注意:PRML 仅作参考,我们不是说你必须通读整本书。尽可能通过这些标准书籍的阅读来加强课程内容。

  2. 简历中提到的机器学习方法但并非课程或书籍的一部分。

  3. 机器学习的数学基础:线性代数、概率与统计、多变量微积分、优化基础(通常这些在标准 ML 课程中会涵盖)

深度学习

你是一个深度学习高手。尽管你有很强的自信,为什么我们仍然认为你需要对‘传统’机器学习有扎实的理解呢?深度学习模型的‘黑箱’特性(你可能完全不同意)使得面试官很难知道你做了什么与模型做了什么。然而,传统机器学习似乎是所有候选人的一个良好的共同点。一个构建了双向 LSTM 但不知道 SVM 如何工作的人的形象如何?请继续展示你的深度学习技能,但在用你的机器学习能力证明一两点之后再进行展示。

你应该知道为什么你选择了某一模型/算法/方法/架构而不是其他的。超参数在深度学习中扮演了关键角色。对模型调优有一个扎实的理解至关重要。一个好模型和一个不那么好的模型之间的差异可能就在于你对超参数的选择。

我们推荐在面试前阅读以下材料:

  1. deeplearning.ai 在 Coursera 提供的深度学习专业化(5 门课程)

  2. Geoff Hinton 的神经网络课程来自 Coursera,可以更深入地理解概念。

  3. 一个全面的深度学习课程,涵盖编码器 www.cse.iitm.ac.in/~miteshk/CS7015.html

  4. 从长远来看,你可以阅读由 Yoshua Bengio 和 Ian Goodfellow 编著的深度学习书籍。

注意:我们没有说你必须阅读所有这些内容。通过阅读高质量的内容获得的对主题的熟悉感,会让你在各种情况下更有信心。

工具经验

公司优先考虑那些不仅能提出良好数据科学解决方案,还能有效使用正确工具实施解决方案的候选人。如果你能使自己熟悉行业中可用的工具,将会非常有利。你应该至少了解 Python 或 R 语言,了解用于机器学习算法的 scikit-learn 库,了解用于深度学习的 Keras / TensorFlow / PyTorch / Caffe。不要忽视查询语言,例如 HQL、SQL,以及分布式框架如 Hadoop 和 Spark。好的组织都有这些技能的培训项目。被选中的候选人通常会参加这些培训课程。对上述工具的熟悉程度能为你的候选资格提供必要的优势。尽一切可能在被选中后接受培训。这将使你接触到组织解决的问题,并有机会与组织中的其他科学家互动。这些都是新加入者必须获得的重要经验。

模型的生产化和部署

面试官希望你了解机器学习模型的使用方式、如何进行生产化和部署,以及模型的整体端到端架构。招聘一个不了解自己模型如何被客户/服务/用户/产品使用的人员是非常困难的。如果没有部署,你所做的只是一个概念验证(POC)。即便是最好的情况下,它也只是能在你的笔记本电脑上进行演示。为了使你的机器学习模型发挥作用,它需要成为软件管道的一部分。了解如何与工程师协作进行模型部署。做好卷起袖子、主动行动的准备。通过这样做,你会提升自己在团队中的价值和地位。

模型的生命周期管理

作为一名优秀的数据科学家,你应该了解机器学习模型的完整生命周期。你应该知道当你试图建模的世界发生变化时你的模型应该如何变化。(这种情况比你想象的更频繁,因为现实世界不受你的控制。)你将决定你的模型需要多频繁地重新训练以保持新鲜感。你也可能希望自动化重新训练过程,以节省宝贵的时间。将节省下来的时间用于模型性能的改进。为自己创造机会,解释你如何管理模型的生命周期。

调试机器学习模型

调试是软件行业中非常重要的技能。如果软件无法调试,它的风险就会很高。你应该深入了解你的模型。你需要了解你所使用算法的内部细节。你应该知道如何进行根本原因分析和调试你的模型。面试官希望你知道当模型存在高偏差或高方差时如何改进结果,如何避免梯度爆炸和梯度消失,以及如何在训练过程中优化内存等。

为什么逆序链表仍然是个好主意?

虽然数据结构和算法被外包到各种包中,但你从数据中做出推断的能力仍然受到你对算法和数据结构理解的帮助。虽然面试官不会要求你实现跳表或平衡 k-d 树,但他们仍然希望你理解算法的时间复杂度,熟悉基本的数据结构,如链表、栈、树、哈希表和堆,并对排序、最短路径、字符串处理等算法感到熟悉。换句话说,就是数据结构和算法的基本问题。你可能认为通过这种方式来评判你是不合适的,但记住,你正在让竞争变得更简单。我们相信你完全能够胜任。

了解公司

你被邀请面试的事实表明你的之前经验被人力资源部门和招聘经理(HM)视为潜在的合适人选。不要止步于此!你有责任研究并了解你被邀请面试的团队在做什么,以及你如何能带来价值——这是一个很好的区分点。

当被问到“你还有什么问题吗?”时,你应该问些什么?

注意,这不是让你与面试官亲密的邀请。保持正式和礼貌,就像你在面试过程中一直保持的那样。

这是展示你如何作为数据科学团队一部分的机会。这也是一个引导面试官了解你在面试中未涉及的优势的机会。例如,你可能擅长代码评审。你可以询问代码评审是如何进行的。你可以强调你喜欢的方法,比如走查。你可能想知道使用的开发平台。你可以询问团队是否有开源贡献者(如果你是其中之一,这是重新强调的时机)。你可以问一下交付周期。如果团队分布在不同的时区,了解互动如何进行。如果适用,分享你在这种团队中的工作经验。

询问是否可以大致了解面试官参与的项目。这些问题比想知道远程工作政策或数据科学家的典型工作日如何要好得多。仔细措辞这些问题,因为你不是面试官!当然,最好只问两个问题,因为随后的对话不会给你更多的机会。所以请谨慎选择,并根据面试的具体情况来决定。最重要的是,做一个耐心的倾听者,这是令人难忘的对话的关键。

注意:不要试图通过夸张的表现来催眠面试官。始终保持庄重。记住,没有任何工作比你的尊严更重要。

一些有用的提示

  1. 请获取澄清。如果你认为问题不明确,可以向面试官提出澄清问题。实际上,这是数据科学家一个重要的技能,即理解需求。你提出这些问题的时间越早越好,因为这可以节省时间,从而帮助面试官更好地评估你。

  2. 不要把讨论移开到非机器学习的主题。假设你对某个话题没有深入了解,但面试官在那个方向提问。相信我们,转移话题不是一个好主意,原因有三个。

  • 这是 unethical 的,完毕。

  • 如果成功了,你可能会被分配到一些你在面试中没有准备深入研究的工作。

  • 在大多数情况下,这不起作用。面试官和你一样聪明,他们知道你在尝试回避或转移话题。你最终会留下不好的印象。

承认自己对某个话题不太熟悉是很 honorable 的。如果可能,你仍然可以尝试基于基本原理进行回答,并提出澄清问题。如果不行,也不用担心,面试官会从你的简历中转到另一个话题。

处理拒绝

如果这次没有成功,请放心,面试官并不是为了好玩而进行面试。公司在评估你时投入了大量时间和金钱,如果你未能成功,这只是意味着你需要更多的准备。并没有被拒绝,只有你的申请被拒绝了。此外,考虑到你之外,还有许多其他聪明且有能力的候选人也在面试你申请的职位。选择只有少数候选人是这个过程的自然特性。如果不是你,这对你来说并不是世界末日。(坦白说,不要让任何人对你拥有这种权力。)记下面试中问到的问题,不要带有任何评判。但不要立即分析;等一两天让自己恢复冷静。然后在没有怨恨的情况下反思你如何在下一次成为更好的候选人。找出改进的机会并制定行动计划,开始付诸实践,因为停留在过去或处于无所作为的状态没有意义。公司非常期待你在下一个周期再次申请(与 HR 确认时间)——我们中的许多人在被录用之前申请了不止一次。你的 HR 联系人也会努力提供反馈,但请……请……请……不要开始反驳链。在这种情况下像数据科学家一样行为:如果数据(面试结果)与你的假设(你的准备)不一致,调整假设,即下次做得更好。

好吧,这可能听起来有点哲学。然而,我们认为这对提升你的候选人素质和作为一个更好的人来说是实际而重要的。发展两种自我意识:内部和外部。前者是关于你对自己的意识;后者是关于你对他人对你的看法的意识。如何将这两者结合起来,以创造一个有益的面试体验应该是清楚的。我们建议你阅读塔莎·尤里奇的《Insight》。

什么是公平的面试?

你可能会想,这似乎是一个冗长且充满虚伪友善的列表,在以一种做作的方式对我提出许多要求(这不是本意,也不是真正的虚伪友善;不过对于冗长的部分抱歉)。你可能会想,在公平的面试过程中,你究竟会得到什么。以下是我们为候选人提供的内容。你也可以期望其他知名组织提供类似的体验。

公平评估。

  • 不会有类似于:我想了一个 10 位随机数,猜对它。 不,我们不期望你给出我们心目中的答案;只要是正确的答案,你的答案和我们的答案一样好。

  • 我们不会将我们的个性投射到你身上。例如,我觉得简单,因此你也应该觉得简单。

  • 期望你在问题结束的瞬间给出答案。在你回答之前,我们完全可以倾听你的沉默或思考。

  • 没有技巧性问题或误导性问题。

  • 我们两天前了解到的东西,我们不期望你能终身记住。因此,尽管我们最近读了一些很棒的 Medium 文章,让我们觉得自己像天才一样,但我们不会基于这些文章提问(哽咽!)。

  • 几个不好的回答会被整体表现良好所弥补。

与你的经验和知识有关的问题。

  • 如果你的简历足够丰富以至于被邀请面试,那么它足够丰富以便我们将问题限制在简历的内容范围内。简历中没有的东西是你不擅长的良好证据。这不包括基本的机器学习概念。

礼貌对待。

  • 面试官会自我介绍。

  • 面试官会告诉你面试的结构。

  • 面试官会询问你是否需要饮料。

  • 面试官会关注你。

  • 面试官绝不会做任何不道德的事情。例如,对你现在或过去的组织或教育机构发表粗鲁或讽刺的评论;鼓励你违反保密协议。

  • 面试官绝不会让你感到不适。例如,他们不会威逼你或嘲笑你的回答。

  • 面试官会陪你吃午餐,或者把你交给其他人带你去午餐。

祝你准备顺利,愿力量与你同在!!!

我们非常希望听到您的反馈。别忘了与我们分享这些技巧如何帮助您破解数据科学面试的经历。

联系我们:

免责声明:上述观点仅为个人观点,不应被解读为我们组织的正式立场。然而,我们确实希望任何专业组织都能有一个公平的筛选过程,以反映上述提到的要点。

Himanshu Jain 是沃尔玛实验室的数据科学家 / 机器学习工程师。

Suresh Venkatasubramanian 是沃尔玛实验室的首席数据科学家。

原文。经许可转载。

相关:

  • 破解数据科学家面试

  • 职业转型到数据科学的逐步指南 – 第一部分

  • 机器学习工程职位是什么样的

更多相关话题