Skip to content

面试速答(先看这里)

**一句话结论:**Spring 的事件和 MQ 区别,各自有什么好处?

60秒标准回答:

2年985硕,直播业务,JAVA技术,redis,kafka

直播什么业务,哪部分复杂一点?点赞 & 连麦事件、 spring 消费事件,顺序消息

Spring 的事件和 MQ 区别,各自有什么好处? Spring 的事件默认是异步的吗?如何实现异步?

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

回答主线:

  • **要点1:**2年985硕,直播业务,JAVA技术,redis,kafka,
  • **要点2:**为什么用事件驱动的方案?
  • **要点3:**如何能避免丢消息问题?
  • **要点4:**如果避免并发操作连多?
  • **要点5:**如果避免并发操作连多?

**记忆锚点:**Spring → starter → bean → redis → Kafka → TTL

易错提醒:

  • 异步通信、非阻塞, Kafka 如果消费失败了怎么办?
  • 如何能避免丢消息问题?

加分表达:

  • eventid、state、body、eventType,failReason、times、lastExTime 如果用了消息表了,有序如何保证?
  • 发送到同一分区、单线程消费、 如果发生了重平衡,有序还能保障吗?

追问准备:

  • 2年985硕,直播业务,JAVA技术,redis,kafka, 直播什么业务,哪部分复杂一点?
  • 点赞 & 连麦事件、 spring 消费事件,顺序消息, Spring 的事件和 MQ 区别,各自有什么好处?
  • Spring 的事件默认是异步的吗?
  • 为什么用事件驱动的方案?

面试者背景 ​

> 2年985硕,直播业务,JAVA技术,redis,kafka, > > 直播什么业务,哪部分复杂一点?点赞**&连麦事件、spring消费事件,顺序消息, > > **Spring的事件和MQ区别,各自有什么好处?Spring的事件默认是异步的吗?如何实现异步?** > > 为什么用事件驱动的方案?好处是啥?异步通信、非阻塞, > > **Kafka如果消费失败了怎么办?应用挂了怎么办?** > > 如何能避免丢消息问题?落表,如何设计这张消息表?eventid、state、body、eventType,failReason、times、lastExTime > > **如果用了消息表了,有序如何保证?消息表如何设计索引?事件id唯一索引、状态索引,** > > 状态区分度不高加索引有用吗?event执行会用什么设计模式? > > 策略模式好处是啥,公共的逻辑如何处理?模板方法模式。 > > **点赞是每一次都会发个事件吗?靠kafka消息合并、** > > 连麦有什么特别的难点吗?消息的严格有序是如何保障的?发送到同一分区、单线程消费、 > > 如果发生了重平衡,有序还能保障吗?重平衡会带来什么问题?stw、消息堆积、重复消费、 > > **Kafka的渐进式重平衡知道吗?** > > 你们的连麦支持同时连麦?如何支持优先连麦?最多同时可以连多少人? > > **如果避免并发操作连多?redis记录连麦人数?为啥用redis可以解决并发问题?单线程** > > 工作中有封装过一些公共的组件吗?SimpleDateFormat做日期转换? > > **SDF的线程安全问题知道吗。如何解决?** > > **日志框架用的哪个?log4j,同步日志还是异步日志?你自己配置过log4j的配置文件吗?** > > **看过哪些源码么?Spring、Spring的bean的初始化过程,实例化和初始化区别,** > > **Bean实例化的入口的方法和类名知道么。** > > 有什么情况会导致一个bean无法被初始化么?构造器注入&循环依赖,@Lazy > > **Spring之前用的哪个版本?SpringBoot 3.0知道么?AOT编译,定义starter**,** > > 定义一个starter需要做什么?在starter里面如何做个开关控制bean的实例化? > > Spring的事务机制了解么?编程式&声明式,你觉得声明式事务有啥缺点。 > > 声明式事务,事务失效了,可能有哪些情况?private调用、this调用为啥不生效?AOP、final、rollbackFor、数据库不支持、多线程会导致事务失效吗?为什么? > > **Threadlocal**在哪些框架有应用?Spring、Mybatis有吗?全链路追踪框架 > > 如何在线程池之间传递ThreadLocal?ITL、TTL,TTL的原理知道么? > > **有最近看过哪些框架、技术的新版本么?**JDK 新版本有啥新特性?虚拟线程。用了虚拟线程后还有必要用线程池吗?守护线程、 > > 堆上还有很大内存,但是还是有频繁的fullgc,可能是什么原因?system.gc被调用、CMS搞不定了要用G1?

题目解析 ​

> Spring的事件和MQ****区别,各自有什么好处?Spring的事件默认是异步的吗?如何实现异步? > > 为什么用事件驱动的方案?好处是啥?异步通信、非阻塞,

📄 ✅Spring Event和MQ有什么区别?各自适用场景是什么?

打开文档:✅Spring Event和MQ有什么区别?各自适用场景是什么?

📄 ✅在Spring中如何使用Spring Event做事件驱动

打开文档:✅在Spring中如何使用Spring Event做事件驱动

> Kafka****如果消费失败了怎么办?应用挂了怎么办? > > 如何能避免丢消息问题?落表,如何设计这张消息表?eventid、state、body、eventType,failReason、times、lastExTime > > 如果用了消息表了,有序如何保证?消息表如何设计索引?事件id唯一索引、状态索引,

📄 ✅Kafka如何保证消息不丢失?

打开文档:✅Kafka如何保证消息不丢失?

📄 ✅为了避免丢消息问题需要落表,如何设计这张消息表?

打开文档:✅为了避免丢消息问题需要落表,如何设计这张消息表?

> 状态区分度不高加索引有用吗?event执行会用什么设计模式?

📄 ✅区分度不高的字段建索引一定没用吗?

打开文档:✅区分度不高的字段建索引一定没用吗?

> 策略模式好处是啥,公共的逻辑如何处理?模板方法模式。 > > 点赞是每一次都会发个事件吗?靠kafka消息合并、

📄 ✅策略模式和if-else相比有什么好处?

打开文档:✅策略模式和if-else相比有什么好处?

> 连麦有什么特别的难点吗?消息的严格有序是如何保障的?发送到同一分区、单线程消费、 > > 如果发生了重平衡,有序还能保障吗?重平衡会带来什么问题?stw、消息堆积、重复消费、 > > Kafka的渐进式重平衡知道吗?

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

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

📄 ✅什么是Kafka的渐进式重平衡?

打开文档:✅什么是Kafka的渐进式重平衡?

> 你们的连麦支持同时连麦?如何支持优先连麦?最多同时可以连多少人? > > 如果避免并发操作连多?redis记录连麦人数?为啥用redis可以解决并发问题?单线程

📄 ✅Redis为什么被设计成是单线程的?

打开文档:✅Redis为什么被设计成是单线程的?

> 工作中有封装过一些公共的组件吗?SimpleDateFormat做日期转换? > > SDF的线程安全问题知道吗。如何解决?

📄 ✅SimpleDateFormat是线程安全的吗?使用时应该注意什么?

打开文档:✅SimpleDateFormat是线程安全的吗?使用时应该注意什么?

> 看过哪些源码么?Spring、Spring的bean的初始化过程,实例化和初始化区别, > > Bean****实例化的入口的方法和类名知道么。 > > 有什么情况会导致一个bean无法被初始化么?构造器注入&循环依赖,@Lazy

📄 ✅Spring Bean的生命周期是怎么样的?

打开文档:✅Spring Bean的生命周期是怎么样的?

📄 ✅Spring Bean的初始化过程是怎么样的?

打开文档:✅Spring Bean的初始化过程是怎么样的?

> Spring之前用的哪个版本?SpringBoot 3.0知道么?AOT编译,定义starter**,** > > 定义一个starter需要做什么?在starter里面如何做个开关控制bean的实例化?

📄 ✅Spring 6.0和SpringBoot 3.0有什么新特性?

打开文档:✅Spring 6.0和SpringBoot 3.0有什么新特性?

📄 ✅如何自定义一个starter?

打开文档:✅如何自定义一个starter?

📄 ✅如何根据配置动态生成Spring的Bean?

打开文档:✅如何根据配置动态生成Spring的Bean?

> **Spring的事务机制了解么?编程式&**声明式,你觉得声明式事务有啥缺点。 > > 声明式事务,事务失效了,可能有哪些情况?private调用、this调用为啥不生效?AOP、final、rollbackFor、数据库不支持、多线程会导致事务失效吗?为什么?

📄 ✅Spring中的事务事件如何使用?

打开文档:✅Spring中的事务事件如何使用?

📄 ✅Spring事务失效可能是哪些原因?

打开文档:✅Spring事务失效可能是哪些原因?

> Threadlocal****在哪些框架有应用?Spring、Mybatis有吗?全链路追踪框架 > > 如何在线程池之间传递ThreadLocal?ITL、TTL,TTL的原理知道么?

📄 ✅ThreadLocal的应用场景有哪些?

打开文档:✅ThreadLocal的应用场景有哪些?

📄 ✅有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?

打开文档:✅有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?

> **有最近看过哪些框架、技术的新版本么?**JDK 新版本有啥新特性?虚拟线程。用了虚拟线程后还有必要用线程池吗?守护线程、 > > 堆上还有很大内存,但是还是有频繁的fullgc,可能是什么原因?system.gc被调用、CMS搞不定了要用G1?

📄 ✅JDK新版本中都有哪些新特性?

打开文档:✅JDK新版本中都有哪些新特性?

📄 ✅JDK21 中的虚拟线程是怎么回事?

打开文档:✅JDK21 中的虚拟线程是怎么回事?

📄 ✅假设还有很多内存,有什么情况还会频繁fullgc?

打开文档:✅假设还有很多内存,有什么情况还会频繁fullgc?