面经

1、卓驭(大疆车载)- 软件开发实习生(MCU/RTOS/LINUX)

  1. 自我介绍;

  2. 验证一下项目真实性(项目背景、开发人员和分工);

  3. IIC和SPI的底层代码是自己手搓的吗?(是)

  4. IIC通讯和SPI通讯的区别;(速度IIC慢/SPI快、IIC半/SPI全双工、通信架构IIC总线多主多从/SPI点对点单主多从)

  5. BootLoader升级的流程;

  6. static关键字;(修饰变量、函数)

  7. 介绍一下函数指针和应用场景;(BootLoader跳转APP)

  8. 结构体变量的初始化方式(定义后逐个初始化、定义时按顺序初始化、定义时按指定成员初始化)

    1. // 1、定义后逐个初始化
      struct Point p3;
      p3.x = 30;
      p3.y = 40;
      
      // 2、定义时按顺序初始化
      struct Point p5 = {70, 80};
      
      // 3、定义时按指定成员初始化
      struct Point p6 = {.y = 90, .x = 100};
  9. 团队业务(智驾应用开发)和过往经历(单片机底层)不算很匹配,感兴趣吗?

  10. 了解卓驭科技吗?(成行智驾平台)

  11. 实习时间、入职时间、学校时间安排;

  12. 当前接触的公司和工作方向有哪些?

  13. 介绍公司,反问;

2、地平线 -  嵌入式开发实习生(上海)

一面
  1. 自我介绍;

  2. FreeRTOS的任务创建方法;(动态、静态)

  3. 宠物喂养机项目中有具体有哪些线程,它们的优先级是如何考虑的?(线下控制>MQTT连接>线上控制>OTA>数据上报)

  4. Linux了解吗?(确实不懂)

  5. IIC和SPI的区别;

  6. IIC一条总线上最多控制多少个设备?(7位从机地址最多控制2^7=128个设备)

  7. 外挂Flash的选型?(为方便开发选择了W25Q64)

  8. Flash的读写有什么区别?(只能由1写0,因此需要先擦再写,同时擦除和写入只能按块或按扇区操作,而读取可以按字节读)

  9. 有没有用到STM32内部的Flash存储参数?(没有用到,参数直接用外部EEPROM存了)

  10. 为什么不用内部Flash而采用外部EEPROM(EEPROM能够按字节任意读写,使用方便一些,内部Flash要擦除再写,而且只能按半字写入)

  11. 反问,聊了很多,面试官说组内有做车载以太网的,还反问我感不感兴趣,看起来比较满意。

总结:面试体验很不错,面试官很温文尔雅,每个回答都会有回应和肯定,不清楚的问题也会慢慢引导,尽管方向不是很契合,也有部分技术栈不熟悉,面试官还是让过了,约了二面。

二面
  1. 自我介绍;

  2. 问实习时间,地点,经济上是否有压力;

  3. 如果mentor非常忙没时间给予指导,怎么办?

    1. 回答:首先自己查找资料,集中时间向mentor咨询。

    2. 面试官给了更好的答案:主动上去询问mentor正在忙的活,看看有没有哪些能帮上忙的地方,给mentor减负的同时也能参与到更深入的工作中,能学到更多。

  4. FreeRTOS有多少个优先级;

  5. FreeRTOS是实时的还是非实时的;

  6. 介绍一下单片机中断的具体流程;

  7. 知道向量表吗?向量表里存的是什么?(中断处理程序的地址);

  8. 反问,具体介绍了所属部门和小组,介绍了具体的工作(具体的芯片、系统都说了,虽然我不懂hh);

总结:面试官是那种很有亲和力的技术大佬,看起来很有技术深度,但又非常亲切,全程笑容,说话提问也很轻松,还会反过来给我的答案建议,不只是考察面试者,还会给予指导,这点我非常佩服。

3、大疆创新

  1. 自我介绍

  2. 作为比赛项目的队长角色做了什么工作

  3. 哪个地方你觉得自己做的最好

  4. 有哪些值得改进的地方

  5. 技术方案上有哪些缺点

  6. 有具体测试过吗

  7. 印象最深的难点(bootloader跳转进入hardfault)

  8. 怎么解决的?(直接用内联汇编,或者inline展开)

  9. inline展开是在哪个阶段进行的(开始说编译,想了想应该是链接)

  10. 链接这个过程发生了什么?(只有笼统理解)

  11. FreeRTOS有哪些情况会发生任务调度

  12. 任务调度会保存哪些上下文

  13. 主动调度port_yield是怎么实现的

  14. 说一说PendSV中断

  15. 说一说信号量具体有哪些操作

  16. take信号量具体做了什么事情,如果take不到会发生什么(阻塞)

  17. 说一下阻塞的本质,实际上发生了什么(挂到阻塞链表)

  18. 在中断里能用take_semph吗(不能,要用FromISR后缀的,非阻塞接口)

  19. 为什么中断中不能阻塞?(时间不确定,中断里不允许)

  20. 还有别的原因吗?提示:在中断里阻塞之后,又被唤醒,会发生什么?(思考了一会,没想明白)

总结:问的非常深入非常细节,深入到源码的理解,必须细致系统读过FreeRTOS的源码才能知道,对技术抓的很深,一直问到完全答出所有细节或者不会,这也是大疆的特点了。但最后反问的时候说进去做Python工具开发的,没法接触产品,应该会拒了。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“星球”加入知识星球,有问必答。
点击“阅读原文”查看知识星球详情,欢迎点分享、收藏、点赞、在看。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐