汇川联合动力 一面 面经 题目很常规不难

1. 自我介绍。

答:(根据个人情况作答,建议包含:教育背景、项目经历、技术栈、求职意向,控制在2分钟内)

2. 你在项目中有没有用过RTOS?讲一下任务调度的原理?

答:RTOS(实时操作系统)常见的有FreeRTOS、RT-Thread、uCOS等。任务调度核心原理:

  • 基于优先级的抢占式调度:高优先级任务就绪后,立即抢占当前运行的低优先级任务
  • 时间片轮转:相同优先级的任务按时间片轮流执行
  • 调度器维护就绪队列、阻塞队列、挂起队列,每次tick中断触发调度器选出最高优先级就绪任务运行
  • 上下文切换时保存当前任务的寄存器现场(PC、SP、通用寄存器等)到TCB(任务控制块),恢复目标任务的现场

3. 为什么嵌入式系统中频繁使用位操作?举例说明。

答:

  • 嵌入式系统直接操作硬件寄存器,寄存器的每一位往往控制不同功能
  • 位操作效率高,不需要读-改-写整个字节,节省内存和CPU周期
  • 常见操作:
// 置位第3位
reg |= (1 << 3);

// 清除第3位
reg &= ~(1 << 3);

// 翻转第3位
reg ^= (1 << 3);

// 检测第3位是否为1
if (reg & (1 << 3)) { ... }

4. const和#define有什么区别?在嵌入式中更推荐用哪个?

答:

类型检查

作用域

遵循C作用域规则

全局替换

调试

可见符号名

预处理后消失

存储

占用内存(可放flash)

不占内存,直接替换

指针操作

可以取地址

不可以

嵌入式中推荐用 const,原因:

  • 有类型安全检查,避免隐式类型错误
  • 编译器可以将const变量优化到ROM/Flash区域,节省RAM
  • 调试时符号可见,便于排查问题

5. 解释一下内存对齐,为什么需要内存对齐?

答:内存对齐是指数据存储的起始地址必须是其自身大小的整数倍。

原因:

  • CPU访问内存时,通常以固定字长(4字节或8字节)为单位读取
  • 如果数据跨越两个字长边界,CPU需要两次访问并拼接,效率低
  • 部分架构(如ARM Cortex-M0)不支持非对齐访问,会触发硬件异常

示例:

struct A {
    char a;   // 1字节,偏移0
    // 3字节padding
    int b;    // 4字节,偏移4
    char c;   // 1字节,偏移8
    // 3字节padding
};
// sizeof(A) = 12,而非6

可用 __attribute__((packed)) 取消对齐,但会降低访问效率。

6. 什么是DMA?它的工作原理是什么?在什么场景下使用?

答:DMA(Direct Memory Access,直接内存访问)是一种允许外设不经过CPU直接与内存交换数据的机制。

工作原理:

  1. CPU配置DMA控制器(源地址、目标地址、传输长度、传输方向)
  2. CPU启动DMA传输后可以去做其他事情
  3. DMA控制器独立完成数据搬运,占用总线
  4. 传输完成后通过中断通知CPU

使用场景:

  • UART/SPI/I2C大量数据收发
  • ADC连续采样数据搬运到内存
  • 内存到内存的大块数据拷贝
  • 音频/视频数据流传输

优点:释放CPU,提高系统吞吐量,降低中断频率。

7. 中

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式面试八股文全集 文章被收录于专栏

这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。

全部评论

相关推荐

牛客62533758...:华为不卡双非,而是卡院校hhhh
点赞 评论 收藏
分享
04-01 17:56
已编辑
西安交通大学 算法工程师
先说结论&nbsp;笔试后没收到面试&nbsp;不一定是你没过&nbsp;很可能是卡在了你不知道的环节我投了30家公司&nbsp;做了18场笔试&nbsp;最后收到面试的只有5家&nbsp;剩下的要么石沉大海&nbsp;要么过了两三周才突然被捞起来后来我复盘了这些数据&nbsp;也问了几个大厂的HR&nbsp;总结出笔试后没进度的三个真实原因第一个原因&nbsp;流程卡在中间环节没人推进很多公司的流程是这样的&nbsp;笔试过了之后&nbsp;系统状态会变成待安排面试&nbsp;但这一步需要HR手动去排期&nbsp;如果负责你这条线的HR手上积压的人太多&nbsp;你的状态就会一直挂在那里&nbsp;没人通知你&nbsp;也没人告诉你下一步是什么&nbsp;我那次查进度才发现&nbsp;笔试通过的状态已经挂了整整两周&nbsp;就是没人安排第二个原因&nbsp;笔试成绩没过硬到被优先处理大厂笔试通常是分批进行的&nbsp;每批做完之后会按分数排序&nbsp;排名靠前的会优先安排面试&nbsp;中段的会进入备选池&nbsp;排名靠后的直接发感谢信&nbsp;如果你进了备选池&nbsp;就要等前面的人面完或者放弃&nbsp;才有机会被捞起来&nbsp;这就是为什么有些人等了两三周才突然收到面试第三个原因&nbsp;你投的岗位已经招满了但流程没关这种情况在春招后期特别常见&nbsp;岗位HC已经没了&nbsp;但笔试通道还开着&nbsp;你做完笔试之后系统显示进行中&nbsp;实际上已经没有面试名额了&nbsp;要等前面有人拒了offer才会轮到后面的知道了原因&nbsp;怎么解决&nbsp;我试过三个方法&nbsp;确实管用第一个方法&nbsp;主动查进度&nbsp;不要干等做完笔试一周后如果没消息&nbsp;直接去找内推人查系统状态&nbsp;没有内推人的就去官网招聘页面看有没有联系方式&nbsp;或者去牛客上搜同公司同岗位的进度贴&nbsp;看看别人走到哪一步了&nbsp;很多时候不是你没过&nbsp;而是状态卡住了&nbsp;主动问一句就能知道下一步该等还是该换方向第二个方法&nbsp;笔试之前或之后顺手做一件事&nbsp;加上HR的联系方式有些公司在笔试通知邮件里会留HR的邮箱或者群二维码&nbsp;看到就加一下&nbsp;笔试结束后过几天主动问一句&nbsp;笔试结果出来了吗&nbsp;大概什么时候安排面试&nbsp;这样既显得你积极&nbsp;也能提前知道自己的进度&nbsp;比你一个人焦虑地刷邮箱强多了第三个方法&nbsp;同时投递&nbsp;不要把希望押在一两家公司上从我的数据也能看出来&nbsp;三十家公司最后只有五家在一周内给了面试&nbsp;另外还有两家是两周以后才通知的&nbsp;如果把希望全押在那几家公司上&nbsp;中间这两周的等待会非常煎熬&nbsp;多投一些&nbsp;让面试通知错开时间&nbsp;心态会稳很多&nbsp;收到面试的概率也更大最后总结一下&nbsp;笔试后没消息&nbsp;大概率是这三种情况&nbsp;流程卡住了&nbsp;成绩在备选池&nbsp;或者岗位没HC了&nbsp;对应的解决办法就是主动查进度&nbsp;加上HR联系方式&nbsp;以及多投递分散风险没有消息不一定是你不行&nbsp;很多时候只是流程慢或者信息没同步&nbsp;主动去问&nbsp;比一个人焦虑有用
做完笔试后你收到面试了吗...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务