我从过去八个月的AI公司面试中学到了什么?

作者 | Aman Dalmia
编译 | 无明
编辑 | Vincent
AI 前线导读:本文的作者在过去的八个月,面试了谷歌 DeepMind、Wadhwani 人工智能研究所、微软、Ola、Fractal Analytics 等公司,主要是数据科学家、软件工程师和研究工程师等职位。在这个过程中,他不仅有机会与很多大牛交流,还了解到招聘者在面试候选人时真正想要的是什么。相信对于很多人来说,如果以前有过这方面的知识,就可以避免很多错误,并为面试做更充分的准备。这就是为什么作者要写这篇文章,AI 前线将这篇文章编译了出来,希望能够帮助人们找到梦寐以求的工作。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)
1. 如何获得面试机会

这是最关键的一步。对于应聘者来说,如何让招聘人员在海量的简历中看完他们的资料,这是最困难的部分。总的来说,可以细分为三个关键步骤:

a)准备好简历,或者 LinkedIn、Github、个人网站等信息。

首先,简历应该要很简洁。可以按照 Udacity 提供的这个指南(https://career-resource-center.udacity.com/resume/resume-revamp)来整理简历。这个指南包含了很多我想说的东西,我也一直把它当作自己的简历参考指南。说到简历模板,Overleaf(http://overleaf.com)提供的一些模板相当不错,例如:

可以看到,简历内容被放在了一个页面当中。不过,如果简历内容太多,那么上面的模板可能放不下。可以在这里(https://latexresu.me)找到修改后的多页模板。

接下来最重要的是如何展示你的 Github 个人资料。很多人低估了 Github 的作用,仅仅因为它没有“谁看过你的资料”这一选项。

招聘人员会去看你放在 Github 上的东西,因为这是他们验证你在简历中提到的内容的唯一方法。人们总是在他们的个人资料中用很多时髦用语,给招聘人员造成很大的干扰。特别是对于数据科学而言,开源在大多数工具、各种算法的实现、学习资源等方面都扮演着重要角色,所有这些都是开源的。应聘者至少要做到:

  • 如果还没有 Github 账号,那么就创建一个。

  • 为每个已完成的项目创建一个仓库。

  • 添加文档,并提供有关如何运行代码的明确说明。

  • 为每个文件添加文档,说明每个函数的作用、每个参数的含义。

接下来的这一步是大多数人都缺乏的,就是创建一个用于展示个人经验和项目的个人网站。这一步可以表明一个人真正想进入这个领域。另外,简历通常无法展示所有的东西,往往会错过很多细节。

如果你愿意,可以在网站上展示更多细节,比如包含某种项目或想法的可视化演示。创建这样的网站真的很容易,因为有很多免费平台提供了拖放功能,非常轻松就可以完成这个任务。我个人使用的是 Weebly(http://weebly.com),这是一个已经得到广泛使用的工具。下面是我的个人网站:

最后,现在很多招聘人员和初创公司开始使用 LinkedIn 作为他们的招聘平台,很多好的工作职位都发布在上面。

除招聘人员外,那些在为有影响力工作岗位寻找候选人的猎头也非常活跃。所以,如果能够吸引他们的注意,就可能获得很好的机会。

除此之外,保持个人资料的简洁也是很重要的,这会让人们有意愿与你建立联系。搜索工具是 LinkedIn 的一个重要组成部分,为了充分利用搜索工具,你必须在个人资料中使用相关的关键字。此外,一定要让曾经与你一起工作过的人为你添加评论,谈论他们与你合作的经历。所有这些都会增加获得注意的机会。

这些东西看起来好像很多,但不一定在一天甚至一周或一个月内完成。这是一个过程,而且没有终点。在一开始准备所有的内容肯定需要花费一些时间,但一旦做好了,以后只需要不断更新就好了。你会发现这样其实很容易,而且你还可以随时随地推销自己,无需刻意做准备,因为你对自己已经非常了解了。

b)保持真实性。

看过很多人的简历,我发现很多人会犯这种错误。在我看来,最好先搞清楚自己真正感兴趣的是什么,自己想要做什么,然后寻找相关的工作机会,而不是反过来。 AI 人才供不应求的事实为人们提供了很多机会。准备简历的过程有助你对自己有一个全面的了解,并帮助你做出更好的决定。此外,不需要准备在面试时可能被问到的各种问题的答案。因为当你在谈论真正关心的事情时,这些答案自然会脱口而出。

c)人际网络:在完成了 a) 和 b) 后,人际网络才能真正帮你实现目标。

如果你不和人交谈,就会错过很多机会。每天都要与人们保持联系,如果不是面对面接触,至少要在 LinkedIn 上,假以时日,你就拥有了一个庞大的人际网络。建立人际网络并不是让人们为你做推荐。

我在一开始也经常犯这种错误,直到我偶然多 Mark Meloon 的一篇文章,他在文中谈论了与人们建立真正联系的重要性,首先我们要为人们提供帮助。另一个很重要的方面是将你知道的东西展示出来。例如,如果你擅长某事,就可以在 Facebook 和 LinkedIn 上分享给人们。这不仅可以帮助他人,还可以帮助你自己。

一旦你建立起足够好的人际网络,你的可见度就会成本增加。在你的人际网络中,某个人对你所分享内容的评论可能会帮助你接触更广泛的受众群体,包括可能正在寻找像你这样的专业人士。

2. 可以考虑加入的企业和初创公司

为了避免各种误会,我按照字母顺序列出这个清单。不过,我在有些公司名字前面加了星号,表示我个人比较推荐这些公司。有些公司超过一个星号,那是因为它们在人性化方面做得更好一些。

  • Adobe Research

  • ⭐ AllinCall(由 IIT Bombay 校友创办)

  • ⭐ 亚马逊

  • Arya.ai

  • ⭐ Element.ai

  • ⭐ Facebook AI 研究所

  • ⭐ Fracal Analytics(收购了 Cuddle.ai 和⭐⭐ Qure.ai)

  • ⭐⭐谷歌(Brain/DeepMind/X)

  • 高盛

  • Haptik.ai

  • ⭐⭐HyperVerge,由 IIT Madras 校友创办,他们致力于为世界各地的客户开发针对现实世界问题的 AI 解决方案。这些创始人曾经在 IIT Madras 发起着名的 Computer Vision Group。

  • IBM 研究所

  • ⭐英特尔人工智能实验室(强化学习)

  • ⭐⭐Jasmine.ai,由 IIT Madras 校友创办,创始人还在密歇根大学获得博士学位,他们正在研究智能对话。此外,他们获得充足的资金,希望有人尽快加入他们在 Bangalore 的办公室。

  • 摩根大通

  • ⭐微软研究院

  • MuSigma

  • Next Education

  • niki.ai

  • ⭐Niramai,施乐公司前雇员,致力于利用热成像技术在早期发现乳腺癌。

  • Ola

  • ⭐OpenAI

  • ⭐PathAI

  • Predible Health

  • 高通

  • ⭐SalesForce

  • 三星研究

  • ⭐SigTuple

  • ⭐Suki,AI 驱动的医生语音助手。最近,它也筹集了大量资金,并可能即将在印度设立办事处。

  • ⭐Swayatt Robotics,致力于为印度开发自动驾驶汽车。

  • ⭐⭐Wadhwani AI,由亿万富豪 Romesh Wadhwani 和 Sunil Wadhwani 提供资金,他们的目标是成为第一个为社会福利而努力的人工智能组织。

  • ⭐优步人工智能实验室和先进技术组:人工智能居住计划

  • ⭐Umbo CV,基于计算机视觉的安全技术

  • Uncanny Vision

  • Zendrive

3. 如何提高面试成功率

面试将从你进入房间的那一刻开始,在开始自我介绍之前可能会发生很多事情:你的身体语言和脸上的微笑非常重要,特别是当你面试一家初创公司时,因为文化适应(culture fit)是他们非常关注的方面。你要明白,面试官对你来说是陌生人,但你对他 / 她来说也是陌生人。所以,他们可能和你一样紧张。

面试不仅仅是你和面试官之间的对话,双方都在寻找一种相互适应:你在寻找一个可以工作的好地方,而面试官在寻找一个可以一起工作的好人选。所以,请确保你对自己感觉良好,并且要在对话一开始让对方感到舒适。最简单的方法就是微笑。

主要有两种面试方式,一种是面试官带着准备好的问题来问你,不管你的简历上写了什么,另一种是面试根据你的简历来的。我将从第二种开始讨论。

这种面试通常以“你能告诉我一些关于你自己的事情吗?”作为开头。在回答这个问题时有两大禁忌:谈论你的大学平均成绩或太过详细介绍你做过的项目。理想的回答方式应该是在大约一两分钟内介绍你到目前为止做了些什么。你可以谈论你的爱好,比如看书、体育运动、冥想等。面试官将以你说到的事情作为下一个问题的线索,然后开始面试技术部分。这一部分面试主要是想检查你在简历上所写的是不是真的。

会有很多类似于“如果采用了不同的解决方案将会怎样”的问题,比如使用“X”代替“Y”将会发生什么。在回答这类问题时,最重要的是要知道在实施过程中通常会做出哪种权衡,例如,如果面试官说使用更复杂的模型将会得到更好的结果,那么你可以说,因为可用数据较少,会导致过拟合。在一次面试中,我被要求为一个真实案例设计算法。我发现,当我按照以下的流程来陈述时,面试官就感到很满意:

问题 > 以前的一到两种方法 > 我的方法 > 结果 > 直觉

另一种面试只是为了测试你对基础知识的掌握情况。这些问题不会太难,但它们肯定会包含你应该掌握的基础知识,比如线性代数、概率论、统计学、优化、机器学习和深度学习。在回答这些问题时,你所花费的时间很关键。由于这些涵盖了基础知识,他们希望你能够立即说出答案,所以要做好准备。

在整个面试过程中,最重要的是对自己知道的东西要充满自信,对不知道的东西要诚实。如果你不知道回答某个问题,要先说明情况,而不是故作“嗯嗯啊啊”状。如果某些概念真的很重要,但你很难回答出来,面试官一般会很乐意给你一些提示或引导你找到正确的解决方案。如果你能够按照他们的提示给出正确的解决方案,就会给自己加分。尽量不要紧张,避免这种情况的最好办法仍然是微笑。

在面试结束时,面试官会问你是否有想问的问题。你会认为面试已经结束,觉得没有什么可问的。我知道很多人因为在这个问题上犯错而被拒绝。正如我之前提到的,面试不是单方面的,在你接受面试的同时,你也在寻找与公司本身相适应的方式。所以,如果你真的想加入一个公司,你肯定会有很多关于这家公司工作文化方面的问题,或者关于应聘岗位的问题。你要确保给面试官留下一个印象,让他们感觉到你真的有兴趣成为他们团队的一员。在面试结束时,我会问面试官一个问题,即他们希望我在哪些方面做出改进。这对我的帮助非常大,我把他们给我的每一个反馈都融入到了我的日常生活中。

就是这些。根据我的经验,如果你对自己诚实、能干、真正关心你正在面试的公司,并且有正确的心态,那么你正走在成功的路上,并且很快就会收到录用通知书。

4. 我们应该朝哪些方向努力

我们生活在一个充满机遇的时代,你只需要努力成为最好的,就会找到变现的方法。正如 Gary Vaynerchuk 所说的那样:

这是在 AI 领域工作的好时机,如果你真的对此充满激情,就可以用 AI 来做很多事情。我们总是在抱怨发生在周遭的问题,而像我们这样的普通人也能够做些什么真正去解决这些问题,而不是抱怨,这样的事情是前所未有的。Jeffrey Hammerbacher(Cloudera 创始人)曾经说过:

我们这一代人都在想着怎么让人们点击广告,这实在太糟糕了。

我们可以用 AI 来实现很多超乎想象的事情。有很多非常具有挑战性的问题,需要像你们这样聪明的人才能解决。你可以让人们的生活变得更好。

5. 你至少需要准备这些东西

任何一个与数据科学相关职位的面试都是由以下四个类别的问题组成:计算机科学、数学、统计学和机器学习。

计算机科学

算法和数据结构

  • InterviewBit(https://www.interviewbit.com)

  • NPTEL IIT Delhi 在 YouTube 上的讲座(https://www.youtube.com/playlist?list=PLBF3763AF2E1C572F)

操作系统

  • 软件开发者需要知道的 10 个操作系统概念(https://medium.com/the-aspiring-programmer-journal/the-10-operating-system-concepts-software-developers-need-to-remember-480d0734d710)

  • “操作系统概念”第 3,4,5 和 7 章。

  • GeeksForGeeks(https://www.geeksforgeeks.org/operating-systems)上的操作系统

面向对象程序设计:你可能被问到如何设计一个系统,例如铁路售票系统。所以,你需要搞清楚面试官的需求是什么,需要创建哪些类,每个类应该要有哪些变量和方法,如何使用继承等。

数学和统计

如果你对深度学习背后的数学不熟悉,那么应该看看我之前写的这篇文章(https://medium.com/@amandalmia18/guide-for-deep-learning-aspirants-with-focus-on-non-computer-science-students-87b1f7b3f4b9),里面有一些相关资源。

否则的话,我感觉看完“深度学习”(http://www.deeplearningbook.org)这本书的第 2,3 和 4 章就足以应对面试中的理论问题。我准备了几个章节的摘要,试着解释一些我最初难以理解的概念,如果你不愿意阅读章节的全部内容,可以参考这些概要。

如果你已经完成了概率论课程,应该也能回答一些数学问题。至于统计先关的问题,涵盖这些主题(http://qr.ae/TUTV9f)应该就足够了。

机器学习

机器学习相关的问题可能取决于你所申请的职位类型。如果是一个传统的基于机器学习的面试,他们会考察机器学习基础知识。为了应对面试,你可以完成以下任何一门课程:

  • 吴恩达的机器学习 -CS 229(http://cs229.stanford.edu)

  • 加州理工学院教授 Yaser Abu-Mostafa 的机器学习课程(https://work.caltech.edu/telecourse.html)

重要的主题有:监督学习(分类、回归、支持向量机、决策树、随机森林、逻辑回归、多层感知器、参数估计、贝叶斯决策规则)、无监督学习(K 均值聚类、高斯混合模型)和降维(PCA)。

如果你申请的是更高级的职位,很有可能会被问及深度学习相关的问题。在这种情况下,你应该对卷积神经网络(CNN)或递归神经网络(RNN)及其变体非常熟悉。而且你必须知道深度学习背后的基本理念是什么、CNN/RNN 如的运行原理、现在已经有哪些架构以及这些架构变更背后的动机是什么。

这里没有捷径可走,要么你已经了解它们,要么你花足够的时间去了解它们。对于 CNN,推荐的资源是斯坦福的 CS 231N 和 CS 224N。我发现 Hugo Larochelle 的神经网络课程(https://www.youtube.com/watch?v=SGZ6BttHMPw&list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH)也很有启发性。

英文原文:

https://blog.usejournal.com/what-i-learned-from-interviewing-at-multiple-ai-companies-and-start-ups-a9620415e4cc