[更新:已OC][发面经攒人品] cv/算法 实习面经
先介绍bg:
学历:C9硕985本。
论文:有一篇CV论文在投。
实习:一段某互联网大厂的多模态,一段研究院的算法开发实习。
由于lz的研究方向略冷门,故投递简历时并没有全找对口的实习。
目前的投递情况有:
腾讯多模态(无消息),淘天买菜(无消息),商汤aigc(无消息),网易(无消息),美团(笔试后无消息【5.29更新:简历挂】),Shopee(笔试后无消息【5.29更新:突然约一面】)。
有面试的有:
Soul 视觉,bilibili aigc,快手 aigc,pdd 推荐,华为暑期 视觉,字节 推荐【5.29更新:后面换到了大组下另一个做cv多模态更多的组,最终OC】
tl;dr:
建议大家之后别来做cv,简直天坑,现在主流业务更多还是偏搜推+NLP多一些。
时间线(以下全靠自己回忆,可能不全):
5.14 pdd推荐一面
面试官主要是做推荐的,问的更多是推荐以及NLP相关的问题。
- 自我介绍。讲了一下论文。
- 问多模态实习:用过哪些语言模型?(当时21年用的Roberta/bert)讲一讲bert的arch?它属于Transformer的哪一部分?(TransformerEncoder,SelfAttn + FFN)你们怎么做的特征融合?(concat+mlp/attn block)
- 手写SelfAttentionBlock
- 你说一下LoRA?(描述LoRA原理,计算参数量)
- 你用过Claude吗?(只是了解过,没有自己用过。面试官说在实测中Claude在CoT上表现得最好)你知道什么是CoT吗?(粗略的说一了一下自己的理解:逐步引导推理)
- MiniCPM你了解不?(不懂,不过面试官说也没关系,她真的我哭死)
- 手写算法:lc 69.平方根(用的二分,面试官让下去了解一下牛顿迭代法)
- 反问:业务场景(NLP居多,可能用prompt去改良搜索结果)
5.16 Soul一面
- 简单的聊了一下论文,面试官也是做本人这个方向的,故对用到的一些模型进行了深挖。
- 手写算法:numpy实现Softmax
5.20 Soul二面
- 聊论文,由于论文里用到了VQ-VAE,所以问了一下VQ-VAE怎么更新encoder的(复制decoder梯度,详见Oord et al.:Neural Discrete Representation Learning。
- 手写算法:lc 面试题01.07 旋转矩阵 我用了np.transpose和np.flip实现
5.21 快手一面
lz现在最想去的也是快手,求offer😭
- 论文。讲动机,方法,实验结果。
- ViT的操作过程?(Patchify+TransformerEncoder)
- Token没有额外的操作吗?(PosEmbed)
- 如果我训练的ViT要扩展到higher resolution,该怎么处理呢?(如果是Learnable PE就没法插值or外推了,应该使用有外推能力的PE,或者说如果是Sinusoidal PE的话,可以尝试插值)【这里lz觉得回答的不是很完备,一个是没有点出哪些PE是有较好外推能力的,二个是通过插值正弦编码来实现长上下文的想法貌似曾经在哪里看到过性能很差。由于没有特别关注过LLM的长context问题所以感觉没回答好】
- ViT相比于CNN的优势?(Long range dependency,data specificity(refer to arxiv2202.06709: How Do Vision Transformers Work?)
- 我们这里是做aigc的,你知道哪些aigc相关的知识呢?(SD, DiT)
- 描述SD(点出这是一个LDM,VAE,Unet)
- 怎么和注入的条件交互?(Cross Attention)
- CFG?(说公式,点出可以调整CFG scale来调整服从条件程度)
- 手撕:有点像 LCR 013. 二维区域和检索 - 矩阵不可变 反正需要点出容斥原理+前缀和
5.22 Bilibili一面
- 讲论文
- VQ-VAE怎么更新codebook?(EMA/梯度停止技巧,refer to Oord et al.:Neural Discrete Representation Learning)
- 描述SD。同上
- CFG?同上
- 手撕:快排
5.23 华为 上午一面 下午主管面
一面:
- 讲论文
- 讲曾经做过的项目
- 回忆机试题目
- 手撕:1004. 最大连续1的个数 III(滑窗)
主管:
偏向于聊天。问了很多宏观的问题。
5.23 字节一面
面试官是一位很温柔的姐姐,感觉面试过程中她提示了很多,好人一生平安
- 问论文。面试官自己也不是做cv的,所以可能解释了一些基本概念。
- 你说一下Transformer的Encoder和Decoder。
- 你算一下一个TransformerEncoderBlock的参数量(QKV+Linear,FFN)
- 算Attention的时候除以了Sqrt(hidden_dim),为什么呢?(大概从Softmax梯度的角度来回答,不过面试官觉得好像把除以hidden_dim和不除以的时候说反了😅,但也勉强算了)
- 为什么用Layernorm呢?(说的是BN可能依赖于batchsize不稳定,当时面试官也认可了,但后面想面试官应该更想听到的是NLP中<PAD> token出发的解释,但平时做cv可能就没有考虑到)
- Layernorm有没有参数?(说没有,面试官说真的没有嘛😅,那感觉应该还是有的,答曰会有affine参数)
- 为什么要affine normed distribution?(让模型找最适合训练数据集分布的分布)
- CLIP你懂吗?描述CLIP的训练过程?(对比学习,通过text encoder实现zero-shot)
- 手撕:LC 55. 跳跃游戏
5.24 pdd 二面
- 上来lc hard😅 LC 87. 扰乱字符串 lz真的不是很会 然后面试官给了些思路 磕磕绊绊的实现了一下 递归和区间DP都实现了
- 分析复杂度?(lz写得代码应该是有问题的,所以分析也错了,面试官面露愠色😅)
- 随便问了一些问题,感觉是无咧
5.24 快手 二面
- 讲一下你的论文。
- VQ-VAE怎么更新呢?
- VQ—VAE和KL-VAE有什么区别?(这里面试官说的KL-VAElz认为应该就是用了KL约束的原生VAE)
- 为什么SD用的是KL-VAE不是VQ-VAE?(SD其实里面曾经试过用VQ—VAE,应该是实验效果不佳。从感性角度解释离散化latent space和连续latent space,连续的或许有更多diversity)【这里lz也不确定,期待大家更好的解释】
- 手撕:402. 移掉 K 位数字
差不多到这周为止就是这些了。总结:CV现在实习更多的坑位还是多模态,大模型,AIGC。曾经辉煌的三大件可能早已变得鲜有增量,建议还是思考如何和行业发展对齐。
tl;dr: 还得是NLP。
————————————分割线————————————
这周面试也挺多的,不过好在流程走的快,也是很幸运OC了,决定了还是去字节。再次感谢遇到的所有面试官以及处理速度很快的hr。
一步一步记录一下OC过程。
5.27 bilibili 二面
- 上来面试官好像做过我这个方向,然后让我讲了些论文。但是面试官自己好像又不是很懂,一直在说我们的性能靠其他trick也能实现😅被他刁难了好几回,疑似套话,我就说我们的性能提升在某些特定场景非常显著。
- 因为好像是主管,所以直接让我反问:过来做什么?(视频生成,数字人,人脸检测)
感觉还在泡池子。。。
5.27 字节 二面
- 论文
- 直接写题:线性回归,逻辑回归(有sigmoid),用numpy手搓。正好lz研一上两门数学课,两门都教了这玩意儿并且考过😂印象深刻
- 反问:业务场景?面试官人很好,说如果我想做cv多模态那边组内也有,后面就让他们来面。面试官本人是做推荐中的ranking的,说过来做ranking也行。我直接泪目😭
面试完后马上约了隔天的三面和四面
5.28 字节 三面
- 先拷打论文
- 手撕:LC 148. 排序链表 必须用快排 lz在这里卡住了 其实最后代码并没有debug好 会存在一直递归的情况 建议大家都去看看这道题目 比较tricky 不过后面面试官让分析一下代码 口述之后觉得还行 然后分析快排的空间复杂度,这里lz只回答到了最坏是n^2 平均的话其实按照递归树来说是nlogn 不过当时写的递归里面都有重新申请空间 我还是回答的n^2(错?) 事后分析其实不额外申请空间的话 将会是nlogn
- 接着是一些cv的基础知识:transformer multi-head中的head数目增加的话 计算量怎么变?参数量怎么变?(计算量:考虑latent dimension =512, 分析一下one head和 512 heads的情况即可。参数量:切分head不影响qkv projection matrix参数数量)
- 多模态你了解哪些呢?CLIP,BLIP,BLIP2,InstructBLIP。
- Q former有什么用呢?(lz觉得只要答出q former中的q比图像侧的token数目小,过滤掉无效信息就行;另外,instructBLIP里main也把q和instrction一起self-attn,起到提取instruction需要的视觉语义信息的作用)
- 情景:如果我要提取图片中的文字,我该怎么处理呢?(ocr+bbox,这里重点还是结合到文字在图像中的spatial layout信息的保留,所以必须要有bbox,事后的反问中也确认了这个信息)
5.28 字节 四面
看起来是主管面
- 拷打论文,对motivation,contribution,以及实验中用到的工程技巧都有提问。
- 你会DPO么?你知道它的公式么?(lz回答不是做rl的不了解😅当时差点以为要g了)
- 为什么ViT也在用Layernorm?(这里口胡的,不保证准确:一个是从batchsize是一种超参出发,统计量可能不稳定;一个是从patch的角度出发,其实不能保证batch中的每个patch都是有效的,然后结合之前说到的nlp中的<pad>角度再完善)
- 手撕:layernorm(这个好在之前问过,所以这次写的没有问题)
- 手撕:LC 334. 递增的三元子序列 (这里就比较坎坷 lz一开始说用LIS来做,不过面试官说时间复杂度必须得是O(n)。想了想可以直接贪心,写出来了。不过之后面试官说可以,那怎么返回找到的三元组?这里就脑子转不过来弯了,不过之后想了一会就说其实可以在更新第二个元素的时候维护第一个元素和第二个元素的下标。但其实不维护下标直接维护元素本身就行。)
最后当天面试完就约了第二天的hr。
5.29 hr oc
oc之后没一个小时就om了~感谢帮助我找实习的同学以及牛客上面同样分享面经的小伙伴,祝大家早日OC
#实习工作,你找得还顺利吗?##实习的第一个offer,大家都拿到了吗##实习面经##面经#