豪取BAT!超详细暑期实习算法面经(非科班无论文)
面试锦囊之面经分享系列,持续更新中
赶紧后台回复"面试"加入讨论组交流吧
写在前面
本人基本情况:211本硕,本科电子信息工程,硕士通信与信息系统,典型的非科班,无论文,两段实习经历(均为算法岗,非大厂,一段CV,一段NLP)。
⛳ 百度——推荐策略部—算法工程师(已offer)
⛳ 阿里——阿里云智能事业群—机器学习(已offer)
⛳ 腾讯——互动娱乐事业群IEG—机器学习(已offer)
阿里
技术面共四轮(其中一轮交叉面),HR面试一轮。
一面
未预约,直接打来电话面试。(1h 40min,代码给了非常久的时间,笔者C++代码写了上百行)
介绍自己参与的CV项目(笔者曾参与过一个做行人属性识别的图像分类的项目,对某些经典CNN模型以及图卷积网络有所了解)
在介绍项目时穿插提问了很多经典问题:过拟合(笔者回答了Early stop, Dropout, 正则化等技术的原理以及个人理解),梯度消失(笔者从初始化和Normalization两个角度回答),学习率调整策略等
为什么GCN难以训练
笔者从Over smoothing,梯度消失等方面回答
3. C++中的内存泄漏是怎么发生的?
4. 如何避免C++中发生内存泄漏?
5. 服务器上运行的服务已经发生了内存泄漏时如何处理让服务器恢复到正常状态?(这个真不会。。。)
6. 编程题:C++语言,在阿里伯乐在线测评系统上写代码
// 评测题目: 最少新建道路条数
// 已知有N个城市,城市编号1...N
// 已知M条路,每条路表示为(x_i, y_i), xy分别为城市编号
// 现在需要新建道路,确保任意两个城市之间,是可以通过一条或者多条道路联通
// 求解能够达到此目的的最小道路条数
// 思路:BFS或者DFS应该都可以找到城市簇即可。
二面:视频面试(2h)
介绍自己参与的CV项目和NLP项目
介绍NLP项目的时候提问了了BERT等预训练模型的相关知识,以及Attention技术的相关知识。
谈一谈模型压缩的相关知识
三大角度:蒸馏,剪枝,量化。笔者分别介绍了三大角度的基本原理。还有一些零碎的知识:低秩分解,ALBERT中的参数共享,深度可分离卷积,Inception V3中的大卷积核替代方案等。
剪枝与正则化的联系
笔者从结构化剪枝与非结构化剪枝分别对应Lasso和Group Lasso的角度来回答,这也导致面试官引入了下一个问题。
结构化剪枝和非结构化剪枝
CV中的目标检测基本算法
笔者谈了YOLO,SSD,Fast R-CNN,由于笔者并未参与过与目标检测相关的项目,所以只了解一些经典算法。
特征金字塔FPN的作用
C++语言中的继承体系。
C++语言中的多态。
数据不平衡问题
笔者不光从欠采样过采样等经典解决办法的角度回答。另外回答了一些其他方法:GAN(ICCV 2019 best paper:SinGAN),特征空间增广,改进训练方式(源数据训练特征提取backbone,欠采样或过采样训练分类器),Loss加权,使用AdaGrad优化器等。。。
优化器
SGD,SGD with momentum,NSGD,AdaGrad,AdaDetla,RMSProp,ADAM,NADAM,RADAM+LookAhead等。
三面(交叉面):电话面试(17min)
据笔者了解,阿里交叉面主要是为了防止作弊,挂人的可能性较小,但是不排除。
介绍预训练语言模型
ELMo,BERT,Transforler-XL,XLNET,ERNIE,RoBERTa,ALBERT,ELECTRA。。。笔者从BERT的mask LM以及NSP任务出发讲解了BERT后续各大预训练的改进。
各大预训练语言模型可能不能从头到尾讲起,笔者线是介绍了BERT,然后从BERT的预训练任务出发,比如介绍了ERNIE中对mask LM的改进,ALBERT中将NSP任务替换为SOP任务等。。。
Attention原理
主要讲的是Transformer中Multi-Head Scaled Dot-Product Attention。注意,这里有一个Mask Attention机制,它对于Transformer Decoder和XLNet的实现原理非常重要,同学们如果了解相关知识点,一定要对这个Mask Attention知识点进行深入的理解。
Multi-Head Attention中如何优化Muti-Head的计算?
笔者并无相关底层优化经验,所以回答:借助CNN底层计算原理,将多头变换展开为二维矩阵(填充大量0),将多头变换转为矩阵乘法运算。
四面:电话面试(1h)
介绍CV,NLP相关项目,调参经验