【导读】今年年初以来,作者一直在印度找数据科学、机器学习以及深度学习领域的工作。在找工作的这三十四天里,他面试了8到10家公司,其中也包括初创公司、基于服务的公司以及基于产品的公司。作者希望他的面试经验能够为求职者提供一些有用的信息,因而撰写了此文。希望你读后能够有所收获!
首先自我介绍一下:
我在机器学习(语音分析、文本分析和图像分析领域应用)领域有4年以上的从业经验。总的来说,我认为这个领域的大多数工作职位主要包括文本分析(自然语言处理)和图像分析(计算机视觉)。很少有公司招聘语音或音频分析的人才。我现在的目标是应聘一个中高级职位,可以带领一个深度学习或机器学习团队做一些有趣的项目。
下面是我在应聘过程中被问到的问题,希望能够对你有所帮助。
▌公司一:基于全球性服务的某公司(面试时长:20-25min)
你在简历中提到曾经构建过一个文档挖掘系统,你都做了哪些工作?能否在主题建模(topic modeling)中使用LDA技术实现文档聚类?
假设你有数百兆字节的数据文件,这其中包括PDF文件、文本文件、图像、扫描的PDF文件等等,请你给出一个分类方案。
你如何阅读扫描版pdf文件或图像格式的书面文件的内容?
朴素贝叶斯为什么被称为“朴素”?
请详细介绍一下朴素贝叶斯分类器。
什么是深度学习?深度学习和机器学习的区别是什么?
体验☞:除此之外面试官还问了一些问题,但是都把我问懵了,我完全不知道他想听到什么答案。我一直都想深入的聊一些技术层面的问题,比如训练一个 tesseract(一款由HP实验室开发由Google维护的开源OCR引擎)或语言模型,但是他似乎并不感兴趣。或许他只是想听到一些已经实现的成果或者是一个好的解释,又或者是一些更好的方案。我感觉他们面试一个新手和面试一个有经验的专业人员之间并没有什么区别。
▌公司二:基于全球性服务的某公司(面试时长:40-45min)
在无监督学习中,如何进行文件聚类?
如何找到与某些查询语句/搜索相关的文件?
解释下TF-IDF技术。
根据我的经验来看,TF-IDF技术在文件分类或聚类上效果并不好,你将如何改进?
什么是长短期记忆神经网络(LSTM)?解释下其工作原理。
什么是word2vec模型?
解释下python中的可变对象和不可变对象。
你在python中使用过什么数据结构?
体验☞:整个面试过程都是围绕着文本相似度提问的,我都顺利通过了。但是这次仍旧没有更深层次的技术探讨。或许是公司在文本分析领域有几个小项目,最终我拿到了公司的offer。
▌公司三:基于全球性产品和服务的某公司(面试时长:40min)
如何使用不平衡数据集( unbalanced dataset)处理多类别的分类问题?
你如何从一个文本语句中进行语言识别?
如何表示中文或日文中的象形字符?
如何设计一个聊天机器人?(我没什么想法,但我尝试用基于TF-IDF相似性的意图和反馈来回答这个问题。 )
能否使用循环神经网络设计一个聊天机器人来对输入的问题进行意图和回答响应。
假设你在Reddit数据集上使用循环神经网络或长短时记忆神经网络设计了一个聊天机器人,它能够提供10种可能的回复,如何选择最佳回复,或者说如何删除其他的回复?
解释一下支持向量机(SVM)如何学习非线性边界。
体验☞:还有几个问题我已经记不清了,这是我第一次在面试中深入谈论技术细节,随后我也拿到了这家公司的offer。
▌公司四:成立一年的医疗初创公司(面试时长:50min)
什么是精确率(precision)和召回率(recall)?在医疗诊断中,你认为哪个更重要?
解释一下精确率和召回率。
如何绘制受试者工作特征曲线 (ROC曲线)?ROC曲线下面积是什么意思?
如何为多类别分类任务绘制ROC曲线?
列举多类别分类任务其他的度量标准。
什么是灵敏度(sensitivity)和特异度(specificity)?
随机森林中的“随机”指什么?
如何进行文本分类?
如何确定已经学会了一个文本?没有TF-IDF技术是不是不可能实现?(我回答说使用n-gram模型(n=1,2,3,4),并使用TF-IDF技术创建一个长的计数向量)
你还能利用机器学习做些什么?(我建议将长短期记忆神经网络和word2vec结合起来,或者是一维循环神经网络与word2vec结合起来,进行分类。但面试官希望改进基于机器学习的算法。)
当神经网络由线性节点构成时,神经网络如何学习非线性形状?它学习非线性边界的原因是什么?
体验☞:还有几个很好的问题我没有记住。尽管整个面试过程很不错,但是我们在一些问题上看法并不一致。并且在面试期间,我发现作为一个初创公司,目前只有2-3个人在做ML、DL和DS。最后我没有面试成功。
▌公司五:亚马逊公司(面试时长:50-55min)
训练决策树时,其参数是什么?
在决策树的某个节点处进行分割,其分割标准是什么?
基尼系数的计算公式是什么?
熵的计算公式是什么?
决策树如何决定在哪个特征处必须进行分割?
如何利用数学计算收集来的信息?
简述随机森林的优点。
简述boosting算法。
梯度提升算法(gradient boosting)是怎样工作的?
简述AdaBoost算法工作原理。
SVM中用到了哪些内核?SVM的优化技术有哪些?
SVM如何学习超平面?论述下其数学运算细节。
谈一谈无监督学习?都有哪些算法?
如何定义K-Means聚类算法中K的值?
列举至少3中定义K-Means聚类算法中K的方法。
除此之外你还知道哪些聚类算法?
介绍一下DB-SCAM算法。
简述下分层凝聚聚类(Hierarchical Agglomerativeclustering)的工作原理。
解释一下主成分分析算法(PCA),简述下使用PCA算法的数学步骤。
20.使用 PCA算法有哪些缺点?
谈谈卷积神经网络的工作原理?详细说明其实现细节。
解释一下卷积神经网络中的反向传播。
你如何部署机器学习模型?
我们大部分情况下都要用C++从零开始搭建一个机器学习模型,这一点你能做到吗?
体验☞:我面试的是亚马逊level 6的职位。他们的主要关注点是在算法和数学上。但是我并没有准备数学方面的知识,我只是谈论了我所了解的东西,并没有在数学的细节上做更为详细的探讨,因此面试官认为我并不适合level 6的工作。我相信如果你能记住机器学习算法在数学上的通用表示,就可以很轻松的通过亚马逊技术面试。
▌公司六:某全球服务巨头(面试时长:50-55min)
Sigmoid 函数的范围是什么?
说出scikit-learn能够实现逻辑回归的包的名称。
标准正态分布的均值和方差分别是多少?
你在Python中都使用什么数据结构?
文本分类的方法有哪些?你会怎么做分类?
解释TF-IDF技术及其缺点,如何克服TF-IDF的缺点?
什么是双词搭配(Bigrams)和三词搭配(Trigrams)?用一个文本语句解释一下双词搭配和三词搭配的TF-IDF技术。
举例说明word2vec有哪些应用。
如何设计一个神经网络?如何做到“深度”?这是一个基础的神经网络问题。
简述LSTM的工作原理。它是如何记住文本的?
什么是朴素贝叶斯分类器?
抛10次硬币,4次是正面的概率是多少?
如何获取Python列表中元素的索引?
如果合并两个pandas数据集?
从用户行为来看,你需要模拟一个欺诈活动,你会如何解决这个问题?这是可能是一个异常检测问题或分类问题!
决策树和随机森林,你更喜欢哪一个?
逻辑回归和随机森林有什么区别?
你会用决策树还是随机森林来解决分类问题?随机森林有什么优点?
体验☞:我也拿到了这家公司的offer。事实上,我很喜欢这次技术交流。或许你会觉着这些问题是机器学习和数据科学领域最基础的问题,但是我感觉面试官可能不是这一领域的,或者是对这个领域的发展了解的并不多。
▌公司七:全球性商业管理公司(面试时长:25-30min)
在不平衡数据集中,你会选择什么模型:随机森林还是Boosting?为什么?
你所了解的Boosting技术有哪些?
采用监督学习解决分类问题,你会选择哪个模型?假设有 40-50个分类!
你怎样使用合奏(Ensemble)技术?
简述支持向量机(SVM)的工作原理。
什么是Kernel?简单介绍一下。
如何实现非线性回归?
什么是Lasso回归和Ridge回归?
体验☞:说实话,这次面试有点水,以至于我没有认真对待。但是问题问的很不错。我面试的职位是要带领一个十五六人的团队做项目,在这之后是经理面试和HR面试。最终他们给我提供了岗位咨询以及不错的薪资。
▌公司八:成立4年的生产和服务型公司(60分钟)
你在简历上提到曾经做过演讲中的发音识别,具体来讲讲你的实现方法是什么?
什么是梅尔频率倒谱(MFCCs)?
什么是高斯混合模型,它是如何完成聚类的?
如何实现期望最大化?讲讲其实现步骤。
GMM模型中的概率如何计算?
在进行发音识别时,你是如何为GMM-UBM技术执行MAP调整的?
谈谈你所用的I-vector技术 。
在分析语境时,主要因素是什么?
JFA和I-vector的区别是什么?为什么选择I-vector而不是JFA?
你有没有用过PLDA I-vector技术吗?
有没有读过百度的Deep Speaker论文?
如果有两个模型可供你选择,你选择的依据是什么?(考察模型选择的技术)
简述下贝叶斯信息度量(BIC)和赤池信息量(AIC)的数学工作原理。
贝叶斯信息度量和赤池信息量的工作原理是什么?
如果MFCC特征向量矩阵中的数据发生丢失,应该怎么办?
如何进行语音辨识?有什么特点?
你的分类器是语音和音乐的分类器,还是语音和非语音的分类器?
深度神经网络是如何应用在语音分析中的?
体验☞:是的,你可能会惊讶这都是些什么问题。巧合的是,我们两个人的研究领域都是语音分析(尤其是发音识别)。所以整个面试过程一直在围绕语音分析进行提问。很显然,面试官很专业,并且给了我一个正面反馈。之后,这家公司给我提供了AI解决方案架构师的工作。
一些建议
在这整个求职过程中,我大概和25-30位专业人士有过交流,下面是我为读者以及求职者提出的建议:
简历很重要。一定要在简历中写清楚你参加过的项目、Kaggle竞赛、获得的MOOC课程证书或者论文。我就是在没有任何推荐人推荐的情况下接到了亚马逊的面试电话。你的简历是打动HR和面试官的利器。
自信心和热情是成功的一半。参加面试时一定要自信,并且向面试官展示出你的热情(这一点在面试创业公司和基于服务的公司时尤为重要)。
不要过于急着回答面试官提出的问题。花些时间组织好答案再回答,如果对问题有不理解的地方,一定要请教面试官。还有就是在面试时一定要冷静!
在解释概念时一定要恰当的表现自己。举几个你已经实现过的项目,并且一定要熟悉简历中提到的熟练技能和做过的项目。
大多数情况下,面试官都是在寻找这个领域内有经验的技术人才。如果你在这个领域还是一个新手,在创建简历时可以从自己做过的项目开始。你的GitHub账号也很有说服力。除此之外,还可以多参加Kaggle竞赛和MOOC课程。
面对面试官的时候,一定要谦虚,注意倾听面试官的意见,否则你就会被拒之门外。有的时候,使用R语言和Python语言的人会相互鄙视,你最好不要陷入这种争论当中,否则也容易被拒。我个人认为R语言和Python语言都是实现逻辑和概念的工具。
最后,祝大家面试成功!