秋招经历 | 一个名校跨专业的算法研究生的几十场面试
参考目录:
跟谁学
阿里
网易互娱
作业帮
阿里
快手 机器学习工程师
拼多多
网易互联网
网易游戏
商汤
整个经历是这样,我一直对自己图像处理CV不太自信,而且大家都说CV内卷严重,所以就一开始退成目标找ML的工作,但是机器学习工程师屡次碰壁。后来无意中面了CV后发现问的问题也挺简单的。所以在某一个时间节点之后都开始面试CV岗位,然后成功率大幅提升。其实不要光听当上传言,CV岗位没有那么内卷的感觉。
这里分享的面试经历只是我在秋招中的一小部分,秋招前前后后面试了几十次吧(拿到offer的不能公开、有的我也忘记及时记录后来就忘记了),其实大家问的问题都差不多,都是重复相同的东西。个人感觉,我在【机器学习炼丹术】中整理的一些知识点,至少已经覆盖了我自己面试时候回答的70%的内容了。
我也不是什么大佬,跨专业学了一年AI没论文没实习就参加了几个竞赛就赶鸭子上架了,有工作能混口饭吃就行了。(海外读研就一年)面试最后有大厂的offer,也有小厂的offer。但是不管去哪一个,都希望大家可以好好考虑,不负年华。
我是炼丹兄,一个Top学校的跨专业的应届研究生,不是什么集卡大佬,就是一个在灰飞烟灭的战场中苟且的普通人。
跟谁学
项目
LightGBM和XGBoost的区别
GBDT模型和XGB的区别
LGB做了哪些优化
为什么选择他们的公司
阿里
项目
XGBoost的并行优化的两种方法;
LightGBM的优势
比赛中和top3的方案的区别,如果让我重新做这个项目,我会做出哪些优化。
处理时间序列的模型有哪些
对优化方法是否了解。牛顿法和梯度下降法。
如何处理过拟合问题
如何处理梯度爆炸问题
模型的参数过大会导致什么问题,怎么解决
如何处理样本不均衡的问题
在研究生期间的项目
算法题1:一个数组找到其中的和最大的子数组
算法题2:一个数字中找到其中所有不重复的元素
开放题:假设有1000个人同时定了外卖,有100个骑手,你要如何处理这个问题。
网易互娱
自我介绍
项目介绍
linux了解吗?回答不了解,面试官说那我不问了
问你个计算机基础知识,知道C语言的大端和小端吗?不知道
知道IO设备读写速度哪个快吗?不知道(到这里三连不知道让我非常难受)
数学题:每一次随机抽取0,1,2,3随机一个数字,然后抽取k次出现两个相同的数字。这个k的期望是多少?我在面试官的引导下,算出来的结果两次都是错的。凉的更厉害了
KNN和K-means的区别?一个有监督一个无监督,一个迭代一个查找
BN层和LN层的区别?一个图像一个序列处理,LN可以batch_size=1但是BN不可以。
什么情况下BN和LN的使用情况相同?这个我还真不知道,就想当然的回答:在图像事先经过means/std处理之后,在batch_size为1或者较小的情况下,两者的效果相近。(我也不知道对不对)
作业帮
算法题1:
算法题2:还有一道题是,找到一组数据中的最长递增子数组。比如:【1,2,4,2,5,3】,最长递增子数组是【1,2,4,5】
CART决策树中可以对同一个特征进行两次分类吗?
CART决策树如何处理类别变量和连续变量
遇到正负样本不均衡要如何处理?
后来跟面试官讨论作业帮现在在做的事情,其实还是非常有意思的。先是OCR提取,然后要用NLP理解题意。实际情况中要处理千分类问题。实际场景还是非常有挑战性的!
阿里
项目讨论。依然是LGB那个项目。
先问LGB的histogram直方图优化,为什么降低精度了,有的时候华能提高预测效果?我回答的是因为相当于增加了一个正则化,造成模型效果的提升。
在回归任务中,为什么对y做一个变换,比方说增加了一个log,可以提高决策树的预测效果?这个问题一开始没有想明白,就说在神经网络中经常会用这样的方法,因为防止网络参数出现个别过大的情况,从而造成过拟合。后来经过老师的提示,发现决策树其实有一样的效果,通过变换来增强决策树对异常值的容忍程度。
实际场景问题,有多件商品,预测商品的销售量。但是商品之间会存在依赖关系,比方说一个商品的销量高了,他的互斥品的销量就会下降。
快手 机器学习工程师
自我介绍+项目
样本不均衡的处理方法 之前文章讲过了
随机森林中随机的意义?随机对数据进行样本降采样和特征降采样。
卷积层的缺点?反向传播更新参数对数据的需求量非常大;卷积的没有平移不变性,稍微改变同一物体的朝向或者位置,会对结果有巨大的改变,虽然数据增强会有一定缓解;池化层让大量图像特丢失,只关注整体特征,而忽略到局部。比方说,在识别人脸的时候,只要人的五官同时出现,那么就会认为这是人脸,因此按照泽中卷积池化的判别方式,下面两种情况可能会被判断成同一图片.
总之,CNN最大的两个问题在于平移不变性和池化层。5. 为什么在图像中用最大池化层而不是平均池化层?
这个我不太确定,当时的回答是:平均池化层会让特征图变得更加模糊;最大池化层反向传播中,计算量会小于平均池化层;最大池化层会增加一定的平移不变性和旋转不变性给卷积网络。
根据相关理论,特征提取的误差主要来自两个方面:
邻域大小受限造成的估计值方差增大;
卷积层参数误差造成估计均值的偏移。
一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。
随机森林中bagging的比例为什么是61.8%
卷积网络感受野怎么扩大
什么模型需要数据标准化?数据标准化的目的是什么?
如果模型欠拟合怎么办?
模型中dropout在训练和测试的区别?
算法题:数组的回文遍历
拼多多
项目(机器学习分类预测和DeepFake人脸检测)
EfficientNet的特点在哪里?说出来了
手撕BN层前向算法。大概写出来了
python的线程和进程的区别?不会
SVM和逻辑回归在分类上的区别?不会
有什么人脸检测的数据集?不会
YOLO训练的数据集是什么。ImageNet和VOC2007
Kaggle的GPU内核之类的?不会
CNN参数初始化的方法。我说了Xavier,然后均匀分布,0初始化,高斯分布初始化。突然发现什么都不会,感觉凉了。但是其实过了hh。
网易互联网
项目 deepfake视频识别
除了问项目的细节之外,还问到了EfficientNet模型的特点。以及这个模型和之前的模型的区别。
在运行时间受限制的情况下,模型复杂度和数据复杂度如何权衡。
项目 机器学习的项目。
问道了LGB的优点和改进,我简单的说了和GBDT之间的共同点,然后说了和XGB在速度上的优化,就是直方图做差加速和GOSS和EFB等
问了一个反转链表的题。我当时直接把所有链表用list存起来然后反转,柑橘这样子也没有开辟很多的空间,毕竟list存放的是object的地址。。
网易游戏(电话面)
三个项目都问了一遍
防止过拟合的办法
dropout在训练和测试的区别,这个之前忘记在哪个面试也问过一样的问题,这次可不会出错了。
BN层的原理,老生常谈的问题了。
基于项目中的centerNet,问了一个损失函数为什么使用L1Loss,换句话说,L1Loss和L2Loss在生成模型或者超分辨率问题中的区别?这个我没说上来,面试官很友好,告诉我L2Loss的话,可能会生成更模糊的图片。
pytorch和tensorflow最大的区别是什么?这个问题给予我了近期学习一个极大的正反馈。最近在公众号上整理《小白学PyTorch》的时候,第一课就是说“浅谈动态图和静态图”,然后给面试官立刻整了一段。
还问了LSTM和RNN的区别。对循环网络用的不多,而且好久没复习这个了,一开始挺蒙蔽的。然后突然意识到,LSTM之所以叫做LSTM,中文是长短期记忆,所以是解决RNN记忆周期过短的问题,通过LSTM中的细胞状态,来存储长期的记忆。
LSTM中使用的**函数是什么?这个我其实想不起来LSTM那个三个门的那个结构图了。就说了tanh,然后面试官说就这?就这?我加上了sigmoid才算过关。他又问为什么要用sigmoid。这个其实我没有想明白,他解释道这个是为了将输出限制在0到1之内,三个门对细胞状态的修改,都是一个百分比的修改。而且限制到0和1可以避免梯度爆炸的问题。
还问了PPO好像,强化学习中的内容。但是强化学习我学的不系统,只会用了DQN,然后Q-learning的一些细节也不了解。强化学习这个问题算是GG了。
算法题是:Top-K问题,用推排序;以及路径问题的A*算法(这个我其实忘记了,说了一个临时想出来的基于启发的深度搜索遍历的解法)
整体来说,这个面试官特别友好,也挺健谈。而且你不会的题目他会先说没事,这个不重要他就问问,然后给一个解答,这个面试让我一整天心情都不错,面试体验在经过的几十次面试中排的上前三。
但是TM面试完半个月没消息了,淦。
商汤
先问了一个MobileNet和EfficientNet的特点,我就这之前对这两个的理解,就直接说了说特色。MobileNet的倒残差结构和Efficientnet的复合缩放系数;
问了我VAE中的一个变分推断,但是这个我知道但是没有详细了解;
问了我到底有没有训练过模型,我说很少,我没有GPU所以没有用过ImageNet这样的大数据集,一般是做微调,但是训练过一个目标检测任务的CenterNet。
问在训练的时候,学习率是怎么变化的,我说一般是从大到小,但是一般训练有一个warm up的概念,学习率是从小到大再到小的过程;
问我了解什么模型?我就说从VGG到resnet到efficientNet这个图像处理的基本模型,然后YOLO和Faster CNN这两个体系的目标检测模型也都手撕过,然后最后MTCNN人脸检测模型。
问了目标检测模型中怎么解决类别不均衡问题的,我说用何凯明大神的Focal Loss。主要思想是降低类别多样本的损失和降低易分类样本的损失,关注少样本和难样本;
NMS非极大抑制的一个情况。简单说就是选取置信度最大的候选框,然后把和这个候选框IoU大于一个阈值的其他候选框的置信度置零。
代码题:写五个特征图,经过五个卷积层,然后输出cat拼接起来的代码,可以用PyTorch。挺简单的,写了一个模型类,然后用ModuleList创建5个卷积层,不细说了。
读者,你好!我们已经建立了微信交流群,欢迎对AI感兴趣的朋友进群!
你可以加我的微信,邀请你进群!