第四篇:面试官:SpringBoot 场景化实战 10 问(第四弹·附图解)

面试官:SpringBoot 场景化实战 10 问(第四弹·附图解)

第四篇 · 10 道 SpringBoot 面试题(全新不重复)

  • 形式:对话 + 图解 + 大白话
  • 场景:项目落地中的真实痛点
  • 目标:解决常见生产问题

引言

做完前三套题,老王给你布置"生产落地卷"。这 10 问全部源于线上故障与最佳实践,务必掌握!


1. SpringBoot CLI 有啥用?优势?

面试官: 见过 spring run 吗?

候选人: SpringBoot CLI 让你 用 Groovy 写 Boot 脚本,省掉 public static void main。原型 Demo 秒级出结果,也支持 --watch 热重载。适合快速验证想法。


2. DevTools 远程热部署如何配置?

HTTP/Restart
IDE
Spring Boot Devtools
远程应用

候选人: spring.devtools.remote.secret 设置密钥,本地加 -Dspring.devtools.remote.secret 连接。仅开放内网,生产慎用。


3. 如何在 Boot 中开启 HTTPS?

面试官: 证书怎么配?

候选人: 三步:

  1. keytool -genkeypair -storepass pass -keystore keystore.p12 -storetype PKCS12 生成证书。
  2. application.yml
server:
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: pass
    key-store-type: PKCS12
    enabled: true
  1. 8080->8443,HTTP 可以通过 TomcatConnectorCustomizer 重定向。

4. Spring Data JPA 方法命名查询规则?

候选人: findByUserIdAndStatusOrderByCreateTimeDesc(Pageable p) 解析为 SQL:WHERE user_id=? AND status=? ORDER BY create_time DESC。保留字:Top, First, Distinct, Between, IsNull… 记住 驼峰拆分 + 关键字映射


5. Flyway 数据库版本管理流程?

启动
Flyway scans V__*.sql
flyway_schema_history
执行未运行脚本
版本++

候选人: Boot 自动扫描 db/migration。脚本命名 V1__init.sqlV1_1__patch.sql。回滚用 R 版本或手动补丁,切勿改历史脚本。


6. Cache 抽象怎么接入 Redis?

面试官: @Cacheable 真能省数据库?

候选人: 引入 spring-boot-starter-data-redis, 加 @EnableCaching。在 yml 配:

spring:
  cache:
    type: redis
  redis:
    host: localhost

然后:

@Cacheable(value = "user", key = "#id")
public User getUser(Long id) { ... }

Boot 会用 RedisCacheManager,自动序列化。


7. 事务传播 PROPAGATION_REQUIRES_NEW 用例?

候选人: 记录审计日志不能跟主业务同事务,主业务回滚日志也得记。用 @Transactional(propagation = REQUIRES_NEW) 开新事务,独立提交。


8. AOP 环绕通知怎么打印请求耗时?

@Aspect
class LogTimeAspect {
  @Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
  public Object around(ProceedingJoinPoint pjp) throws Throwable {
    long start = System.currentTimeMillis();
    Object ret = pjp.proceed();
    log.info("cost:{}ms", System.currentTimeMillis()-start);
    return ret;
  }
}

9. 自定义条件注解实现步骤?

候选人:

  1. 实现 Condition:判断环境变量/类路径。
  2. 写注解 @Conditional(MyCondition.class)
  3. 在配置类/Bean 上使用。

实例:只有测试环境加载 Mock Bean。


10. 多个 AutoConfiguration 顺序如何控制?

面试官: Bean 冲突咋办?

候选人: 在配置类上加 @AutoConfigureBefore, @AutoConfigureAfter 或使用 @Order。也可通过 spring.autoconfigure.exclude 排除整块自动配置。


结语

10 个生产实战题搞定!掌握这些技能,现场救火不再慌。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值