跳转至

2024 年秋招经历回忆 面经

公司 状态
华为视觉算法 通过
米哈游开发 通过
字节推荐算法 通过
腾讯强化学习 通过
B站大模型 通过,理论上通过了,但是 HR 打电话问完预期薪资后就再也没联系过
网易雷火 二面中止
小红书大模型 笔试后无面试
阿里淘天 中止

米哈游开发

一面:

  • 主要考察了很多 C++ 八股,包括虚函数,STL,智能指针,锁机制,类相关内容,考了一个简单算法(找一个整数数组中最小的四个元素)
  • 面试官问是否了解 Unity 渲染层面的内容,我说没接触过
  • 问我是否了解 Python,说简单会一些,问了一个关于单例的问题,包括懒汉加载和饿汉加载的区别,当时不知道。

二面:

面试一开始,面试官说这次面试考察代码能力。两道题,每道题 \(30\) 分钟。

  • 第一道题是使用数组实现一个带扩容机制的队列。(写了一个循环数组+扩容)。忘记在析构函数里面写垃圾回收了,被提醒才改正。应该是分数--
  • 第二道题是写一个对象池(内存池),要求实现线程安全(当场跟面试官说没用 C++ 写过锁,然后把这一条免了,应该是分数再次--)。后面因为 reset 函数的位置被拷打了一番。应该在每一个元素被加入到对象池的时候就 reset,因为需要释放这个对象的引用。

后面问我对这个岗位的了解,给我介绍了一下岗位的职责和重要地位。

三面:

自我介绍

  • 做题:维护动态区间,可以动态地插入区间和删除区间。区间之间互不相交。
  • 如果区间数量非常大,可能上亿级别的,你打算如何处理?(分块,分文件)
  • 是否可以考虑区间的合并?(可以考虑将一些连续的区间合并为一个区间,建立分层的树结构)
  • 刚才你提到了通过分块的方式来做,你觉的块大小和个数的确定时要参考什么。(尽量让索引的时间复杂度和块内搜索的时间复杂度保持一致)
  • 你对自己的职业有什么规划?(对工作稳定性有要求,希望在一个领域不断提升自己的技术,走技术专家的路线)

HR 面:

  • 为什么投了游戏行业,我看你简历是互联网相关的很多?(喜欢玩游戏,想要参与到游戏的制作中)
  • 看你之前有实习,你为什么要参加这份实习?(时间刚好空闲,参加实习提升代码的工程性)
  • 构建开发和游戏制作并不一样,你能接受吗?(只要是在游戏中做出贡献其实我都可以接受)
  • 为什么投了这个岗位?(被调剂)
  • 原来投的是什么?
  • 你对这个岗位有什么了解?
  • 还投了哪些?
  • 实习的过程中有没有遇到说不好的点,不太想要接受的点?(不接受周末加班)
  • 你在选择 offer 的时候看重什么点?(钱多事少离家近 前两者满足其一)

意向书

意向书没有薪资,在十月、十一月份出薪资,再沟通薪资。在此之前都是意向书。


腾讯强化学习

一面:

  • 自我介绍
  • 举一个项目的例子并说明贡献(说了 ViT 的三个方向:自定义数据集、自适应蒸馏还有特征蒸馏方法)。
  • 问了阿里实习的项目,是否了解 tensorflow(说不了解没用过,开发的 TF 算子主要是进行一些数据转换之类的,比较搬砖)
  • 手撕 LRU
  • unordered_map 和 map 的区别(hash表和红黑树)

二面:

  • 自我介绍
  • 拷打了一下求职意向、为什么选择这个地点、为什么选择这个岗位,工作时看中的是什么,对岗位的预期是什么。
  • 为什么要投青云计划,青云计划面向博士生,大概率不过。后面说硕士的投递还是当作正式的一批投递来看待。
  • 问了一下项目,说了一下 ViT 的三个方向。
  • ViT 的结构是什么(只能简单画了一下,因为忘记了,复盘来看其实画的差不多)
  • 你的方法有什么优势,是在同等条件下实验的吗?(同等条件,是一个训练时间和准确率的 trade-off)
  • Batchnorm 有了解过吗
  • Softmax 和 Batchnorm 选一个写出计算公式(选了 Softmax),用代码实现一下。(用C++写了一个)
  • 如何解决 Softmax 中最大数字过大导致数值不稳定的问题(将所有的数字减去最大值,结果不会改变)
  • 算法题,找出 100w 个数字中出现频次最多的 K 个数字,要求复杂度平均 \(O(n)\)。(unordered_map + 快速选择前 \(k\) 大)

三面:

  • 全程介绍简历

HR 面:

  • 介绍一下自己
  • 对这个岗位了了解是什么
  • 看重工作的什么方面

字节推荐算法

一面:

  • 先做一个题,手撕表达式计算
  • ViT 项目里,CNN 主要用的什么模型,你对 SOTA 有了解吗
  • ViT 和 Transformer 的区别(原始数据不同)
  • 介绍一下 Transformer 的 encoder 和 decoder 相关的结构吗(之后得复习一下)
  • Transformer 的位置信息是相对信息还是绝对信息?为什么又有 sin 又有 cos。(没答上来)
  • Batchnorm 是什么,里面是怎么运作的?可学习参数分别是什么?有什么作用?(一个偏移量一个 scale,可以将数据平移,防止负数部分被 relu 删掉,面试官说这样理解也可以)
  • Batchnorm 在预测阶段做什么?归一化使用的均值和方差是什么数据的?怎么计算出来?(回答训练集全集,计算方式是移动平均)
  • 了解 Dropout 吗?预测的时候 Dropout 起不起作用?训练的时候如果有 ⅓ 都 drop 掉了,那么数字不是会变得更小,这个要怎么解决?(回答是加上一个数字,面试官说正确做法是乘一个 scale)
  • 拷打论文原理.
  • (我说第二篇论文考虑将这个模块搬到推荐系统中时)面试官说我的第二篇工作可能有些困难,因为推荐系统领域的 embedding 原理可能不一样。
  • 你怎么理解推荐系统?你有接触过工业界正在运转的推荐系统吗?(没接触过,之后得多补补推荐系统相关论文)
  • 了解大数据吗?(不了解)
  • 你了解 Git 吗?Git 和 Github 的区别是怎么理解的?
  • 怎么理解 C++ 的封装、继承、多态?

二面:

  • 介绍论文
  • 论文拷打
  • 你知道 AUC 吗(不知道)
  • 我看你的简历里面提到了 GBDT,你能介绍一下 GBDT 吗?GBDT 如何处理分类问题(没答上来)
  • 如果在 train 一个网络的时候,loss 不下降,你会排查哪里的原因?(学习率可能太大了)
  • 你了解过什么推荐系统的算法吗?(没了解过)
  • 介绍一下你的项目(ViT 项目)
  • 写一下 multi-head attention 的代码实现
  • 做题:给一个字符串,内只包含数字,求问是否可以将字符串划分为一个序列,序列中每一个数字等于前两个数字的和,除了第一个第二个数字忽略。(写了一个 n3 的暴力判断)
  • 反问:您觉得我需要提升哪些方面的能力。(简历里面写的东西一定要知根知底,不然就是扣分项[指 GBDT]。需要学习一些机器学习基础,例如 AUC 这类很常用的评分指标)

三面:

  • 自我介绍
  • 介绍项目
  • 你知道 AUC 了吗?(又问了一遍)
  • 在采样后的样本上做 AUC 和原样本中做 AUC 有可比性吗?(有可比性)
  • 你知道 AUC 的计算是怎么算的吗?(回答是积分,下面积)
  • 如何理解 AUC?(可以理解为随机抽两个样本,正样本排在负样本前的概率)
  • 如果在 train 一个网络的时候,loss 不下降,你会排查哪里的原因?(又问了一遍x2)(可能是梯度问题,学习率问题,网络问题,如果排查后仍然有问题,会考虑顺着梯度查找)
  • Transformer 为什么要除以根号 dk?(防止值过大导致的 softmax 之后其余值变得很小)
  • 做一个题(忘了是什么题了,很简单)
  • 你的职业规划是什么?
  • 你有什么优点和缺点?(学习能力强,抗压能力强。 缺点是缺少正反馈会效率--,用博客 argue 了两者之间的冲突)

HR 面:

  • 很急,面试官简单介绍了一下流程,包括什么时候开奖,以及进公司后会接受培训等流程再决定具体工作。
  • 反问加班情况(面试官表示加班比较严重,感觉上如果我不接受加班的话就不要了)

B 站大模型

一面:

  • 自我介绍
  • 是否接触过大模型相关的实际工程(没有)
  • 你对大模型有哪些了解(了解 Transformer,大模型的基础)
  • 为什么 self-attention 要除以根号 dk(防止某些值过大导致其他的 softmax 很小)
  • 简单讲一下你的论文
  • 你的论文在学习距离这里,相当于计算 embedding 的相似度,是否可以理解为你再算...(没记住,不是问题,是面试官的理解)
  • 写一下 self-attention 的代码
  • 反问:在做什么(对标开源的大模型)

二面;

10 分钟结束

  • 自我介绍
  • 是否有做过大模型,学习大模型相关知识(没有)
  • 介绍一下实习经历
  • 做个题

三面:

  • 自我介绍
  • 现在对大模型有什么了解了(下载了 Ollama, 玩了一下,看了看论文,看到了数据清洗)
  • 你的论文是怎么做的(简单讲了一下)
  • 讲项目

网易雷火

交叉面,一面二面

一面:

  • 自我介绍
  • 介绍论文
  • 你的项目是怎么样的?实际应用到工业界了吗?(不知道)
  • 做选择填空:一个由 4000 个边的图至少有多少点,访问内网域名用到了哪些网络服务,哪些排序算法是稳定的,看程序说话(主要是C++ 不同类型的指针在 char 数组中移动的距离)
  • C++ 空 class 的 size 是多少
  • C++ 如果继承了一个类,然后为空,size 是多少
  • 说一下 vector, map, unordered_map 的原理和不同
  • 如果我获取了 vector 的 begin,然后给 vector 插入元素,这个 begin 是否是危险的?(危险的)
  • 那么 map 和 unordered_map 呢?(回答不危险,但在 unordered_map 中应该是危险的,因为这个数据结构内部使用了 vector 和链表来储存元素和处理冲突)
  • 一个二维数组,顺序访问第一维和第二维的效率是否一致?(不一致,访问第二维的时候更容易命中 Cache)
  • 如果说一个二维数组,这个二维数组在某个大小下的时候访问顺序访问第一维和第二维一样快,在 13700K CPU 上这个大小是多少?为什么会出现这样的事情?(第一个没有回答上来,因为对现有的 CPU 缓存大小没有概念。第二个问题回答是:因为这个二维数组可以被完全装入 Cache 中,所以无论怎么访问都可以命中)
  • 情景题:现在开发一个赛车游戏,赛车的车道是不规则的,终点一定在车道上,那么你要怎么在赛车可能冲出赛道的情况下依然给出他们的排名?
  • 情景题:现在在一个游戏中,一个技能的范围是自身周围的那些人,你要怎么找到附近的人?(回答是将区域分块,每次查找周围块内有哪些人,然后再进行判断)
  • 情景题:假设你正在实现一个 AI 算法,需要你在一个点周围一定范围内画一个圆,使这个圆包含尽可能多的点。

最后一个情景题没有给出满意的回答,搜索了一下,一个高效的算法是“ Welzl's algorithm”,这是一种随机化的算法,可以在期望的常数时间内找到这样的圆。

二面:

面试官不友好

  • 自我介绍
  • 有参与过开源项目吗(没有)
  • 智商题,有 11 瓶水,有一瓶有毒,小白鼠喝有毒的水一个小时后会死,问几只小白鼠可以测出来有毒的水。(四只)

后面不想写了,面试官很不友好,说到后面直接跟面试官说不面了。终止

评论