面灵AI→

CVTE 嵌入式软件一面

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

《面试题目》

  1. 交叉编译在嵌入式 Linux 开发中为什么常见?工具链通常由哪些部分组成?
  2. RTOS 中任务、中断和临界区之间应该如何配合?
  3. Linux 设备树主要解决什么问题?
  4. Linux 和 MCU 裸机/RTOS 开发有什么区别?
  5. Linux 中进程和线程有什么区别?
  6. Linux 进程之间有哪些同步与通信方式?
  7. Linux 中用户空间和内核空间为什么要隔离?
  8. Linux 的启动过程是怎样的?
  9. U-Boot 的启动过程是怎样的?

《参考解析》

交叉编译是因为目标板算力和存储有限,开发机用 x86 工具链生成 ARM 等目标架构的可执行文件。工具链通常包括编译器、汇编器、链接器、C 库、头文件和调试工具,关键是 sysroot 和 ABI 要与目标系统匹配。

RTOS 中中断服务程序要短,尽量只做清标志、拷贝数据,把耗时处理放到任务;临界区要尽量小,避免在临界区内阻塞或调用可能睡眠的接口。设备树把硬件描述从内核代码中分离出来,解决同一内核支持多种板卡的问题。

Linux 启动大致经过 BootROM、U-Boot、内核解压与初始化、挂载根文件系统、启动 init/systemd。U-Boot 阶段负责基础硬件初始化、加载内核和设备树、传递启动参数。进程有独立地址空间,线程共享地址空间;IPC 包括管道、消息队列、共享内存、信号和 Socket,共享内存最快但要自己做同步。