作者 | kniter 整理 | NewBeeNLP https://zhuanlan.zhihu.com/p/512915397
现在的互联网行业就是裁员消息漫天飞,尤其是疫情之下,太难了。今天分享一个学弟的暑期实习面试历程,他是从本科生物跨专业考研到计算机,面了N家公司,也如愿拿到了一些offer。以下是原文~
今年互联网形势比往年更加艰难,我是从2月底开始准备暑期实习的,之前根本不知道原来大家都是年前准备,3月初已经开始拿offer了,并且今年互联网形势极其困难,腾讯阿里基本不招人,导致自己一度以为要裸提前批和秋招了,但一直没有放弃,有面试的我都会认真对待,所以最后还是成功拿下了 快手、阿里、字节 三个公司的暑期实习offer,面试过程中学到了很多知识,感觉自己能力确实还是还得到了提升的,所以记录一下。
背景
本科末流985生物专业,大三时偶然看到知乎@霍华德的劝退,而且自己确实对生物没啥兴趣,所以准备跨考计算机研究生,二战上岸某华五cs专硕,本科基本无计算机基础。(全凭考研打基础)硕士研究方向为多模态,有一个腾讯广告算法大赛top,一篇aaai二作,比赛和论文都是多模态相关。所以基本投递的都是和多模态、nlp相关岗位。
四月初投递的公司:字节、阿里、小红书、快手、拼多多、微软、oppo、百度、滴滴、美团、网易、腾讯、vivo、华为、b站
也投了招行这种银行算法岗,面试难度比较简单,就不记录了。
五月中旬oc的有: 字节tiktok、快手nlp搜索、阿里本地生活nlp ,其中小红书智能多媒体hr面后无消息(估计是我hr面说了会综合考虑在做选择,所以就不发了?)
其中oppo简历挂、滴滴简历筛选无消息、美团笔试完无消息、拼多多笔试挂、b站无消息,vivo无消息,进入面试的有:字节、阿里、小红书、快手、百度、网易、腾讯
算法:3月初开始就一直在刷力扣了,刷到五月份刷了大概170道左右,然后反复刷高频题。
八股:自己在网上整理的,多模态其实和NLP相关联比较大,所以我看的都是和NLP相关的八股,CV也捎带看一些。
1. 字节data电商搜索
一面挂 4.1(50min)
- 自我介绍
- 先做两道题吧:1.二叉树最大路径和 2.编辑距离(都是高频,所以秒了,但听说字节考hard就是劝退的意思...)
- 讲一讲比赛吧,做了啥,难点在哪(很多细节)
- 讲一讲论文吧,创新点
- 八股轰炸:
- 看你比赛用了ViT,ViT position embedding怎么做的
- swin transformer 滑动窗口机制 具体怎么做的(凉,只回答了机制,具体做法我以为不会考那么细就没看原论文)
- Bert mask机制
- 除了NSP任务还有哪些句子对之间关系(凉,当时bert改进的论文都没有看过)
- Transformer self-attention怎么算,为啥除以根号dk而不是随便一个数(只知道为啥除以根号dk,为啥不是别的数这个当时还不知道)
- 动态mask怎么做的(问的是Roberta,回答的有点问题)
- transformer 为什么qkv矩阵不同
- bert mask会造成预训练和fine tune之间不匹配,怎么解决(当时根本不知道问的啥意思,后面才知道问的是XLNet论文里面的)
- Bert双向体现在什么地方
- 反问:表现:多模态知识掌握的还行,代码能力还行,基础需要加强,校招生看重基础,项目社招比较关注,时间紧就不考概率题了(凉凉)
隔了2天收到感谢信。
总结:这是我第一次面大厂,面完才感觉原来大厂面试居然考的这么细,但这次面试也让我很好的查漏补缺了,后续面试这些问题依然是高频,所以这次面试还是很有收获的。
2.阿里淘系多模态推荐
一面电话面
3.20(50min)
- 比赛:难点、解决方案、细节
- 论文:创新点
- 八股
- dropout原理
- attention机制本质
- transformer整体框架,各个部分由什么组成
- transformer attention机制
- 为什么采用多头注意力机制
- 过拟合、欠拟合,解决办法
- BatchNorm, LayerNorm区别、原理
- 过采样、欠采样是什么
- 反问表现:还行,让我把笔试做了再推进后续流程
感受:阿里面试都是电话面,没有coding环节,八股都是很常规的基础八股,当时就感觉阿里面试比较水。后面才发现没那么简单。一个星期后通知了二面,笔试3道A了2道。阿里笔试整体算偏难的。看运气了
二面电话面
(已挂)4.1(40min)
- 介绍论文
- 一些场景问题
- 本科不是计算机,这些知识怎么学的
- 反问:让我不要太焦虑,没什么问题(呵呵,都是套路啊)
总结:二面问的也很随意,我整体感受就是阿里面试非常水,感觉就是不太想招人,候选人优秀的太多了,直接靠排序系统刷人,事实证明我二面完后一直无消息,拖了两周后内推人让我看流程,我才发现挂掉了。流程很慢,导致我转第二志愿蚂蚁的时候,刚一面完蚂蚁的师兄就告知无hc了,这个时候已经接近四月中旬了,阿里其他部门基本也无hc了,我当时就不抱希望了,后续牛客看到本地生活还有hc,就申请了转部门,然后约面了。
这个时候已经四月中旬了,腾讯才开放暑期实习岗位,我也就抱着碰运气的态度投了(腾讯暑期实习刚开招聘官网居然就崩了,可想而知今年形势有多差)。四月中旬通知约面的只有小红书和快手。
3. 小红书智能多媒体
一面
4.14(45min)
- 项目:比赛,各种细节(小红书全程只问了比赛,我还听见面试官拿着笔在推我模型输入输出维度,看的出来面试官对我比赛方案很感兴趣,聊了半小时估计时间不够了,就让做题了)
- coding:如何计算矩形面积,尽可能的快(因为问题是面试官口述的,所以一开始没弄懂题,面试官引导了一下,想想一维情况,然后发现是个前缀和问题,然后写了一个二维前缀和公式和一维前缀和的函数就说可以了)
- 反问:表现:总体还行,回去等二面。
二面
4.22(45min)
- 场景题:各种小红书的业务场景问题,涉及到多模态:比如如何检索小红书音乐库,根据不同用户, 用文本生成连续视频片段并保持风格一致(我在学校根本接触不到这些业务,所以就都是嘴炮,感觉这种问题就是发散问题,看你的思维和平时积累)
- 什么时候能实习,想在哪实习
- coding:1.顺时针旋转矩阵90°;2.二进制矩阵最短路径(先尝试了下dfs,复杂度过高,然后bfs遍历一次就可以了)
- 反问:表现:挺好的,然后我催了一下说让尽快给结果。面完半个小时后后通知hr面了
小红书hr面
(面完无消息)
- 研究生和本科之间gap了一年,什么原因:(当然是考研二战啊。。。)
- 为什么跨考计算机,计算机知识怎么学的(别问,问就是热爱)
- 说一下你的优点缺点
- 如果有别的offer,假设拿到了字节,怎么选(这是个死亡问题,我第一次进hr面,不懂这种问题怎么回答,老实回答了会综合考虑哪个更match,感觉直接寄了)
- 反问:问了五一之前能发offer吗?回答你五一之前都来不了,万一不来呢?感觉就直接寄了...
4. 快手NLP-搜索
一面
4.18(50min)
- coding:搜索旋转数组
- 项目:比赛
- attention机制
- 常见的loss,你用过的,他们之间的区别
- dropout原理
- 过拟合解决办法
- 反问:评价:没什么问题
二面
4.26(50min)
- 比赛细节,涉及预训练任务,模态融合方式。
- 看你比赛用了nceloss,torch写一下NCEloss
- 看你比赛用了focalloss,torch写一下focal loss
- 计算bert参数量
- coding:1.无序数组找第k大;2.:f1() 1/2 概率产生0 1/2概率产生1 f2() 1/4概率产生0 3/4概率产生1
问题:(1)用f1()实现f2()
(2)用f2()实现f1()
- 还在看别的机会吗
- 反问表现:挺好的
hr面(已oc)
- 本科不是计算机,怎么学的
- 手上有别的offer吗?
- 讲了一下快手实习薪资,部门是干嘛的,问我多久过去
总结:快手整体面试考察难度中等,技术面每面都有coding,二面更是撕了各种loss,面试官水平还是很高的,如果字节挂了大概率就去快手了,毕竟多模态方向和短视频公司比较match一点。
5. 阿里本地生活
一面
(电话面)(50min)
- 比赛 亮点、创新点
- BERT的改进论文讲讲他们的改进点:ALBERT RoBerta XLNet
- bert NSP任务可以被替换成什么任务,为什么要替换NSP
- BERT可以输入一个1000词序列长度的东西吗?
- BERT输入文本过长有什么解决办法
- 搜索query和文章怎么匹配
- 了解NLP相关任务吗?实体抽取、命名体识别了解吗?
- 单流transformer和双流transformer差别
- 反问:建议:需要多了解nlp任务,因为做的工作和nlp关联较大
个人对具体nlp任务做法不太了解,也被问到了tf-idf这种问题,我都不太会。
二面
(视频面)(1h30min)
- coding:1.判断对称二叉树 2.torch手撕一个demo模型加训练流程(用python写题被怼了,说不能只会python,还是要学cpp或者java的,但我其他面试全程都是python没有被怼过)
- 集成学习bagging boosting stacking各自怎么做的。
- 常用的bagging算法有哪些,boosting算法有哪些?
- softmax分类从100到10000准确度会下降吗?原因(这个地方当时没时间想,事后感觉是过平滑原因)
- 计算机存储结构 堆和栈区别(回答了低地址高地址)
- 常见激活函数有哪些,leaklyRELU讲一下
- transformer multi-head切割原特征维度会损害特征物理意义吗?
- 看你比赛用了focalloss,focalloss讲一下,和什么函数像?focalloss解决不平衡问题原理是什么
- RNN缓解梯度消失的办法
- LSTM和GRU区别, GRU效果会下降吗?
- BN的作用,BN解决的是偏差问题还是方差问题
- ResNet解决的是偏差还是方差,原因
- 算法题看你写了递归,讲下递归缺点,尾递归好处
- 函数栈空间大小(实在记不清了)
- 模型分布式训练过程
- warmup原理
- AUC ROC含义、计算公式,ROC横纵坐标,PR曲线横纵坐标含义,区别。
- python生成器、迭代器区别
- Adam公式,常见的优化算法有哪些
- 朴素贝叶斯了解吗(讲了下MAP怎么算的)
- 决策树使用过吗(无)
- 多模态融合方式有哪些,都有什么优缺点
- 看你本科生物,计算机知识怎么学的
- 为什么选择考计算机专业
- 反问:表现:看得出来准备的比较充分,本科生物是劣势也是优势,看你从哪个角度看,回去等通知
面试官看上去比较成熟,一上来就感觉来者不善,比较严肃。后面面完后就缓和下来了,告诉我是压力面,团队有涉及多模态知识图谱构建的,基本上大多数还是我事先复习过的基础知识,但计算机系统基础方面的问题就凭着考研印象随便答了一点,传统的算法这次基本没复习到,比如随机森林决策树这些。但面试官也没有为难,总体感觉不错,感觉确实是想招人的。
三面
(40min
- 论文
- attention机制
- transformer add and norm优势(这个问题可以看苏神博客和resnet论文)
- 判断不定长字符串是否出现重复字符(ASCII码哈希)
hr面
- 本科不是计算机,为啥会跨考计算机?(感觉这个问题真的很高频,看来非科班的影响还是很大的)
- 平时怎么学的计算机知识
面完第三天通知过了,5月10号发了录取意向。
字节电商一面挂后,自己对字节一直有执念,自己当时暑期实习也投递了两个岗位,很想再试一次字节,因为一面挂的面评不算很差,tiktok那边评估了大概两周终于约面了。
6. 字节tiktok
一面
4月28(50min)
- 论文,讨论了缺失模态的情况
- transformer 为什么除以根号dk
- transformer self-att机制
- python列表和元组的区别
- python 空列表和空元组谁占的空间大(当时没回答出来,面试官也很好,说不知道也没关系,这个问题比较难)
- python迭代器的定义
- python迭代器的实现3种方法
- python垃圾回收机制
- 前沿的多模态sota模型(梳理了一遍比较火的一些预训练模型和好的多模态融合paper)
- coding:1.不超过n的最大数(不会,面试官换了一道);2.无重复最长子串;3.follow up:.将数组划分成k个和相等的子集,k最大多少(暴力dfs跑通了)
- 反问:表现:挺好的,基础不错
一面面试官人非常nice,算法题一开始就说如果不会可以直接告诉他,他换一道,最后一道题也说做不出来也没关系,
二面
5月6(50min)
- 比赛:探讨了细节
- coding:1.是否存在和为k的子数组2.follow up:如果要求子数组长度必须大于m怎么改(有个测试用例出现了bug,面试官非常耐心的引导我排除bug,最后顺利跑通)
- 八股:
- 线性回归是什么
- LR是线性还是非线性
- dropout原理
- dropout在模型train和eval的时候区别
- dropout在train的时候会补偿这部分损失嘛(这个问题没遇见过,后面知道了是要除以1-p)
- 神经网络为什么需要激活函数
- 分类任务softmax在最后一层的作用是什么
- 反问:表现:挺不错的,可以多发表一些paper,算法一行paper是始终伴随你的。
二面和三面面试官都是北美的,二面面试官也比较成熟稳重,讲话很有耐心,我说的不对也会引导我,非常nice,早上面完中午就通知二面过了,效率很高
三面
5月10(40min)
- 介绍比赛
- 场景题(关于tiktok涉及多模态的实际问题)
- 反问(为啥没有算法考核,面试官说我们刚刚讨论的都是算法。。。感觉字节不考算法题我都不习惯了)
三面是部门大leader,侧重实际问题考察,没有现成的八股,全靠自己平时积累,我自己也没太多经验。
4.24 腾讯笔试5道A了2.5道,4.26约面,拒了,原因是腾讯暑期这么晚才开大概率也是没有hc的,就不想浪费时间了。
三面完过了一天通知hr面了,当时非常开心,这个部门是我最想去的一个部门,hr面问题和之前的基本一样。就表达了自己手上目前有两个offer,但最想来tiktok(舔就完事了)
7. 网易雷火NLP精英实习
一面(1h)
- 论文
- 比赛
- 宏F1和微F1指标怎么计算,区别
- P R计算方式, 区别
- Bert参数量怎么计算
- Bert attention head影响参数量吗
- Bert attention mask具体怎么实现的
- LR的损失函数
- LR可以用mse做分类吗,原因
- LR和svm在预测分类上有什么区别
- 核函数的作用
- 样本数量少,维度高用LR还是svm
- python 多进程和多线程
- coding:跳跃游戏
网易面试当时就是给字节三面练手的,答得不算特别好,传统算法我基本都没有复习,PR计算公式也记反了,但最后还是约二面了,打算拒掉了。
最后拿到offer的有: 1.字节tiktok多模态算法工程师(已签意向)2.阿里本地生活NLP(已拒)3.快手搜索技术部nlp-搜索(已拒 )
总结
今年形势比较难,周围找算法岗的基本都是有论文或再投的。总体而言算法岗暑期实习对编程能力和基础知识考察是比较全面的,建议葫芦书西瓜书花书都复习一下,至于前沿论文就看平时积累了。
笔试难度都比较大,尽量多刷多练吧,我笔试也是薄弱项, 面试算法题是命门,一定要尽量A出来,算法题A出来不一定过,A不出来90%概率挂!大部分都是力扣mid难度。 每次面试都让我更好的完善了自己的知识体系。
这次暑期实习总体而言我算是比较幸运的,很多岗位都约面了,在面试中也是不断的在提升自己,发现自己的比赛和论文都是起到了很大的作用(可以水时长,避免被问很难的算法题和八股),而且和自己比赛论文相关的知识都是自己最熟悉的,但自己对传统方法了解不多,秋招之前还是要补这部分知识,但也拿到了自己最想去的岗位的offer,自己转码过程虽然很难,但自己比较热爱,所以也是坚持了下来,所以记录下天坑转码历程。
顺便说下个人体会,现在无脑转码其实已经不见得是最优选择,一方面政策打压,互联网企业到处都是大裁员,不乏很多22届校招被毁约的,应届生被裁的,35危机。除非自己真的热爱。反而集成电路、ic行业趁着政策红利有较大上升空间。看自己选择吧,祝大家都能收获心仪的offer!