从题目分布看,这不是单纯的“模型部署”面试,而是偏 嵌入式系统 + 视觉链路 + 端侧推理工程化 的复合岗位。
面试重点可以概括为四类:
结论很明确:
ONNX 转换、TensorRT/OpenVINO/RKNN、Docker 和服务封装,这类岗位只能答到一半mtvec、mstatus、mie、mip、mepc、mcause/proc/interrupts、perf、ftrace、trace-cmdMMAP、DMABUF、DMA 直接写入共享缓冲区mepc 记录返回地址、mcause 记录原因、mstatus 保存全局状态、mie/mip 控制和记录中断使能与挂起位,处理完成后通过 mret 返回。await/yield 这类点主动让出执行权,所以切换开销低,适合网络 I/O 和高并发任务。它的核心实现是保存当前执行上下文,然后由调度器在合适时机恢复另一个协程。MIPI CSI、I2C、SPI、UART、CAN 或 PCIe,说明哪些负责数据、哪些负责配置,最后强调系统瓶颈通常出现在采集带宽、内存搬运和推理调度。MMAP 或 DMABUFmmap 映射或 dmabuf 共享这个 buffer,而不是每次都从内核再 memcpy 到用户态。这样可以减少 CPU 拷贝和缓存开销,特别适合高帧率视频流。cProfile、perf 或打点方式找热点,再把计算密集或高频调用模块独立成 C++ 库。接口层可以用 pybind11、C API 或进程间通信。重构后要用相同输入对比输出一致性,再看 QPS、平均时延和 P99 时延,避免只是“换语言”但没有真正提速。Backbone + Neck + Detect Head。Backbone 负责提特征,常见是 CSP 结构;Neck 用 FPN/PAN 融合多尺度特征;Head 做分类、置信度和框回归。部署时除了主干结构,还要清楚输入预处理、anchor、NMS 和后处理位置,因为这些经常影响端侧性能。/proc/interrupts,再结合 watch、perf、ftrace、trace-cmd 观察中断分布和频率。如果是驱动开发场景,还可以在 ISR 中打点或做计数器统计。监控中断频率的目的不是看数字本身,而是定位抖动、风暴中断、性能瓶颈和丢帧问题。Jetson、Orin、地平线 还是自研硬件?这类岗位的回答方式,最好统一用下面这个结构:
例如回答 “C++ 怎么重构 Python” 时,不要只说“因为 C++ 快”。更好的回答方式是:
结合你当前简历和项目经历,如果你要准备这类岗位,优先级应该这样排:
C++17、CMake、多线程、锁与无锁队列Linux 调度、进程线程协程、性能分析V4L2、Camera Sensor、零拷贝、DMAPCIe、NPU、DDR、内存搬运路径YOLOv5/YOLOv8 架构与端侧部署流程TensorRT、OpenVINO、RKNN 的异同V4L2 + Camera + Zero-copy + DMA 补起来,这是当前简历里最弱的一段C++ 重构 Python 讲成完整项目故事,最好能拿出真实代码或性能对比YOLOv5、NPU 调度、多线程竞争 这三类题,准备成可以口述 2 分钟的标准答案这篇面经释放了一个很强的信号:
端侧 AI 部署工程师在很多公司里,本质上是“懂模型的嵌入式系统工程师”,而不是单纯的模型转换工程师。
如果你要针对这类岗位准备,核心不是继续堆更多模型名词,而是把下面四条补扎实:
本文作者:WarF
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!