大疆智能驾驶嵌入式软件工程师一面面经

面试时长:约50分钟

面试方式:视频面试

面试官:技术leader,看起来是做底层驱动和系统相关的

关于春招

今年春招从2月底就陆续开始了,大疆的智能驾驶部门招人需求还挺大的,主要是车载域控制器、传感器融合、实时系统这些方向。建议大家尽早投递,提前批的面试节奏会快一些,而且HC相对充足。

春招相比秋招竞争会小一些,但是对基础要求不低,尤其是嵌入式方向,既要懂软件也要懂硬件,准备起来内容比较多。

嵌入式方向如何准备

基础知识方面:

  • C语言要非常扎实,指针、内存管理、位操作这些必须熟练掌握
  • 操作系统重点看进程线程、内存管理、中断机制、调度算法
  • 数据结构和算法也要准备,虽然嵌入式考得相对少,但基本的链表、树、排序还是会问
  • 计算机组成原理和体系结构很重要,要理解CPU、Cache、总线、存储器这些硬件原理

嵌入式专业知识:

  • 熟悉至少一种MCU或SOC,比如STM32、ARM Cortex系列,了解其架构和外设
  • 掌握常见通信协议:UART、I2C、SPI、CAN等,知道它们的时序和应用场景
  • 了解RTOS的基本概念,最好实际用过FreeRTOS或RT-Thread
  • Linux驱动开发要有所了解,字符设备、块设备、网络设备的框架
  • 中断、DMA、定时器这些是高频考点,要深入理解原理

项目经验(重点):

  • 移植FreeRTOS到STM32F4平台,实现多任务调度和任务间通信,深入理解了任务切换、信号量、消息队列的底层实现机制,通过优化任务优先级和栈大小将系统响应时间降低了30%
  • 开发基于CAN总线的多节点通信系统,实现了自定义的应用层协议,处理了总线仲裁、错误检测、重传机制等问题,最终实现了99.9%的通信可靠性
  • 编写IMU传感器驱动程序,通过SPI接口读取陀螺仪和加速度计数据,使用DMA+双缓冲机制实现高速数据采集,采样率达到1kHz,并通过卡尔曼滤波算法进行数据融合
  • 实现了一个轻量级的内存池管理器,解决了频繁malloc/free导致的内存碎片问题,将内存利用率提升到95%以上,消除了内存分配失败的风险
  • 调试过一个复杂的中断优先级冲突问题,通过逻辑分析仪抓取信号时序,定位到是中断嵌套导致的栈溢出,最终通过调整中断优先级分组和增加栈空间解决
  • 使用Buildroot定制嵌入式Linux系统,裁剪内核模块,优化启动时间从15秒降到3秒,并交叉编译了应用程序和第三方库
  • 开发过字符设备驱动,实现了ioctl接口用于用户态和内核态的数据交互,理解了内核空间和用户空间的内存映射机制

学习资源推荐:

  • 《深入理解计算机系统》必看,理解底层原理
  • 《嵌入式Linux应用开发完全手册》适合入门
  • 看一些开源项目的代码,比如U-Boot、Linux内核驱动部分
  • 多逛逛嵌入式相关的论坛和博客,了解实际工程问题

整体感觉面试官比较nice,会根据你的回答深入追问,考察得比较细致。问题涵盖了C/C++基础、操作系统、嵌入式系统、实时性相关的内容,还有一些智能驾驶场景下的实际问题。

全网最全面的嵌入式八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

面试题目

  1. 介绍一下volatile关键字的作用,在嵌入式开发中什么场景下必须使用
  2. 说一下中断的处理流程,中断上下文和进程上下文有什么区别
  3. 什么是内存屏障,为什么需要内存屏障,在ARM架构下有哪些内存屏障指令
  4. DMA传输的原理是什么,使用DMA需要注意哪些问题
  5. 实时操作系统和Linux的区别,什么场景下需要使用RTOS
  6. 任务调度算法有哪些,抢占式调度和非抢占式调度的区别
  7. Cache一致性问题是什么,多核系统下如何保证Cache一致性
  8. 说一下大小端的概念,如何判断系统是大端还是小端,跨平台通信时如何处理字节序问题
  9. I2C和SPI通信协议的区别,分别适用于什么场景
  10. 看门狗的作用是什么,如何设计一个可靠的看门狗机制
  11. 在嵌入式系统中如何进行内存管理,如何避免内存碎片
  12. 说一下中断优先级和中断嵌套,如何设计合理的中断优先级
  13. 智能驾驶系统对实时性要求很高,如何保证关键任务的实时响应
  14. 如果传感器数据采集出现延迟或丢帧,你会从哪些方面排查问题
  15. 你在项目中遇到过哪些嵌入式系统的性能瓶颈,是如何优化的

个人感受: 题目比较贴近实际工作场景,不是纯粹考八股文,需要有实际的嵌入式开发经验。面试官会根据简历上的项目深入问,所以简历上写的东西一定要熟悉。整体难度适中,但考察面比较广,既有理论也有实践。建议多做一些底层相关的项目,了解硬件和软件的交互,这样回答问题会更有底气。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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