【阿里算法岗一面面经】堪称面面俱到
离阿里的笔试已经过去了N久(看了一下,快有20多天),今天上午,亲爱的面试官终于找我约面试了!
阿里算法岗的一面整整面了一个半小时,实在是目前面过的最久的一场。不过可惜是电话面,没有视频面试的亲切感。尤其我们俩之间隔着一秒钟的延迟,经常不小心互相打断对方,体验挺不好的。
话说回来,阿里的面试也是我目前遇见过考察范围最广的,难度适中,没有问一些很偏门的问题,也没有问操作系统相关的问题,这方面对我这种非计算机背景的学生而言真的很奈斯!
大体题目记录如下,有一些至今我也没查明白的问题,如果有朋友恰巧知道,烦请回复解答一下,不胜感激!
自我介绍
介绍完只简短地聊了一下实习,并没有深入问任何问题
说一下矩阵的秩
PS: 面试官大概看我是数学加统计背景,问了不少数学问题。
我说矩阵的秩大概形容了矩阵的信息量(其实不准确),如果方阵非满秩,那么肯定有线性相关的行或者列,可以理解成没有提供额外的信息。如果矩阵满秩则矩阵可逆,是一个很好的性质。
再说一下矩阵的特征值和特征向量
矩阵代表着一种投影,如果矩阵作用于特征向量上,那么会把特征向量以特征值的倍数进行拉伸放缩。
讲一下主成分分析
大致说了一下做法,以及降维和去噪的思想(方差较小的方向可以理解成噪声)
一个总数很大的数据流,希望以等概率的方式进行样本数为一的抽样,怎么做?
我瞬间想到蓄水池抽样,于是讲了一下蓄水池抽样的方法,面试官要求我继续深入讲解证明一下(举了一个例子,然后试着用数学归纳法讲了一下)。
讲完之后面试官表示可以,不过要求我再想一个更简单的方法,但本菜鸡想了两分钟也没有想出来。
最后面试官和我说了他的方法:每拿到一个数就生成一个随机数,如果新随机数比现有的随机数更大,则替换数据。面试官紧接着要求我证明了一下,我解释说:可以理解成每条数据背后都隐含一个已经生成了的随机数,只是我们目前没有观察到。在经手前 k 个数据后,每个数据所代表的随机数是最大值的概率都是相等的,所以最后每条数据被保留的概率也是等可能的。(秒啊!)
考了一道编程题,LeetCode 的接雨水
我讲了一下双向动规然后再取最小值的解法。不过这道题并没有结束,面试官鼓励我尝试用一个单向遍历的方法。
我想了两分钟,又想出了使用单调栈的方法,面试官继续让我想一个每个数只访问一次的方法。
我当时有点儿被单向遍历给框住想象力了,怎么也想不出只访问一次的方法。接下来面试官提示我用双指针,恍然大悟,最后愉快地写了代码,面试官表示可以。
接下来问的都是机器学习算法相关的问题了。
树模型怎么分裂?
我讲了一下 ID3,C4.5 还有 Cart 的分裂指标。
怎么理解信息增益?
信息增益就是当前的熵减去分裂后的条件熵,熵表示数据混乱的程度,如果分裂十分有效,则左子树和右子树中的 label 都是很统一的,这样会使得信息增益最大。
讲一下交叉熵的公式和意义
被问过许多遍了,当然不在话下。
为什么分类问题的损失函数用交叉熵?
分类问题最终往往会套一个 Sigmoid 或者 Softmax,求导时会使得梯度很小,参数更新很慢。
随机森林怎么提高泛化能力的?
我说了一下样本和特征层面的抽样,面试官表示还有呢?我又说了基学习器之间是独立的,所以最后取平均可以起到减小模型方差的效果,面试官仍然不满意。我想了一下,说还可以通过调整基学习器的树的深度来减小基学习器的过拟合风险。其他的实在想不出来了…这里还应该怎么回答呀(1)?
讲一下GBDT,Gradient 代表什么?
每一次迭代,模型是沿着当前损失函数的负梯度方向学习一个新的学习器,在均方误差的意义下也就是当前模型和真实值的残差。
说一下牛顿法,为什么深度学习很少用牛顿法?
牛顿法使用到了二阶的梯度信息,会有收敛于鞍点的风险,同时需要计算 Heissen 矩阵的逆,时间复杂度比较高。(面试官表示继续,我实在不知道还有什么原因了)这里还应该怎么回答呀(2)?
牛顿法一般应用于什么场景,有什么好处?
损失函数是凸函数时可以使用牛顿法,好处在于收敛很快,迭代次数少。
神经网络怎么避免过拟合?
我说了 Early stopping,Dropout,BN,减小网络层数,增加参数的正则项。(面试官还让我继续,我又不知道还有什么方法了)这里还应该怎么回答呀(3)?
说一下生成式模型
不同于判别式模型,生成式模型是对特征和 label 的联合分布建模。
生成式模型和判别式模型有什么特点?
生成式模型对联合分布建模,所以在样本量较大时比较有效,而样本量较小时不足以精确地描述联合概率密度。而判别式模型只关注决策面,所以对于小样本也比较有效。
生成式和判别式模型哪个使用极大似然估计?
判别式模型
最后在愉快的反问中结束了马拉松式的面试。面试官人挺不错的,整场面试是一种交互式的,在我做答时面试官会有反馈,也愿意和我交流。整体而言我给五分好评,希望还有下一次!(不过阿里的面试为什么不用视频呢,这一点希望下次改进)
#面经##校招##阿里巴巴##算法工程师#