面经
1、卓驭(大疆车载)- 软件开发实习生(MCU/RTOS/LINUX)
-
自我介绍;
-
验证一下项目真实性(项目背景、开发人员和分工);
-
IIC和SPI的底层代码是自己手搓的吗?(是)
-
IIC通讯和SPI通讯的区别;(速度IIC慢/SPI快、IIC半/SPI全双工、通信架构IIC总线多主多从/SPI点对点单主多从)
-
BootLoader升级的流程;
-
static关键字;(修饰变量、函数)
-
介绍一下函数指针和应用场景;(BootLoader跳转APP)
-
结构体变量的初始化方式(定义后逐个初始化、定义时按顺序初始化、定义时按指定成员初始化)
-
// 1、定义后逐个初始化 struct Point p3; p3.x = 30; p3.y = 40; // 2、定义时按顺序初始化 struct Point p5 = {70, 80}; // 3、定义时按指定成员初始化 struct Point p6 = {.y = 90, .x = 100};
-
-
团队业务(智驾应用开发)和过往经历(单片机底层)不算很匹配,感兴趣吗?
-
了解卓驭科技吗?(成行智驾平台)
-
实习时间、入职时间、学校时间安排;
-
当前接触的公司和工作方向有哪些?
-
介绍公司,反问;
2、地平线 - 嵌入式开发实习生(上海)
一面
- 自我介绍;
- FreeRTOS的任务创建方法;(动态、静态)
- 宠物喂养机项目中有具体有哪些线程,它们的优先级是如何考虑的?(线下控制>MQTT连接>线上控制>OTA>数据上报)
- Linux了解吗?(确实不懂)
- IIC和SPI的区别;
- IIC一条总线上最多控制多少个设备?(7位从机地址最多控制2^7=128个设备)
- 外挂Flash的选型?(为方便开发选择了W25Q64)
- Flash的读写有什么区别?(只能由1写0,因此需要先擦再写,同时擦除和写入只能按块或按扇区操作,而读取可以按字节读)
- 有没有用到STM32内部的Flash存储参数?(没有用到,参数直接用外部EEPROM存了)
- 为什么不用内部Flash而采用外部EEPROM(EEPROM能够按字节任意读写,使用方便一些,内部Flash要擦除再写,而且只能按半字写入)
- 反问,聊了很多,面试官说组内有做车载以太网的,还反问我感不感兴趣,看起来比较满意。
总结:面试体验很不错,面试官很温文尔雅,每个回答都会有回应和肯定,不清楚的问题也会慢慢引导,尽管方向不是很契合,也有部分技术栈不熟悉,面试官还是让过了,约了二面。
二面
- 自我介绍;
- 问实习时间,地点,经济上是否有压力;
- 如果mentor非常忙没时间给予指导,怎么办?
- 回答:首先自己查找资料,集中时间向mentor咨询。
- 面试官给了更好的答案:主动上去询问mentor正在忙的活,看看有没有哪些能帮上忙的地方,给mentor减负的同时也能参与到更深入的工作中,能学到更多。
- FreeRTOS有多少个优先级;
- FreeRTOS是实时的还是非实时的;
- 介绍一下单片机中断的具体流程;
- 知道向量表吗?向量表里存的是什么?(中断处理程序的地址);
- 反问,具体介绍了所属部门和小组,介绍了具体的工作(具体的芯片、系统都说了,虽然我不懂hh);
总结:面试官是那种很有亲和力的技术大佬,看起来很有技术深度,但又非常亲切,全程笑容,说话提问也很轻松,还会反过来给我的答案建议,不只是考察面试者,还会给予指导,这点我非常佩服。
3、大疆创新
- 自我介绍
- 作为比赛项目的队长角色做了什么工作
- 哪个地方你觉得自己做的最好
- 有哪些值得改进的地方
- 技术方案上有哪些缺点
- 有具体测试过吗
- 印象最深的难点(bootloader跳转进入hardfault)
- 怎么解决的?(直接用内联汇编,或者inline展开)
- inline展开是在哪个阶段进行的(开始说编译,想了想应该是链接)
- 链接这个过程发生了什么?(只有笼统理解)
- FreeRTOS有哪些情况会发生任务调度
- 任务调度会保存哪些上下文
- 主动调度port_yield是怎么实现的
- 说一说PendSV中断
- 说一说信号量具体有哪些操作
- take信号量具体做了什么事情,如果take不到会发生什么(阻塞)
- 说一下阻塞的本质,实际上发生了什么(挂到阻塞链表)
- 在中断里能用take_semph吗(不能,要用FromISR后缀的,非阻塞接口)
- 为什么中断中不能阻塞?(时间不确定,中断里不允许)
- 还有别的原因吗?提示:在中断里阻塞之后,又被唤醒,会发生什么?(思考了一会,没想明白)
总结:问的非常深入非常细节,深入到源码的理解,必须细致系统读过FreeRTOS的源码才能知道,对技术抓的很深,一直问到完全答出所有细节或者不会,这也是大疆的特点了。但最后反问的时候说进去做Python工具开发的,没法接触产品,应该会拒了。