☰
Go 面试突击:MySQL、Redis、Kafka 三大中间件 25 题
2026/9/30 7:10:34 网站建设 项目流程

Go 面试突击:MySQL、Redis、Kafka 三大中间件 25 题

后端工程师离不开中间件。本文以"答案 + 实战建议"的方式总结 25 道典型题。

一、MySQL

Q1. MySQL 事务隔离级别?

READ UNCOMMITTED / READ COMMITTED / REPEATABLE READ / SERIALIZABLE。InnoDB 默认 REPEATABLE READ。

Q2. 什么是 MVCC?

多版本并发控制,存历史快照,REPEATABLE READ 下事务读快照。

Q3. 索引为什么用 B+ 树?

  • 高度低 → IO 少
  • 范围扫描快 → 叶子节点链表
  • 适合磁盘

Q4. 索引覆盖?

查询只需要索引列,索引本身就是数据。

Q5. 慢 SQL 排查流程?

  1. EXPLAIN 看是否走索引
  2. Show Profile
  3. performance_schema
  4. Slow log

Q6. count(*) 优化?

用缓存计数 / 近似APPROX_COUNT_DISTINCT/ 表自身冗余字段。

Q7. 大表 ALTER?

pt-online-schema-change / gh-ost。

Q8. binlog 三种格式?

STATEMENT、ROW、MIXED。

Q9. ROW vs STATEMENT?

ROW 记录全部变更,分布式友好;STATEMENT 文本,可能不一致。

二、Redis

Q10. Redis 五种数据结构?

string / list / hash / set / zset。

Q11. Redis 是单线程?

IO 单线程;6.0+ 部分命令多线程。

Q12. 内存淘汰策略?

LRU / LFU / All keys / Volatile keys。

Q13. Redis 持久化?

RDB:snapshot;AOF:append only file,秒级恢复。

Q14. Redis Cluster 哈希槽?

16384 slot,每个节点一段。

Q15. Redis 分布式锁 RedLock?

多实例拿锁,超过一半成功视为 OK。

Q16. Cache 雪崩?

大量 key 同时过期,请求打到 DB。策略:过期时间加随机 / 后台刷新 / 多级缓存。

Q17. 缓存穿透 / 击穿?

  • 穿透:恶意不存在 key → 布隆过滤器
  • 击穿:热点 key 失效 → singleflight

Q18. Pipeline 与 Transaction 区别?

pipeline 批量发送;transaction 是 MULTI/EXEC。

三、Kafka

Q19. Kafka 架构?

  • Producer / Consumer
  • Broker + Topic + Partition
  • Zookeeper / KRaft

Q20. 什么是 ISR?

in-sync replicas,跟 Leader 同步的副本集。

Q21. Kafka 三种投递语义?

at-most-once / at-least-once / exactly-once。

Q22. Kafka 消费位置 Offset 怎么管理?

__consumer_offsetstopic。

Q23. 消息顺序性如何保证?

单 partition 单消费者 + 业务 key hash。

Q24. 重复消费解决方案?

幂等 + 业务 dedup。Kafka 0.11+ 事务消息也能保住 exactly-once。

Q25. 消息堆积?

扩容 partition + 临时降级。

四、踩坑清单

  • MySQL:不要 ORDER BY RAND()
  • Redis:不要 KEYS *,会卡
  • Kafka:消费者处理时间过长导致 rebalance

五、总结

三大中间件覆盖 80% 后端业务。深入原理 + 实战排查能力比记忆重要。

六、参考文献

  • MySQL 官方文档
  • Redis 官方文档
  • Kafka 官方文档

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询