26年2月神州数码 Java开发工程师 二面
1. Spring Boot自定义Starter中,META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件作用?
思路
核心讲该文件在Spring Boot 2.7+替代旧版spring.factories的核心作用,以及自动配置类的加载逻辑。
回答示例
该文件是Spring Boot 2.7.x及以上版本中,自定义Starter实现自动配置的核心配置文件,替代了旧版的META-INF/spring.factories,作用如下:
- 指定自动配置类:文件内逐行写入自定义Starter的自动配置类全限定名(如
com.example.starter.MyAutoConfiguration),Spring Boot启动时会扫描该文件,加载所有配置的自动配置类; - 触发条件装配:加载的自动配置类通过@ConditionalOnClass/@ConditionalOnMissingBean等注解实现“条件装配”,仅满足条件时才注册Bean;
- 简化配置加载:相比spring.factories,该文件格式更简洁(纯类名列表),且Spring Boot对其加载逻辑做了优化,减少了不必要的扫描开销。
示例文件内容:
com.example.starter.datasource.DataSourceAutoConfiguration com.example.starter.log.LogAutoConfiguration
核心:替代旧版spring.factories,是自定义Starter让自动配置类被Spring Boot识别并加载的核心入口。
2. MySQL主从延迟监控:Seconds_Behind_Master突增时的排查路径?
思路
按“先定位延迟类型→再排查具体原因”的逻辑,从主库、从库、网络、SQL四个维度拆解排查步骤。
回答示例
Seconds_Behind_Master(从库延迟秒数)突增时,核心排查路径:
- 第一步:确认延迟类型(同步延迟/复制中断)
- 第二步:排查主库侧原因
- 第三步:排查从库侧原因
- 第四步:排查网络原因
- 第五步:排查SQL兼容性
核心排查逻辑:先确认复制是否中断,再区分“主库生成慢、网络传输慢、从库回放慢”三类根因。
3. Redis Cluster槽位迁移过程中,客户端如何感知MOVED重定向?
思路
讲MOVED重定向的触发场景、客户端处理逻辑,区分“首次访问”和“槽位迁移中”的不同处理。
回答示例
Redis Cluster槽位迁移(如扩容/缩容)时,客户端通过MOVED响应+重定向机制感知槽位变化,核心流程:
- 触发MOVED响应:
- 客户端处理逻辑:
- 客户端优化:
核心:MOVED是“永久重定向”(更新缓存),ASK是“临时重定向”(不更新缓存),客户端自动处理重定向,业务无感知。
4. Kafka ISR集合动态调整:replica.lag.time.max.ms参数调优经验?
思路
先解释参数含义,再讲调优的核心原则(平衡一致性与可用性),结合场景给出调优建议。
回答示例
1. 参数核心含义
replica.lag.time.max.ms(默认30000ms=30秒):Follower副本若超过该时间未向Leader同步数据(或同步进度落后),则被踢出ISR集合;若后续追上,可重新加入ISR。
2. 调优核心原则
- 调大:提升数据一致性(ISR更稳定,减少副本掉队),但降低可用性(ISR缩小到低于
min.insync.replicas时,生产者写入失败); - 调小:提升可用性(Follower快速掉队,ISR不易缩小),但降低一致性
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
【八股真解】精炼最新高频面经 文章被收录于专栏
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏
