"铜三铁四",从天坑专业到字节算法岗

2022-06-06 10:15:10 浏览数 (1)

作者 | 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!

0 人点赞