字节 AI Lab 高性能异构计算 实习面经
三轮技术面,三个面试官都非常和善,之后应该是 hr 面了。总体来讲一面比较八股,中规中矩;二面更多是模型效率优化相关问题;三面项目问得很深入,基础知识也比较难。
一面:20 分钟项目介绍,20 分钟基础知识,20 分钟代码题
- 项目介绍
- 关于 Efficient Transformer 的 E.&A. 论文
- 基础知识
- cache 每一个 chache line 包含 3 个部分, 分别是什么作用?
- 多级 cache 的原因
- cache miss 之后的流程
- 页表机制带来的开销以及如何缓解
- 页表的好处
- C++ 重载机制以及如何实现的
- 介绍一下 C++ 中的原子操作以及引入的原因
- 代码题
- 本质上是 DAG 的拓扑排序:因为我没看懂输出所以换了一道
- 棋盘第一行到最后一行是否连通;easy:dfs,AC
二面:40 分钟项目介绍 + 项目引申出来的问题(包含一些基础知识),20 分钟代码题
- 项目介绍
- 关于 Efficient Transformer 的 E.&A. 论文
- 基础知识
- Sparse Attention 的 python kernel 实现
- 大模型的分布式训练中的并行方式
- 如何应对模型训练和推理中过高的内存占用问题:稀疏化、gradient checkpoint、量化推理/混合精度训练、模型压缩(teacher forced learning)
- GPU 并行计算相关代码实现
- 代码题
- 给我定义好了完整的 Graph 类,实现拓扑排序函数;mid:刚开始打算队列 + `vis` 数组,经提示 DAG 不是树后想到考虑节点入度,AC
三面:40 分钟项目介绍 + 项目中技术应用在企业项目中有效性的探讨,15 分钟基础知识,15 分钟代码题,20 分钟讨论企业项目的初步想法
- 项目介绍
- 关于 Efficient Transformer 的 E.&A. 论文
- 一种新提出的 Sparse Attention 机制
- 项目讨论
- Efficient Attention、MoE、分布式训练等技术应用在企业项目中的有效性
- 基础知识
- C++ 多态机制,虚函数表中函数地址何时确定,对象的虚表指针的值在何时确定:感觉面试官想把虚函数表相关机制问得很彻底,需要深入了解
- C++ 中 `vector` 如何实现内存释放:个人理解是使用 `vector` 临时变量的 `swap` 函数把待释放的 `vector<T>` 对象 `myVector` 与之进行交换,再利用临时对象结束生命周期时自动调用析构函数来实现已申请内存的释放,即 `std::vector<T>().swap(myVector);`
- 实现一个数据结构,包含栈的所有操作,并需要在 $O(1)$ 时间内获取最小值:这个题回答完以后面试官觉得约束太少了,导致比较容易实现,但是我不知道他希望搞多复杂
- 代码题
- 下一个全排列 LeetCode 31;mid:提出想法以后,面试官指出一个错误的 case,完善后 AC
#我的实习求职记录#