2022秋招实录 | BBATM 虾皮 快手 完整面经
2022秋招实录 | BBATM 虾皮 快手 完整面经
个人情况
本硕985,科班,自然语言处理相关,2篇CCF-B会议论文(共一/一作)和几篇不知名论文,2段NLP比赛top10排名(1000+队伍),一段腾讯实习,一次硕士国家奖学金。
实习的面试情况
- 快手搜索
- 阿里飞猪
- 腾讯微信
从2020年11月份开始陆陆续续刷题准备,但是当时到2021年2月初在准备ACL的投稿,所以大部分精力也没有刷在刷题和八股文上,寒假的时候把lc上的剑指offer仔细的做完了,从2月中下旬开始陆陆续续把简历投出去准备实习的情况。之前没有经历过互联网的面试,上一次面试都还是在保研的时候,所以先投了平安科技和快手想练练手。可能是牛客上投的原因平安直接没回复,快手很快第二天就通知面试了。后面找阿里的师兄内推了下飞猪,腾讯则是刚好看到微信这边的一个组发了实习生招聘广告然后就投了出去。
快手搜索
- 一面
- 自我介绍
- 问项目和比赛
- 做题:(1) 剑指 Offer 25. 合并两个排序的链表。(2)剑指 Offer 32 - III. 从上到下打印二叉树 III
- 二面
- 自我介绍
- 聊聊比赛和论文
- 做题:leetcode-744 寻找比目标字母大的最小字母
- 反问,以及多久能入职
阿里飞猪
阿里春招笔试
对应力扣上两道原题: 1539. 第 k 个缺失的正整数 以及 879. 盈利计划一面
一面面了两个小时,着重问项目和论文
- CRF如何训练、CRF的特征函数如何构造、MRC如何做NER、CRF的损失函数、nn形式的CRF和普通的CRF的区别
- BERT和GPT的区别
- 一根筷子切成三段,能够成三角形的概率(数学题,线性规划+三角形不等式,但当时好久没有做这类题了,所以当时自己多加了个约束条件,最后还算错了)
- 要从一个亿级别的字典里快速找出我们想要的key应该如何设计
- 求最长公共子串,这个之前做过类似的题,对应 lc718. 最长重复子数组
- 二面/三面
- 挑了篇论文让我详细讲一下
- python深浅拷贝问题
- self-attention为什么效果很好为什么能解决长距离问题, LSTM为什么对于长文本效果还是很差
- 一个长数组如何找出重复的元素(我直接说采用哈希的方法),然后他说但这样空间复杂度偏高(他应该想考原地哈希这种trick)
- 概率题,考察全概率公式:现在有2男孩3女孩在房间里。又来了一个未知性别的小孩,现在总共6个人。护士随机抱了一个,是男孩。请问来的人是男孩的概率。
- 评价自己是一个研究型人才还是应用型人才
微信搜索
- 一面
- 自我介绍,介绍项目和比赛
- 手撕算法题,面试官说要找到一颗二叉树最深且最左边的结点,后面发现是leetcode-513
- 开放题:现在有一篇微信公众号的文章发出来了,如何判断他能不能成为热点文章
- 二面
- 自我介绍,聊项目
- 算法题,写一个分句的算法(我其实没有懂具体要写到什么程度)
- CRF为什么会用到转移矩阵,CRF如何构造特征函数的,如果用CRF做一个分词的任务你该怎么做,CRF构造的这个特征函数,最终的输出是一个怎么形式,CRF该如何训练呢(这个我说极大似然估计构造的损失函数去训练,他应该是想听到参数更新的过程,但这个真的好难啊,书上说的是用牛顿迭代法,具体的细节是真的不知道),神经网络形式的CRF是如何构造的他的特征函数又是什么,一些NER任务能否用分类来做(我说可以,比如BERT-CLS),接着他就反问为什么有的时候BERT-CLS的效果好
- 三面
三面属于大leader面,问的偏学术的那种问,问的也都很有深度
- 聊一下发的论文,这里直接问的我头皮发麻,因为简历上写的那篇论文确实存在一些缺陷与与不足
- 比赛的时候用没有用一些特殊fine-tune BERT的技巧
- warmup为什么能加速收敛
- 简述一下BERT里面用的是layer normalization还是batch normalization,为什么要进行normalization,二者的区别
秋招的情况
- 微信搜索,转正
- 字节搜索中台/电商搜索,已oc
- 百度凤巢,已oc
- 美团搜索,HR面
- 虾皮-上海推荐算法岗,二面挂
秋招从7月中旬的提前批开始陆陆续续投递,期间阿里那边虽然没去实习也发了直通意向书,战线从7月中旬一直持续到9月中旬,每天实习下班确实已经很累了,但还是强迫着自己去刷题做题,大概就是10点到家打会儿游戏洗个澡做两道题差不多就到12点了,那段时间确实挺累的。
字节搜索(提前批)
- 一面
- 介绍项目,介绍实习
- 介绍一下BERT,transformer,normalization机制,为何要用position embedding,self-attention具体
- 介绍一下整个搜索的流程
- 介绍一下随机森林和GBDT的区别,GBDT和xgboost区别
- boosting和bagging的区别
- c++递归和迭代的区别
- 讲一下CRF是什么,训练过程
- python的GIL 全局锁了解么
- map-reduce原理说一说
- 编程题:K路升序链表合并
- 二面
- 介绍一下BERT如何训练,MLM里面是如何mask的,为什么要选5%的词原封不动,NSP任务为什么不好
- 有了解过BERT之后的相关预训练语言模型么,介绍一下
- 其他词向量呢?word2vec的两种训练方式,word2vec和fasttext的区别
- LR的损失函数,如何训练
- 介绍项目和实习,对于NER有了解过后续的实体链接任务么
- 概率题:两个人轮流抛硬币,直到有人抛到正面则可以吃掉苹果,那么先抛硬币的人能吃到苹果的概率有多大
- 编程题:判断数组(长度大于等于3)中是否存在递增的三元子序列(不需要连续),即arr[i] < arr[j] < arr[k] ,其中0 ≤ i < j < k ≤ n-1,要求O(n)的时间复杂度
- 三面
- 介绍实习
- 介绍一下pretrain的历程
- 介绍了解的优化器以及具体特点,详细讲一下adam
- L1和L2的区别
- BERT self-attention为什么会比全连接层好
- 设计一个意图识别的系统
- 编程题:leetcode31-下一个排列
虾皮上海推荐岗(提前批)
- 一面
- 介绍实习
- 以分类为例,有了解过一些半监督的方法么
- BERT最多处理512长度的文本,那么如何处理超长文本呢?我说的是滑动窗口截断,面试官追问:那么这样显存还是得不到下降,有没有其他方式,比如attention那里?BERT里面attention采用dot-product,因此是O(L^2)的复杂度,我们可以换成general-attention的方式(这里其实也不对),同时Q与K在计算多头注意力映射到64维时的线性层其实可以sharing(哎reformer没有认真看,不然就答LSH方式了)
- KL散度和交叉熵的关联
- 神经网络的权重可以全零初始化么,可以相同的值初始化么,embedding可以全零初始化么
- 假设在一批样本里,同一个特征对应着7个正例,3个反例,是否可以将这3个反例剔除
- 编程题:给定一个有序数组,要求对数组里的每个元素的平方和排序,O(n)的时间复杂度
- 二面
- 设计一个室内温度监控系统,能够实时的得到每分钟的温度均值和方差
- 会用hadoop和hive sql么
- AUC的具体计算公式,讲一下具体含义
- 在一个具体的推荐场景中,线下AUC很高,但是线上AUC较差的原因
- 在微博等场景中,我们常常看到很长的Url链接是一个被转换成了短链,具体原理是什么
- 编程题:剑指 Offer 56 - I. 数组中数字出现的次数
一方面可能推荐那边要求确实比较高,因为虾皮上海今年第一次校招而且今年虾皮真的太卷,另一方面有些问题答的不是很好编程题做的也不是很好,面试官觉得不是很match然后就挂了。
百度凤巢(提前批)
这里我真的要吐槽一下了,百度真的是我面试体验最差的公司了,一是因为如流那个软件真的用的很难受二是因为被面试PUA,我的另一个同学也是被面试PUA。一面面了两个小时,二面从晚上9点开始等面试官,等了15分钟才开始然后面到了晚上11点半期间不停的面试PUA我觉得这也差那也差,无奈当时0 offer也只能舔着。
- 一面
- 项目 ,实习
- 知识蒸馏的相关方法
- CRF,普通的和nn的各种问,HMM各种问
- 实体消歧怎么搞
- c++内存泄漏可能的原因
- c++ delete一个数组与直接delete []有啥却别
- c++ 出现call是什么原因?segment fault?
- 数学题:证明质数是无限的
- 编程题:
- 一个长度为n的数字数组,是否能用这n个数字构成一个环(首尾相连),使得环中的每一个数字都小于它相邻的两个数字的和(每个数字都必须使用并且每个数字只能使用一次)
- 翻转链表
- 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词
- 二面
- topk问题的时间复杂度分析
- 一道我个人感觉很难的编程题,当时没做出来:a=[1,3,3,2,2,4],b=[1,3,2,2,4,4]求两个数组的最小diff,比如a[0]可以和b[0]相减,a[1]可以和b[1]相减,a[2]也可以和b[1]相减,a[3]可以和b[2]相减等等,这样算下来diff=0,但是有个条件就是不能a与b元素之间的连线不能交叉
- 各种PUA方式的问
- 三面
面完二面我觉得铁挂了,结果后面收到了三面通知,我也不知道为啥要这么搞我
- 聊天
- 编程题:excel列转换成数字,实际就是26进制转16进制
美团搜索(北斗计划)
当时想冲一下北斗,但是北斗竞争真的太激烈了,至少一篇A类论文会比较稳。而且厉害的人真的太多了,比如我一起实习一个同学有两篇MM一篇CVPR,还有一个同学有ICCV和NeuralPS。当时也是抱着试一试的心态去冲一下北斗,然后就说名额不够了,可不可以接受比北斗低一些的评级哈哈哈。
- 一面
- 详细讲论文、问实习
- 编程题,判断五子棋(其实很简单,主要是输入输出搞了太久,面试官要求全ac)
- 二面
- 详细讲论文、问实习
- 编程题,给定两个矩阵,判断是否相交如果相交求出相交面积
回顾一下整个秋招过程,lc刷了大概有300+的题,但是面试的时候有出到原题但是自己忘记的情况,这种真的太痛苦,比如字节三面和虾皮二面的算法题都做过但当时只记得部分的方法,这种也很搞心态,另外就是厉害的人真的太多了,在实习的时候组里的实习生基本人均顶会清北。调整好心态,提前做准备真的很重要,大概就是这些。
#秋招总结##腾讯##字节跳动##面经##快手##Shopee##百度#