影石嵌入式一二面面经(偏AI推理/C++)
最近影石的秋招真的让我心态反复横跳。
本来已经打算放弃了,结果后面又被抬价,直接又燃起希望了😂
整体面试体验还是挺不错的,面试官都很强,问得也很深入,尤其是对项目和底层原理的考察非常细。
这里整理一下自己的面经,希望能帮到后面准备秋招的同学。
一面:疯狂技术拷打(AI推理 + C++ + 体系结构)
一面的面试官绝对是技术大牛,问题密度非常高,几乎没停过。
AI推理 / MNN / 模型部署
- 为什么选择 MNN 推理框架?调研过其他框架吗?
- 模型从训练到端侧用 MNN 推理的完整流程是什么?
- int8 和 FP16 的性能提升明显吗?
- MNN 做了哪些优化?
- 双线性插值的 4 个点权重怎么计算?
- 仿射变换用了哪些 NEON 指令?
- ax+b 如何用向量化加速?会用什么 NEON 指令?
- HWC、CHW、NC4HW4 的区别是什么?
- 如果通道数刚好是 4,HWC 和 NC4HW4 是否等价?
- 卷积的计算过程是什么?
- 多输入通道、多输出通道是怎么计算的?
- 剪枝做了哪些工作?
- 是否了解稀疏化等其他剪枝方式?
- NPU 算力怎么看?如何估算?
C++ 基础
- 常用的 C++ 特性有哪些?
- shared_ptr 和裸指针相比有什么优势?
- shared_ptr 和 unique_ptr 的区别?
- 函数内部创建 unique_ptr 后作为返回值返回是否可以?
- 如何把 unique_ptrA 转移给 unique_ptrB?
- vector 的扩容机制是什么?
- 如果不希望动态分配内存,如何提前分配?
- 虚函数、纯虚函数是什么?
- 父类析构不加 virtual 会有什么问题?
- 引用传参有什么优势?
- 如何兼顾传参效率和“不允许修改”?
操作系统
- CPU 三级缓存的特点是什么?
- 什么是 cache hit / cache miss?
- 为什么 NC4HW4 这种格式能减少 cache miss?
- CPU 从主存取数据时,以什么单位加载?
- 多进程并发有哪些调度策略?
- 峰值算力如何估算?
- 指令周期是什么?
- 什么是流水线?
二面:项目深挖 + 八股追杀
二面主要开始疯狂拷项目。
项目细节这里不方便展开,但会围绕:
- 为什么这么设计
- 有没有更优方案
- 为什么不用其他实现
- 性能瓶颈在哪里
- 实际优化收益是多少
会一直往深处问。
除此之外还有一些八股:
JNI / Java Native
- native 层对 Java 对象引用有哪些?
- JNI 的局部引用、全局引用区别?
C++
- 对 lambda 的理解
- 引用的本质是什么?和指针区别?
- set 和 unordered_map 的区别
- 红黑树和 AVL(完全平衡二叉树)的区别
- new 和 malloc 的区别
- 堆区和栈区区别
算法
海量数据中找最大的 100 个元素:
- 如何做?
- 至少说出三种方案
- 时间复杂度是多少?
整体感受
影石给我的感觉是:
真的很看重底层能力
不是只会调 API 就行。
尤其会关注:
- SIMD/NEON
- cache friendly
- 内存布局
- 推理优化
- C++对象模型
- CPU体系结构
这些东西。
很多问题都不是死背八股能解决的,需要真正理解。
整体来说,难度确实不低,但也能学到很多。
之前参考的一个指南比较好 有需要的同学可以看看
嵌入式软件工程师面试完全指南
把整个秋招攒下来的面经全整理在这里了,目前32篇 / 12w+字,持续更新中。
内容覆盖:C语言陷阱 / 计网高频 / 操作系统 / RTOS / Linux驱动 / 通信协议 / 硬件基础——基本你面试会被问到的,这里都有。
已经有 4.7w+ 同学在看,3300+ 订阅,数据放这,口碑自己说话。
适合面经基础薄弱、想系统梳理一遍的同学,后面只会越来越全。
https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
