影石嵌入式面经
最近影石秋招真的让我情绪反复横跳。原本已经决定放弃这家公司,但随着薪资不断上调,又让我重新燃起了冲一把的想法。整个面试过程下来,最大的感受就是——面试强度很高,几乎是全方位拷打,从项目细节到底层原理,没有任何水分。
一面主要围绕项目深挖和工程能力展开,尤其是嵌入式系统、通信协议以及AI推理优化,细节问得非常深入,比如传感器数据处理、I2C/SPI底层机制,以及模型推理和性能优化等内容,基本每个点都能继续往下追问。
二面则更偏向基础和底层能力考察,包括C/C++语言本身、数据结构、内存模型,以及一些算法思路,同时也会结合项目继续深入,比如推理框架优化、SIMD加速等,整体更考察理解深度而不是表面知识。
整体来看,这一套面试非常典型:一面看工程经验和实战能力,二面看基础功底和底层理解。如果项目不扎实或者基础不牢,很容易被连续追问卡住。
一面面经(80分钟)
- MPU6050与MCU之间使用什么接口通信?
- I2C配置的速度是多少?
- MPU6050陀螺仪的采样周期是多少?
- 每次读取的数据量有多大?需要读取哪些数据?
- 是否按固定周期读取并立即计算?流程如何?
- 算法计算耗时多久?性能是否够用?
- 系统调度周期是多少?
- MPU6050零漂、温漂如何补偿?
- 校准时有什么姿态或动作要求?
- 从寄存器0x04读取10字节流程?
- 最后一个字节如何响应?
- I2C异常如何排查?
- I2C总线被拉低如何恢复?
- I2C仲裁机制是什么?
- SPI有几根线?作用是什么?
- CPOL/CPHA是什么?
- 如何确定SPI工作模式?
- 为什么选择MNN?对比过哪些框架?
- 模型从训练到端侧推理流程?
- INT8和FP16优化效果如何?
- 常用C++特性有哪些?
- shared_ptr和裸指针区别?
- shared_ptr和unique_ptr区别?
- unique_ptr能否作为返回值?
- unique_ptr如何转移所有权?
- vector扩容原理?
- 如何避免vector扩容
- 虚函数和纯虚函数是什么?
- 析构函数不为virtual有什么问题?
- CPU三级缓存特点?
- cache hit和cache miss是什么?
- 为什么某些数据布局减少cache miss?
- cache line是什么?
- CPU调度方式有哪些?
- 算力峰值如何估算?
- 指令周期是什么?
- 流水线是什么?
- 引用传参有什么好处?
- 如何兼顾效率和不修改数据?
二面
- 堆和栈的区别?
- 如何读取物理地址0x20000的数据?
- const和volatile的作用?
- static和inline作用?
- sizeof(int a[10])是多少?
- C文件到可执行文件经历哪些步骤?
- #define有哪些注意事项?
- JNI中对象引用类型有哪些?
- lambda表达式的本质是什么?
- 引用和指针的区别?
- new和malloc的区别?
- set和unordered_map区别?
- MNN的优化策略有哪些?
- 双线性插值权重如何计算?
- 仿射变换如何用NEON加速?
- ax+b如何向量化加速?
- HWC、CHW、NC4HW4区别?
- 通道为4时HWC和NC4HW4是否一样?
- 卷积多通道计算过程?
- 剪枝做了什么?还有哪些方法?
- NPU算力如何评估?
- 红黑树和完全平衡二叉树区别?
- 海量数据中找最大的100个元素(多种方法)
总结 📝
希望这些内容能帮助到准备招聘的你们!祝大家都能顺利通过面试,找到理想的工作!
嵌入式软件工程师面试完全指南
面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,3300+订阅,非常适合在找工作面经薄弱的同学,销量即是口碑,提前订阅提前享受,持续更新中。
原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

查看5道真题和解析