汇川技术 嵌入式面经

8月24日投递

9月3日一面(30min)

自我介绍

介绍一下你的第一个项目吧

按照以下顺序展开:

先说了这个比赛的背景,然后介绍了这个比赛里面自己的开发工作。是大学生电动方程式赛车的比赛,对赛车做嵌入式MCU开发,采集所有传感器的数据,用到了两块MCU

然后说了一下里面用到的技术,包括中断,ADC,UART,IIC,SPI,CAN,无线通信协议(LoRa模块,4G模块),上位机,FreeRTOS(任务调度,消息队列,临界资源保护等)

最后讲了一下成果

对于MCU的选型为什么使用F4的STM32

主要是考虑到主频以及功耗,在赛车上不太需要考虑功耗,所以尽可能提高主频,这样能够提升实时性,当然也要考虑成本

项目里面用到了SPI进行两块MCU之间的通信,介绍一下SPI

经典八股,提前准备了,没问题

为什么使用SPI,有考虑过或者对比过别的协议吗

我希望的是两块MCU互通有无,因为赛场上瞬息万变,实时性非常重要。别的通信方式速度都太慢了,SPI可以在这两块MCU上跑到42Mbit/s的速度,算下来传输一个字节大概3μs左右,相当快(现场演算了一下)。因此对比别的通信协议都难以达到这个速率。这也回到了刚刚那个问题,为什么选用两块F4作为主控

那C语言里面指针用得多吗

还行,比较常用的数据类型,也是C的一个特色。讲了一下项目中使用指针的例子,用指针传递六轴传感器的数据到消息队列,防止错乱与丢失

结构体用得多吗

讲了一下项目里SPI传输数据的时候用的数据包用的就是结构体来打包,包含了帧头、传感器ID以及数据本体

那来聊一下另外一个企业的项目吧,上面写了你们用Git管理代码,你能说一下这个Git是干嘛的吗

将我们用Git协作开发的场景描述了一遍

介绍一下你项目里优化雷达滤波算法的工作

继续讲项目,主要就是自己做的工作,还有思考过程,以及最后的结果

其实这个项目不是实习,而是跟着老师做的项目,老师把我丢给了一个公司老板,相对来说比自己做的比赛或者别的项目要正规一点

问了一些简单的FreeRTOS的问题

反问

当场表示一面过了

9月8日二面(20min)

自我介绍

不要以技术为主,主要体现自己的人各方面的魅力,谦虚得来又要有自信

就那些 hr 常问问题,可以看看宝洁八大问,挑他爱听的讲就好了

二面结束后一个小时通知三面

9月10日三面(30min)

自我介绍

项目里面用到了 IIC,SPI,UART,CAN,简述一下之间的区别

分同步异步展开讲

然后逐个拆解异同点,时序等关键信息,清晰讲述就好,也是经典八股

在比赛里面用的CAN波特率是多少

250k

为什么用250k

结合整车器件的特性,兼顾稳定性和速率,例如电池的BMS和整车控制器ECU等。

还有就是往届有些代码我们也会使用,所以一直以来都在用250k,也就没改(但是其实这样答题很不好,千万不要这样说)

介绍一下C的结构体对齐

经典八股

好,技术我对你了解差不多了,你家里是哪的

如实说

后面还问了:个人发展规划等这些综合问题,看情况发挥会好了

反问

9月15日 offer待审核

9月17日 OC

还没谈薪

全部评论
base是哪里呀?
1
送花
回复
分享
发布于 2023-09-21 19:39 湖南
整个面试Timeline那么快吗
点赞
送花
回复
分享
发布于 2023-09-18 00:29 广东
蔚来
校招火热招聘中
官网直投
联合动力吗,还是集团啊,oc是收到offer邮件了吗
点赞
送花
回复
分享
发布于 2023-09-18 08:35 辽宁

相关推荐

头像 头像
05-13 21:44
已编辑
算法工程师
1. 如何确保函数在 `main` 函数之前执行?2. 为什么在C++中析构函数必须是虚函数?3. 为什么默认的析构函数不是虚函数?4. C++中析构函数的作用是什么?5. 为什么析构函数可以是虚函数而构造函数不能是虚函数?6. C++中静态函数和虚函数有何区别?7. 函数的默认参数在C++中是如何实现的?8. 什么是函数占位参数?9. 函数重载的满足条件是什么?有哪些注意事项?10. 虚函数表是如何实现多态的?其原理和作用是什么?11. C语言中的函数调用是如何进行的?12. 封装、继承和多态的概念分别是什么?13. 什么是深拷贝和浅拷贝?14. 什么是友元?15. 结构体和类在C++中有什么区别?默认的访问权限是不同的?16. 构造函数和析构函数的作用是什么?17. CPU、MPU、MCU、SOC、SPOC的区别是什么?18. 什么是交叉编译?为什么需要交叉编译?19. 基于RAM和基于ROM的嵌入式运行方式有什么区别?20. 哈弗结构和冯诺依曼结构分别是什么?21. ARM流水线技术是什么?22. ARM有多少32位寄存器?23. ARM指令集分为几类?24. ARM处理器有几种工作状态?25. 在ARM体系中函数调用时参数是如何传递的?26. 什么是锁相环?27. 中断和异常有何区别?28. 中断和DMA有什么区别?29. 中断的响应执行流程是什么?30. 中断和轮询的区别是什么?31. 如何统计一个整数的二进制表示中1的个数?32. 如何在不使用第三个变量的情况下交换两个变量的值?33. 给定一个整型变量a,如何设置a的第3位?如何清除a的第3位?34. 什么是虚函数?如何实现多态?35. 什么是纯虚函数?36. 在嵌入式系统中,如何确保函数在 `main` 函数之前执行?37. 为什么C++中析构函数必须是虚函数?38. 解释C++中析构函数的作用。39. 什么是函数占位参数?它有什么作用?40. 什么是ARM体系结构中的CPU、MPU、MCU、SOC和SPOC?答案整理到面经中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看39道真题和解析
点赞 评论 收藏
转发
27 116 评论
分享
牛客网
牛客企业服务