互联网大厂Java面试实战:Spring Boot自动配置、Kafka分区策略、Spring Security认证流程、MyBatis缓存机制与Prometheus监控排错

第一轮面试

面试官:请说明Spring Boot的自动配置机制如何实现,以application.properties为例说明样例配置生效过程。

xbhog:Spring Boot自动配置主要依赖@Configuration、@ConditionalOnXXX注解链以及SpringFactoriesLoader机制。当Spring Boot应用启动时通过classpath扫描META-INF/spring.factories文件加载自动配置类,结合@ConditionalOnProperty("spring.kafka.bootstrap-servers")等条件判断完成组件装配。例如设置server.port属性时,通过@ConfigurationProperties绑定到ServerProperties类,在存在配置值时替换默认端口值。

面试官:Kafka的分区(key为null)和数据一致性如何保障?请写出生产者配置样例。

xbhog:当message key为null时会按轮询策略选择分区,生产者通过acks=all和enable.idempotence=true保证数据不丢失。示例如下:

spring.kafka.producer.retries=2147483647
spring.kafka.producer.max-in-flight=2
spring.kafka.producer.properties.max.block.ms=30000

面试官Spring Security如何实现CSRF防护?请描述其核心机制。

xbhog:通过CSRFTokenRepository和CsrfFilter自动添加/token验证拦截。在表单中使用,在RestTemplate请求中添加X-CSRF-TOKEN头实现双重验证。


第二轮深入提问

面试官:请说明MyBatis一级缓存和二级缓存的区别及典型应用场景。

xbhog:一级缓存属于SqlSession级别,适用于单次会话内的重复查询(如订单详情多次获取);二级缓存属于Mapper级别需配合@CacheNamespace,适用于跨会话但相同SQL的高频查询(如商品列表缓存)。需要通过@Select的查询语句级匹配来触发缓存机制。

面试官:如何在Spring Boot服务中集成Prometheus监控指标并可视化展示?

xbhog:添加spring-boot-starter-actuator和micrometer-registry-prometheus依赖后,在application.yml中配置:management.endpoints.web.exposure.include=*,通过HTTP get请求访问/actuator/prometheus端点,将采集的内存指标传给Prometheus服务器,再通过Grafana创建时序监控面板查看堆内存使用率趋势。

面试官:你的Spring Security配置可以支持JWT令牌,适合作为微服务的认证方案。

你可能感兴趣的:(Java面试题,SpringBoot,Kafka,SpringSecurity,MyBatis,Prometheus)