蔚来 编译器开发 一面
两个面试官,轮番拷打,主要业务是异构部署、交叉编译。全程五十分钟。
围绕项目经历
- 介绍自己的项目,接受拷打
- 编译器结构
- LLVM是什么
- LLVM编译的流程
- LLVM IR是什么、结构怎么样
- 其他项目高相关的就不提了
场景题
- 假设有自己定义的函数Func1,用于某个特定芯片上的,不希望被编译器做任何优化,该如何编译出来?在编译层面有什么措施、代码层面有什么措施?(考虑用动态链接库或者修改编译器的前后端,但感觉面试官好像不太满意)
- 在链接的时候,编译器怎么把上述的Func1链接进去的?(结合动态链接原理吟唱)
- Func1的参数的数据怎么办(编译器代码生成部分的内容,往栈上推)
- Func1访问不了栈和寄存器,能否限制参数不往栈或寄存器上推?(往内存暂时存放),或者往缓存上放?(不晓得)
- Func1运行在一个芯片上,Func2在另一块芯片上,编译器整体该怎么设计?(就是说在一个机子上,异构编译出两个芯片上能跑的代码。emmm,前端设计个类似于extern C的语法,后端该怎么输出怎么输出,真的感觉在胡说)
- 你说用LLVM做,那你有没有考虑过LLVM有什么缺点?
其他
什么时候到岗?能做多久?Base深圳可以吗?
总结
4月16日下午面的,全程无八股无手撕但问得满头大汗,对于异构部署也不熟悉只能根据自己的认知瞎回答。第二天感谢信了。