面经
1、卓驭(大疆车载)- 软件开发实习生(MCU/RTOS/LINUX)
自我介绍;
验证一下项目真实性(项目背景、开发人员和分工);
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工具开发的,没法接触产品,应该会拒了。
扫码加我微信
进技术交流群
697