底层原理与面试复习库
从具体问题出发,用数据结构、状态流转图和可运行示例理解后端与人工智能的关键机制,再整理成面试时能讲清的话术。
已收录深度题解
点击直接进入全屏复习页从 CNN 到 Transformer:两条路线如何走向大模型
CNN 是提取图像局部特征的卷积神经网络,Transformer 是让不同位置按相关程度交换信息的网络结构。沿时间线讲清循环网络、长短期记忆、注意力与两类大模型。
MySQL 索引失效:10 类原因、底层原理与 EXPLAIN 排查
从索引定位与扫描的区别出发,用 4 张 SVG 图推演最左前缀、函数条件和范围后的列过滤,再分析隐式类型转换、LIKE、OR、区分度、优化器成本与执行计划验证。
MVCC 与事务隔离:版本链怎样决定你看见什么
MVCC 是通过历史版本让普通读取通常不阻塞写入的机制。从读异常出发,逐步推导 undo 版本链、Read View 可见性、四种隔离级别,以及快照读与当前读的边界。
行锁、间隙锁与死锁:SQL 到底锁住了哪里
行锁保护已存在的索引记录,间隙锁保护尚未插入的索引范围。从完整索引扫描推导实际锁区间,再用事务等待环定位死锁与重试边界。
缓存穿透、击穿与雪崩:从一次未命中到保护数据库
穿透是反复查询不存在的数据,击穿是热点键失效,雪崩是大量键或缓存服务同时失效。按入口分流,讲透空值、布隆过滤器、单飞重建、限流与恢复预热。
Redis 分布式锁:从 SET NX PX 到续期、误删与 Redlock
分布式锁让不同进程竞争同一资源时短期互斥。用完整时间线拆解原子获取、唯一令牌、安全释放、锁过期、让下游拒绝旧写入的栅栏令牌,以及 Redlock 多节点算法的故障假设。
MQ 消息可靠性:一条消息在哪些位置会丢
MQ 是在生产者与消费者之间暂存和转发消息的系统。沿业务库、生产者、负责保存转发消息的 Broker 和消费者四段,讲透发布确认、持久化、复制、消费确认和本地消息表。
消费幂等、重试与死信:重复消息怎样只产生一次结果
幂等表示同一业务操作重复执行仍得到相同结果。拆解去重与业务事务、错误分类、指数退避、毒消息、死信恢复,以及幂等与顺序控制的区别。
Go Interface 与 nil:动态类型、动态值和方法集
Interface 是用一组方法描述行为要求的类型。沿隐式实现、值与指针方法集、接口的两部分、带具体类型的 nil 和类型断言,解释最经典的 error 不为空陷阱。
Go Context:取消、超时和请求链路传播
Context 是沿调用链传递截止时间、取消信号和请求元数据的标准接口。画出父子传播树和端到端超时预算,讲透取消函数、请求值与 goroutine 泄漏。
Go Mutex 与 RWMutex:互斥、读写锁和饥饿模式
Mutex 是一次只允许一个 goroutine 进入临界区的互斥锁,RWMutex 则允许并发读、写者独占。从快速路径、排队状态讲到内存顺序、写者优先和选型基准。
Go GC:从对象可达性到 Go 1.26 Green Tea
GC 是寻找不可达堆对象并回收其内存的机制。用对象图和阶段时间线解释并发标记清扫、写屏障、辅助标记,再讲 Go 1.26 Green Tea、回收频率参数与软内存限制。
B+Tree 索引结构:从磁盘页到点查与范围扫描
B+Tree 是把有序数据分层存放的多叉树。只沿结构主线讲清内部页怎样缩小候选、叶子页怎样完成点查与范围扫描,以及聚簇索引和二级索引的叶子究竟保存什么。
MySQL 索引设计:从一条 SQL 推导联合索引
联合索引是把多列按声明顺序组成有序键的索引。围绕同一张订单表,从过滤、排序、返回列和查询频率出发,推导列序、覆盖与回表、深分页方案,以及读收益与写成本怎样权衡。
MySQL 执行计划:10 分钟看懂 EXPLAIN
拿到普通 EXPLAIN 输出,按 key、type、rows、Extra 的顺序判断用了哪个索引、怎样访问、预计扫描多少,以及是否还需额外排序或临时表。
Redis 底层核心数据结构:对象、编码与自动转换
从 redisObject 的类型与编码分层出发,拆解 SDS、listpack、quicklist、dict、intset 和 skiplist,以及五种常用数据类型如何按数据规模自动选择底层结构。
Go Channel:有缓冲 vs 无缓冲,以及关闭后的读写行为
从底层结构 runtime.hchan、sendq/recvq 队列、sudog 以及 gopark 挂起唤醒流程,讲透为什么关闭后读不 panic、写会 panic,深入核心面试追问。
Go Map:从 hash 到 Go 1.24+ Swiss Table
面向当前版本,拆解 H1/H2、Group 8-slot、control word、二次探测,以及 Directory 管理多张 Table 的局部扩容机制。
Go 经典 Map:hmap、bmap、bucket 与渐进扩容
专门应对 Go 1.23 及之前旧题库:从 B、2 的幂与桶编号讲起,再拆解 tophash、overflow、两种扩容与渐进迁移。
Go Slice 从 0 到底层:先搞懂为什么,再记 len、cap
先从日常创建和“数组选区”建立直觉,再推导长度、容量、共享底层数组、append 两条路径、扩容算法与内存陷阱。
Go new 与 make:返回值、零值与初始化区别
从一块零值内存为什么不够用讲起,对比指针与原类型、nil Slice / Map / Channel、逃逸分析,以及 Go 1.26 新增的 new(x) 表达式初始化。
Go GMP 调度器:G、M、P 如何协作
从 goroutine 创建与状态流转出发,拆解本地/全局队列、任务窃取、网络轮询、系统调用交接、sysmon 与异步抢占。