汇川技术 - 嵌入式软件工程师 - 面经(1)
-1、背景岗位:
【25提前批-联合动力】嵌入式软件工程师
工作职责:
[*]硕士及以上学历,自动化、计算机、电气工程及其自动化等专业等相关专业;
[*]有嵌入式软件编程经验,熟练掌握C/C++,有simulink应用、芯片驱动设计等开发经验者优先。
[*]工作严谨细致,有责任心,有良好沟通能力,具备团队合作精神。
任职资格:
[*]负责新能源汽车相关产品软件开发,汽车电子嵌入式软件设计、开发与测试工作
[*]负责基于ARM、DSP等单板控制器的软件开发
[*]负责软件功能的需求分析、设计及代码开发
[*]协助解决产品市场问题、技术难点等。
时间线:
0705(投递) -> 0705(测评) -> 0729(一面)-> ❌
0、笔试
提前批无笔试
1、面经汇总
一
[*]介绍整体项目?
[*]XXX 是怎么运行的?
[*]有没有做验证, 怎么知道 APP 有没有生效,损坏?
[*]固件头包含什么信息?
[*]介绍一下这几个 MCU 里用过的外设?
[*]团队和个人工作的区别是什么?
[*]更喜欢团队工作还是个人?
二
汇川联合动力一面,总时长不到 20min
[*]自我介绍
[*]聊了聊科研项目
[*]本科基础课(数模电,自动控制现代控制)
[*]简单的 C++ 基础提问
[*]TCP/IP 简单介绍
三
飞书视频会议 全程 25 分钟左右
[*]自我介绍
[*]手撕:兔子生兔子问题
[*]实习相关内容
[*]手撕汇编:十个数重新排列(写了 3 行面试官说可以了挺好的)
[*]反问
[*]公司作息时间?
[*]西安岗位的情况?
[*]几个城市的具体方向划分有没有区别?
四
总体难度不难,主要围绕项目,有少量八股,压力不大,全程半个小时
[*]自我介绍
[*]介绍项目
[*]问了项目中的 C 语言高级用法,如函数指针、指针函数
[*]闲聊
五
嵌入式软件工程师
[*]自我介绍
[*]项目相关问题
[*]结构体字节对齐问题
[*]CAN 总线的仲裁机制,优先级问题
[*]讲讲 FreeRTOS(任务调度,优先级机制)
[*]队列和栈的区别
[*]手撕代码:猴子吃桃
六
嵌入式软件工程师(西安)
0812(投递) -> 0824(一面)-> 0828(一面通过)-> 0910(线下二三面)
[*]自我介绍
[*]项目介绍
[*]变换器控制环是不是自己写的,介绍下思路?
[*]前馈解耦控制中包含电网电压项吗,如果不加电网电压项会有什么影响?
[*]中断频率设置的是多少?怎么优化中断服务函数执行速度?
[*]F28335 中 int 类型占几个字节?
[*]多进程操作需要注意哪些问题?临界资源有哪些?
[*]局部变量与全局变量的存储位置分别是什么?
[*]静态全局变量赋初值和不赋值有什么区别?
[*]反问环节
[*]嵌入式工作方向?(分为两个,DSP 控制算法或者偏底层车机系统)
[*]面试一共会有几轮?(三轮)
七
[*]自我介绍
[*]项目介绍(只问了智能车比赛)
[*]比赛难度?
[*]获奖情况?
[*]电感采集?
[*]说说采样频率,单片机如何采集到信息的?
[*]手撕字符串反转:“abcdefg -> gfedcba”?
[*]为什么用静态函数?什么地方用?
[*]反问
[*]入职有学习期吗?
八
30mins
[*]自我介绍
[*]实习项目拷打(相关度较高)
[*]介绍 C++ 多态?
[*]C++ static 作用?
[*]介绍 C++ 堆栈?
[*]函数的行参为什么不放在寄存器,要放在栈里?
[*]反问
九
0809(投递) -> 0809(测评) -> 0908(一面)
[*]项目介绍
[*]Windows 操作系统和 SYS/BIOS 的区别?
[*]Linux 系统、计算机网络了解吗?
[*]怎么看待将你临时借调到其他部门?
[*]项目中遇到的困难?
十
[*]volatile 的作用?
[*]选择题:数组指针
[*]代码题:联合体
十一
[*]讲一讲 UART/I2C/SPI/CAN的区别?
[*]用过哪些 I2C 器件?
[*]有硬件设计经验?你做过什么?
[*]学过 PLC?用过哪些 PLC? 梯形图和 ST 都熟悉?
[*]你知不知道汇川是做什么的?)
[*]项目相关
[*]反问
[*]一面多久出结果?
2、一面(30min)- 20240729
[*]C 语言编译的过程
预处理 -> 编译 -> 汇编 -> 链接
[*]*p++ 和 (*p)++ 区别
*p++ 返回指针 p 指向的元素值,指针 p 指向下一个元素,地址++
(*p)++ 返回指针 p 指向的元素值,并将该元素值加一,值++
[*]编程题(三道题均为真题,但面试只会手撕一道)
有 1、2、3、4 四个数字,用 C 语言编程计算能组合出多少个不重复的三位数,并输出各个数
#include int main() { int count = 0; for (int i = 1; i
页:
[1]