🧠 思维链

看到一个现象,先想清楚它本质是什么,再顺藤摸瓜找到原因 · 14 篇覆盖全栈

👁️ 看到现象 → 💭 人脑直觉联想 → 🌊 联想河流分叉 → 🎯 串起一片技术点

📖 这是什么

看到现象 脑子里第一反应 像河流一样分叉联想 串起一片技术点
比如看到"程序卡了",脑子里自动反应:"卡 = 某个东西堵住了 → 堵在哪?是等锁(死锁)?等网络?等磁盘 IO?还是 CPU 被占满了?"
不是死记答案,是练出"看到 X 自动想到 Y"的反射。面试时讲思维链,比背八股强 10 倍 —— 显得你有体系地思考,而不是机械记忆。
⚡ 面试前 10 分钟看这个
📋 面试前速查卡 — 一页纸过完 9 篇本质+第一反应
9 篇思维链 + 4 个排障现象 + 万能心法,浓缩成一页,扫一遍就回忆起推理链

🔀 和「因果链」目录的区别

因果链

讲"方案为什么演进" —— 因为有问题 A,所以有方案 B,B 引入新问题,所以又有 C。

例:因为并发高→所以加缓存→因为缓存有一致性问题→所以延迟双删

思维链(本目录)

讲"看到现象怎么联想" —— 从一个现象/一段代码出发,顺着人脑直觉,摸到所有相关技术点。

例:看到 OOM→想到内存→想到堆里有什么→大对象/泄漏/ThreadLocal
一个讲"历史的来龙去脉",一个讲"你脑子里怎么想"。互补不冲突。
💻 操作系统
01 操作系统思维链
进程/线程内存IO/epoll
本质切入:CPU 是计算单元靠时间片切换"同时"→ 进程重线程轻 → 上下文切换有代价 → 虚拟内存隔离+超用 → IO 模型从 select 轮询到 epoll 通知 → 零拷贝跳过用户空间。每个机制都有"它解决的问题"。
核心思路:看到"同时干好多事"→ 时间片切换 → 进程/线程;看到"1 万连接"→ epoll 通知而非轮询。
🌐 网络协议
02 网络协议思维链
HTTPTCPTLS/DNS
本质切入:打开网页 = 查地址(DNS)→ 建通道(TCP)→ 加密(TLS)→ 发请求(HTTP)。HTTPS 防窃听/篡改/冒充。HTTP 演进都是为了更快(复用→多路复用→换 UDP)。网页打不开顺着链排查。
核心思路:看到"跨域报错"→ 同源策略拦了 → CORS/代理绕开;看到"实时推送"→ SSE/WebSocket。
🏛️ 系统设计权衡
03 系统设计权衡思维链
短链/秒杀FeedCAP
本质切入:系统设计不是画图,是展示思考过程 —— 六步走(澄清→估算→建模→架构→难点→扩展)。短链核心是发号+缓存;秒杀三板斧是限流+缓存+异步;Feed 是推拉结合;CAP 是网络必断所以要权衡。
核心思路:每个决策说清"为什么这么选、不选另一个会怎样"。没有完美方案,只有适合场景的权衡。
🎨 前端代码现象 → 根因
04 前端代码现象 → 根因思维链
闭包泄漏卡顿this/ref
本质切入:像侦探读代码推理。内存涨=闭包持有引用 GC 不回收;循环全打印 3=var 无块级作用域;页面卡=读写交替强制同步布局;this 丢了=调用时确定不是定义时;ref 卡=Proxy 深度劫持大对象。
核心思路:看到代码现象 → 推理"为什么"→ 机制 → 根因。别只说"有问题",要讲推理链。
🗄️ 数据库
05 数据库与 SQL 思维链
慢查询索引失效死锁
本质切入:SQL 慢=扫的数据太多(EXPLAIN 看 type/key,全表扫查索引失效六种场景)。死锁=相反顺序加锁循环等待。脏读幻读=并发干扰(隔离级别+MVCC)。缓存不一致=数据存两份没同步(Cache Aside)。
核心思路:数据库问题核心是"扫太多"(索引解决)或"并发干扰"(事务/锁解决)。
Java / JVM
06 Java 与 JVM 思维链
OOMGC并发
本质切入:OOM=堆装不下(jmap+MAT 找大对象/泄漏)。GC 频繁=垃圾产生快/回收不掉(jstat 调堆)。线程安全=共享+非原子=竞态(加锁/原子类/ThreadLocal)。事务失效=AOP 代理被绕过(this 调用/非 public)。
核心思路:Java 问题核心在"内存"(OOM/GC)和"并发"(线程安全)。内存看分配与回收,并发看共享与原子。
🌐 分布式
07 分布式思维链
锁失效数据不一致雪崩
本质切入:锁失效=过期/删错/主从丢锁(看门狗+唯一标识+Redlock)。数据不一致=跨进程操作无法原子(分布式事务+幂等+CAP)。雪崩=级联失败(超时+熔断+降级+限流)。所有问题源于"网络不可靠+操作无法原子"。
核心思路:分布式的解法大多是"接受最终一致 + 幂等 + 故障隔离"。
🤖 AI / LLM
08 AI 与 LLM 思维链
幻觉流式渲染RAG
本质切入:幻觉=概率续写不是事实查询(RAG 塞事实)。流式渲染崩=Markdown 块级未闭合(buffer 补全+rAF+DOMPurify)。SSE 选型=单向流+fetch ReadableStream 带token。上下文溢出=窗口有限(滑动窗口/摘要/RAG)。LLM 擅长推理不擅长记忆。
核心思路:所有 AI 应用的本质都是"把事实外包(RAG/工具),让模型做它擅长的事"。
🏗️ 前端架构
09 前端架构思维链
组件耦合状态管理性能
本质切入:改一处崩一片=组件耦合(高内聚低耦合/状态管理/provide-inject)。状态混乱=局部 vs 共享没分清(能局部就局部)。页面卡=渲染多或 JS 阻塞(虚拟滚动/memo/Web Worker)。复用不了=变化与不变没分离(props/slots)。
核心思路:前端架构本质是"管理复杂度"。衡量标准:"改一处影响多少处"。
📊 算法与数据结构
10 算法与数据结构思维链
数组/链表HashMap排序/DP
本质切入:每个数据结构都是为了解决一个具体问题。数组查快插慢,链表插快查慢。HashMap O(1) 但冲突退化为红黑树。树的演化都是"防退化成链表"。排序没有最好只有适合。算法题先暴力再优化套套路。
核心思路:不背代码,搞懂"为什么这么设计"。看到特征(有序/重复/子问题)套对应套路。
🧩 微服务
11 微服务架构思维链
服务发现网关链路追踪
本质切入:微服务 = 用基础设施复杂度换业务灵活性。拆是为了独立部署/扩展/职责清晰。引入服务发现(注册中心)、网关(统一入口)、链路追踪(traceId 串联)、配置中心(动态推送)。
核心思路:拆之前先问"能不能承受代价"。小项目别拆,按业务领域拆(DDD),别按技术拆。
🐳 容器与云原生
12 容器与云原生思维链
DockerK8sCI/CD
本质切入:容器 = Namespace(隔离)+ Cgroup(限制)+ UnionFS(分层),解决环境不一致。K8s = 声明式容器编排(自愈+扩缩+滚动更新)。CI/CD = 全自动构建部署。演进逻辑:环境不一致→Docker→容器多了→K8s→部署慢→CI/CD。
核心思路:云原生 = 一切容器化 + 自动化 + 声明式。你声明期望状态,K8s 持续维持。
🛡️ 安全
13 安全思维链
XSSCSRF越权/SQL注入
本质切入:所有攻击都利用"信任边界被打破"。XSS=用户输入被当代码执行(转义/DOMPurify)。CSRF=冒充你发请求(Token/SameSite)。越权=后端没校验归属。SQL注入=拼接字符串(参数化查询)。Token 存储是 XSS vs CSRF 的权衡。
核心思路:永远不信任输入,安全命门在后端。前端隐藏只是体验,防不住绕过。
📬 消息队列
14 消息队列思维链
异步/解耦/削峰消息丢失重复/顺序
本质切入:MQ 是缓冲区,三大作用异步/解耦/削峰。消息丢失防三环节(生产确认+MQ持久化+手动ACK)。重复消费靠幂等(At Least Once)。顺序靠同 key 同 partition 单线程消费。选型:RabbitMQ(业务)/Kafka(日志)/RocketMQ(事务)。
核心思路:MQ 是"用可靠性复杂度换解耦和缓冲"。用之前想清楚丢消息/重复/顺序怎么处理。不是所有场景都该上 MQ。

💡 怎么用这个目录

面试前: 每篇过一遍"联想河流",练出"看到现象自动分叉联想"的反射。
面试中: 面试官问任何问题,先讲思路("我看到 X,第一反应想到 Y,因为 Z"),再给方案。这样显得你是有体系地推理,而不是死记硬背。
配套: 配合《因果链》(方案演进)、《运维问题排查实战》(怎么查)、《面试亮点专题》(话术)一起用,覆盖"想清楚 + 讲出来 + 查明白"。