编者按:此前,论智发表了一篇面试了10家公司,这是我能记住的所有问题的文章,在各平台受到了广泛关注。在评论区,许多读者都表达了自己的惊讶之情,认为这些国外(印度)的面试题太基础了,其中的一部分甚至可以用过于简单来形容,但也有不少人认可面试官的专业程度,指出他们的问题虽然浅显,但的确能反映应聘者的知识水平和实践经验。本文是前文的续作,主要分两个部分,其中第一部分是Uber、Google、Facebook等大型公司的面试题,第二部分则是开发者在面试前的十个准备步骤,希望能给大家带来帮助。
本文作者Vimarsh Karbhari是独角兽公司Okta的Engineering Manager,今年2月,为了写点文章发表在Medium上,他特意花一个月准备面试,并在3月面遍了硅谷的大公司。
Uber的AI面试流程是标准的技术面,它分为电话面试和现场面试(oniste)两场,其中电话面试每轮持续约1小时(1—2轮),可能是面试官视频问答,也可能是视频通话+在线编码练习。第二场现场面试由五六轮面谈构成,应聘者可能要连续面对五六个不同职位的面试官,因此准备好一份灵活的自我介绍十分必要。
机器学习平台Michelangelo
1.Uber论文Scaling Machine Learning as a Service:Uber开发了一个供内部团队的使用的机器学习平台——Michelangelo,这篇论文解释了这个平台的系统架构、搭建原理和功能设计,应聘者在面试前应该对它有一定的了解。
2.Uber的技术博客:AI Labs、ATG Research、Machine Learning。Uber有很多技术博客,而这些是其中和AI联系最紧密的三个,它们详细展示了公司研究的体系结构、技术发展和工作流程。
3.Uber Horovod:Uber开源的TensorFlow分布式深度学习框架。
1.基于真实产品的问题:这些问题包含Uber运营过程中的一些真实问题场景,应聘者需要对他们的产品和市场有一定了解。
2.技术层面的AI问题偏向基础:面试题中有不少基础问题,但这些问题都是解决某些相关数据问题所需的必要技术。
3.模型训练和评估:这些问题都旨在从不同视角建立不同模型来探索人工智能研究。
和Uber一样,Google的AI面试流程也是标准的技术面,它分为电话面试和现场面试(oniste)两场,其中电话面试由招聘部门的员工负责,应聘者需要先在视频中回答一个开放式问题,然后写代码、优化代码,整体耗时约30—60分钟。现场面试则会安排四位Google员工,由他们分别考验应聘者的认知水平、领导力水平、专业能力水平和Googleyness。
1.Google论文TensorFlow: A system for large-scale machine learning:谷歌基于DistBelief进行研发的第二代人工智能学习系统。
2.Google Tools:一些重要的AI研究工具,如Cloud TPU、TensorFlow、Cloud Machine Learning和Kaggle。
3.The Unofficial Google Data Science Blog:一个由谷歌员工运营的、非官方的技术博客,学术性较弱,更偏向工程领域。
Google面试的一个突出特色就是问题很多、提问密集。从实践角度看,他们的面试中混合了不少ML基础知识和理论观点,因此运气比较好、学术又搞得好的人进入这家世家上最负盛名AI公司的可能性会更高一些。
非常常规的技术面,两轮电面,之后是oniste,整体流程和上述两家公司差不多。
1.Facebook的视觉应用AI框架:开放神经网络交换格式(ONNX)。
2.下载他们项目/软件包的库:research.fb.com/downloads/。
3.Facebook的研究博客。
在Facebook的面试中,我发现面试官们非常喜欢基于概率情景提出各种问题。其中大多数问题需要应聘者对Facebook产品有较深的理解,同时公司对个人编码能力的要求也很高。想想也是,Facebook拥有世界上最顶尖的计算机视觉研究人员和人工智能团队,其中也不乏Google学者,如果一个人既有优秀的编码能力,又具备扎实的数据科学功底,相信他被这个全球最大社交媒体平台录用的概率会很高。
亚马逊的面试流程和之前提到的公司大体类似,但不同的是,当onsite进行了几轮后,应聘者会面对一次bar raiser面试。bar raiser是面试小组中最有经验的人,他要决断的是你是否真正满足这个岗位的需求,以及你是否比亚马逊50%的员工更有能力和潜力。无论其他面试官有多喜欢你,bar raiser拥有一票否决权。
Sagemaker Courtesy
1.AWS Sagemaker:构建、训练和部署ML模型。
2.Deep Learning AMI:在AWS上使用AMI的教程。
3.亚马逊AWS博客:AWS Machine Learning Blog,上面有许多数据学习相关问题的解决方案。
亚马逊的面试问题包含很多编码/计算元素,它们中有不少实际问题,但也有不少基础知识问题。这些问题确实需要人们通过数据模型和数据集才能找到解决方案。亚马逊正在招聘很多数据科学人员,它也在数据领域展示了卓越的表现。如果想在这家野心不止于电商的公司工作,大量的数据练习和辛勤学习会有巨大帮助。
如果说2000年开启了软件工程时代,那2020年将属于人工智能和数据科学。之前我写了大量顶级公司的面经,受到了大家的欢迎。结合读者给我的反馈,我也觉得是时候该和大家分享一下自己的面试准备过程了。
综合以上几家公司的问题可知,掌握AI / ML和数据科学领域的基础知识是面试成功的一大关键。这是一个新兴领域,这也意味着它是一个与众不同的学科——它是计算机科学、数学、统计学及其他相关领域专业知识的交叉,是高度跨学科的。因此,如果你的理想是成为一名数据科学家、ML算法工程师,你就要保证自己能精通三个领域的知识。
以下是我的复习安排:
1.从基本Python开始(计划:2天)
从事AI/ML工作的人也许不用Python,但如果要进入这个领域,你必须学会使用Python。无论是工业界还是学术界,所有的数据操作、模型构建都要用到python。使用python的环境应该是Jupyter Notebook。Jupyter Notebook的新替代品是Google Colaboratory。为了更好地分配和管理项目,我建议使用Anaconda。
2.描述性统计和推论统计(计划:1天)
描述性统计就是描述样本的统计特征,并不深入了解其内部规律,比如求平均数、分布、中位数等。 推论统计就是研究如何根据样本数据去推断总体数量特征的方法,它是将数据分解成样本进行AI模型训练、验证和测试的基础。
3.使用Pandas和其他库(计划:1天)
Pandas是一个Python数据分析库,它包含所有可以使用的数据以及处理它的所有方法。根据第2步中讨论的统计知识,你可以学会数据分成样本。NumPy是一个Python软件包,可用作Python数据科学生态系统的基础。Scipy是另一个Python库,它将用于不同的数据操作。
4.了解数据表达和可视化(计划:2天)
如果要进入这个领域,你就不可避免地要把自己的想法展示给业务/产品团队看。也许在你眼里,数据本身就能表示下一步该做什么,哪些数据起作用了,哪些没有——但不是每个人都看得懂图表并理解它们所揭示的内容的。正确的数据需要用正确的方式来呈现,它要让人看得懂,更要让人易于理解。这就是数据可视化,一项非常重要但常常被忽视的技能。
对于这项技能,没有人能教你怎么做,你只能自己学。
5.概率 - 回归模型(计划:2天)
概率是事件发生的可能性。人们在线购买产品、点击链接或使用功能,如果AI要解决这些所有问题,它就要基于某种基本概率。简而言之,概率构成了构建数据消耗型算法所需的逻辑基础。
这个领域的很大一部分工作内容是准备不同的模型来适应数据或从中推断。线性回归、Logistic回归、梯度下降是几乎是建模过程中无法避免的,它们非常重要,一个合理的回归模型将帮你准确预测数据的走向或接下来会发生的情况。
6.机器学习基础(计划:4天)
机器学习可被用于预测用户的行为、自动驾驶汽车等诸多领域。它结合了廉价的计算能力与便宜的数据存储,已经成为整个AI行业的风潮。
7.Advanced ML(计划:3天)
Advanced ML包含了各种处理复杂数据问题的算法和技术。比如时间序列数据可能很复杂,传统ML算法解决不了这个问题,但LSTM (长期短期记忆网络)在这里就很适合。
8.现实世界/非结构化数据处理(计划:3天)
谷歌先进的语音识别能力是众所周知的。他们使用循环神经网络(RNN)来实现这一目标。由于数据是非结构化的,网络没有足够的信息进行处理,因此我们就需要提取有关字符或数据序列的信息并将其提供给网络。这种RNN适用于语音识别,这也是一个广泛的研究领域。
机器学习研究的数据集列表:en.wikipedia.org/wiki/Listofdatasetsformachinelearningresearch
一旦掌握了这些技巧,你就可以使用上面的链接来使用数据,并熟悉数据的大小和工作类型。
9.深度学习 - 神经网络(计划:3天)
深度学习在许多方面与ML重叠。它包括GAN、半监督学习等概念。CNN(卷积神经网络)在图像识别和分类领域具有广泛的影响。如果你要去相关公司,那CNN绝对是你需要重点复习和练习的知识点。
以上就是我的AI/ML/DS面试准备工作。如果你想参考使用,请根据你自己所在的区域和目标岗位做一些调整。比起专业研究人员和数据工程师,想转行的普通计算机工程师可能要花更多的时间,具体视个人知识水平、时间限制和公司特定的要求而定。一般来说,应聘者准备时间应该保证在20-22天以上。
编译:Bot
原文地址:medium.com/@vimarshk