面灵AI→

中兴嵌入式一面:RTOS 内存、信号量与互斥锁、实时性

轮次
一面
时间
2026-10
来源
牛客网

《面试题目》

  1. 做一下自我介绍(2 分钟)。
  2. 在学校担任班干部都做些什么?
  3. 做项目中有冲突怎么解决?
  4. 通信方向,调制解调、通信制式简单介绍?
  5. RTOS 的内存管理方式有哪些?
  6. 如果点亮一个灯,你会用到哪些东西?最少需要哪些?
  7. 二值信号量和互斥锁有什么区别?
  8. 消息队列是干什么的?
  9. 5G 和卫星通信的区别?
  10. 什么叫实时性?
  11. 你怎么确定它的实时性更好?
  12. 互斥锁的特点是什么?
  13. 电器属性(嵌入式角度)指什么?
  14. 什么是优先级翻转?互斥锁如何缓解?
  15. 什么是任务抖动?哪些因素会造成任务抖动?
  16. 裸机程序里,长时间关中断会带来什么问题?
  17. 为什么选择中兴?对通信嵌入式岗位怎么理解?
  18. 反问。

《参考解析》

RTOS 内存管理:静态分配(编译期内存池,无碎片、时间确定,工业场景首选)、动态堆管理(FreeRTOS 的 heap1~heap5:只申请不释放、简单链表、封装 malloc/free、最佳适配、支持多块内存合并)、以及 TLSF 这类 O(1) 分配器。核心矛盾是「分配时间确定性」和「碎片」,高可靠场景优先静态或固定块内存池。

二值信号量 vs 互斥锁:信号量用于同步(中断通知任务、事件触发),没有所有权,任何任务都能释放,可能优先级翻转;互斥锁用于保护共享资源,谁加锁谁解锁,带优先级继承,不能用于中断。优先级翻转的解法就是优先级继承:持锁的低优先级任务临时提升到等待者的最高优先级,释放后恢复。

实时性:实时不是「快」,而是「最坏情况下也能在截止时间内完成」。硬实时超时会出事故,软实时允许偶尔超时。评估指标:最坏响应时间、中断延迟、调度抖动、上下文切换时间。测法是用 GPIO 翻转 + 示波器、或高精度计时器记录从事件到任务执行的最大延迟。

任务抖动:任务实际触发间隔的波动。来源包括中断抢占、高优先级任务、关中断时间、内存分配、cache/总线竞争。降低手段:缩短临界区、用静态内存、固定优先级、减少不必要的抢占。

长时间关中断:中断会被挂起甚至丢失,外设数据采集延迟,严重时丢包或系统失控;工程上要求临界区尽可能短,必要时用中断嵌套或把耗时操作放到任务里。