大疆实习面经分享

面经

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工具开发的,没法接触产品,应该会拒了。

### 开发实习试经验总结 开发实习生的试通常会涉及多个方的考察,包括但不限于算法、数据结构、项目经历以及技术问答。以下是基于提供的引用内容以及其他专业知识整理的经验分享。 #### 一、算法与数据结构的重要性 在开发实习试中,算法和数据结构是最核心的部分之一。无论是大公司还是小企业,都会通过具体的编程题来评估候选人的逻辑思维能力和编码能力。例如,在百度的一次试中,候选人被要求解决经典的 `Two Sum` 和非递归遍历树的问题[^1]。这类问题不仅测试了对常见算法的理解程度,还考验了实际编写代码的能力。如果遇到困难,可以尝试向试官请求提示并展示自己的解题思路。 对于准备阶段而言,建议重点复习以下几个方: - 常见排序算法及其复杂度分析 (如快速排序 Quick Sort, 归并 Merge Sort)[^1] - 图论基础知识及应用案例(DFS/BFS traversal) - 动态规划 Dynamic Programming 的典型场景解析 ```python def two_sum(nums, target): num_to_index = {} for i, num in enumerate(nums): complement = target - num if complement in num_to_index: return [num_to_index[complement], i] num_to_index[num] = i return [] ``` 上述代码展示了如何实现 Two Sum 问题的一种解决方案。 #### 二、项目经历的作用 除了理论知识外,真实的项目经验同样至关重要。它能够体现一个人解决问题的实际能力以及团队协作精神。比如参加过某些竞赛或者完成特定功能模块的设计都可以成为亮点。然而需要注意的是,描述这些经历时要尽可能详尽具体,最好能覆盖到整个生命周期——从需求定义到最后交付成果为止。一位参与百度图像比赛的同学提到,“将我每一个比赛项目全部问了一遍”,这表明试官非常关注细节部分。 另外值得注意的是,即使拥有丰富的实践经验也不意味着一定能成功应对所有提问。正如另一位求职者所言:“有的项目做了好久了也就没怎么看好多细节都忘记了。” 这提醒我们平时就要注重积累文档资料以便随时查阅回顾[^3]。 #### 三、技术问答环节的表现策略 对各种形式的技术性询问,保持冷静自信的态度非常重要。当涉及到跨领域话题时也不要轻易放弃回答机会;可以通过阐述已知概念再逐步过渡至未知区域的方式展现学习潜力。例如某位应聘蚂蚁金服机器学习岗位的朋友虽然背景偏向于深度学习方向,但他依然积极回应关于传统统计学方法的应用价值等方的内容,并最终获得认可[^2]。 同时也要重视基础知识点牢固掌握与否所带来的影响。“由于年代久远,我都不记得了”这样的表述显然不利于争取更好的评价结果。所以定期温习操作系统原理、数据库管理系统等相关课程内容很有必要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式与Linux那些事

您的鼓励将使我写出更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值