小鹏汽车嵌入式软件开发一面面经

最近整理了一下面小鹏嵌入式软件开发岗位的一面内容。整体感觉是,一面问得还是比较扎实,重点集中在嵌入式基础、RTOS、通信协议、内存、驱动理解和项目细节上。题目本身不算特别偏,但比较考验基础是否成体系,尤其是很多问题都可以顺着项目继续往下深挖,所以准备的时候不能只停留在背概念。

  1. 请先做一下自我介绍,并重点讲一个你最熟悉的嵌入式项目
  2. 你项目中的数据流是怎样的,从采集到处理再到发送,中间经过了哪些环节
  3. MCU 从上电到进入 main 函数,中间一般会经历哪些关键步骤
  4. 启动文件和链接脚本分别起什么作用,为什么嵌入式开发离不开它们
  5. 全局变量、局部变量、静态变量一般分布在哪些内存区域
  6. 栈和堆分别适合什么场景,在嵌入式里为什么很多项目会谨慎使用堆内存
  7. conststaticvolatile 这几个关键字在嵌入式里分别常用来做什么
  8. 如果一个变量会被中断和主循环同时访问,应该注意哪些问题
  9. 你怎么理解 RTOS,和裸机 super loop 相比,RTOS 的主要优势是什么
  10. 任务切换时到底切换了什么,所谓“上下文”通常包括哪些内容
  11. 消息队列、信号量、互斥锁分别适合解决什么问题
  12. 如果多个任务要共享同一份资源,怎样避免竞争和数据异常
  13. UART、CAN、SPI 这几种通信方式,各自更适合哪些典型场景
  14. 如果串口接收的数据存在丢包、错位或者半包问题,一般怎么处理
  15. DMA 的作用是什么,为什么它在串口接收、ADC 采样这些场景里很常见
  16. 看门狗的作用是什么,喂狗逻辑设计不合理会有什么问题
  17. 低功耗模式下,系统休眠和唤醒时通常要关注哪些内容
  18. 如果设备运行一段时间后偶发死机或重启,你会从哪些方向开始排查
  19. 你怎么理解驱动开发,驱动层和应用层之间为什么要做接口隔离
  20. 如果让你重新优化之前做过的项目,你会优先改哪些地方

准备嵌入式面试八股文我推荐这个专栏,真的很全面,很深入:

https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

整体总结下来,这场一面的风格还是很典型的嵌入式开发面试风格,不会特别偏算法,但会很关注基础是不是扎实、项目是不是自己真正做过、出了问题有没有排查思路。准备这类面试的时候,我自己的感受是,光刷题不太够,还是要把知识点和项目经历真正串起来。比如问到任务调度,不只是知道概念,还要能联系到自己项目里的任务划分、同步机制和资源竞争;问到串口、DMA、看门狗,也最好能结合实际场景去讲。

如果是准备这类岗位,我觉得比较有效的方法是先按专题把基础过一遍,比如内存布局、启动流程、RTOS、通信协议、驱动分层、异常排查这些,再回过头把自己的项目重新梳理成一条完整链路:做了什么、为什么这么设计、踩过什么坑、怎么解决的。这样到面试里,不管面试官从哪个点切进来,都比较容易接得住。

全部评论
感觉可以啊,看着
点赞 回复 分享
发布于 04-26 22:36 北京

相关推荐

评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务