大厂AI面试官一语中的:一场面试暴露了你的机器学习水平

从事机器学习就业方向有很多,比如有些公司侧重数据挖掘,而有些则更倾向于深度学习。同理,相对应的岗位有些偏重理论也有些偏重实践。这些因素叠加造成了机器学习相关的岗位分布十分之广,数据分析师、算法工程师等主流岗位都位列其中。

如何看出一个人机器学习水平,借用大厂AI面试官的一句话:一场面试足以暴露了求职者的机器学习水平。为什么这么说,因为一场面试能把你的理论功底、代码能力和项目能力展现无遗。

大厂AI面试官一语中的:一场面试暴露了你的机器学习水平

一、理论功底:

主要考察对机器学习模型的理解,选择性提问。这块儿的问题可能会比较细碎,都是我自己深入思考和从大家的面试经历中总结的,在此全部手敲,如果凌乱请多多包涵。

过拟合欠拟合(举几个例子让判断下,顺便问问交叉验证的目的、超参数搜索方法、EarlyStopping)、L1正则和L2正则的做法、正则化背后的思想(顺便问问BatchNorm、Covariance Shift)、L1正则产生稀疏解原理、逻辑回归为何线性模型(顺便问问LR如何解决低维不可分、从图模型角度看LR和朴素贝叶斯和无监督)、几种参数估计方法MLE/MAP/贝叶斯的联系和区别、简单说下SVM的支持向量(顺便问问KKT条件、为何对偶、核的通俗理解)、 GBDT随机森林能否并行(顺便问问bagging boosting)、生成模型判别模型举个例子、聚类方法的掌握(顺便问问Kmeans的EM推导思路、谱聚类和Graph-cut的理解)、梯度下降类方法和牛顿类方法的区别(顺便问问Adam、L-BFGS的思路)、半监督的思想(顺便问问一些特定半监督算法是如何利用无标签数据的、从MAP角度看半监督)、常见的分类模型的评价指标(顺便问问交叉熵、ROC如何绘制、AUC的物理含义、类别不均衡样本)等。

CNN中卷积操作和卷积核作用、maxpooling作用、卷积层与全连接层的联系、梯度爆炸和消失的概念(顺便问问神经网络权值初始化的方法、为何能减缓梯度爆炸消失、CNN中有哪些解决办法、LSTM如何解决的、如何梯度裁剪、dropout如何用在RNN系列网络中、dropout防止过拟合)、为何卷积可以用在图像/语音/语句上(顺便问问channel在不同类型数据源中的含义)等。

如果面试者主要做NLP、推荐系统,大多会继续追问 CRF跟逻辑回归、最大熵模型的关系、CRF的优化方法、CRF和MRF的联系、HMM和CRF的关系(顺便问问 朴素贝叶斯和HMM的联系、LSTM+CRF 用于序列标注的原理、CRF的点函数和边函数、CRF的经验分布)、WordEmbedding的几种常用方法和原理(顺便问问language model、perplexity评价指标、word2vec跟Glove的异同)、topic model说一说、为何CNN能用在文本分类、syntactic和semantic问题举例、常见Sentence embedding方法、注意力机制(顺便问问注意力机制的几种不同情形、为何引入、seq2seq原理)、序列标注的评价指标、语义消歧的做法、常见的跟word有关的特征、factorization machine、常见矩阵分解模型、如何把分类模型用于商品推荐(包括数据集划分、模型验证等)、序列学习、wide&deep model(顺便问问为何wide和deep)

二、代码能力

主要考察实现算法和优化代码的能力,一般会先看面试者的github repo(如果简历给出来),看其代码风格、架构能力。

如果没有github,面试官一般会避免问典型的应试题,而是问一些从实际问题中抽象出的小算法题,比如:给出节点的矩阵和边的矩阵,求路径和最大的路径(来源于Viterbi 算法,本质就是个动态规划),至少给个思路和伪代码(顺便聊聊前向传播和反向传播)。给出一数组,数组元素是pair对儿,表示一个有向无环图的<父亲节点, 孩子节点>,用最优的方法,将其变成一个新的有序数组,数组元素是该有向无环图所有节点,数组的有序性体现在:父亲节点在孩子节点前面(来源于 贝叶斯网络实现时的小trick)。

三、项目能力

主要考察解决实际问题的思路、填坑能力,这部分最考验面试官功底,要能从面试者浮夸的描述中寻找有意义的点,并一步步深挖。另外很多dirty work(数据预处理、文本清洗、调参经验、算法复杂度优化、Bad case分析、修改损失函数等)也是在这步深挖。

如果觉得文章实用欢迎大家转发、收藏,获取更多编程干货也可以关注我的头条号~

相关推荐