CVTE 嵌入式软件一面
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 交叉编译在嵌入式 Linux 开发中为什么常见?工具链通常由哪些部分组成?
- RTOS 中任务、中断和临界区之间应该如何配合?
- Linux 设备树主要解决什么问题?
- Linux 和 MCU 裸机/RTOS 开发有什么区别?
- Linux 中进程和线程有什么区别?
- Linux 进程之间有哪些同步与通信方式?
- Linux 中用户空间和内核空间为什么要隔离?
- Linux 的启动过程是怎样的?
- U-Boot 的启动过程是怎样的?
《参考解析》
交叉编译是因为目标板算力和存储有限,开发机用 x86 工具链生成 ARM 等目标架构的可执行文件。工具链通常包括编译器、汇编器、链接器、C 库、头文件和调试工具,关键是 sysroot 和 ABI 要与目标系统匹配。
RTOS 中中断服务程序要短,尽量只做清标志、拷贝数据,把耗时处理放到任务;临界区要尽量小,避免在临界区内阻塞或调用可能睡眠的接口。设备树把硬件描述从内核代码中分离出来,解决同一内核支持多种板卡的问题。
Linux 启动大致经过 BootROM、U-Boot、内核解压与初始化、挂载根文件系统、启动 init/systemd。U-Boot 阶段负责基础硬件初始化、加载内核和设备树、传递启动参数。进程有独立地址空间,线程共享地址空间;IPC 包括管道、消息队列、共享内存、信号和 Socket,共享内存最快但要自己做同步。