宇树科技

嵌入式 AI 工程师一面、二面面经

完整信息

30 条问法 · 30 道题

本篇目录

感觉自己好菜、面试很难,还是要多多练习

投的是宇树机器人这块的嵌入式 AI 岗,base 杭州 做的是端侧模型部署。

两轮技术面,模型压缩和部署那块问得很细。

先说个整体感受:这岗是交叉的,纯搞算法的和纯搞嵌入式的进去都会有短板。

它不要求你会训模型,但要求你懂模型怎么在资源有限的板子上跑起来、跑得快、还不影响机器人本身的实时控制。

我嵌入式底子还行,AI 不够。

一面 技术面 约 55min

对着简历问,中间穿插基础,最后手撕。

先自我介绍,然后挑一个最有挑战的项目讲,我讲了个在板子上跑视觉模型的项目,问了十几分钟,

主要问模型多大、推理多久一帧、内存占多少、怎么压下来的。

  • volatile 什么场景必须加,读寄存器和中断标志为什么要加
  • static 修饰局部、全局、函数分别啥效果
  • 结构体内存对齐,给了个结构体算大小,再问怎么重排省内存
  • 指针和数组的区别,函数传数组的时候实际传了什么
  • 堆和栈的区别,模型的权重和中间结果一般放哪
  • malloc 在嵌入式上有什么风险,内存碎片怎么产生的
  • 浮点和定点的区别,为什么模型量化要转定点
  • 大小端怎么判断,模型文件跨平台加载为什么要注意字节序
  • 进程和线程的区别,推理任务你会开线程还是单独进程
  • cache 是干嘛的,为什么访问内存的顺序会影响速度
  • 手撕:实现一个二维卷积的朴素版本,然后问怎么优化
  • 手撕追问:循环顺序换一下为什么会快,跟 cache 有什么关系

卷积那道我写出来了,但优化那部分只答了循环展开和减少重复计算,面试官提了 cache 局部性我才反应过来,答得有点被动。

一面整体不算难,主要是覆盖面广。

二面 技术面 约 1h15min

这轮我吃力得很。

  • 模型量化的原理是什么,int8 量化具体怎么把浮点映射过去的
  • 对称量化和非对称量化区别在哪,什么时候用哪个
  • 量化之后精度掉了,你会从哪几个方向找原因
  • 训练后量化和量化感知训练的区别,各自什么场景
  • 剪枝是怎么回事,结构化和非结构化剪枝在部署上差别大吗
  • 知识蒸馏大概怎么工作的
  • 算子融合是干嘛的,为什么能提速,一般融哪些层
  • 模型部署的完整流程讲一遍,从训练好的模型到板子上跑起来
  • ONNX 是干嘛的,为什么要有中间表示这一层
  • 推理框架你用过哪些,TensorRT 或者 TFLite 的大致工作流程
  • NPU 和 CPU、GPU 算矩阵有什么本质区别,为什么 NPU 效率高
  • 一个模型在板子上跑得慢,你怎么定位是算力瓶颈还是内存带宽瓶颈
  • 内存带宽为什么会成为瓶颈,怎么减少数据搬运
  • 零拷贝在推理链路里怎么做,图像从摄像头到模型输入这一路怎么优化
  • 推理任务和机器人的实时控制任务抢 CPU 怎么办,怎么保证控制不被饿死
  • 多个模型要在一块板子上跑,你怎么调度和分配资源

二面出来感觉一般,感觉有点挂的意思 整体情绪我比较紧张。

两面下来的体感

这岗最大的特点就是交叉 volatile、内存对齐、指针、内存碎片、cache 这些;

AI 那半边主要不是算法本身,是部署和优化——量化、剪枝、算子融合、推理框架、NPU、内存带宽,这些才是重点。

如果你是嵌入式出身,学学模型压缩和部署这条链(量化原理、ONNX、推理框架的工作流程、算子融合)

我自己就是嵌入式出身,底层那部分答的还行,AI 部署我学的时间太少了 ,后续二面挂了。

嵌入式那半边我是跟着牛客那个《嵌入式软件工程师面试完全指南》过的,像 volatile、内存对齐、指针、内存管理、cache 这些通用题里面基本都能对上

链接放这,按需自取:

<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fgw-c.nowcoder.com%2Fapi%2Fsparta%2Fjump%2Flink%3Flink%3Dhttps%253A%252F%252Fgw-c.nowcoder.com%252Fapi%252Fsparta%252Fjump%252Flink%253Flink%253Dhttps%25253A%25252F%25252Fgw-c.nowcoder.com%25252Fapi%25252Fsparta%25252Fjump%25252Flink%25253Flink%25253Dhttps%2525253A%2525252F%2525252Fwww.nowcoder.com%2525252Fcreation%2525252Fmanager%2525252FcolumnDetail%2525252FMJNwoM" target="_blank">https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM</a>

两面都走完了,后续二面挂了。这方向确实热,但交叉岗对两边的要求都不低半。

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
    结构体内存对齐,给了个结构体算大小,再问怎么重排省内存
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
    大小端怎么判断,模型文件跨平台加载为什么要注意字节序
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30

相关公司