中兴嵌入式一面:RTOS 内存、信号量与互斥锁、实时性
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 做一下自我介绍(2 分钟)。
- 在学校担任班干部都做些什么?
- 做项目中有冲突怎么解决?
- 通信方向,调制解调、通信制式简单介绍?
- RTOS 的内存管理方式有哪些?
- 如果点亮一个灯,你会用到哪些东西?最少需要哪些?
- 二值信号量和互斥锁有什么区别?
- 消息队列是干什么的?
- 5G 和卫星通信的区别?
- 什么叫实时性?
- 你怎么确定它的实时性更好?
- 互斥锁的特点是什么?
- 电器属性(嵌入式角度)指什么?
- 什么是优先级翻转?互斥锁如何缓解?
- 什么是任务抖动?哪些因素会造成任务抖动?
- 裸机程序里,长时间关中断会带来什么问题?
- 为什么选择中兴?对通信嵌入式岗位怎么理解?
- 反问。
《参考解析》
RTOS 内存管理:静态分配(编译期内存池,无碎片、时间确定,工业场景首选)、动态堆管理(FreeRTOS 的 heap1~heap5:只申请不释放、简单链表、封装 malloc/free、最佳适配、支持多块内存合并)、以及 TLSF 这类 O(1) 分配器。核心矛盾是「分配时间确定性」和「碎片」,高可靠场景优先静态或固定块内存池。
二值信号量 vs 互斥锁:信号量用于同步(中断通知任务、事件触发),没有所有权,任何任务都能释放,可能优先级翻转;互斥锁用于保护共享资源,谁加锁谁解锁,带优先级继承,不能用于中断。优先级翻转的解法就是优先级继承:持锁的低优先级任务临时提升到等待者的最高优先级,释放后恢复。
实时性:实时不是「快」,而是「最坏情况下也能在截止时间内完成」。硬实时超时会出事故,软实时允许偶尔超时。评估指标:最坏响应时间、中断延迟、调度抖动、上下文切换时间。测法是用 GPIO 翻转 + 示波器、或高精度计时器记录从事件到任务执行的最大延迟。
任务抖动:任务实际触发间隔的波动。来源包括中断抢占、高优先级任务、关中断时间、内存分配、cache/总线竞争。降低手段:缩短临界区、用静态内存、固定优先级、减少不必要的抢占。
长时间关中断:中断会被挂起甚至丢失,外设数据采集延迟,严重时丢包或系统失控;工程上要求临界区尽可能短,必要时用中断嵌套或把耗时操作放到任务里。