编者按:本文作者Abhijeet Kumar是一名有着五年机器学习和数据科学工作经验的从业者。从今年年初开始,他开始在印度的数据科学、机器学习或深度学习领域找工作。在为期30—40天的求职过程中,他面试了8—10家公司,其中不仅包括刚成立一年的创业公司,也有亚马逊这种电商巨头。Kumar把每家公司的面试题记录下来,为各位求职者提供经验。
先介绍一下我自己,我有过4年以上机器学习的工作经验,主要工作内容有话语分析、文本分析和图像分析。我认为该领域最稀缺的人才是NLP专业,然后是图像分析(CV),主要进行话语或音频分析的较少。有了五年的工作经验后,我的目标是中高层职位,可以带领一个数据或机器学习团队做一些有趣的研究。以下是我在面试过程中遇到的各种技术性问题,供大家参考。
请问你在搭建文档挖掘系统的过程中,做了哪些工作?
假设给你数TB的数据文件,其中包含PDF、文本文件、图像、扫描的PDF文件等等。你将如何对其分类?
你如何阅读扫描的PDF或书面文件?
为什么朴素贝叶斯被称为“朴素”?
详细谈谈朴素贝叶斯分类器?
什么是深度学习?机器学习和深度学习的区别在哪里?
除此之外还有一些类似的问题,但是我对它们有些一头雾水,完全不知道面试官想听到什么样的答案。我一直想探讨更深层次的技术层面的东西,但是他们一直没有聊到这方面。而且当我扯起模型训练、tesseract或者语言模型时,他们似乎完全不吃这一套。也许他们想听到的是现成的成果,或是很简单的解释。这跟我五年前第一次面试的感觉非常相似。
你如何能在无监督的方式下收集文件?
你如何找到与某些查询问题相关的文件?
解释一下TF-IDF。
根据我的经验,TF-IDF在文档分类或收集方面失败了,你今后会怎么改善?
什么是LSTM神经网络?解释一下它是如何工作的。
什么是word2vec向量?
Python中可变和不可变对象是什么意思?
你在Python中使用什么数据结构?
虽然有几个问题是围绕文本相似度的,但我都顺利回答出来了。不过这次和上次一样,仍然没有深层次技术上的探讨,或许是考虑到公司有几个关于文本分析的小项目,他们最终还是向我发出了offer。
在不平衡的数据集中,你如何处理多类别的分类问题?
你是如何从文本句子中进行语言识别的?
你如何表示中文或日文中的象形文字?
该如何设计一个聊天机器人?(在这一点上我没有太多想法)
输入一对问题和回答,我能用RNN设计一个聊天机器人吗?
假设我用Reddit上的数据集和RNN或LSTM创建了一个聊天机器人,它给了我10个备选回复,我如何才能选择最佳的那个?或者说,我如何删除其他的回复?
解释一下SVM是如何学习非线性边界的?
除此之外还有几个问题我记不清了,不过这是目前为止第一个问技术性问题的公司,我感到非常欣慰。最后这家公司也向我发了offer。
精确率(precision)和召回率(recall)是什么?在医学诊断中,你认为哪个更重要?
对精确率和召回率分别进行定义。
你如何绘制ROC曲线?ROC曲线下面积表示什么?
在多类别分类任务中你如何绘制ROC曲线?
除此之外,还有哪些评估多类别分类任务结果的方法?
灵敏度(sensitivity)和特异度(specificity)是什么?
随机森林中的“随机”指什么?
你如何进行文本分类?
在没有TF-IDF的情况下,你如何确定自己学会了文本?
你还能用机器学习做些什么?
当神经网络由线性节点构成时,它如何学习非线性形状?它如何学会非线性边界?
除此之外还有几个不错的问题。尽管面试过程感觉不错,但是在某些问题上我们未能达成一致。而且在面试过程中,我发现公司只有2—3人专注于ML/DL/DS。
训练决策树时的参数是什么?
在决策树的节点处分割的标准是什么?
基尼系数的公式是什么?
熵的公式是什么?
决策树如何决定在哪个特征处分割?
你如何用数学计算收集来的信息?你确定吗?
随机森林的优点有哪些?
介绍一下boosting算法。
gradient boosting如何工作?
关于AdaBoost算法,你了解多少?它如何工作?
SVM中用到了哪些核?SVM中的优化技术有哪些?
SVM如何学习超平面?用数学方法详细解释一下。
介绍一下无监督学习,算法有哪些?
在K-Means聚类算法中,如何定义K?
告诉我至少3中定义K的方法。
除此之外你还知道哪些聚类算法?
谈谈DB-SCAM算法。
阶层聚合式分类法(Hierarchical Agglomerative clustering)是如何工作的?
解释一下PCA,使用PCA时有哪些数学步骤。
使用PCA有哪些缺点?
CNN如何工作?详细说一下使用细节。
解释一下CNN中的反向传播。
你如何部署机器学习模型?
大多时候,我们可能需要用C++从零开始搭建机器学习模型,你能做吗?
我面试的是亚马逊level 6的职位。我只能说,他们主要的关注点在算法和背后的数学上。不幸的是,我的面试都是即兴的,并没有准备数学方面的知识,我只说了我所记得的所有东西。不过面试官并不认为我适合level 6的工作。我相信只要你能记住通用的机器学习算法的数学细节,就能轻易地通过亚马逊技术轮面试。
S函数的范围是什么?
scikit-learn的哪个安装包能实现逻辑回归?
标准正态分布的平均数和变量是什么?
你在Python中用什么数据结构?
文本分类的方法有什么,你都怎样做?
解释一下TF-IDF,它的缺点有什么?你怎么克服?
bigrams和trigrams是什么?用带有文本句子的例子解释一下bigram和trigram的TF-IDF。
word2vec有哪些应用,举个例子?
你会怎样设计一个神经网络?怎样把它变深?
LSTM是如何工作的?它是怎么记住文本的?
什么是朴素贝叶斯分类器?
抛10次硬币,4次是正面的概率有多大?
如何获取Python中列表元素的索引?
如果用pandas合并两个数据集?
从用户角度出发,你需要模拟欺诈活动,你会如何解决这个问题?
你更喜欢决策树还是随机森林?
使用逻辑回归和随机森林有什么区别?
在分类问题上,你会用决策树还是随机森林?用随机森林有什么优点?
最终这家公司向我发放了数据科学岗位的offer。事实上,我非常享受这次的技术性交流。你可能会觉得这些问题也是最基础的机器学习和数据科学问题。不过在面试过程中我感到面试官可能不是这一领域的,或者对现在的发展了解的不多。
在不平衡的数据集中,你会选择什么模型:随机森林还是boosting?为什么?
你了解的boosting技术有哪些?
用监督学习的方法进行分类问题,你会选择哪个模型?(大约40—50个类别)
你如何使用集成技术?
SVM如何工作的?
什么是Kernel?简单介绍一下。
如何执行非线性回归?
Lasso回归和Ridge回归是什么?
说实话,这次面试有点水,以至于我没有认真对待。不过问题还是不错的。我面试的是领导一个15—16人的团队,在这之后是经理面试和HR面试。最终他们给我提供了咨询岗位以及不错的薪水。
简历上说,你曾做过用语音识别演讲者,具体方法是什么?
什么是MFCCs?
高斯混合模型是什么,它是如何完成聚类的?
如何实现期望最大化?其中的步骤是什么?
GMM中的概率如何计算?
在对演讲者进行识别时,你是如何为GMM-UBM技术执行MAP调整的?
谈谈你所用的I-向量技术。
语境中的分析因素是什么?
JFA和I-向量的区别是什么?为什么选择I-向量而不选JFA?
你用过PLDA I-向量技术吗?
你读过百度的有关Deep Speaker的论文吗?
如果有两个模型都可用,你会如何选择?
贝叶斯信息度量(BIC)和赤池信息量(AIC)工作的数学原理是什么?
BIC和AIC背后的原理是什么?
在你的MFCC特征向量矩阵中,如果有数据丢失怎么办?
如何分辨语言?有什么特点?
你的分类器更像是话语和音乐的分类器,还是话语和非话语的分类器?
在语言分析应用中,如何部署深度神经网络?
是的,你可能会问这都是什么问题。非常巧的是,我们两个人的研究领域都是语音分析,特别是演讲者识别。所以整个面试过程一直在围绕语音分析。很显然,面试官很专业,并且给了我非常积极的反馈。之后,这家公司给我提供了AI解决方案架构师的工作。
在整个求职过程中,我大概与25—30位专业人士有过交谈,以下是我在这之后能给出的建议:
简历很重要。要在其中写明参加过的项目、Kaggle竞赛、MOOC证书或者论文。我就是在没有任何推荐人推荐的情况下接到了亚马逊的电话。你的简历是打动HR和面试官的重要武器。
自信心和驱动力是成功的一半。参加面试时一定要自信,并且展示出你的热情(尤其是在创业公司和服务型公司)。
面试时不要急着回答问题。花些时间想想如何组织答案,如果有不明白的地方一定要问。面试时一定要冷静。
在解释概念时别忘了表现自己。你可以提几个做过的案例,并且要熟悉你简历里写的技能和项目。
如果你是这一领域的新人,在创建简历时可以从自己做过的项目开始,或者GitHub账号也是很有说服力的。除此之外,可以多参加Kaggle竞赛和MOOC课程。
学会谦虚,注意倾听面试官的意见。有的时候,R和Python的
使用者会互相鄙视,最好不要这样,不然很可能挂掉。
最后,祝大家面试成功!(小编:答案?拟答案什么的是不可能的,这辈子都不可能的)