滴滴Java开发一面面经
《面试题目》
- 介绍一下你自己
- 介绍一下你的实习
- 你实习中的工单流转权限校验怎么理解
- 取消和派单接口并发,这个模块的规模怎么样,代码版本控制是怎么样的
- RAG流程
- 你是怎么去检测大模型回答质量的
- 项目中的兜底锁是怎么理解的,为什么这么做
- 你的这个责任链模式具体讲一下用在你的项目中的什么场景
- 怎么理解规则树,具体讲一下这个规则树的流程
- 我如果要新增“新用户优惠活动”或者其他业务活动之类的,怎么在你这个项目里面去进行扩展
- springboot自动装配机制
- 怎么理解starter
- 说一下慢查询,以及解决方法
- 责任链模式和装饰器模式
- mq怎么保障可靠性的
- 讲一下ThreadLocal,内存泄露,在线程池中除了手动remove,还能怎么防止
《参考解析》
- Spring Boot 自动装配:通过
spring.factories或AutoConfiguration.imports扫描配置类,配合@Conditional注解实现按需加载。Starter 则是将相关依赖和配置封装的“开箱即用”组件。 - 责任链与装饰器:责任链用于请求处理流(如过滤器链),侧重于处理者的自动传递;装饰器用于在不改变原有对象结构的前提下动态增加功能。两者在扩展性上各有侧重。
- MQ 可靠性:需从生产者发送确认(Confirm模式)、Broker持久化(刷盘)、消费者手动ACK三个阶段保障消息不丢失。
- ThreadLocal 内存泄露:除了手动
remove(),还可以使用InheritableThreadLocal或在线程池中使用TransmittableThreadLocal来传递上下文,核心是及时清理引用避免强引用链导致GC无法回收。 - 慢查询优化:先通过
EXPLAIN分析执行计划,检查是否命中索引;其次优化SQL语句(减少回表、减少JOIN);必要时考虑分库分表或引入缓存。