笔试
4道编程+两道简答题
编程题1:简历投递系统,每个岗位只能由一个人占据,每个人最后也只能在一个岗位上,输入的每个数组第一个值为每个人的ID,第二个值为岗位编号,尽可能多的岗位被占据,输出数量。如输入[ [0,103],[1,103],[1,104],[2,104],[2,105],[2,106],[3,103] ],输出3
编程题2:检索最长重复子串:输入s0,s1为两个字符串,输入c为噪音集合,输出最长重复子串,噪声集合中元素可被忽略搜索,如输入[ ["abc%","zxab%c%%",["%", "#"] ] ,则输出ab%c%%
编程题3:最小水平面:存在一个数组,代表顺序的隔板长,求解最小水平面高度,如输入[4, 3, 2, 1, 3, 0, 5, 0, 1],则输出1
编程题4:二叉树中心点值
简答题1:在BN、LN、IN、GN中任意选择两种,试论述它们之间的异同
参考链接:https://zhuanlan.zhihu.com/p/91965772 BN是Nx Hx W,LN是Cx Hx W ,LN是Cx Hx W ,IN是Hx W ,GN是(C//G)x Hx W
简答题2:梯度爆炸和梯度消失的产生原因以及解决方法
参考链接:详解机器学习中的梯度消失、爆炸原因及其解决方法_Double_V_的博客-CSDN博客_梯度消失, PyTorch学习之归一化层(BatchNorm、LayerNorm、InstanceNorm、GroupNorm)_mingo_敏的博客-CSDN博客_pytorch 归一化
其中l1与l2范数不仅是一种防止过拟合的正则化方法,同时从本质上来说,它也是一种防止权值过大能力,也就是可以防止梯度爆炸,同样BN层也是既有防止过拟合功能又可以防止梯度爆炸
其余方法还有:预训练、使用leakrelu激活函数、残差结构
一面
简历过一遍
编程题:一个NxN的棋盘,从左上角出发,马走日,求到达右下角的最短路径,要求输出此最短路径。
扩展阅读
1. 正则化(正则化就是减小过拟合)、标准化(是减均值除方差的那种)、归一化(数据归一到某个范围)。参考链接:https://zhuanlan.zhihu.com/p/2995729
有时候我们经常会被问到正则化和防止过拟合的方法,以不变应万变的方法是,知道的方法不全说出来,防止两个问题被重复问到
正则化:L范数,模型集成,Dropout,BN。防止过拟合:早停,leakrelu激活函数,残差,预训练(墙裂)。
2.BatchNorm是在batch方向做归一化,LN是在channel方向做归一化,IN是在channel内做归一化,GN是在channel以组的形式做归一化