外观
Go 后端八股
面向 Go 全栈 / 后端日常实习。整理日期:2026-10-31。
每篇包含一句话回答、原理、场景边界、项目关联、常见追问和官方资料。语言语义与运行时实现分开记,涉及实现细节时先说明版本。数据库、网络主笔记维护在公共基础,通过链接复用。
怎么复习
- 先过 P0:合上笔记口述 30~60 秒,再解释一个反例。
- 再练代码:独立写切片输出题、channel 退出、有界并发和事务失败处理,说明边界。
- 最后过 P1:从慢请求、内存增长、消息重复等现象讲排查与取舍。
- 沿项目链接核对源码和真实分工;关联项目只是复习入口,未验证的实现和收益不能写成个人成果。
状态统一保留“未准备”,掌握后本人更新;补齐资料不等于完成复习。
知识索引
| 优先级 | 知识点 | 状态 | 关联项目 / 场景 | 下次复习 |
|---|---|---|---|---|
| P0 | 类型、指针与值传递 | 未准备 | 通用基础 | 待安排 |
| P0 | 数组、切片与字符串 | 未准备 | 消息与媒体缓冲区 | 待安排 |
| P0 | map 原理与并发安全 | 未准备 | 在线连接表 | 待安排 |
| P0 | 接口、方法集与 nil | 未准备 | SimulSpeak provider | 待安排 |
| P0 | defer、错误处理与 panic | 未准备 | 请求和资源清理 | 待安排 |
| P0 | goroutine 与 GMP 调度 | 未准备 | 两个 Go 项目 | 待安排 |
| P0 | channel、select 与退出 | 未准备 | 消息与流式管线 | 待安排 |
| P0 | 锁、原子操作与内存模型 | 未准备 | 共享会话状态 | 待安排 |
| P0 | context、超时与取消 | 未准备 | AI 与数据库调用 | 待安排 |
| P0 | HTTP 服务与中间件 | 未准备 | 两个 Go 项目 | 待安排 |
| P0 | 鉴权、JWT 与接口安全 | 未准备 | EinoTalk | 待安排 |
| P0 | SQL、索引与执行计划 | 未准备 | EinoTalk MySQL | 待安排 |
| P0 | 事务、MVCC 与锁 | 未准备 | MySQL;SQLite 须另核对 | 待安排 |
| P0 | 数据库连接池与 GORM | 未准备 | EinoTalk | 待安排 |
| P0 | Redis 数据结构与缓存 | 未准备 | EinoTalk | 待安排 |
| P0 | 常见手写题与并发练习 | 未准备 | 通用基础 | 待安排 |
| P1 | GC、逃逸分析与内存 | 未准备 | 长连接与流式数据 | 待安排 |
| P1 | Redis 原子性与分布式锁 | 未准备 | EinoTalk 路由清理 | 待安排 |
| P1 | 消息队列、幂等与一致性 | 未准备 | EinoTalk Kafka | 待安排 |
| P1 | 测试、pprof 与故障排查 | 未准备 | 两个 Go 项目 | 待安排 |
| P1 | TCP、HTTP 与长连接 | 未准备 | WebSocket / 流式响应 | 待安排 |
| P1 | 进程、线程与 IO 多路复用 | 未准备 | Go 网络服务 | 待安排 |
自测标准
- 原理题:能说机制、条件与反例,不背固定扩容倍数、固定线程数等实现口诀。
- 并发题:说明谁创建、谁关闭、谁等待,错误如何传播,最大在途任务数是多少。
- 数据题:区分事务、缓存、消息队列的保证,解释进程在任意一步退出会怎样。
- 排障题:先给观测证据,再提假设、验证和回滚;性能收益须实测。
- 按 JD 后续扩展:Linux 实操、容器部署、gRPC、etcd/Raft、分库分表。