职位题库

嵌入式软件工程师面试题库

面向嵌入式软件工程师相关面试,围绕C语言、I2C、中断、项目经验、RTOS等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

456 道题目建议用时 1368 分钟专项面试练习

全部题目 456 道题

445

请讲一下从复位到main的启动过程,以及你项目中Boot和应用是如何衔接的?

考察候选人对复位向量、MSP初始化、数据段拷贝、BSS清零、Bootloader跳转条件、分区地址、向量表重定向和回滚策略的理解。
446

volatile和const有什么区别?什么场景必须用volatile?

考察候选人对C语言类型限定符语义的理解,尤其是volatile在硬件寄存器、中断标志位和共享状态中的正确使用边界。
447

FreeRTOS里队列、信号量、事件组分别适合什么场景?

考察候选人对FreeRTOS任务间通信与同步机制选型的理解,包括数据传递、中断通知、资源计数、临界资源保护和多条件等待。
448

C 语言中全局变量和局部变量有什么区别?分别存放在哪里?

考察候选人对 C 语言变量作用域、生命周期和内存分区的理解,这是嵌入式开发的基础。
449

如何把全局变量放到自己指定的内存区域?

考察对链接脚本、段属性和编译器扩展的实际掌握程度。
450

32 位 MCU 上,依次包含 uint8_t、uint16_t、uint32_t 的结构体占多少字节?

考察结构体内存对齐规则及对 32 位平台默认对齐的理解。
451

中断产生数据,多个任务都要读取,应该怎么设计?如果任务还会修改原始数据呢?

考察中断与任务间的数据共享、同步机制选择以及数据一致性设计能力。
452

请解释指针和数组在函数传参和 sizeof 运算上的主要区别,并举例说明。

考察对C语言基础概念的掌握程度,特别是指针与数组在内存和类型上的差异。
453

请说明 volatile 关键字的使用场景和不适用场景,并举例。

考察对 volatile 关键字的理解,是否清楚其用途和局限性。
454

请描述中断处理流程,并说明如何避免丢中断和 ISR 过重。

考察对中断机制的理解以及实际设计中避免常见问题的能力。
455

请说明推挽输出和开漏输出的区别,并举例说明如何选择。

考察对GPIO输出模式的硬件理解及实际应用选择能力。
456

请比较 UART、SPI、I2C 的特点,并说明选型和常见坑。

考察对常用串行通信协议的掌握程度及实际选型经验。
返回面试题库