小米嵌入式端侧模型部署|一二面
刚面完嵌入式音视频岗的两轮技术面,趁着印象还新鲜赶紧整理出来发上来。
一面(约 60 min)
一面节奏挺快的,面试官人还可以但是不放水,基本就是对着提纲一道一道往下问,C++、算法、系统三块轮着来,答完一题直接下一题,有几道会顺着追问细节。
题目如下:
JNI 中 LocalRef 和 GlobalRef 的生命周期管理差异?
C++17 的 std::optional 解决了哪些痛点?
std::function 和函数指针的性能差异及原因?
红黑树插入节点时的旋转规则是什么?
如何用最小堆实现 TopK 算法?时间复杂度是多少?
海量数据去重(100 亿级别)的三种实现方案?内存泄漏的检测手段(如 Valgrind 原理)?
嵌入式场景中如何平衡内存池设计与动态分配?
二面(约 75 min)
二面明显比一面深一个层级,面试官应该是做端侧推理或者底层优化的,问的问题都贼有针对性,能感觉到他在听你回答的过程中判断你到底是不是真的写过 kernel、调过算子。
中间有几道 SIMD 相关的题答得不太好,面试官还会顺着继续追问细节,压力挺大的。
题目如下:
为什么选择 TNN 推理框架?
对比过哪些其他端侧推理引擎?
模型部署时如何解决端侧算力不足的问题?
TNN 的算子融合策略有哪些?举例说明优化效果。半精度浮点(FP16)量化后模型精度损失如何评估?
模型蒸馏的具体实现步骤?
是否对比过蒸馏前后的推理速度?
如何评估一款 DSP 芯片的 MAC 算力(如 TOPS)?
双三次插值的 16 个点权重如何计算?用 NEON 实现图像旋转时如何避免内存对齐问题?
如何用 SIMD 指令优化矩阵乘加运算(如 y=ax+b)?
NHWC 和 NCHW 布局对卷积计算性能的影响是什么?
通道数为 3 时,能否用 NC4HW4 格式?
为什么?分组卷积(Group Convolution)的原理和优势是什么?
C++11 中的移动语义解决了什么问题?举例说明 std::move 的用途。传参时 const T& 和 T&& 的区别及适用场景?
weak_ptr 的使用场景是什么?如何避免循环引用?
vector 的 reserve 和 resize 有什么区别?
如何用 emplace_back 替代 push_back 提升容器性能?
多态的实现原理(虚函数表机制)?
析构函数抛异常会导致什么问题?如何避免?
CPU 的缓存一致性协议(如 MESI)是什么?
什么是伪共享(False Sharing)?
如何用 alignas 优化?
多线程下如何保证 std::unordered_map 的线程安全?
实时操作系统(如 FreeRTOS)的任务调度策略有哪些?如何通过流水线并行提升嵌入式系统的吞吐量?
写在最后
面试官比较专业也比较有耐心,问的都是货真价实的技术题,没有什么压力面或者奇怪的脑筋急转弯。
后续流程还在等通知,有 HR 面或者 offer 进展再回来更新。
冲冲冲,求各位兄弟点个赞攒攒人品
整个春招攒下来的面经,我都塞进这个专栏里了——目前 32 篇 / 12w+ 字,仍在持续更新。
内容基本覆盖了嵌入式岗会被问到的所有方向:C 语言陷阱 / 计网高频 / 操作系统 / RTOS / Linux 驱动 / 通信协议 / 硬件基础——你面试会被问到的,这里都有对应的题和思路。
目前 4.7w+ 同学在看,3300+ 订阅。数据摆这儿,口碑自己说话。
适合面经基础薄弱、想一次性系统梳理的同学。越早订越划算,内容只会越来越全,价格也只会越涨越高。
🔗 专栏直达:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
