专为 5~8 年 Go 后端工程师打造 · 大厂面试核心考点全覆盖
| 日期 | 版本 | 更新内容 |
|---|---|---|
| 2026-05-14 | v4.3 | 新增《GC Pacer》深度解析:GC 节奏控制原理、memory goal、gcpacertrace 生产诊断(327篇) |
| 2026-05-13 | v4.0 | 更新《sync.Map》:补充 Go 1.24 HashTrieMap 实现 vs 旧版读写分离双 map 原理与性能对比 |
不是入门教程,不是题目合集。 每个知识点直击面试官考察意图,给出能拿到 Offer 的回答。
✅ 适合:
- 工作 5~8 年,准备跳槽大厂 / 独角兽的 Go 后端工程师
- 已有经验,想系统梳理知识体系、查漏补缺
- 准备技术晋升答辩,需要深度输出
❌ 不适合:
- Go 初学者(请先完成语言基础学习)
- 纯刷题备战(配合 LeetCode 使用,本仓库不是题目合集)
| 本仓库 | 普通面经 | |
|---|---|---|
| 内容深度 | 讲清楚「为什么这样设计」 | 只告诉你「是什么」 |
| 生产视角 | 结合真实线上场景和踩坑 | 纯理论堆砌 |
| 数据支撑 | 给出可量化指标(QPS / 延迟 / 内存) | 模糊描述 |
| 代码示例 | 可运行的 Go 代码 + 生产级写法 | 伪代码或无代码 |
| 追问覆盖 | 覆盖面试官的下一个问题 | 点到为止 |
这部分写给所有参与补充内容的同学。不符合规范的 PR 会被打回。
这个仓库面向两类读者:
- Go 后端工程师(5~8 年):深度原理 + 生产经验 + 面试追问,Go 代码为主
- 算法模块(所有人):通俗易懂讲解,覆盖高频题(简单/中等),Go + Python 双语实现
写每篇文章前先问自己:"这是高频考点吗?读者能直接用上吗?"
| 模块 | 代码语言 |
|---|---|
| 01 Go 语言 / 02 数据库 / 03 分布式 / 04 微服务 / 05 系统设计 / 06 网络 / 08 工程素养 | 仅 Go |
| 07 算法 | Go + Python 双语(每道题都要给两种实现) |
| 09 面试策略 | 无代码 |
Go 后端模块(01~06, 08)必须做到:
- 讲清楚底层原理,不只是罗列功能点
- 结合生产经验:踩过哪些坑、线上出过什么问题、怎么排查
- 给出可量化数据:QPS、延迟 P99、内存占用、优化前后对比
- Go 代码示例可直接运行,生产级写法
- 覆盖追问:面试官的下一个问题提前写进去
算法模块(07)必须做到:
- 通俗讲解:用大白话说清楚思路,类比生活场景,让没见过这类题的人也能看懂
- 图示或步骤拆解:复杂题必须有逐步推导,不能上来就贴代码
- Go + Python 双语:两种语言都要有完整可运行的代码
- 复杂度分析:时间复杂度 + 空间复杂度必写,说明为什么
- 高频优先:优先补充高频题(★★★★以上),简单题也可以写,不用每题都很深
禁止出现:
| 禁止内容 | 原因 |
|---|---|
| 未发布的 Go 版本特性(如 Go 1.26+) | 面试考不到,写了是误导 |
| 算法题只贴代码、没有思路讲解 | 对读者没有帮助 |
| 复制粘贴官方文档 | 没有附加价值 |
| 没有代码示例的纯文字理论 | 不可信,面试时说不清楚 |
| 与 Go 后端完全无关的内容(前端、移动端) | 定位不符 |
每篇文章必须遵循以下五段式结构:
## 面试官考察意图
这道题想考什么,考到什么深度,高级工程师的回答和初级工程师的回答有什么差距。
## 核心答案(30 秒版)
开门见山的简短回答,适合面试时的第一句话。可以是一张对比表格或几行结论。
## 深度展开
原理 → 实现细节(源码/汇编层面) → 生产经验/踩坑案例 → 与竞品的横向对比
## 高频追问
面试官的下一个问题,逐一给出参考答案。
## 延伸阅读
官方文档链接、论文、知名博客(链接必须能打开)。- 文件放到正确的目录,不要直接放在模块根目录下(有子目录就放子目录)
- 文件名格式:
NN-kebab-case.md,编号从 01 开始,不能与现有文件编号冲突 - 图片放在同级
assets/目录,引用用相对路径
以下是当前仍需补充的高优先级内容,按需认领:
| 模块 | 缺少的文章 | 优先级 | 状态 |
|---|---|---|---|
| 01-golang/03-language-deep | 编译器优化:内联决策与逃逸深度 | P1 | ✅ 已完成 |
| 01-golang/03-language-deep | CGO 原理与面试考点 | P0 | ✅ 已完成 |
| 01-golang/03-language-deep | unsafe 包:原理、使用场景与风险 | P0 | ✅ 已完成 |
| 01-golang/06-toolchain | Go Module 与 Workspace 工程实践 | P1 | ✅ 已完成 |
| 01-golang/06-toolchain | Build Tags 与条件编译 | P1 | ✅ 已完成 |
| 01-golang/06-toolchain | Go 1.26 工具链重磅更新 | P1 | ✅ 已完成 |
| 02-database/02-redis | Pipeline 与 Lua 脚本 | P1 | ✅ 已完成 |
| 02-database/05-connection-pool | 连接池原理与调优:database/sql、Redis、gRPC | P0 | ✅ 已完成 |
| 02-database/06-mongodb | MongoDB 核心原理与 Go 实战 | P1 | ✅ 已完成 |
| 02-database/07-clickhouse | ClickHouse 核心原理与 OLAP 选型 | P1 | ✅ 已完成 |
| 03-distributed/05-coordination | 分布式锁横向对比:Redis vs etcd vs ZooKeeper | P0 | ✅ 已完成 |
| 04-microservices/04-deployment | Kubernetes 控制面深度原理 | P0 | ✅ 已完成 |
| 04-microservices/03-observability | Prometheus + Grafana 监控实战 | P1 | ✅ 已完成 |
| 05-system-design/09-red-packet | 抢红包系统设计 | P0 | ✅ 已完成 |
| 05-system-design/10-leaderboard | 排行榜系统设计(实时 + 历史) | P0 | ✅ 已完成 |
| 05-system-design/11-lbs | LBS 地理位置系统设计(附近的人/店) | P1 | ✅ 已完成 |
| 07-algorithms/10-greedy | 贪心算法高频题 | P0 | ✅ 已完成 |
| 07-algorithms/11-bit-operation | 位运算高频题 | P0 | ✅ 已完成 |
| 07-algorithms/12-math | 数学类高频题(数论 + 模拟 + 随机) | P1 | ✅ 已完成 |
| 09-interview-strategy/01-resume | 5-8 年工程师简历写法指南 | P1 | ✅ 已完成 |
| 11-go-std-practice | Go 标准库生产实践合集(io/encoding/time/testing) | P2 | ✅ 已完成 |
| 12-linux-os | 进程/线程、虚拟内存、零拷贝、cgroup、Linux 排障体系 | P0 | ✅ 已完成 |
| 08-engineering/04-performance-governance | 压测方法论:单接口到全链路压测 | P0 | ✅ 已完成 |
| 08-engineering/01-project-design | 故障复盘(Postmortem)方法论 | P0 | ✅ 已完成 |
| 08-engineering/01-project-design | 重构与技术债治理 | P0 | ✅ 已完成 |
| 08-engineering/03-leadership | 工程质量体系落地 | P0 | ✅ 已完成 |
| 05-system-design/01-patterns | DDD 战术设计 | P0 | ✅ 已完成 |
| 05-system-design/01-patterns | 业务建模方法论 | P0 | ✅ 已完成 |
| 03-distributed/01-theory | 容灾设计:单机房、双活与异地多活 | P0 | ✅ 已完成 |
| 04-microservices/04-deployment | 灰度发布实战 | P0 | ✅ 已完成 |
| 06-network/03-security | 后端安全体系 | P1 | ✅ 已完成 |
| 06-network/03-security | RBAC、ABAC 与 OIDC | P1 | ✅ 已完成 |
| 08-engineering/04-performance-governance | 测试策略:单测、集成测试、契约测试 | P1 | ✅ 已完成 |
| 08-engineering/03-leadership | 跨团队协作 | P1 | ✅ 已完成 |
| 08-engineering/03-leadership | 招聘与面试:高级工程师如何识别候选人 | P1 | ✅ 已完成 |
| 08-engineering/02-tech-planning | 降本增效实战 | P1 | ✅ 已完成 |
| 08-engineering/01-project-design | Go 服务架构设计:分层、整洁架构与六边形架构 | P1 | ✅ 已完成 |
| 08-engineering/02-troubleshooting | 混沌工程与故障演练 | P1 | ✅ 已完成 |
| 01-golang/05-stdlib | time 包深度解析:Timer/Ticker/内存泄漏/精度 | P2 | ✅ 已完成 |
| 01-golang/05-stdlib | strings.Builder vs bytes.Buffer:字符串拼接性能对比 | P2 | ✅ 已完成 |
| 06-network | 网络基础高频题:TCP/UDP/DNS/Cookie/Session/Token | P1 | ✅ 已完成 |
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| ✅ 已完成 | |||
| 01-golang/03-language-deep | constraints.Ordered:标准库类型约束 | P2 | ✅ 已完成 |
| 02-database/01-mysql | Change Buffer:二级索引写性能优化 | P1 | ✅ 已完成 |
备考时间紧张,按 P0 → P1 → P2 顺序攻克
| 标记 | 含义 | 建议投入 |
|---|---|---|
| 🔴 P0 | 大厂必考,逢面必问 | 优先搞定 |
| 🟡 P1 | 高频考点,有一定深度 | 次优先 |
| 🟢 P2 | 加分项,有余力再看 | 拔高用 |
12-linux-os · Linux / 操作系统基础(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 进程、线程、协程与调度 | 进程/线程/协程区别、上下文切换、goroutine 与线程映射 |
| 🔴 虚拟内存、页缓存与 mmap | 页表、缺页中断、Page Cache、mmap vs read/write |
| 🔴 I/O 模型与零拷贝 | select/poll/epoll、sendfile、splice、Go netpoller |
| 🔴 cgroup、namespace 与容器资源隔离 | 容器资源限制、OOMKilled、GOMAXPROCS、K8s resource 控制 |
| 🔴 Linux 线上排障基础 | load、CPU、内存、fd、IO、TIME_WAIT 排查 SOP |
01-runtime · 运行时原理(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 GMP 调度模型 | G/M/P 角色、Work Stealing、Hand Off、sysmon 抢占 |
| 🔴 GC 垃圾回收机制 | 三色标记、混合写屏障、STW 优化历程、GOGC 调优 |
| 🟡 内存分配器 | tcmalloc、mspan、mcache/mcentral/mheap |
| 🟡 goroutine 栈机制 | 动态栈增长/收缩、连续栈 vs 分段栈 |
| 🟡 调度器源码走读 | schedule()/findRunnable() 优先级、Work Stealing 实现、sysmon、抢占 |
| 🟢 Go 1.26 运行时新特性 | Green Tea GC、Goroutine Leak Profile、堆地址随机化 |
| 🟢 Flight Recorder | 生产 trace 环形缓冲区捕获、事后故障还原 |
| 🟢 Go 1.27 SIMD 与 Portable SIMD | SIMD 默认开启(amd64)、Portable SIMD 提案、链接器优化 |
| 🟢 容器感知 GOMAXPROCS | Go 1.25 自动感知容器 CPU 配额 |
| 🟢 网络 I/O:epoll/kqueue 与 Netpoller | Go 网络层事件循环、与 goroutine 调度的整合 |
| 🔴 Goroutine 全生命周期 | G 状态机/创建流程/阻塞分类(channel/Mutex/syscall)/泄漏根因与 pprof 排查 ✅ |
| 🔴 GC 调优实战 | GOGC/GOMEMLIMIT 调优、Green Tea GC、生产问题排查 |
02-concurrency · 并发编程(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 channel 底层原理 | hchan 结构、发送/接收流程、select 实现、死锁排查 |
| 🔴 sync 原语 | Mutex/RWMutex 实现、sync.Once、sync.Pool |
| 🟡 sync.Cond 条件变量 | Wait/Signal/Broadcast、Go 1.26 breaking change、连接池通知 |
| 🟡 atomic 与无锁 | CAS 原理、atomic 操作、无锁数据结构 |
| 🟡 并发模式 | Pipeline、Fan-out/Fan-in、errgroup、Worker Pool |
| 🟡 context 原理 | 取消传播、超时控制、底层实现 |
| 🟡 SingleFlight 请求合并 | 请求合并、缓存击穿、并发去重、分布式穿透防护 |
| 🟡 goroutine vs OS 线程 vs 进程 | 栈大小对比、上下文切换成本、动态栈增长、调度模型对比、GMP vs 内核调度、泄漏排查 |
| 🔴 死锁:原理与排查 | 死锁四个必要条件、Go 里的死锁场景、工具排查、sysmon 检测机制、pprof/go tool trace 排查 |
| ✅ data race 与 -race 检测 | data race 产生条件、-race 检测、map/slice/全局变量常见场景 |
03-language-deep · 语言机制(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 interface 原理 | iface/eface 内存布局、动态分发、nil 陷阱 |
| 🟡 reflect 原理 | 性能代价、实际使用场景 |
| 🟡 泛型实现 | GCShape stenciling、使用边界 |
| 🟡 逃逸分析 | 堆 vs 栈分配、如何避免不必要逃逸 |
| 🟡 slice 与 map | 底层结构、扩容策略、并发安全问题 |
| 🟡 内存模型 | happens-before、内存对齐、false sharing |
| 🟢 循环与迭代器新特性 | Go 1.22 循环变量语义变更、range-over-func |
| 🟡 编译器优化:内联与逃逸深度 | 内联决策(AST节点数阈值)、-gcflags="-m=2" 解读、BCE、常量折叠 ✅ |
| 🟢 内置函数 new:从基础到 Go 1.26 增强 | new() vs make()、逃逸分析、Go 1.26 new(expr) 表达式参数 |
| 🟢 Go 1.26 栈分配优化 | append 推测性栈缓冲、move2heap 机制 |
| 🟢 Go 1.24 Swiss Tables | map 底层替换为 Swiss Table、性能提升原理 |
| 🟡 Go 1.24 weak 包:弱指针原理与缓存实战 | weak.Pointer、weak.New、缓存映射、GC 交互、生产实践 |
| 🟢 类型构造与循环检测 | Go 1.26 类型检查器底层改进 |
| 🔴 CGO 原理与面试考点 | CGO 调用开销、LockOSThread、C 内存管理、CGO_ENABLED=0 |
| 🔴 unsafe 包:原理、使用场景与风险 | unsafe.Pointer 四条规则、uintptr 陷阱、零拷贝转换 |
| 🔴 iota 枚举:计数器原理与高频面试题 | iota 重置规则、跳跃继承、位掩码、网球问题 |
| 🔴 init 函数:执行时机与顺序规则 | 包依赖图拓扑排序、const→var→init 三阶段、多文件执行顺序 |
| 🔴 defer 底层原理与高频面试题 | defer 栈、return 赋值顺序、参数预计算、panic 恢复 |
| 🔴 string 与 []byte 深度解析 | string 底层结构、string↔[]byte 零拷贝、为什么不可变 |
| ✅ 闭包原理与陷阱:循环变量捕获与 Go 1.22 修复 ✅ | |
| ✅ make vs new:底层原理与适用场景 ✅ |
06-toolchain · 工具链与工程实践(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 Go Module 与 Workspace 工程实践 | go.mod / replace / exclude / MVS / GOPRIVATE / go.work |
| 🟡 Build Tags 与条件编译 | //go:build 语法、平台编译、集成测试 tag、与 embed 联动 |
| 🟡 Go 1.26 工具链重磅更新 | go fix 分析框架重写 / go.mod init 默认值争议 / 链接器并行化 |
04-performance · 性能调优(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 pprof 实战 | CPU/内存/goroutine 火焰图分析 |
| 🟡 内存泄漏排查 | goroutine 泄漏、全局变量、缓存失控 |
| 🟡 基准测试规范 | benchmark 写法、避免编译器优化干扰 |
| 🟡 真实调优案例 | JSON 解析、字符串拼接、sync.Pool 实战 |
| 🟢 testing/synctest 并发测试 | 确定性并发测试、fake clock、race condition 复现 |
| 🟢 go fix 与 //go:fix inline | 源码级内联重写、API 自动迁移 |
05-stdlib · 标准库与工程实践(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 net/http 深度解析 | Server 底层结构、Transport 连接池、优雅关闭、中间件链 |
| 🟡 sync.Map 与并发安全 Map | 双 map 设计、读写流程、与 RWMutex+map 性能对比 |
| 🟡 错误处理最佳实践 | errors.Is/As/AsType/Join、%w 包装、panic/recover 边界 |
| 🟢 log/slog 结构化日志 | slog.Handler 接口、结构化字段、生产最佳实践 |
| 🟢 embed 静态资源嵌入 | //go:embed 用法、与 os.ReadFile 对比、发布单二进制 |
| 🟡 io.Reader/Writer 设计模式 | 接口设计哲学、装饰器模式、流水线处理、bufio 性能优化、常见误用场景 |
| 🟡 time 包深度解析 | time.Timer/Ticker 正确用法与陷阱、内存泄漏、Reset 时机、精度问题、时区处理 ✅ |
| 🟡 strings.Builder vs bytes.Buffer | 字符串拼接性能对比、底层实现差异、零拷贝原理、选型建议 ✅ |
| 🟢 Go 1.27 标准库新特性 | CutLast/Response File/HTTP Body Drain |
| 🟢 Go 1.26 标准库新特性 | Buffer.Peek/Dialer.Context/AsType/strings.Join 零分配 |
| 🟢 Go 1.26 密码学套件 | crypto/mlkem、crypto/hpke、后量子加密 |
| 🟢 Go 1.24 omitzero:JSON 零值忽略新标签 | omitzero vs omitempty、零值判断、生产选型 |
| 🟢 encoding/json v2 | v2 与 v1 差异、性能提升、迁移指南 |
| 🟢 Go 1.21 slices/maps/cmp | slices/maps/cmp 三大泛型标准库新包、排序/搜索/比较/克隆 |
| 🟡 Go Web 框架选型:Gin/Echo/Fiber/Chi/Buffalo | 五大框架横向对比、路由性能、选型决策树、生产踩坑 |
| 🟡 AI 时代 Go 后端:向量数据库与 RAG 应用 | pgvector/Milvus/Qdrant、Embedding 接入、RAG 链路、分块策略 |
01-mysql · MySQL(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 索引原理与优化 | B+ 树、聚簇/二级索引、联合索引、索引失效全场景、EXPLAIN |
| 🔴 事务、隔离级别与 MVCC | ACID、ReadView、版本链、RC vs RR、间隙锁、死锁 |
| 🔴 锁机制深度 | 行锁/表锁/间隙锁/临键锁、死锁检测与避免 |
| 🟡 慢查询优化 | EXPLAIN 解读、SQL 改写、深分页优化 |
| 🟡 MySQL 查询优化深度 | 慢查询日志、索引失效全场景、JOIN/分页/COUNT 优化、Go 连接池配置 |
| 🟡 EXPLAIN 全字段解读 | type/Extra 字段含义、执行计划实战案例 |
| 🟡 分库分表 | ShardingSphere、路由策略、数据迁移 |
| 🟡 主从复制 | binlog、半同步复制、主从延迟处理 |
| 🟡 MySQL 8.0 新特性 | 窗口函数、CTE、SKIP LOCKED/NOWAIT、Instant DDL、JSON_TABLE |
| 🟡 Change Buffer 原理 | 索引变更延迟合并、随机 I/O 优化、Redo Log 协作、为何不支持唯一索引 |
| 🟡 MySQL 基础高频题 | char vs varchar 区别、NULL 的坑、count(*) vs count(1) vs count(col)、InnoDB vs MyISAM 选型、VARCHAR 长度陷阱 |
| ✅ 索引失效全场景 | 最左前缀、like %前缀、函数/隐式转换、OR 条件、数据量少全表扫描 ✅ 已完成 |
02-redis · Redis(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 数据结构底层实现 | SDS、ziplist、skiplist、listpack、各类型应用场景 |
| 🔴 持久化机制 | RDB vs AOF、混合持久化、数据恢复流程 |
| 🔴 缓存穿透/击穿/雪崩 | 布隆过滤器、互斥锁、逻辑过期、多级缓存 |
| 🟡 集群方案 | Sentinel vs Cluster、槽位分配、故障转移 |
| 🟡 分布式锁 | Redlock 算法、Lua 脚本原子性、锁续期 |
| 🟡 热 key / 大 key | 识别方法、拆分方案、本地缓存兜底 |
| 🟡 Pipeline 与 Lua 脚本 | RTT 优化原理、Lua 原子性、MULTI/EXEC 对比、Cluster 限制 ✅ |
| 🔴 Redis 基础高频题 | Redis 为什么快、过期策略、内存淘汰 8 种策略 ✅ |
| 🔴 数据类型使用场景 | String/Hash/List/Set/ZSet/HyperLogLog/Bitmap/Geo 场景与选型 ✅ |
04-tidb · TiDB(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟢 TiDB 架构与适用场景 | TiDB/TiKV/PD 三层架构、HTAP、分布式事务 Percolator、与 MySQL 分库分表对比 |
05-connection-pool · 连接池(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 连接池原理与调优 | database/sql、Redis、gRPC 连接池参数、泄漏排查、WaitCount/Stats 监控 |
06-mongodb · MongoDB(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 MongoDB 核心原理与 Go 实战 | BSON、聚合管道、WiredTiger、副本集、分片集群、mongo-driver |
07-clickhouse · ClickHouse(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 ClickHouse 核心原理与 OLAP 选型 | 列式存储、MergeTree、向量化执行、OLAP 选型、Go SDK |
01-theory · 理论基础(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 CAP 与 BASE | CAP 定理、BASE 理论、实际系统取舍 |
| 🟡 Raft 协议 | Leader 选举、日志复制、成员变更 |
| 🟢 Paxos 简述 | 与 Raft 的对比、应用场景 |
| 🟡 一致性模型 | 强一致 / 最终一致 / 线性一致性 |
| 🔴 容灾设计:单机房、双活与异地多活 | RPO/RTO、同城双活、异地多活、流量切换、数据一致性 |
| 🔴 分布式基础高频题 | 三大难题(时钟漂移/网络分区/节点故障)、幂等设计(唯一键/状态机/去重表)、分布式 ID(Snowflake/Ulid/号段) |
02-transactions · 分布式事务(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 2PC / 3PC | 原理、问题与局限 |
| 🟡 TCC 模式 | Try/Confirm/Cancel、幂等设计、空回滚、悬挂问题 |
| 🟡 Saga 模式 | 编排 vs 协调、补偿事务设计 |
| 🟡 消息最终一致性 | 本地消息表、事务消息(RocketMQ) |
| 🟢 Seata 实战 | AT/TCC/Saga 模式选型 |
03-mq · 消息队列(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 Kafka 高吞吐原理 | 零拷贝、顺序写、分区、Page Cache |
| 🟡 Kafka 消息可靠性 | ACK 机制、ISR、幂等生产者 |
| 🟡 消费者组与 Rebalance | 消费者组、Rebalance 流程、顺序消费 |
| 🟡 RocketMQ vs Kafka | 对比、事务消息、延迟消息 |
| 🔴 消息积压/丢失/重复 | 消息积压处理、exactly-once 语义 |
| 🟢 RabbitMQ | AMQP、Exchange 类型、死信队列 |
04-service-mesh · 服务治理(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 注册中心 | Consul/etcd/Nacos 原理与选型 |
| 🟡 Service Mesh:Istio/Envoy 原理 | Sidecar 模式、xDS 协议、Listener/Route/Cluster/Endpoint、VirtualService 灰度 |
| 🟡 链路追踪 | Jaeger/Zipkin、TraceID 传播、采样策略 |
05-coordination · 协调服务(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 etcd 原理与实战 | Raft + boltdb + MVCC、Watch 机制、分布式锁、Leader 选举 |
| 🟢 配置中心选型与实践 | Apollo vs Nacos vs etcd、热更新原理、配置灰度、Go 接入 |
| 🔴 分布式锁横向对比 | Redis vs etcd vs ZooKeeper、一致性/性能/公平性对比、Redlock 争议 |
01-rpc · RPC 与服务治理(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 gRPC 原理 | Protobuf 编码、HTTP/2 多路复用、流式 RPC |
| 🟡 熔断与限流 | Hystrix/Sentinel、令牌桶/漏桶算法 |
| 🟡 服务治理 | 超时/重试/负载均衡策略 |
| 🟢 IDL 设计规范 | Protobuf 版本兼容、API 设计规范 |
| ✅ RPC 基础高频题(见 01-grpc.md 附录) | RPC vs REST vs GraphQL 对比、Protobuf vs JSON 性能对比、gRPC 四种通信模式 ✅ |
| ✅ 服务注册与发现 | 注册中心原理、客户端 vs 服务端发现、Consul/etcd/Nacos 选型、健康检查与优雅下线 |
02-api-gateway · API 网关(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 网关设计 | 路由/鉴权/限流/灰度发布 |
| 🟡 认证鉴权 | JWT/OAuth2/API Key、Token 刷新 |
| 🟡 限流实现 | 网关层限流、分布式限流(Redis + Lua) |
03-observability · 可观测性(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 Metrics 监控 | Prometheus + Grafana、RED 指标、SLO/SLA |
| 🟡 日志体系 | 结构化日志、ELK 方案、日志采样 |
| 🟡 告警设计 | 告警规则、告警疲劳治理 |
| 🟡 Prometheus + Grafana 监控实战 | PromQL、Histogram/Summary、Grafana 看板、AlertManager |
04-deployment · 部署与发布(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟢 Docker 实践 | 多阶段构建、镜像优化、资源限制 |
| 🟢 Kubernetes 核心 | Pod 调度、HPA、滚动发布、Service Mesh |
| 🔴 Kubernetes 控制面深度原理 | API Server、Controller、Scheduler、Informer、CRD/Operator |
| 🔴 灰度发布实战 | 蓝绿/金丝雀/影子流量、DB schema 升级、快速回滚 |
| 🟢 CI/CD 流水线 | 蓝绿部署、金丝雀发布 |
架构模式(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 CQRS 模式 | 读写分离、Event Sourcing 结合 |
| 🟡 事件驱动架构 | Outbox Pattern、事件溯源 |
| 🟢 DDD 战略设计 | 领域、限界上下文、聚合根 |
| 🔴 DDD 战术设计 | 实体、值对象、聚合、领域服务、Repository、Go 落地 |
| 🔴 业务建模方法论 | Event Storming、核心域/支撑域、状态机、服务边界划分 |
| 🟡 Saga 落地 | 编排型 vs 协调型、补偿事务设计 |
| 🟡 IM 系统 | 消息投递、离线消息、已读未读 |
高频设计题(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 秒杀系统 | 预减库存、异步下单、防超卖、流量漏斗 |
| 🔴 短链系统 | 发号器、跳转、高可用 |
| 🔴 抢红包系统 | 二倍均值法、预生成红包队列、Redis LPOP、防超发 |
| 🔴 排行榜系统 | Redis ZSet、分桶设计、历史排行榜、近似 TopK |
| 🟡 LBS 地理位置系统 | GeoHash、Redis GEO、附近的人/店、边界问题 |
| 🟡 Feed 流 | 推模式 vs 拉模式 vs 推拉结合 |
| 🔴 分布式 ID | Snowflake、Leaf、UUIDv7 对比 |
| 🔴 限流系统 | 令牌桶、滑动窗口、分布式限流 |
| 🟡 搜索系统 | 倒排索引、分词、搜索建议 |
| 🟡 支付系统 | 幂等、对账、资金安全 |
01-tcp-ip · TCP/IP(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 TCP 三次握手/四次挥手 | 状态机、TIME_WAIT 问题、连接复用 |
| 🟡 流量控制与拥塞控制 | 滑动窗口、CUBIC、BBR |
| 🟡 粘包与拆包 | 原因与解决方案 |
| 🟢 TCP Keepalive | TCP Keepalive vs 应用层心跳 |
02-http · HTTP / HTTPS(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 HTTP 版本演进 | HTTP/1.1 vs HTTP/2 vs HTTP/3 核心差异 |
| 🟡 HTTPS 握手流程 | TLS 握手、证书链、性能优化 |
| 🟡 WebSocket | 升级握手、与 HTTP 长轮询对比 |
| 🟡 gRPC 与 HTTP/2 | 多路复用、流控 |
| 🟡 网络基础高频题 | TCP vs UDP 三次握手四次挥手滑动窗口、HTTPS TLS、DNS 解析流程、Cookie vs Session vs Token ✅ |
| 🟡 输入 URL 到页面展示 | DNS 递归查询、TCP/TLS 握手、负载均衡、Nginx 反向代理、Go net/http 链路、连接池 |
03-security · Web 安全(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 常见攻击与防御 | SQL 注入、XSS、CSRF、SSRF、JWT 安全、敏感数据处理 |
| 🟡 后端安全体系 | 服务间认证、审计日志、脱敏、密钥轮换、最小权限 |
| 🟡 RBAC、ABAC 与 OIDC | 权限模型、多租户权限、统一鉴权中间件、OIDC 与 OAuth2 |
03-http2-priority · HTTP/2 优先级(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟢 HTTP/2 优先级调度 | 流优先级、依赖树、Go 实现细节 |
所有题目提供 Go + Python 双语实现,通俗讲解思路,适合所有阶段工程师
Top 50 高频算法题(按面试频率排序)(点击展开)
| 排名 | 题目 | 核心考点 |
|---|---|---|
| 01 | 两数之和 | 哈希表、空间换时间 |
| 02 | 三数之和 | 排序 + 双指针、去重 |
| 03 | 最长不重复子串 | 滑动窗口 |
| 04 | LRU 缓存 | 哈希表 + 双向链表 |
| 05 | 反转链表 | 链表指针 |
| 06 | 环形链表 | 快慢指针 |
| 07 | 合并两个有序链表 | 递归 / 迭代 |
| 08 | 二叉树层序遍历 | BFS 队列 |
| 09 | 二叉树最近公共祖先 | 树递归 |
| 10 | 岛屿数量 | DFS / BFS |
| 11-50 | 查看完整 Top50 目录 | 课程表、合并区间、跳跃游戏、DP、单调栈、回溯等 |
00-foundation · 高频基础题通俗讲解(点击展开)
| 文章 | 包含题目 |
|---|---|
| 🔴 数组与哈希高频题 | 两数之和、三数之和、最长不重复子串、有效括号、字母异位词 |
| 🔴 字符串高频题 | 反转字符串、回文判断、最长公共前缀、字符串转整数 |
| 🟡 双指针高频题 | 移除元素、合并有序数组、接雨水、盛水最多容器 |
| 🟡 排序与查找 | 快排、归并、堆排序原理,在旋转数组中搜索 |
核心模板(中高频进阶)(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 滑动窗口 | 固定窗口 / 可变窗口模板 |
| 🟡 二分查找 | 左闭右开模板、变种题型 |
| 🟡 回溯 | 全排列、组合、子集、剪枝 |
| 🔴 动态规划 | 背包、LCS、LIS、编辑距离、打家劫舍系列 |
| 🟡 链表 | 反转、合并、环检测、LRU |
| 🟡 树 DFS/BFS | 层序遍历、公共祖先、路径问题 |
| 🟡 单调栈 | 下一个更大元素、柱状图 |
| 🟡 堆 / TopK | 优先队列、TopK、合并 K 个有序列表 |
| 🟢 图论高频题 | DFS/BFS 模板、拓扑排序、并查集(岛屿数量/课程表) |
| 🔴 贪心算法高频题 | 区间调度、跳跃游戏、分发糖果、加油站 |
| 🔴 位运算高频题 | n&(n-1)、异或、自消性、只出现一次的数字系列 |
| 🟡 数学类高频题 | 快速幂、质数筛、水塘抽样、螺旋矩阵 |
5-8 年工程师的核心竞争力,区分度最高的模块
线上问题排查(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 OOM 排查 | heap dump 分析、内存泄漏定位 |
| 🔴 CPU 飙升排查 | pprof 分析、goroutine 死循环定位 |
| 🔴 死锁排查 | 数据库死锁、Go 并发死锁、pprof 定位 |
| 🔴 goroutine 泄漏排查 SOP | 泄漏告警→profile采集→定位根因→修复验证完整闭环 |
| 🟡 高延迟排查 | 链路追踪、GC 停顿、连接池 |
| 🟡 混沌工程与故障演练 | 故障注入、风险控制、演练闭环、稳定性建设 |
| 🟡 goroutine 泄漏 | 识别、定位、修复模式 |
项目设计与演进(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 技术选型方法论 | 如何在面试中讲清楚为什么选 X |
| 🟡 架构演进复盘 | 从单体到微服务的决策过程 |
| 🟡 项目复盘模板 | 背景 / 方案 / 结果 / 反思 |
| 🔴 故障复盘(Postmortem)方法论 | RCA、时间线、根因/诱因区分、改进项闭环 |
| 🔴 重构与技术债治理 | 重构 vs 重写、绞杀者模式、灰度重构、技术债治理 |
| 🟡 Go 服务架构设计 | 分层、Clean Architecture、Hexagonal、避免过度设计 |
性能治理与测试(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 压测方法论:从单接口到全链路 | 压测目标、指标体系、环境准备、压测误区 |
| 🔴 全链路压测实战 | 影子流量、数据隔离、瓶颈定位、扩容与回滚预案 |
| 🟡 测试策略:单测、集成测试、契约测试 | 测试金字塔、契约测试、重构安全、测试体系落地 |
技术领导力(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 技术规划 | 季度/年度技术 OKR 制定 |
| 🟡 降本增效实战 | 资源/数据库/缓存/日志成本优化、收益量化 |
| 🟢 带新人 | 技术传承、文档文化 |
| 🟢 Code Review 规范 | 什么值得 block,什么只是建议 |
| 🔴 工程质量体系落地 | 质量门禁、lint、测试覆盖率、CI 落地 |
| 🟡 跨团队协作 | 目标对齐、资源冲突处理、推动复杂项目落地 |
| 🟡 招聘与面试:识别候选人 | 评价维度、问题设计、面试流程、识别八股型候选人 |
面试官最爱问的环节:"你在项目里遇到过什么难题?怎么解决的?" 这个模块专门收录生产环境中的高频问题,每个场景都给出完整的排查思路 + 解决代码 + 面试话术。
业务层高频问题(点击展开)
| 文章 | 包含问题 |
|---|---|
| 🔴 业务层高频问题 | 超卖问题(Redis Lua/乐观锁)、重复下单/支付(幂等Token/唯一索引)、订单状态不一致(事务消息/对账)、大促流量突增(限流/预热/降级/异步)、数据库慢查询、第三方接口超时(熔断/重试) |
性能问题排查(点击展开)
| 文章 | 包含问题 |
|---|---|
| 🔴 性能问题排查与优化 | 接口 P99 突然升高(pprof/GC/链路追踪排查 SOP)、服务内存持续增长(goroutine泄漏/全局缓存)、CPU 突然打满(正则预编译/JSON优化/strings.Builder)、流量突增连接池打满、Redis 变慢(bigkey/hotkey/slowlog) |
数据一致性问题(点击展开)
| 文章 | 包含问题 |
|---|---|
| 🔴 数据一致性问题 | 缓存与DB不一致(Cache-Aside/延迟双删/binlog监听)、分布式事务部分失败(TCC实现/本地消息表)、MQ消息丢失/重复消费(ACK/幂等消费)、主从延迟读到旧数据、并发写数据覆盖(乐观锁/CAS) |
可用性与稳定性问题(点击展开)
| 文章 | 包含问题 |
|---|---|
| 🔴 可用性与稳定性问题 | 缓存雪崩(随机TTL/多级缓存/预热)、缓存击穿(互斥锁/逻辑过期)、依赖服务宕机(熔断器状态机/降级策略)、服务雪崩(超时隔离/goroutine信号量)、流量热点(一致性哈希/热点路由) |
| 🔴 数据迁移与重构问题 | 不停服数据库迁移(双写+灰度)、单体拆微服务(绞杀者模式)、MySQL 迁移分库分表 |
| 🔴 并发编程实战问题 | goroutine 池设计、并发安全本地缓存(分片锁/TTL)、优雅关闭(WaitGroup+信号)、errgroup/semaphore/pipeline |
| 🔴 面试高频场景题 | 高可用设计框架、技术债处理、重新设计系统、P0 故障处理 SOP、QPS 从千到万的扩容路径 |
简历与行为面试(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 5-8 年工程师简历写法指南 | 项目经历量化、关键词优化、五段式项目描述 |
| 🟡 STAR 法则 | Situation/Task/Action/Result |
| 🟡 高频行为题 | 冲突处理、失败经历、晋升理由 |
| 🟡 晋升答辩 | 结构化表达、影响力量化 |
| 🟡 薪资谈判 | 锚点设置、竞争 Offer 利用 |
| 🟢 Offer 对比 | 薪资 / 成长 / 平台 / 稳定性 |
实战专题(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🟡 io / encoding / time / testing 生产实践 | Reader/Writer 组合、json 性能、Timer 泄漏、测试最佳实践 |
基础与排障(点击展开)
| 文章 | 核心考点 |
|---|---|
| 🔴 进程、线程、协程与调度 | 进程/线程/协程区别、上下文切换、goroutine 与线程映射 |
| 🔴 虚拟内存、页缓存与 mmap | 页表、缺页中断、Page Cache、mmap vs read/write |
| 🔴 I/O 模型与零拷贝 | select/poll/epoll、sendfile、splice、Go netpoller |
| 🔴 cgroup、namespace 与容器资源隔离 | 容器资源限制、OOMKilled、GOMAXPROCS、K8s resource 控制 |
| 🔴 Linux 线上排障基础 | load、CPU、内存、fd、IO、TIME_WAIT 排查 SOP |
| 🔴 Linux 基础高频命令 | top/ps/ss/lsof/strace/tcpdump 排障工具链、Go 服务特殊关注点 |
| 🔴 进程间通信方式 | 管道/消息队列/共享内存/信号量/socket 对比、Go 对应实现 |
本仓库所有文章遵循统一规范,确保面试时能结构化输出:
1. 🎯 面试官考察意图 — 这道题想考什么,考到什么深度
2. ⚡ 核心答案(30秒)— 开门见山,电梯演讲式简短回答
3. 🔬 深度展开 — 原理 → 源码/实现细节 → 生产经验/踩坑 → 竞品对比
4. ❓ 高频追问 — 覆盖面试官的下一个问题,不被追问打乱节奏
5. 📚 延伸阅读 — 参考资料与源码链接
欢迎 PR 补充内容!提交前请确认:
- 放到正确的子目录,文件名格式
NN-kebab-case.md - 遵循统一的五段式内容结构
- 结合生产经验,避免纯理论堆砌
- 关键结论有数据或源码支撑
- 代码块注明语言类型,Go 代码可直接运行
- 不包含未发布 Go 版本的特性
如果本仓库对你有帮助,欢迎点个 Star 🌟
📖 持续更新中 · 建议 Watch 仓库获取最新动态
Made with ❤️ for Go Engineers