一面 ### **1. 设计模式相关** 1. **状态机模式** - 在订单系统中如何应用状态机模式? - 状态机的核心原理是什么?如何配置状态与动作的映射? - 状态机组件是如何工作的?如何保证状态变更的一致性? 2. **策略模式** - 在派单系统中如何应用策略模式? - 如何动态选择不同的策略实现类? - 策略模式如何避免 `if-else` 嵌套?是否有更优雅的方式(如反射、哈希表)? 3. **责任链模式** - 在派单系统中如何结合策略模式使用责任链? - 责任链的执行流程是怎样的?如何控制链的调用顺序? - 责任链的底层实现原理是什么? #### **2. Redis 相关** 4. **Redis 高并发场景(抢单)** - 如何用 Redis + Lua 脚本保证原子性? - 如何解决 Redis 和 MySQL 数据不一致问题? - 如果 Redis 删除失败,如何保证数据一致性? 5. **Redis 缓存问题** - 缓存雪崩、穿透、击穿分别是什么?如何解决? - 缓存雪崩和穿透的区别是什么? - 如何用布隆过滤器解决缓存穿透? 6. **Redis 持久化** - RDB 和 AOF 的区别?各自的优缺点? - Redis 4.0 之后的混合持久化策略是什么? #### **3. Java 基础** 7. **JVM 内存模型** - JVM 内存结构(程序计数器、栈、堆、方法区、元空间等)? - JVM 启动参数如何配置(如堆大小、GC 策略)? 8. **类加载机制** - 双亲委派机制的原理?为什么要用双亲委派? - 如何打破双亲委派?有哪些实际应用场景? #### **4. MySQL 相关** 9. **事务隔离级别** - MySQL 的 4 种隔离级别是什么?分别解决什么问题? - 可重复读(Repeatable Read)的实现原理(MVCC)? #### **5. 消息队列(RabbitMQ)** 10. **消息可靠性** - 如何保证消息不丢失(生产者确认、消费者 ACK)? - 如何解决消息重复消费(幂等性)? - 除了数据库唯一索引,还有哪些方式实现幂等性? #### **6. 分布式系统** 11. **CAP 理论** - CAP 分别指什么?举例说明(如 Nacos 是 AP 还是 CP)? - 不同业务场景如何选择 AP 或 CP? 12. **服务治理(熔断、降级、雪崩)** - 服务熔断 vs 降级 vs 雪崩的区别? - 如何用 Hystrix/Sentinel 实现熔断? #### **7. 其他** 13. **K8s/Docker** - 是否了解 K8s?常用命令有哪些? - Docker 常用命令(如 `docker ps`、`docker logs`)? 14. **面试建议** - 面试官建议:多深入底层原理(如 JVM、Redis 实现),而不仅仅是表面使用。 二面:由于没录音,只记得几个零零碎碎的1、es倒排索引的底层原理2、spring三级缓存,构造方法注入的话会有循环依赖问题吗3、redisson的底层原理,看门狗机制4、如果看门狗机制失效了,释放锁的时候如何防止释放的是别的对象的锁5、mysql在查询语句的时候会上什么锁,在其他隔离级别会上什么锁6、分库分表的情况下如何根据某个字段排序查询到前10个数据7、为什么mysql不能当搜索引擎,不考虑mysql请求压力的情况下,为什么不能用模糊查询8、spring事务是怎么实现的9、spring的bean是怎么发现并加载的10、事务失效的几个场景11、实习分库分表是怎么做的12、实习做了什么13、了解k8s吗顺序不是这样,我忘了想到什么说什么,估计凉凉了大部分没答出来,面试官很好,下次还面他