
Java 大厂面试实战Spring Boot Kafka Redis Elasticsearch AI 场景深挖场景互联网大厂 Java 求职面试角色严肃面试官 vs 搞笑的水货程序员燕双非说明以下为三轮递进式问答结合业务场景逐步深入。第一轮内容社区与 AIGC 场景面试官假设你在做一个内容社区用户发帖后要经过 AIGC 生成摘要、打标签再进入审核和推荐流。你会怎么设计 Spring Boot 服务的整体结构燕双非我会先把发帖、审核、推荐拆成几个接口然后用 Spring Boot 做成几个模块能跑起来就行。摘要这块可以先同步调用 AI 接口生成完再存库。面试官思路算是对的但你要考虑接口超时、失败重试和幂等。那如果 AIGC 生成摘要比较慢你会怎么处理燕双非这个……我觉得可以先返回“处理中”然后后台慢慢跑。比如发帖后把任务丢到 Kafka异步消费处理完再更新状态。面试官不错已经开始像个工程师了。那 Kafka 这一步你怎么保证不会重复消费导致摘要被覆盖多次燕双非可以加个唯一任务 ID消费时先查 Redis 里有没有处理过没有就继续有就直接跳过。再配合数据库唯一索引应该能稳一点。面试官可以继续往下想。现在社区内容要支持语义搜索用户搜“会赚钱的副业经验”你会怎么做燕双非我会把帖子内容同步到 Elasticsearch标题、正文、标签都建索引。语义搜索的话可以把文本做 Embedding存向量库再做相似度检索。面试官很好已经触到 AI 检索了。那如果检索结果里出现 AI 幻觉你怎么降低风险燕双非呃……我会让模型少自由发挥尽量只基于检索到的资料回答再加个提示词模板让它引用社区内容原文不确定就说不知道。第二轮企业协同与 SaaS 场景面试官假设你在做企业协同 SaaS多个租户共用一套系统文档、审批、IM 通知都要支持。你会如何做租户隔离燕双非可以在每个请求里带 tenantId然后在数据库表里都加租户字段查询时统一拼条件。缓存里也要带上 tenantId不然会串数据。面试官对基础隔离思路不错。那审批流中的通知要实时推送到前端你会用什么燕双非可以用 WebSocket。审批状态一变更就通过 WebSocket 推给前端用户不用刷新页面。面试官那后端服务之间怎么解耦比如审批完成后要通知消息中心、搜索中心、报表中心。燕双非我会发事件到 Kafka消息中心、搜索中心、报表中心各自消费。这样一个审批完成大家都能收到。面试官好。那如果报表中心特别慢拖垮了整个消费链路你怎么做燕双非可以把不同业务分到不同 topic或者给报表中心单独限流、降级。慢的系统别影响主链路主链路还是要优先保证审批完成。面试官继续。企业 SaaS 里权限控制很重要管理员、普通员工、外部访客权限不同。你会如何结合 Spring Security 做设计燕双非先做登录认证然后根据角色和权限做接口拦截。JWT 里放用户身份和租户信息前端每次带 token请求进来后解析权限判断。面试官如果要对接第三方企业微信或统一身份平台呢燕双非那就接 OAuth2 吧或者 SSO。第三方登录成功后把用户信息映射到本地账号再统一发内部 JWT。第三轮广告与营销场景面试官现在进入广告投放系统要求高并发、低延迟、可观测。你会如何设计投放请求的链路燕双非请求先到网关然后广告服务根据用户画像、出价、频控、预算做实时决策。核心数据放 Redis热点配置也放缓存减少数据库压力。面试官如果 Redis 里的预算扣减和数据库不一致怎么办燕双非我会尽量保证扣减原子性比如用 Lua 脚本做预扣再异步落库如果失败就补偿回滚。要是特别复杂就用消息队列串起来。面试官对。那你怎么监控这条链路的性能和错误率燕双非用 Micrometer 暴露指标Prometheus 抓取Grafana 看图。再配合日志和链路追踪像 Jaeger 或 Zipkin定位慢在哪一段。面试官如果广告投放要接外部 DSP接口协议不统一你会怎么做燕双非我会做一层适配器统一对外封装成自己的接口。内部可以用 OpenFeign 调用也可以对接 gRPC外部协议差异就收敛在网关或适配层。面试官最后一个问题广告系统要做智能素材生成和投放建议怎么把 AI 接入到现有 Java 架构里燕双非可以用 Spring AI 封装大模型调用做成 Agent 或 RAG。先把素材、投放策略、历史报表做文档加载和向量化用户提问时走语义检索再让模型基于检索结果生成建议。工具调用也要标准化比如查预算、查点击率、查人群包都作为工具暴露给 Agent。面试官思路整体还行说明你还是有一点体系化思考的。今天就先到这里你回去等通知吧。问题详解1. Spring Boot 如何拆分内容社区 AIGC 服务内容社区常见链路是发帖、审核、摘要生成、标签提取、推荐分发。推荐的做法是按职责拆分服务或模块投稿服务负责写入主数据AIGC 任务服务负责异步生成摘要和标签审核服务负责内容合规推荐服务负责召回和排序。Spring Boot 适合承载独立微服务配合统一配置、统一日志、统一监控方便横向扩展。2. Kafka 处理异步任务与幂等当摘要生成耗时较长时把任务放到 Kafka 异步处理可以提升接口响应速度。消费端必须考虑幂等常见方案包括业务唯一键去重、Redis 去重标记、数据库唯一约束、状态机控制。真正工程上通常多层防护避免重复消息、重复消费、消息重试引发的脏写。3. Redis Elasticsearch 向量检索的组合Redis 更适合存放热点、会话、任务状态、频控计数等短周期数据Elasticsearch 适合关键词检索、过滤、排序向量数据库适合语义搜索。内容社区里可以同时保留全文检索和语义检索关键词命中靠 ES用户自然语言搜索靠向量召回再通过重排提升相关性。4. 如何降低 RAG 和 Agent 中的幻觉幻觉的本质是模型在信息不足或约束不强时“编造答案”。降低方式包括检索增强生成时只允许基于检索结果回答提示词中明确“不知道就说不知道”加入引用来源增加工具调用校验对关键业务结果进行规则校验或人工兜底。企业场景下优先保证可控性而不是“看起来聪明”。5. 多租户 SaaS 的隔离方式多租户隔离通常有四种数据库隔离、Schema 隔离、表字段隔离、应用层隔离。互联网大厂里常见的是表字段隔离配合权限控制因为成本较低、扩展快。要注意缓存、消息、搜索索引、对象存储路径都要带 tenantId避免跨租户污染。6. WebSocket 在协同场景中的作用审批、IM、在线文档、通知中心等场景需要实时性。WebSocket 适合服务端主动推送状态变更减少轮询开销。实际生产中通常配合消息队列使用业务服务发事件通知服务消费后再通过 WebSocket 推送给在线用户。7. Spring Security JWT OAuth2 的组合Spring Security 用于统一认证与授权JWT 适合无状态会话和分布式系统OAuth2 适合对接第三方身份平台或授权登录。企业场景中一般是第三方身份认证成功后系统映射内部账号并签发本地 JWT后续接口通过 JWT 做身份识别和权限控制。8. 广告系统中的 Redis 预算扣减与一致性广告投放需要极低延迟常先在 Redis 做原子扣减例如用 Lua 脚本保证“查询 扣减”在一个原子操作中完成。然后异步落库数据库作为最终持久化。若落库失败通过补偿任务修复。这里的关键是接受“最终一致性”并围绕业务风险设置兜底策略。9. Micrometer、Prometheus、Grafana、Jaeger 的可观测性链路Micrometer 负责统一指标采集Prometheus 负责拉取和存储时序数据Grafana 负责可视化Jaeger 或 Zipkin 负责分布式链路追踪。广告、支付、推荐这类链路复杂的系统如果没有指标、日志、trace 三件套很难定位性能瓶颈和错误根因。10. OpenFeign、gRPC、适配器模式在外部对接中的价值当外部 DSP、渠道平台、企业系统协议不统一时最重要的是对内统一抽象。适配器模式可以把外部协议差异封装起来OpenFeign 适合 HTTP 服务调用gRPC 适合高性能内部通信。统一调用模型后业务代码更干净也更容易替换外部供应商。11. Spring AI、RAG、Agent 在广告智能化中的落地方式可以把历史投放数据、素材库、用户画像、转化报表做文档加载和向量化构建检索知识库。用户输入“帮我优化某类广告素材”系统先语义检索相关案例再交给大模型生成建议。Agent 则可以进一步调用“查预算”“查消耗”“查点击率”等工具完成复杂工作流。关键在于工具标准化、结果可追溯、输出可审计。12. 总结本篇围绕内容社区与 AIGC、企业协同与 SaaS、广告与营销三个业务场景串联了 Spring Boot、Kafka、Redis、Elasticsearch、Spring Security、JWT、OAuth2、Micrometer、Prometheus、Grafana、Jaeger、OpenFeign、gRPC、Spring AI、RAG、Agent 等面试高频技术点。面试中真正重要的不是背概念而是能把技术和业务场景连起来讲清楚为什么这么做、怎么落地、有哪些风险以及如何兜底。感谢阅读希望这篇内容能帮助你更好地准备 Java 大厂面试祝你面试顺利、早日拿到心仪 offer