Java面试实录:Spring Boot、MyBatis、Redis、Kafka、Spring Security、Spring AI的大厂业务拆解 Java 面试实录Spring Boot、MyBatis、Redis、Kafka、Spring Security、Spring AI 的大厂业务拆解场景互联网大厂 Java 面试室人物面试官表情严肃问题精准喜欢追问业务和底层原理小Y自称“全栈搬砖选手”简单题能答复杂题开始“有点印象”第一轮电商下单链路1. 面试官你先说说Java 8、11、17 这几个版本在大厂线上项目里通常怎么选小YJava 8 最稳老项目多Java 11 性能和语法都更现代Java 17 适合新项目语法糖更多长期支持也好。一般看团队基线和中间件兼容性。面试官答得还算完整至少不是只会说“17 最新”。继续。2. 面试官假设你在做一个电商下单服务Spring Boot Spring MVC 负责接单核心流程会怎么设计小Y前端提交订单后Controller 接收参数做基础校验再交给 Service 处理。Service 里做库存检查、优惠券计算、价格校验最后落库。异常要统一处理接口返回也要规范。面试官不错知道先把入口、校验、业务拆开。3. 面试官订单服务里要连数据库你会怎么选连接池和 ORM为什么常见组合是 MyBatis HikariCP小YHikariCP 轻量、性能好、配置简单适合高并发。MyBatis 适合复杂 SQL能让 SQL 可控。比如订单查询、报表统计这种 SQL 很复杂用 MyBatis 更直接如果是简单 CRUD也可以配合 JPA 或 Spring Data JDBC。面试官这个回答就像样了知道“性能”和“可控性”是两条主线。4. 面试官订单要支持热更新和回滚你会怎么做数据库变更管理小Y可以用 Flyway 或 Liquibase 管理版本化脚本。上线前先跑变更脚本失败就阻断发布。回滚方面要提前准备反向脚本或者做向前兼容设计尽量避免直接删字段。面试官很好大厂里最怕“表改了服务还在跑”。第二轮支付、风控与消息解耦1. 面试官订单创建成功后支付系统要怎么接如果支付回调重复到了你怎么防重小Y支付系统一般做成独立服务订单服务只关心支付状态。回调防重可以用幂等号比如支付单号加唯一索引或者先查状态再更新状态。消息也要支持重复消费所以消费端也得做幂等。面试官这题答得对关键字都说到了幂等、唯一索引、重复消费。2. 面试官既然支付链路这么关键Spring Security、JWT、OAuth2 你会怎么放进体系里小Y用户登录后拿 JWT接口网关或资源服务验签判断身份和权限。OAuth2 适合第三方授权比如开放平台登录。Spring Security 负责认证和授权规则细粒度控制接口访问。面试官嗯至少不是把 JWT 当成“加密后的字符串”这么理解。3. 面试官支付成功后要通知订单、营销、积分、风控多个系统你会用 Kafka、RabbitMQ 还是 ActiveMQ小Y如果是高吞吐、日志型、事件驱动场景我更倾向 Kafka如果是业务异步、需要灵活路由和确认机制RabbitMQ 也很常见。支付成功这种事件通知我会优先考虑 Kafka 做事件流消费端分别处理订单更新、发券、短信通知。面试官回答得不错还知道业务场景要配消息模型不是“哪个熟用哪个”。4. 面试官如果消息重复、乱序、积压同时发生你怎么处理小Y重复就靠幂等乱序可以按业务主键分区或在消费端做版本判断积压就扩容消费者、提升批量处理能力必要时做限流和降级。比如订单状态流转必须保证最终状态一致不能让“已退款”被“已支付”覆盖。面试官这题开始有点深了但思路还算成体系。第三轮AIGC 客服、云原生与可观测性1. 面试官现在很多电商都在做 AIGC 智能客服。你会怎么把 Spring AI、RAG、向量数据库放到业务里小Y我理解是先把商品说明、售后政策、FAQ 文档做文档加载和切分再做向量化存到 Milvus、Chroma 或 Redis 这类向量库里。用户提问时先做语义检索把相关上下文喂给大模型这样能减少幻觉回答更贴近公司知识库。面试官这题答得挺像回事至少知道“先检索再生成”。2. 面试官如果客服不只回答问题还要帮用户查订单、查物流、发起退款你怎么设计 Agent 和工具调用小Y可以把大模型当调度员Agent 负责判断要不要调用工具。工具执行框架里封装查订单、查物流、申请退款这些能力模型通过标准化工具调用来触发。复杂工作流里还要保留聊天会话内存保证上下文连续。面试官回答方向对说明你知道从“聊天机器人”升级到“可执行代理”了。3. 面试官服务上线到 Kubernetes 后你怎么做发布、监控和故障定位小Y发布可以走 CI/CD比如 Jenkins 或 GitHub Actions 打包镜像再部署到 Kubernetes。监控用 Micrometer 接 Prometheus 和 Grafana看 QPS、延迟、错误率链路追踪可以用 Jaeger 或 Zipkin日志统一走 ELK。这样出问题能定位是接口慢、数据库慢还是消息堆积。面试官不错终于不是“我本地没问题”。4. 面试官最后一个问题如果线上 AI 客服答错了甚至胡说八道你怎么控制小Y要做多层兜底一是检索增强减少模型凭空编二是提示词限制回答范围三是敏感问题强制转人工四是答案加置信度和引用来源。对于高风险场景比如退款金额、医疗建议、支付风控不能完全放开模型自由发挥。面试官这个问题答得还行至少知道幻觉不是“模型性格不好”而是系统设计问题。面试官总结面试官今天整体看下来基础链路、消息解耦、权限控制、AIGC 落地这些方向你都有接触但深层原理和高并发细节还需要再沉淀。回去把 JVM、Spring 事务、Kafka 幂等、RAG 评估这些内容再系统梳理一下等通知吧。小Y好的老师我回去先把“会一点”和“懂原理”之间的鸿沟填上。详细答案解析第一轮答案解析电商下单链路1Java 8、11、17 的选择在互联网大厂里Java 版本选择不是“越新越好”而是看三件事业务稳定性老项目通常优先保持 Java 8降低迁移成本。性能与语法Java 11、17 在 GC、JIT、语言特性上更现代适合新项目或逐步升级。生态兼容性中间件、框架、字节码增强工具是否支持新版本。面试中可强调如果是新系统优先 Java 17如果是存量系统要兼顾兼容性、测试成本和升级节奏。2Spring Boot Spring MVC 的下单流程典型电商下单链路可以分成Controller 层接收请求、参数校验、鉴权。Service 层承载核心业务比如库存校验、优惠计算、订单组装。DAO 层负责持久化常用 MyBatis、JPA 或 Spring Data JDBC。这里的关键不是“用了什么框架”而是“如何把业务拆开”入口负责轻逻辑核心业务放 Service持久层只做数据访问3MyBatis HikariCP 的原因HikariCP连接池轻量、延迟低、吞吐高适合高并发场景。MyBatis适合复杂 SQL、动态 SQL、精确控制索引和执行计划。电商订单、库存、营销报表等场景通常 SQL 很复杂因此 MyBatis 很常见。对于简单 CRUD也可以考虑 JPA 提升开发效率。4Flyway/Liquibase 做变更管理数据库变更必须版本化管理避免手工改表带来的风险。Flyway以 SQL 脚本为主简单直接。Liquibase支持 XML/JSON/YAML/SQL表达能力更强。实践上要注意变更脚本要可追踪、可审计变更尽量向前兼容避免直接删除字段先灰度再清理第二轮答案解析支付、风控与消息解耦1支付回调幂等支付链路最怕重复回调常见解决方式唯一索引支付单号、业务单号建立唯一约束状态机控制订单只允许特定状态迁移幂等键每次请求带唯一业务标识消费端幂等消息系统本身可能重复投递业务处理必须可重入原则是不要假设消息只会来一次。2Spring Security、JWT、OAuth2 的角色Spring Security安全框架管认证、授权、会话和过滤链。JWT适合无状态登录服务端签发客户端携带。OAuth2适合第三方授权和统一认证中心。常见做法是用户登录后获得 JWT网关/资源服务验签通过角色、权限、Scope 进行授权3Kafka、RabbitMQ 的选择Kafka适合高吞吐、事件流、日志型数据、可回放场景。RabbitMQ适合业务异步、灵活路由、延迟确认、复杂交换机模型。支付成功后要通知多个下游系统通常非常适合事件驱动架构。Kafka 更适合做“支付事件总线”。4消息重复、乱序、积压重复幂等处理乱序按业务键分区、版本号判断、状态机兜底积压扩容消费者、提高批处理能力、临时降级非核心逻辑如果是订单状态流转要特别注意状态更新的顺序问题避免旧消息覆盖新状态。第三轮答案解析AIGC 客服、云原生与可观测性1Spring AI RAG 向量数据库RAG 的核心思想是先检索再生成。典型流程收集文档商品详情、FAQ、售后政策、知识库文章文档加载与切分把长文切成适合检索的小块向量化使用 Embedding 模型把文本转成向量存入向量数据库如 Milvus、Chroma、Redis Vector用户提问时做语义检索找到最相关上下文将上下文交给大模型生成回答这样做的好处是减少幻觉提高回答准确率让回答可追溯到企业知识库2Agent 和工具调用如果客服不仅“会说”还要“会做”就要引入 Agent。核心概念Agent负责判断任务、规划步骤、决定是否调用工具工具执行框架把查订单、查物流、发起退款等能力封装成工具聊天会话内存保存上下文支持多轮对话标准化工具调用让模型以统一方式调用外部能力这类系统适合做智能客服企业文档问答复杂工作流自动化3Kubernetes、监控与日志上线后一定要有可观测性CI/CDJenkins、GitHub Actions、GitLab CI 负责构建和发布容器与编排Docker Kubernetes指标监控Micrometer Prometheus Grafana链路追踪Jaeger / Zipkin日志采集ELK Stack排障时通常先看三件事QPS 是否下降延迟是否上升错误率是否飙高4AI 幻觉控制幻觉是大模型可能“编造”答案的问题。解决思路是系统工程不是单纯调 Prompt。常见手段RAG让答案基于真实知识库Prompt 约束限制回答范围和格式人工兜底高风险问题转人工引用来源让回答可审计置信度控制低置信度时不直接输出最终结论特别在支付、医疗、风控这类场景必须强调安全边界。面试答题小抄简单题要答全概念、作用、场景业务题要讲链路入口、处理、落库、异步、观测深水题要讲边界幂等、限流、降级、回滚、兜底AI 题要讲闭环检索、生成、校验、人工接管结语这场面试里小Y 的表现属于“基础能答复杂题开始飘”。如果你正在准备互联网大厂 Java 面试建议把今天这些问题按“业务链路 技术实现 风险控制”三个层次去复盘效果会比单纯背八股更好。