浏览代码

ingest: 新增面试八股学习记录(模板 + volatile 首条)

OpenCode 1 月之前
父节点
当前提交
8833032fa6
共有 2 个文件被更改,包括 73 次插入0 次删除
  1. 32 0
      X-Knowledge-Base/raw/面试八股/volatile.md
  2. 41 0
      X-Knowledge-Base/raw/面试八股/模板.md

+ 32 - 0
X-Knowledge-Base/raw/面试八股/volatile.md

@@ -0,0 +1,32 @@
+# volatile
+
+## 判别规则(核心)
+
+- 变量可能被"程序控制之外的上下文"(中断 / 硬件 / 其他线程)修改 → 加 `volatile`
+- 否则 → 不加
+
+## 抽象描述
+
+告诉编译器:这个变量的值可能被程序控制之外的地方改变,读它时不要缓存优化、每次都真读。
+
+## 易混对比
+
+| volatile | const | 关键区别 |
+|----------|-------|---------|
+| 值可能外部改变 | 值不应被修改 | volatile 禁缓存优化,const 允许优化 |
+| 用于中断/硬件/多线程共享变量 | 用于只读数据 | 语义相反但可共存 |
+| `const volatile` 合法 | 只读硬件寄存器场景 | 既只读又可能被硬件改变 |
+
+## 变体验证(3 题,全过=学会)
+
+1. 中断里置位、主循环读取的全局标志 → **要**。依据:中断是程序控制外上下文,编译器不知道它改
+2. `const volatile uint32_t *reg = ...` 合法吗? → **合法**。依据:只读硬件寄存器(如状态寄存器)
+3. 纯软件状态机变量,全部修改都在同一函数 → **不要**。依据:无外部上下文改写
+
+## 口述要点
+
+"volatile 告诉编译器别对这个变量做缓存优化,因为它可能被中断、硬件或别的线程修改。我项目里光敏传感器中断里更新的标志就加了 volatile,否则主循环可能读到缓存里的旧值。"
+
+## 学习日期
+
+2026-08-02

+ 41 - 0
X-Knowledge-Base/raw/面试八股/模板.md

@@ -0,0 +1,41 @@
+# 面试八股记录模板
+
+> 复制本文件,改名为主题名(如 `volatile.md`),填完内容。
+> 方法见 `求职资源/嵌入式面试/面试八股主题元学习法.md`(教练指令)。
+> 学会标准:判别规则能泛化到任意题面 + 变体验证 3/3 + 能口述原理。
+
+## 主题
+
+(如:volatile / const / static / 结构体对齐 / 优先级反转 ...)
+
+## 判别规则(核心,唯一要记的)
+
+- 具备 [X] → 正确/属于该情况
+- 否则 → 错误/不属于
+
+## 抽象描述(一句话本质)
+
+## 易混对比
+
+| 易混点 A | 易混点 B | 关键区别 |
+|---------|---------|---------|
+|          |          |          |
+
+## 变体验证(3 题,全过=学会)
+
+1. [题面] → 判断 + 依据
+2. [题面] → 判断 + 依据
+3. [陷阱题面] → 判断 + 依据
+
+## 口述要点(面试怎么讲)
+
+- 结论先行,再解释原理
+- 举例说明(最好用自己项目里的场景)
+
+## 学习日期
+
+YYYY-MM-DD
+
+---
+
+_每主题一页,复习时只翻本目录。_