岗位与流程
编译器/基础软件校招集中在芯片公司工具链团队、大厂编程语言与虚拟机团队、AI 框架编译器团队。流程与后端类似:笔试(算法+C++)→ 2~3 轮技术面 → HR 面,但技术面专业深度明显更高。
一面高频题(基础)
- 编译流程各阶段:词法/语法/语义分析、中间代码、优化、目标代码生成分别做什么?
- LLVM IR 的 SSA 形式是什么?phi 节点为什么存在?
- 常见优化:常量折叠、死代码消除、循环不变量外提、内联的收益与代价?
- 寄存器分配的图着色思路;活跃变量分析怎么做?
- C++ 深挖:虚函数表、模板实例化、移动语义——编译器岗的 C++ 题普遍比业务后端更细。
二面高频题(方向化)
- 工具链岗:交叉编译的流程?链接器做了什么?重定位与符号解析怎么理解?
- AI 编译器岗:算子融合为什么能提升性能?图层优化与算子层优化的分工?了解 MLIR 的 Dialect 设计吗?
- 虚拟机岗:解释执行与 JIT 的取舍、GC 基本算法。
简历与准备建议
- 最硬的证据是开源贡献:给 LLVM/MLIR/TVM 提一个被合入的小补丁,面试可反复展开。
- 教学项目也有效:ChibiCC/自制 Lox 解释器/一个 LLVM Pass,把「输入什么、变换什么、验证怎么做」讲成完整闭环。
- 准备一段汇编级性能分析经历:perf 定位热点 → 看生成代码 → 改写后收益量化。