Java面试实录Spring Boot Kafka Redis RAG燕双非在互联网大厂的三轮过招场景某互联网大厂 Java 岗位面试现场。面试官表情严肃候选人燕双非一脸“我很懂但其实有点悬”。第一轮基础能力与项目落地面试官你先说说为什么我们电商下单系统一般会用 Spring Boot而不是直接堆 Servlet燕双非因为 Spring Boot 比较省事自动配置、约定大于配置启动一个订单服务快很多。做电商活动时接口多、改动频繁用它能提升开发效率。面试官回答得还行。那如果下单后要发优惠券、积分、短信怎么保证接口不被这些耗时操作拖慢燕双非这个可以用 Kafka 异步解耦。下单接口只负责写主流程后续发券、发短信、更新积分都投递消息消费者慢慢处理避免主链路阻塞。面试官不错至少知道主链路和异步解耦。那你说说 Kafka 消息重复消费怎么处理燕双非嗯……一般会做幂等吧比如订单号做唯一键消费前先查 Redis 或数据库看这条消息是不是已经处理过。面试官思路对说明你不是完全“随缘开发”。最后一个问题用户刚下单时如果并发很高库存怎么扛得住燕双非先用 Redis 做库存预扣减减少数据库压力再结合数据库最终校验避免超卖。热点商品还可以做限流和排队。面试官可以至少业务链路有概念。第二轮中间件、缓存与安全面试官刚才你提到 Redis。那如果首页商品列表经常被访问你会怎么设计缓存燕双非可以用 Spring Cache 配合 Redis热点数据设置合理过期时间。还有缓存穿透可以加空值缓存或者布隆过滤器缓存击穿可以加互斥锁缓存雪崩就把过期时间打散。面试官嗯这次比上次更完整。那你说说订单接口怎么做鉴权燕双非通常会用 Spring Security JWT前端登录后拿到 token每次请求带上后端校验 token 后判断用户身份和权限。面试官如果是多端登录、需要统一权限体系呢燕双非那可能还会接入 OAuth2 或 Keycloak 这种统一认证中心统一管理用户、角色、客户端。面试官继续。那我们微服务里如果商品、订单、支付都拆开服务间调用你怎么选燕双非简单场景可以 OpenFeign代码直观如果对性能和协议要求高也可以用 gRPC。要是服务不稳定还要配合 Resilience4j 做熔断、限流、重试。面试官很好至少没把“全靠重试”当架构。那你平时怎么定位线上问题燕双非日志一般用 SLF4J 统一门面底层可接 Logback 或 Log4j2再配合 Micrometer、Prometheus、Grafana 看指标。链路追踪可以用 Jaeger 或 Zipkin。面试官这轮还算稳看来你不是只会背八股。第三轮AI 场景与架构深水区面试官现在我们有个智能客服项目要求对接企业文档支持自然语言问答。你会怎么做燕双非嗯……可以做 RAG。先把企业文档加载、切分再做向量化存到向量数据库里比如 Milvus 或 Redis。用户提问后做语义检索把相关片段召回给大模型再生成答案。面试官思路对。那为什么不直接把所有文档都塞进 prompt 里燕双非因为上下文窗口有限而且信息太多会增加成本和噪声。RAG 可以让模型只看相关内容减少幻觉提高回答准确率。面试官不错。那如果客服系统要支持复杂工作流比如先查订单、再查物流、再发起工单怎么让 AI 和业务系统协作燕双非可以用 Agent 或工具调用框架把查订单、查物流、建工单这些能力标准化成工具。模型负责判断什么时候调用哪个工具执行结果再回填到对话里。面试官那如果文档问答和业务工具调用都要做你怎么避免模型乱调用燕双非需要做权限控制、工具白名单、参数校验还要加提示词约束避免模型胡来。关键场景最好有人审或者加规则引擎兜底。面试官最后一个问题如果系统部署在 Kubernetes 上AI 服务、检索服务、订单服务怎么协同燕双非可以拆成独立微服务AI 服务负责编排和推理检索服务负责召回业务服务提供订单和工单接口。通过服务发现、配置中心和监控体系统一治理弹性扩缩容。面试官行今天就到这儿。你回去等通知吧。问题详解逐题拆解与延伸1. 为什么电商下单系统常用 Spring BootSpring Boot 的核心价值是快速开发和统一约定。电商系统通常有订单、库存、营销、支付、通知等多个模块Spring Boot 能通过自动配置、starter 依赖和嵌入式容器快速搭建服务减少样板代码方便服务拆分和迭代。2. 下单后发券、积分、短信如何解耦适合使用 Kafka 这类消息队列。主链路只做订单落库和核心校验后续动作异步完成可以降低响应时间提高系统吞吐量。生产上要注意消息可靠性、顺序性、幂等性和失败重试机制。3. Kafka 消息重复消费如何处理本质是幂等设计。可以用业务唯一键做去重例如订单号、消息 ID在数据库建立唯一索引或者在 Redis 记录已处理标记。消费逻辑应做到重复执行不会产生副作用。4. 高并发库存怎么扛常见做法是 Redis 预扣减 数据库最终一致性校验。Redis 扛住热点流量减少数据库写压力数据库负责最终账实一致。还要配合限流、排队、热点隔离、防超卖设计。5. Redis 缓存怎么设计常见问题包括穿透、击穿、雪崩。穿透可用空值缓存或布隆过滤器击穿可加互斥锁或逻辑过期雪崩则通过随机过期时间、分批失效和降级策略缓解。Spring Cache 能简化缓存编程但核心策略仍要自己设计。6. Spring Security JWT OAuth2 Keycloak 如何理解Spring Security 是 Java 生态的安全框架JWT 适合无状态 tokenOAuth2 更偏授权协议Keycloak 可作为统一身份认证平台。企业级系统常把认证、授权、单点登录拆开设计兼顾安全性和扩展性。7. 微服务间调用为什么选 OpenFeign、gRPC、Resilience4jOpenFeign 适合声明式 HTTP 调用开发快gRPC 基于 HTTP/2 和 Protobuf性能和契约更强Resilience4j 用于熔断、限流、重试、隔离保护服务稳定性。实际项目中常组合使用。8. 监控与日志为什么重要线上问题不可避免日志、指标、链路追踪是定位问题的三件套。SLF4J 统一日志门面Logback/Log4j2 负责实现Micrometer 采集指标并对接 Prometheus/GrafanaJaeger/Zipkin 做链路追踪帮助分析调用耗时和错误点。9. RAG 为什么适合企业文档问答RAG 检索增强生成。先把文档向量化并存入向量数据库再在提问时检索相关内容喂给模型。这样比“把全部文档塞进 prompt”更省上下文、更精准也更容易更新知识库能有效降低 AI 幻觉。10. Agent 和工具调用框架怎么用于复杂工作流Agent 负责规划和决策工具负责执行。比如智能客服中模型判断用户要查订单就调用查订单工具要发起售后就调用工单工具。为了安全必须做工具白名单、参数校验、权限控制和审计日志。11. Kubernetes 上如何协同部署这些服务可将 AI 推理、检索、订单、库存、消息消费者拆成独立服务通过容器编排、服务发现、配置管理和弹性伸缩实现治理。资源密集型服务与高并发业务服务应分开扩容并做好监控与告警。结语以上就是这场互联网大厂 Java 面试实录与解析。希望这篇内容能帮助大家在 Java 面试、微服务架构、缓存中间件、Spring Security以及 AI 应用落地等方向上建立更完整的认知。感谢阅读希望能真正帮到正在求职和进阶的你。