ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于 Spring Boot + Kafka + Redis + WebFlux 的大厂 Java 面试实录:燕双非的三轮攻防

2026/8/22 8:59:06 拓冰建站 浏览量
基于 Spring Boot + Kafka + Redis + WebFlux 的大厂 Java 面试实录:燕双非的三轮攻防 基于 Spring Boot Kafka Redis WebFlux 的大厂 Java 面试实录燕双非的三轮攻防场景某互联网大厂面试现场面试官严肃冷静候选人燕双非嘴上很稳实则有点“水”。本轮聚焦本地生活服务 企业协同 SaaS 大数据与 AI 服务三类场景围绕订单、消息、缓存、权限、观测和 AI 检索问答展开。第一轮本地生活服务 - 订单与秒杀链路面试官假设你负责一个本地生活平台的秒杀优惠券系统QPS 很高怎么设计接口层和核心业务层燕双非前端先调 Spring Boot 接口后端做参数校验然后查 Redis 看库存没库存就直接返回有库存就扣掉再写数据库。面试官思路对继续说如何避免超卖燕双非可以用 Redis 原子操作或者 Lua 脚本保证扣减库存和判断一起做。数据库里再加乐观锁双保险。面试官不错那高峰期下单后异步发券消息队列怎么选燕双非用 Kafka 吧吞吐高。下单成功后发一条消息到 topic券服务消费后落库。为了避免重复消费消费端要做幂等比如订单号做唯一键。面试官那如果支付回调慢用户一直刷新订单状态怎么优化燕双非可以用 Redis 缓存订单状态短时间内先读缓存如果要实时性更强也可以用 WebSocket 推送状态变更。第二轮企业协同 SaaS - 权限、审计与接口治理面试官现在切到企业协同 SaaS多个租户共用一套系统怎么做认证和授权燕双非Spring Security JWT。登录后签发 token里面带 tenantId、userId、roles。接口层拿到 token 先鉴权再根据 tenantId 做数据隔离。面试官如果要对接第三方企业微信、钉钉登录呢燕双非可以接 OAuth2第三方做授权服务器我们这边做资源服务器。回调拿 code 换 token然后绑定内部用户。面试官很好。企业内部还有很多老系统你怎么做接口编排和文档治理燕双非Spring Boot 提供 REST 接口配 Swagger/OpenAPI 自动生成文档内部老系统如果是 SOAP 或者别的协议可以用适配层包装一下。接口变更要加版本号避免老客户端挂掉。面试官如果服务间调用很多稳定性怎么兜底燕双非用 Resilience4j 做熔断、限流、重试。比如某个审批服务慢了先走降级逻辑别把整个协同平台拖死。面试官日志和链路追踪呢燕双非SLF4J 统一日志门面底层可以接 Logback 或 Log4j2。链路追踪我会接 Micrometer再打到 Jaeger 或 Zipkin排查跨服务审批链路很方便。第三轮大数据与 AI 服务 - 文档问答与智能客服面试官最后一个场景企业有大量制度文档、工单、知识库希望做一个智能客服你会怎么落地燕双非可以做 RAG。先把文档加载进来切分后向量化存到 Milvus 或 Redis 向量能力里。用户提问后先做语义检索再把检索结果拼进提示词给大模型回答。面试官那如果用户问的问题很复杂需要多步操作呢燕双非可以上 Agent配工具执行框架让模型决定什么时候查工单、什么时候查知识库、什么时候调用审批接口。复杂工作流就交给编排层。面试官怎么减少幻觉燕双非嗯……主要就是提示词写得好一点再限制它别乱答。最好让它只基于检索到的内容回答没证据就说不知道。面试官如果知识库更新频繁怎么保证回答质量燕双非可以定时增量同步文档重新生成 embedding做版本管理。热点问答可以用缓存。对于高频问题直接走固定模板或者规则兜底。面试官好今天先到这里。你回去等通知吧。面试问题详细解析1. 秒杀系统如何防超卖核心是把“判断库存是否足够”和“扣减库存”做成原子操作。常见做法有 Redis Lua 脚本、数据库乐观锁、消息队列削峰。业务上通常先在 Redis 里预扣库存再通过异步消息落库既能扛高并发也能保证最终一致性。2. Kafka 在下单链路中的作用是什么Kafka 适合高吞吐、可扩展的异步解耦场景。比如订单创建后发券、发通知、写审计日志都可以通过 Kafka 解耦。消费端必须考虑幂等、重复消费和消息顺序关键业务一般依赖唯一业务键或状态机控制。3. Redis 缓存订单状态有什么价值当支付、物流、发券等状态变化较频繁时缓存可以减轻数据库压力并提升用户查询体验。典型策略是缓存短时热点数据结合过期时间和主动失效。对于状态一致性要求高的场景还要搭配消息通知或事件驱动更新缓存。4. 多租户系统如何做认证与数据隔离JWT 中携带 tenantId、userId、角色信息服务端解析后进行鉴权。数据隔离可以通过数据库分库分表、schema 隔离、行级过滤等实现。权限模型通常是“租户-组织-用户-角色-权限点”分层设计。5. OAuth2 在第三方登录中的作用是什么OAuth2 解决的是“授权委托”问题。企业微信、钉钉等第三方作为授权方系统通过 code 换 token 获取用户身份再映射到内部账户体系。生产中需要注意回调安全、state 防 CSRF、token 过期刷新等细节。6. Resilience4j 为什么适合服务治理它提供了熔断、限流、重试、隔离仓壁等能力适合微服务间的稳定性保护。比如审批、通知、第三方接口超时后可以快速失败并降级避免级联故障。7. 链路追踪为什么重要分布式系统里一次请求会跨越多个服务。借助 Micrometer 采集指标配合 Jaeger/Zipkin 做 Trace就能快速定位慢在哪一跳、哪个接口耗时异常、哪个下游依赖不稳定。8. RAG 的核心流程是什么RAG 通常包括文档加载、切分、向量化、向量检索、提示拼接和模型生成。它的目标是让模型基于企业知识回答而不是完全依赖参数记忆从而降低幻觉并提升可控性。9. Agent 和普通问答有什么区别普通问答通常是一问一答Agent 则具备规划和工具调用能力可以根据任务目标自主决定是否调用搜索、数据库、工单系统、审批接口等适合复杂工作流。10. 如何降低 AI 幻觉常用手段包括检索增强、强约束提示词、引用证据回答、输出校验、置信度阈值、无答案兜底、人工审核和反馈闭环。对于企业客服更推荐“只基于知识库回答”的策略。结语以上就是本次围绕本地生活服务、企业协同 SaaS 和大数据 AI 服务的 Java 面试实录与解析希望能帮助大家在面试中更清晰地表达技术思路、场景设计和落地方案。感谢阅读愿这篇文章能对你的求职和成长有所帮助。