Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

155 Commits
 
 
 
 
 
 

Repository files navigation

🏆 Go 高级工程师面试宝典

专为 5~8 年 Go 后端工程师打造 · 大厂面试核心考点全覆盖

Stars Forks License PRs Welcome 文章数量 版本


📝 自动更新记录

日期 版本 更新内容
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/ 目录,引用用相对路径

优先补充的内容(P0 空缺)

以下是当前仍需补充的高优先级内容,按需认领:

模块 缺少的文章 优先级 状态
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 ✅ 已完成
02-database/01-mysql EXPLAIN 输出字段逐一解读 P0 ✅ 已完成
03-distributed/04-service-mesh Service Mesh(Istio/Envoy)原理 P1 ✅ 已完成
01-golang/05-stdlib net/http 深度解析 P1 ✅ 已完成
01-golang/05-stdlib sync.Map 与并发安全 Map P1 ✅ 已完成
01-golang/05-stdlib 错误处理最佳实践 P1 ✅ 已完成
03-distributed/05-coordination etcd 原理与实战 P1 ✅ 已完成
03-distributed/05-coordination 配置中心选型与实践 P2 ✅ 已完成
02-database/04-tidb TiDB 架构与适用场景 P2 ✅ 已完成
06-network/03-security Web 安全:常见攻击与防御 P1 ✅ 已完成
07-algorithms/09-graph 图论高频题(DFS/BFS/并查集) P2 ✅ 已完成
10-real-problems/05 数据迁移与重构问题 P1 ✅ 已完成
10-real-problems/06 并发编程实战问题 P0 ✅ 已完成
10-real-problems/07 面试高频场景题(开放性) P0 ✅ 已完成
08-engineering/02-troubleshooting goroutine 泄漏排查 SOP P0 ✅ 已完成
01-golang/03-language-deep constraints.Ordered:标准库类型约束 P2 ✅ 已完成
02-database/01-mysql Change Buffer:二级索引写性能优化 P1 ✅ 已完成

🗺️ 知识地图

⭐ 优先级说明

备考时间紧张,按 P0 → P1 → P2 顺序攻克

标记 含义 建议投入
🔴 P0 大厂必考,逢面必问 优先搞定
🟡 P1 高频考点,有一定深度 次优先
🟢 P2 加分项,有余力再看 拔高用

📦 01 · Go 语言深度 🔴 P0

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 · Go 语言深度 🔴 P0

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 链路、分块策略

🗄️ 02 · 数据库 🔴 P0

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 场景与选型 ✅
03-elasticsearch · Elasticsearch(点击展开)
文章 核心考点
🟢 倒排索引原理 分词、相关性评分、BM25
🟢 查询优化 mapping 设计、冷热数据分离
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

🌐 03 · 分布式系统 🟡 P1

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 争议

🔧 04 · 微服务工程 🟡 P1

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 流水线 蓝绿部署、金丝雀发布

🏗️ 05 · 系统设计 🔴 P0

架构模式(点击展开)
文章 核心考点
🟡 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 对比
🔴 限流系统 令牌桶、滑动窗口、分布式限流
🟡 搜索系统 倒排索引、分词、搜索建议
🟡 支付系统 幂等、对账、资金安全
容量估算(点击展开)
文章 核心考点
🟡 信封估算法 QPS / 存储 / 带宽快速估算
🟡 性能指标体系 P99/P999、可用性 SLA

🌍 06 · 网络协议 🟡 P1

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 实现细节

📐 07 · 高频算法 🟡 P2

所有题目提供 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)、异或、自消性、只出现一次的数字系列
🟡 数学类高频题 快速幂、质数筛、水塘抽样、螺旋矩阵
Go 实现技巧(点击展开)
文章 核心考点
🟢 Go 刷题技巧 排序、字符串处理、math 库
🟢 并发算法题 生产者消费者、交替打印

🛠️ 08 · 工程素养 🟡 P1

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 落地
🟡 跨团队协作 目标对齐、资源冲突处理、推动复杂项目落地
🟡 招聘与面试:识别候选人 评价维度、问题设计、面试流程、识别八股型候选人

🔥 10 · 项目实战问题 🔴 P0

面试官最爱问的环节:"你在项目里遇到过什么难题?怎么解决的?" 这个模块专门收录生产环境中的高频问题,每个场景都给出完整的排查思路 + 解决代码 + 面试话术

业务层高频问题(点击展开)
文章 包含问题
🔴 业务层高频问题 超卖问题(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 从千到万的扩容路径

💼 09 · 面试策略

简历与行为面试(点击展开)
文章 核心考点
🟡 5-8 年工程师简历写法指南 项目经历量化、关键词优化、五段式项目描述
🟡 STAR 法则 Situation/Task/Action/Result
🟡 高频行为题 冲突处理、失败经历、晋升理由
🟡 晋升答辩 结构化表达、影响力量化
🟡 薪资谈判 锚点设置、竞争 Offer 利用
🟢 Offer 对比 薪资 / 成长 / 平台 / 稳定性

📚 11 · Go 标准库生产实践

实战专题(点击展开)
文章 核心考点
🟡 io / encoding / time / testing 生产实践 Reader/Writer 组合、json 性能、Timer 泄漏、测试最佳实践

🐧 12 · Linux / 操作系统 🔴 P0

基础与排障(点击展开)
文章 核心考点
🔴 进程、线程、协程与调度 进程/线程/协程区别、上下文切换、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 版本的特性

提 Issue · 提 PR


⭐ Star 趋势

如果本仓库对你有帮助,欢迎点个 Star 🌟

Star History Chart


📖 持续更新中 · 建议 Watch 仓库获取最新动态

Made with ❤️ for Go Engineers

Releases

Packages

Contributors