速通嵌入式八股文:一篇文章打通面试高频点

嵌入式面试的八股文看似零散,其实高度集中在C 语言 + 操作系统 + 硬件 + 调试能力这四条主线。抓住这几条线,基本就能覆盖 80% 以上的问题。

一、C 语言:嵌入式面试的地基

1. 指针与内存

必问点:

  • 指针和数组的区别
  • 二级指针的使用场景
  • 指针作为函数参数,什么时候能修改外部变量

核心一句话:

指针本质是地址,是否能“改到外面”,取决于你有没有拿到“地址的地址”。

全网最全面的嵌入式八股文专栏:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

2. const / volatile / static

  • const:约束使用者,不一定真的只读
  • volatile:告诉编译器不要优化(寄存器 / 硬件寄存器 / 中断变量)
  • static:修饰局部变量:延长生命周期修饰全局变量 / 函数:限制作用域

高频追问:

为什么寄存器变量一定要加 volatile?👉 因为值可能被硬件或中断异步修改。

3. sizeof vs strlen

  • sizeof:编译期(或伪编译期),看类型
  • strlen:运行期,看 \0

面试陷阱:

char *p = "abc";
sizeof(p)      // 4 / 8
strlen(p)      // 3

二、操作系统:FreeRTOS / Linux 都逃不掉

1. 任务 / 进程 / 线程

  • 裸机:死循环 + 中断
  • RTOS:任务 + 调度器
  • Linux:进程是资源单位,线程是调度单位

一句话区分:

线程共享地址空间,进程不共享。

2. 调度与优先级

  • 抢占式 vs 协作式
  • 时间片轮转
  • 优先级反转 → 互斥锁 + 优先级继承

FreeRTOS 高频:

  • vTaskDelay vs vTaskDelayUntil
  • Tick 中断干了什么

3. 同步与通信

  • 信号量:同步
  • 互斥锁:保护资源
  • 消息队列:数据传递
  • 事件组:多条件同步

面试常问:

中断里能不能用互斥锁?👉 不能,用信号量 / FromISR 接口。

三、硬件基础:不是让你画芯片,是考你“懂不懂边界”

1. 中断

  • 中断向量表
  • 中断嵌套
  • 中断和任务的区别

关键点:

中断要“短平快”,复杂逻辑交给任务。

2. DMA

  • CPU 不参与数据搬运
  • 提高吞吐、降低功耗
  • 常见场景:UART / SPI / ADC

面试一句话:

DMA 解决的是“搬数据太浪费 CPU”的问题。

3. 外设通信

  • SPI:快、全双工、短距离
  • I2C:慢、地址寻址、设备多
  • UART:简单、点对点

四、Linux 嵌入式:不是背命令,是理解模型

1. 启动流程

BootROM → Bootloader → Kernel → RootFS → App

常问:

  • U-Boot 做了什么
  • Kernel 启动参数从哪来

2. 驱动基础

  • 字符设备三大函数:open / read / write
  • copy_from_user / copy_to_user
  • 设备树的作用

一句话:

驱动的本质是“把硬件抽象成文件”。

3. 用户态 vs 内核态

  • 系统调用
  • 中断 / 异常
  • 为什么不能随便进内核

五、调试能力:决定你是不是“能干活的人”

1. 常用手段

  • 打 log(串口 / printk)
  • JTAG / GDB
  • 示波器 / 逻辑分析仪

2. 面试最爱问

程序跑飞了你怎么查?

标准思路:

  1. 复现问题
  2. 缩小范围
  3. 判断是软件 / 硬件 / 时序
  4. 验证假设

六、项目题:真正拉开差距的地方

面试官不怕你不会,怕你说不清

项目描述公式:

做了什么 → 为什么这么做 → 遇到什么问题 → 怎么解决 → 效果如何

加分点:

  • 用数据说话(延时 / 内存 / 吞吐)
  • 主动提 trade-off

一句话总结

嵌入式八股文不是零散知识点,而是围绕 内存、并发、硬件边界和工程经验 的一套完整逻辑;面试不是考你背了多少,而是看你能不能把系统“讲明白、跑稳定”。

全部评论
满满的干货呀!感谢
点赞 回复 分享
发布于 2025-12-26 20:43 广东
干货满满啊,必须收藏一波
点赞 回复 分享
发布于 2025-12-19 16:12 江西
大佬干货真多
点赞 回复 分享
发布于 2025-12-17 21:40 北京
mark
点赞 回复 分享
发布于 2025-12-16 13:45 陕西

相关推荐

01-28 16:12
中南大学 Java
几年前还没有chatgpt的时候,刷题真的是很痛苦。刷不出来只能看题解,题解有几个问题:第一个是每次看的写题解的人都不一样,很难有一个统一的思路;第二个也是最重要的是,题解只提供了作者自己的思路,但是没有办法告诉你你的思路哪里错了。其实很少有错误的思路,我只是需要被引导到正确的思路上面去。所以传统题解学习起来非常困难,每次做不出来难受,找题解更难受。但是现在chatgpt能做很多!它可以这样帮助你 -1. 可以直接按照你喜欢的语言生成各种解法的题解和分析复杂度。2. 把题和你写的代码都发给它,它可以告诉你 你的思路到底哪里有问题。有时候我发现我和题解非常接近,只是有一点点🤏想错了。只要改这一点点就是最优解。信心倍增。3. 如果遇到不懂的题解可以一行一行询问为什么要这样写,chatgpt不会嫌你烦。有时候我觉得自己的range写错了,其实那样写也没错,只是chat老师的题解有一点优化,这个它都会讲清楚。4. 它可以帮你找可以用同类型解法来做的题。然后它可以保持解法思路不变,用一个思路爽刷一个类型的题。如果题目之间思路又有变化,它会告诉你只有哪里变了,其他的地方还是老思路。5. 它也可以直接帮你总结模板,易错点。经过chat老师的指导,我最大的改变是敢刷题了。之前刷题需要先找某一个人写的算法题repo,然后跟着某一个人他的思路刷他给的几个题。如果想写别的题,套用思路失败了,没有他的题解,也不知道到底哪里错了;看别人的题解,思路又乱了。这个问题在二分查找和dp类型的题里面特别常见。但是现在有chat老师,他会针对我的代码告诉我我哪里想错了,应该怎么做;还按照我写代码的习惯帮我总结了一套属于我的刷题模板。每天写题全是正反馈!
牛客981:不刷才是爽
AI时代的工作 VS 传...
点赞 评论 收藏
分享
评论
2
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务