MiniMax 算法工程研发工程师 凉经
timeline:
- 07-27 投递
- 08-13 一面
- 08-25 二面
- 08-28 三面
- 09-01 hr面挂
一面
55m,面试官没开摄像头
- 面试官自我介绍
- 自我介绍
- 实习介绍
- 手撕:在矩阵的对角线方向上进行 z 字形的元素填充
- 讲讲 IO 多路复用
- 项目背景
- 与标准库的差异
- 实习中有用到吗
- 反问
二面
50m,leader 面
- 自我介绍
- 项目介绍(15m)
- 大型项目中数组越界写入怎么排查
- ASan 实现原理
- 打日志的性能开销一般多大,什么数量级,瓶颈在哪,怎么优化
- 手撕:大数乘法
- 反问
三面
55m,面试官迟到 15m,面试期间断断续续有事,总耗时 1h20m
- 面试官自我介绍
- 自我介绍
- 讲讲几种智能指针
- 智能指针可能带来哪些性能问题(函数调用、缓存命中、共享指针和弱指针的计数开销)
- 智能指针和裸指针的性能区别(独占指针基本无异,另外两个会有一些差异)
- 通过 std::make_shared 创建共享指针和通过构造函数创建共享指针的区别
- 内存分配
- 异常安全
- 空类有哪些成员函数
- 怎样才能调到移动构造
- 左值右值
- 如果移动构造函数不是 noexcept 的会怎么样
- 浮点数相加的顺序会影响结果吗
- 数量级相差较大的浮点数相加,会有较大的舍入误差
- 讲讲 CRTP 和 SFINAE
- 矩阵乘优化思路
- 说说你对算子优化的理解(LLM 分为训练和推理,都是做各种计算,算子就是计算图的组成元素,算子优化分为优化算子本身和优化计算图流程)
- 讲讲互斥锁和自旋锁
- 自旋锁一般怎么实现(CAS)
- 讲讲 C++ 内存序
- C++ 内存序控制的是 CPU 乱序执行还是编译器指令重排
- 讲讲进程间通信的几种方式
- 项目介绍
- 反问
- 工作内容:算子优化
- 技术栈:C++ 和 CUDA,还有一些 Python
- 能力要求:面试官肯定了我的 C++ 水平,说在 CUDA 方面要有一些实践
hr面
20m
- 面试官自我介绍
- 考虑读研吗
- 实习是在哪个城市
- 是哪里人
- 实习收获
- 两段实习的差异
- 更喜欢哪种
- 在看哪些机会
- 工作地点偏好
- 实习成长最快的是哪个时期
- 其他公司的流程到哪了
- 为什么投我们公司
- 前面的面试体验怎么样
- 面试官说后面会往 hpc 推进,前期主要在算子侧,主要写 cuda
- 可以提前实习吗
- 反问
莫名其妙 hr 面挂了,心累