jb2ai.ltd · 面试冲刺首页

周江斌面试速记

这是给你自己用的一页总纲,目标不是把所有细节背满,而是把面试最容易得分的主线讲顺:并发、数据结构、内存、Kafka、项目表达。

Go Kafka 并发 项目表达 面试速记
一分钟总纲

先讲调度,再讲通信,然后说同步与数据结构,最后收口到内存、Kafka 和项目表达。

1. 先讲调度
GMP 先拿下:G 是任务,M 是线程,P 是调度资源;本地队列优先,空了去全局队列,再 work stealing。
2. 再讲通信
channel 不是普通队列,而是缓冲区 + 发送队列 + 接收队列 + 锁;无缓冲强调同步交接,有缓冲强调解耦。
3. 再讲同步
Mutex / RWMutex / WaitGroup / Once / Context 是并发题标配,重点说清什么时候防竞争、什么时候防泄漏。
4. 再讲数据结构
slice = ptr + len + cap;map 本质是哈希表;interface 记住动态类型和值两部分。
5. 最后讲内存
defer、逃逸分析、GC 三件套一起背:什么时候求值、什么会逃逸、GC 三色标记和 STW。

回答模板

八股题回答模板
结论先行 -> 原理拆开 -> 场景落地。先一句话给面试官答案,再讲底层,再补生产场景。
项目题回答模板
背景 -> 问题 -> 方案 -> 效果。效果一定量化,比如 QPS、延迟、错误率、成本、机器数。
排障题回答模板
现象 -> 定位 -> 归因 -> 修复 -> 预防。别只讲修复,要加监控、限流、兜底、复盘。

Go 主线

按主线记,不按零散题记。每条线只要能先讲结论,再讲底层,再落场景,面试节奏会稳很多。

并发主线

  • GMP、抢占调度、work stealing
  • channel 阻塞条件、select 随机公平、nil channel 永久阻塞
  • worker pool、超时控制、限流、goroutine 泄漏治理

数据结构主线

  • slice 扩容不要死背永远翻倍,要讲小对象快增、大对象趋缓
  • map 不是线程安全,并发写可能 panic
  • interface 面试重点是动态类型和值,不是泛泛而谈多态

内存主线

  • defer:先计算返回值,再执行 defer,最后真正 return
  • 逃逸分析:返回局部指针、闭包捕获、大对象都可能逃逸
  • GC:三色标记 + 写屏障 + STW 只在关键阶段发生

记忆口诀

GMP 讲调度,channel 讲同步,slice/map 讲结构,defer/逃逸/GC 讲内存,项目一定讲数字。

快答卡片

这些句子适合面试前最后一轮速刷,先把骨架说出来,再按追问展开。

数组是值类型,切片是对底层数组的描述。
map 本质是哈希表,扩容是渐进迁移,不是一次性搬完。
channel 本质是队列加等待队列,既传数据也做同步。
GMP 记住一句:M 拿到 P 才能跑 G。
至少一次 = 先处理业务再提交 offset;可能重复,所以业务要幂等。
acks=all 不是绝对安全,要结合 min.insync.replicas。
项目表达一定要有数字,不然方案像空话。

Kafka 速记

Kafka 题不要散着背,抓住核心概念、可靠性、消费语义和积压治理这四条线就够用了。

先背五个核心词

Topic、Partition、Replica、Leader/Follower、ISR。Producer 和 Consumer 只跟 Leader 交互。

为什么快

顺序写磁盘、批量发送、零拷贝、分区并行、页缓存配合。

为什么相对稳

高可靠配置不是只说 acks=all,而是 acks=all + min.insync.replicas>=2 + retries + 幂等生产者。

消费语义

Kafka 的确认核心不是 ack 包,而是 offset commit;先业务后提交是 at least once。

项目表达

项目不是讲“我做过什么模块”,而是讲“我解决过什么真实问题,为什么值得相信”。

项目四步法

  1. 背景:业务量、技术栈、为什么这个项目重要。
  2. 问题:高峰期瓶颈在哪,是数据库、锁竞争、队列积压,还是外部接口抖动。
  3. 方案:分层讲限流、异步化、缓存、连接池、批处理、监控告警。
  4. 效果:QPS 提升多少、RT 降多少、超时率降多少、机器节省多少。

七天冲刺节奏

Day 1-2
GMP、channel、sync,把并发主线一次讲顺。
Day 3
worker pool、超时控制、限流、goroutine 泄漏。
Day 4
slice、map、interface,一定带底层结构一起背。
Day 5
defer、逃逸分析、GC,把内存主线补齐。
Day 6
Kafka:核心概念、acks、offset、rebalance、积压治理。
Day 7
项目复盘 + 模拟面试,把背景、问题、方案、效果说熟。