Skip to content

面试速答(先看这里)

**一句话结论:**责任链模式的好处是什么?

60秒标准回答:

普本,3年经验,IOT项目,微服务+大数据,SSM,redis,kafka,go,flink,实时分析,数据过滤,自定义规则,责任链模式

责任链模式的好处是什么?都哪些场景可以用责任链?

开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容?

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**开通的分布式一致性怎么保障的?
  • **要点2:**重试是如何实现的?
  • **要点3:**除了 Sleep 还有其他方案吗?
  • **要点4:**MQ 是如何实现的削峰填谷?
  • **要点5:**Pull 对 MQ 造成压力怎么办?

**记忆锚点:**rehash → sleep → Kafka → Mysql → Redis → key

关键取舍:

  • 性能优化做过吗?
  • RR 的缺点是什么?

易错提醒:

  • 回滚操作调失败了怎么办?
  • 下游系统失败的原因可能是什么?

加分表达:

  • 都哪些场景可以用责任链?
  • 如果超时的情况如何兼容?
  • 介绍一下, arthas ,优化流程, CMS 优化, Mysql 隔离级别默认是哪个?

追问准备:

  • 普本,3年经验,IOT项目,微服务+大数据,SSM,redis,kafka,go,flink,实时分析,数据过滤,自定义规则,责任链模式 责任链模式的好处是什么?
  • 都哪些场景可以用责任链?
  • 开通的分布式一致性怎么保障的?
  • 如果超时的情况如何兼容?

面试者背景 ​

普本,3年经验,IOT项目,微服务+大数据,SSM,redis,kafka,go,flink,实时分析,数据过滤,自定义规则,责任链模式

面试过程 ​

> 责任链模式的好处是什么?都哪些场景可以用责任链? > > 开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容? > > 重试是如何实现的?sleep?这个过程应用重启了怎么办? > > 除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入? > > 最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。 > > MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push? > > Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、 > > Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。 > > 如何避免重复消费对业务造成影响? > > Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO > > 一句话总结HW的作用? > > 性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化, > > Mysql隔离级别默认是哪个?为啥是RR?RR解决了幻读吗?完全解决了吗? > > RR的缺点是什么?RR相比RC多了什么?为啥很多大公司要把RR改成RC? > > Mysql的行级锁到底锁的是什么东西? > > Redis常用数据结构有哪些?hash、string、set、zset、list、geo、 > > Reids渐进式rehash过程是怎么样的?为啥要这么干?每次渐进rehash的时候怎么选择rehash哪些数据呢? > > 为什么redis有一批key过期,为啥其他的key读写效率降低?单线程 > > 如何避免这种问题?被动删除、随机过期时间, > > Redis的集群模式介绍下,主从、哨兵、分片。怎么避免脑裂的问题?能彻底避免吗?

题目解析 ​

> 责任链模式的好处是什么?都哪些场景可以用责任链?

责任链:https://www.yuque.com/laiyanhong-9tr5c/zwpzru/ntrtq7its9137awe

> 开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容? > > 重试是如何实现的?sleep?这个过程应用重启了怎么办? > > 除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入? > > 最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。

这里面候选人提到自己用了最大努力通知,但是实现方式竟然是自己在代码中sleep,然后自己重试,这个方案肯定是不过关的。因为sleep这种一旦应用重启之后,数据就都丢失了,任务就没人继续调度重试了。

所以好一点的方案肯定是用MQ,依赖他的可靠性来实现。

📄 ✅什么是最大努力通知?

打开文档:✅什么是最大努力通知?

📄 ✅如何基于本地消息表实现分布式事务?

打开文档:✅如何基于本地消息表实现分布式事务?

📄 ✅为什么要使用消息队列?

打开文档:✅为什么要使用消息队列?

> MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push? > > Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、

📄 ✅消息队列使用拉模式好还是推模式好?为什么?

打开文档:✅消息队列使用拉模式好还是推模式好?为什么?

📄 ✅RocketMQ消息堆积了怎么解决?

打开文档:✅RocketMQ消息堆积了怎么解决?

> Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。

📄 ✅什么是Kafka的重平衡机制?

打开文档:✅什么是Kafka的重平衡机制?

> 如何避免重复消费对业务造成影响?

📄 ✅如何解决接口幂等的问题?

打开文档:✅如何解决接口幂等的问题?

> Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO > > 一句话总结HW的作用?

📄 ✅Kafka 高水位了解过吗?为什么 Kafka 需要 Leader Epoch?

打开文档:✅Kafka 高水位了解过吗?为什么 Kafka 需要 Leader Epoch?

> 性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化,

> Mysql隔离级别默认是哪个?为啥是RR?RR解决了幻读吗?完全解决了吗?

📄 ✅为什么MySQL默认使用RR隔离级别?

打开文档:✅为什么MySQL默认使用RR隔离级别?

> RR的缺点是什么?RR相比RC多了什么?为啥很多大公司要把RR改成RC?

📄 ✅为什么默认RR,大厂要改成RC?

打开文档:✅为什么默认RR,大厂要改成RC?

> Mysql的行级锁到底锁的是什么东西?

📄 ✅MySQL的行级锁锁的到底是什么?

打开文档:✅MySQL的行级锁锁的到底是什么?

> Redis常用数据结构有哪些?hash、string、set、zset、list、geo、

📄 ✅Redis 支持哪几种数据类型?

打开文档:✅Redis 支持哪几种数据类型?

> Reids渐进式rehash过程是怎么样的?为啥要这么干?每次渐进rehash的时候怎么选择rehash哪些数据呢?

📄 ✅什么是Redis的渐进式rehash

打开文档:✅什么是Redis的渐进式rehash

> 为什么redis有一批key过期,为啥其他的key读写效率降低?单线程 > > 如何避免这种问题?被动删除、随机过期时间,

📄 ✅Redis中有一批key瞬间过期,为什么其它key的读写效率会降低?

打开文档:✅Redis中有一批key瞬间过期,为什么其它key的读写效率会降低?

> Redis的集群模式介绍下,主从、哨兵、分片。怎么避免脑裂的问题?能彻底避免吗?

📄 ✅介绍下Redis集群的脑裂问题?

打开文档:✅介绍下Redis集群的脑裂问题?