中间件八股文
共 207 节 · 按顺序读,也可以直接点标题跳转
207 节12 个专题免费阅读持续更新
Redis9 题
01★ Redis 有哪些数据结构,底层编码分别是什么?开始阅读 ›02★ RDB 与 AOF 有什么区别?生产环境如何选型?开始阅读 ›03Redis 过期删除策略与内存淘汰策略有何区别?如何配置?开始阅读 ›04★ 缓存穿透、缓存击穿、缓存雪崩是什么?如何应对?开始阅读 ›05★ 如何保证缓存与数据库一致性?Cache Aside 与延迟双删怎么用?开始阅读 ›06热 key 与大 key 如何发现与处理?开始阅读 ›07★ Redisson 分布式锁原理是什么?主从切换会带来什么问题?开始阅读 ›08Redis 主从复制与哨兵是如何工作的?开始阅读 ›09Redis Cluster 的哈希槽如何分配?扩容迁移有什么影响?开始阅读 ›
消息队列(Kafka / RocketMQ / RabbitMQ)10 题
10什么是 Redis 集群脑裂问题,怎么解决?开始阅读 ›11为什么要用消息队列?它解决了什么问题又引入哪些新问题?开始阅读 ›12如何保证消息可靠投递?生产端 confirm 与事务机制怎么选?开始阅读 ›13★ 如何保证消息消费幂等?重复消息如何识别与去重?开始阅读 ›14RabbitMQ 有哪些交换机类型?绑定与路由键如何工作?开始阅读 ›15RabbitMQ 如何保证消息不丢失?confirm、手动 ack 与持久化怎么配合?开始阅读 ›16什么是死信队列?RabbitMQ 如何实现延迟队列?开始阅读 ›17★ Kafka 如何保证消息顺序?分区与顺序有什么关系?开始阅读 ›18Kafka 的 ISR、acks 与副本机制如何保证可靠性?开始阅读 ›19Kafka 消费者组是什么?rebalance 如何发生、有何影响?开始阅读 ›
分布式架构7 题
MySQL10 题
27★ MySQL 为什么选用 B+Tree 作为索引结构?开始阅读 ›28聚簇索引、二级索引、回表与覆盖索引分别是什么?开始阅读 ›29★ 最左前缀原则是什么?哪些常见写法会导致索引失效?开始阅读 ›30怎么读 EXPLAIN?type、key、rows、Extra 分别说明什么?开始阅读 ›31事务的 ACID 如何理解?MySQL 的隔离级别与实现手段是什么?开始阅读 ›32★ redo log、undo log、binlog 分别管什么?两阶段提交解决什么问题?开始阅读 ›33慢 SQL 怎么定位?给出从查看到优化的完整流程。开始阅读 ›34MySQL 主从复制原理是什么?主从延迟从哪来、怎么治理?开始阅读 ›35读写分离落地要注意什么?主从延迟导致的“读旧数据”怎么破?开始阅读 ›36★ 分库分表怎么做?水平/垂直、取模/一致性哈希怎么选,代价是什么?开始阅读 ›
Nginx 与网关3 题
缓存架构2 题
稳定性治理4 题
选型与系统设计6 题
消息与缓存(进阶)2 题
MySQL23 题
54char 和 varchar 的区别?开始阅读 ›55InnoDB 和 MyISAM 有什么区别?开始阅读 ›56MySQL 深度分页如何优化?开始阅读 ›57什么是回表查询?如何避免?开始阅读 ›58自增主键用完了怎么办?开始阅读 ›59为什么不推荐使用外键?开始阅读 ›60唯一索引和主键索引的区别?开始阅读 ›61count(1)、count(*) 与 count(列名) 的区别?开始阅读 ›62InnoDB 中索引类型有哪些?开始阅读 ›63truncate、delete、drop 的区别?开始阅读 ›64慢查询怎么排查?开始阅读 ›65脏读、幻读、不可重复读是什么?开始阅读 ›66什么是数据库死锁,怎么解决?开始阅读 ›67用了索引还是很慢,可能是什么原因?开始阅读 ›68如何进行 SQL 调优?开始阅读 ›69binlog、redo log 和 undo log 的区别?开始阅读 ›70设计索引时应遵循哪些原则?开始阅读 ›71为什么不建议使用存储过程?开始阅读 ›72为什么互联网大厂不推荐使用多表 JOIN?开始阅读 ›73什么是数据库范式,为什么要反范式化设计?开始阅读 ›74什么是最左前缀匹配?为什么要遵守?开始阅读 ›75乐观锁与悲观锁怎么实现?开始阅读 ›76谈谈 InnoDB 中的表级锁、页级锁、行级锁?开始阅读 ›
Redis26 题
77InnoDB 加索引,这个时候会锁表吗?开始阅读 ›78Redis 数据类型有哪几种?开始阅读 ›79Redis 和 Memcached 的区别?开始阅读 ›80Redis 和 Caffeine 的区别是什么?开始阅读 ›81Redis 是单线程还是多线程?开始阅读 ›82Redis 单线程,为什么还这么快?开始阅读 ›83Redis Key 和 Value 的设计原则有哪些?开始阅读 ›84谈谈 Redis 的持久化机制:RDB 与 AOF 的区别?开始阅读 ›85Redis 分布式锁如何实现?开始阅读 ›86Redis 锁是并发安全的吗?怎么保证不被抢夺?开始阅读 ›87怎么解决 Redis 缓存和数据库的一致性问题?开始阅读 ›88Redis 如何实现发布、订阅?开始阅读 ›89谈谈 Redis 5.0 中的 Stream 消息队列?开始阅读 ›90Redis 如何实现延迟消息?开始阅读 ›91谈谈 Redis 的过期策略?开始阅读 ›92谈谈 Redis 的内存淘汰策略?开始阅读 ›93Redis 事务和 Lua 脚本的区别?开始阅读 ›94Redis 为什么要自定义 SDS?开始阅读 ›95Redis 如何高效安全的遍历所有 Key?开始阅读 ›96什么是缓存击穿、缓存穿透、缓存雪崩?开始阅读 ›97什么是大 Key 问题,如何解决?开始阅读 ›98什么是热点 Key 问题,如何解决?开始阅读 ›99谈谈 ZSet 底层实现?开始阅读 ›100谈谈 Redis 集群模式?开始阅读 ›101什么是 Redis 的数据分片?开始阅读 ›102为什么 Redis 不支持回滚?开始阅读 ›
消息队列(Kafka / RocketMQ / RabbitMQ)29 题
103为什么项目要选择 RocketMQ?开始阅读 ›104RocketMQ 的架构是怎么样的?开始阅读 ›105RocketMQ 有几种集群部署方式?开始阅读 ›106RocketMQ 消息堆积了怎么处理?开始阅读 ›107RocketMQ 的消息是推模式,还是拉模式?开始阅读 ›108谈谈 RocketMQ 的事务消息?开始阅读 ›109RocketMQ 怎么保证消息的顺序性?开始阅读 ›110RocketMQ 怎么保证消息不丢失?开始阅读 ›111RabbitMQ 的整体架构是怎样的?开始阅读 ›112RabbitMQ 是如何保证高可用的?开始阅读 ›113RabbitMQ 如何防止重复消费?开始阅读 ›114RabbitMQ 如何保证消息不丢失?开始阅读 ›115RabbitMQ 怎么实现延迟消息?开始阅读 ›116什么是 RabbitMQ 的死信队列?开始阅读 ›117说说 RabbitMQ 的事务机制?开始阅读 ›118RabbitMQ 如何实现消费端限流?开始阅读 ›119怎么保证消息一定能发送到 RabbitMQ?开始阅读 ›120Kafka 的架构是怎么样的?开始阅读 ›121Kafka 为什么这么快?开始阅读 ›122Kafka 有几种选举过程?开始阅读 ›123Kafka 如何实现顺序消费?开始阅读 ›124Kafka 如何保证消息不丢失?开始阅读 ›125为什么 Kafka 没办法 100% 保证消息不丢失?开始阅读 ›126Kafka 消息的发送过程简单介绍一下?开始阅读 ›127Kafka 为什么有 Topic 还要用 Partition?开始阅读 ›128什么是 Kafka 的重平衡机制?开始阅读 ›129介绍一下 Kafka 的 ISR 机制?开始阅读 ›130Kafka 怎么保证消费只消费一次的?开始阅读 ›131Kafka 高水位了解过吗?为什么 Kafka 需要 LeaderEpoch?开始阅读 ›
分布式与 RPC(Dubbo / ZK / Netty / ES)40 题
132Dubbo 的整体架构是怎样的?开始阅读 ›133Dubbo 服务发现与路由的概念有什么不同?开始阅读 ›134Dubbo 的 SPI 和 JDK 的 SPI 有什么区别?开始阅读 ›135为什么 RPC 要比 HTTP 更快?开始阅读 ›136Dubbo 如何实现像本地方法一样调用远程方法的?开始阅读 ›137Dubbo 的服务调用过程是什么样的?开始阅读 ›138什么是 Dubbo 的优雅停机,怎么实现的?开始阅读 ›139Dubbo 支持哪些序列化方式?开始阅读 ›140Dubbo 支持哪些负载均衡策略?开始阅读 ›141Dubbo 支持哪些调用协议?开始阅读 ›142有用过 Dubbo 的异步调用吗?开始阅读 ›143Dubbo 的缓存机制了解吗?开始阅读 ›144Zookeeper 是干什么的?开始阅读 ›145Zookeeper 是 CP 的还是 AP 的?开始阅读 ›146Zookeeper 的典型应用场景有哪些?开始阅读 ›147Zookeeper 的数据结构是怎样的?开始阅读 ›148Zookeeper 的 watch 机制是如何工作的?开始阅读 ›149如何通过 Zookeeper 实现服务注册与发现?开始阅读 ›150如何用 Zookeeper 实现分布式锁?开始阅读 ›151Zookeeper 脑裂是什么?怎么解决?开始阅读 ›152Zookeeper 是如何保证创建的节点是唯一的?开始阅读 ›153为什么 Netty 适合做网络编程?开始阅读 ›154Netty 性能好的原因是什么?开始阅读 ›155Netty 如何解决 TCP 粘包、拆包的问题?开始阅读 ›156Netty 有哪些序列化协议?开始阅读 ›157Netty 的零拷贝是怎么实现的?开始阅读 ›158Netty 的线程模型是怎么样的?开始阅读 ›159Netty 的 ByteBuf 为什么好用?开始阅读 ›160说说 Netty 的对象池技术?开始阅读 ›161谈谈 Netty 的无锁化设计?开始阅读 ›162Netty 中用了哪些设计模式?开始阅读 ›163为什么要使用 ElasticSearch?和传统关系数据库(如 MySQL)有什么不同?开始阅读 ›164ElasticSearch 为什么快?开始阅读 ›165ES 支持哪些数据类型,和 MySQL 之间的映射关系是怎么样的?开始阅读 ›166倒排索引是什么?开始阅读 ›167ES 不支持 decimal,如何避免丢失精度?开始阅读 ›168Elasticsearch 支持事务吗?为什么?开始阅读 ›169什么是 Elasticsearch 的深度分页问题?如何解决?开始阅读 ›170如何优化 ElasticSearch 搜索性能?开始阅读 ›171如何保证 ES 和数据库的数据一致性?开始阅读 ›
设计模式与高可用14 题
172什么是设计模式?它能带来哪些好处?开始阅读 ›173设计模式的 7 大基本原则有哪些?开始阅读 ›174单例模式有几种写法?开始阅读 ›175什么是代理模式?应用场景有哪些?开始阅读 ›176什么是责任链模式?应用场景有哪些?开始阅读 ›177什么是观察者模式?应用场景有哪些?开始阅读 ›178什么是状态模式?应用场景有哪些?开始阅读 ›179什么是模板方法模式?应用场景有哪些?开始阅读 ›180什么是工厂模式?3种实现方式的区别和特点?开始阅读 ›181什么是享元模式?应用场景有哪些?开始阅读 ›182策略模式和工厂模式的区别?开始阅读 ›183策略模式和 if-else 相比有什么好处?开始阅读 ›184什么是异地多活?开始阅读 ›185什么是冷备、热备,暖备?开始阅读 ›
分库分表与高并发22 题
186什么是分库?分表?分库分表?开始阅读 ›187分库分表后会带来哪些问题?开始阅读 ›188什么是数据倾斜,会带来哪些问题?如何解决?开始阅读 ›189分区和分表有什么区别?开始阅读 ›190分表字段如何选择?开始阅读 ›191分库分表的数量为什么一般选择 2 的幂?开始阅读 ›192分表后全局 ID 如何生成?开始阅读 ›193分库分表后如何进行分页查询?开始阅读 ›194分表算法都有哪些?开始阅读 ›195分库分表的取模算法策略,怎么避免数据倾斜?开始阅读 ›196分库分表之后怎么进行 Join 操作?开始阅读 ›197分库分表中,如何预估需要分多少个库?多少张表?开始阅读 ›198分库分表后,怎么设计,可以降低数据迁移的难度?开始阅读 ›199ShardingJDBC 有哪些分片策略,你用的哪个?开始阅读 ›200高并发场景中,乐观锁和悲观锁哪个更适合?开始阅读 ›201漏桶和令牌桶有啥区别?开始阅读 ›202什么是熔断?开始阅读 ›203什么是预热?它有什么作用?开始阅读 ›204什么是服务降级?开始阅读 ›205什么是限流?常见的限流算法有哪些?开始阅读 ›206什么是自适应限流?开始阅读 ›207单机限流和集群限流的区别是什么?开始阅读 ›