互联网大厂 Java 面试实录:Spring Cloud + Kafka + Redis + JPA + Spring Security + MCP

发布时间:2026/8/21 8:20:53
互联网大厂 Java 面试实录:Spring Cloud + Kafka + Redis + JPA + Spring Security + MCP 互联网大厂 Java 面试实录Spring Cloud Kafka Redis JPA Spring Security MCP场景一家互联网大厂正在招聘高级 Java 开发业务方向是“本地生活服务 智能客服系统 订单履约”。面试官严肃且专业候选人是外号“燕双非”的水货程序员擅长把简单问题讲明白遇到复杂问题就开始含糊其辞。第一轮基础与项目背景面试官先说说你负责过的本地生活服务下单系统整体技术架构是怎样的燕双非我们是 Spring Boot 做服务入口下面拆成订单、商家、库存、支付几个模块内部接口用 REST 风格异步消息用 Kafka缓存用 Redis数据库主要是 MySQLDAO 层用了 MyBatis 和 JPA 混着来。面试官为什么缓存和数据库都要一起用燕双非因为……数据库慢嘛。热点商家信息、活动配置、库存读多写少先放 Redis能减少数据库压力提升响应速度。比如用户打开团购页先读缓存缓存没有再查库并回填。面试官那缓存一致性怎么保证燕双非这个……一般就是先更新数据库再删缓存或者用消息通知别的服务同步一下避免缓存和数据库长期不一致。面试官思路对先查缓存、后回源这个方向是对的继续。面试官你们的支付结果通知是怎么设计的燕双非支付回调先落库再发 Kafka 事件给订单服务和营销服务订单服务改状态营销服务发券或者做核销。这样可以解耦避免一个接口里做太多事。第二轮中间件与稳定性面试官Kafka 事件重复消费怎么办燕双非我一般会做幂等比如每条消息带唯一业务单号消费前先查处理记录处理过就直接跳过。数据库里也可以加唯一索引双保险。面试官如果订单高峰期接口延迟飙升你会先看哪里燕双非先看 Prometheus 指标和 Grafana 面板看看是 CPU、GC、线程池、还是下游慢。再结合日志和链路追踪比如 Jaeger 或 Zipkin定位是 Redis、数据库还是远程调用拖慢了。面试官说得不错。那你们做过熔断限流吗燕双非做过Spring Cloud 里配 Resilience4j。比如商家推荐服务挂了不能把主流程也拖死可以快速失败返回兜底文案抢购接口再配个限流避免被流量打爆。面试官如果你要把外部支付网关接入系统接口协议不统一怎么办燕双非这个可以做一层适配器内部统一成我们自己的支付 SDK 接口。序列化上一般用 Jackson跨团队或者跨语言的部分可能会用 Protobuf。再加上 OpenAPI 文档方便联调。面试官继续。你提到过智能客服系统怎么把 AI 接进来燕双非可以用 Spring AI 把大模型接成一个服务先把用户问题做向量化去向量数据库里做语义检索找企业知识库和历史工单再把检索结果塞进提示词里让模型回答。复杂问题还可以走 Agent调用工单、订单、物流这些工具。面试官那如果模型胡说八道呢燕双非这个……就得做 RAG尽量让回答基于企业文档另外对高风险问题加规则校验回答前后做事实核对必要时转人工。面试官思路可以至少知道不能让模型乱编。第三轮安全、数据与工程化面试官你们系统怎么做认证和授权燕双非前端登录后拿 JWT网关做统一鉴权Spring Security 负责权限控制接口按角色和资源粒度判断。第三方接入的话可以走 OAuth2。面试官JWT 这么方便有什么坑燕双非主要是不好主动失效泄露了也麻烦所以要控制过期时间配合刷新令牌、黑名单或者版本号校验。敏感接口还可以二次验证。面试官如果订单数据要做报表分析怎么接入离线和实时链路燕双非实时部分可以把订单事件进 Kafka再给 Flink 做流处理离线部分同步到 Hadoop 或 Spark 做统计分析。搜索场景可以接 Elasticsearch像商家检索、订单查询都能用。面试官很好。最后问你一个工程化问题你们怎么保证发布质量燕双非我们有 Jenkins 和 GitHub Actions 做 CI/CD单测用 JUnit 5 和 Mockito接口测试和回归测试会跑自动化。上线前先灰度配合监控看指标出问题就回滚。面试官整体还可以今天就先到这儿你回家等通知吧。详细解答面试题逐题拆解1. 本地生活服务系统为什么常用 Spring Boot、Redis、Kafka、MyBatis/JPA 组合本地生活服务通常有高并发读、订单状态变化频繁、异步通知多的特点。Spring Boot 便于快速搭建服务Redis 适合承接热点数据和短时状态Kafka 负责解耦下单、支付、营销等流程MyBatis 适合复杂 SQL 和精细控制JPA 适合简单 CRUD。实际业务里经常组合使用而不是单一框架一把梭。2. 缓存一致性如何处理常见策略是 Cache Aside先查缓存未命中查数据库并回填更新时先写数据库再删除缓存。核心目标不是“绝对一致”而是在可接受范围内把不一致窗口降到最低。高并发场景可结合消息通知、延迟双删、版本号、分布式锁等进一步增强一致性。3. Kafka 消息重复消费如何保证幂等幂等的核心是“同一业务请求无论执行多少次结果都一样”。实现方式包括业务单号唯一约束、消费表记录处理状态、幂等键去重、状态机推进校验等。比如订单支付成功事件重复投递订单状态只能从“待支付”变成“已支付”重复消息不会导致重复扣库存或重复发券。4. 如何用监控体系定位慢接口先看基础监控CPU、内存、GC、线程池、连接池、QPS、RT、错误率再看链路追踪一次请求经过哪些服务、每段耗时多少最后结合日志确认异常点。Prometheus 负责采集指标Grafana 负责展示Jaeger/Zipkin 负责链路追踪ELK 负责日志检索。5. Resilience4j 在业务里主要解决什么问题它解决的是下游不稳定时的“故障扩散”问题。常见能力包括熔断、限流、隔离、重试、降级。比如推荐服务、地图服务、短信服务短暂异常时主订单流程仍然要能返回一个可用结果而不是全部超时。6. AI 客服为什么要做 RAG 和 AgentRAG 解决的是“模型不知道企业私有知识”的问题先从文档、工单、FAQ 中检索再让模型基于检索结果回答。Agent 则适合“回答之外还要执行动作”的场景比如查询订单、创建工单、催发货、升级人工。RAG 偏知识增强Agent 偏工具执行二者可组合成更完整的企业智能助手。7. JWT 和 OAuth2 怎么配合使用OAuth2 解决授权流程JWT 适合承载访问令牌。实际系统中用户通过 OAuth2 完成授权后拿到 JWT网关和服务端根据 JWT 中的用户身份、角色、权限进行校验。要注意 JWT 不易主动失效因此常配合短过期时间、刷新令牌和黑名单机制。8. 大数据链路如何服务订单分析订单事件先进入 Kafka实时链路用 Flink 做窗口聚合、漏斗分析、异常检测离线链路把数据落到 Hadoop/Spark 做日、周、月报表和经营分析。若需要检索能力如商品、商家、订单全文搜索可将数据同步到 Elasticsearch。9. CI/CD 为什么对 Java 大厂项目重要因为系统复杂、团队多人协作手工发布容易引入不可控风险。CI/CD 通过自动化测试、静态扫描、构建打包、镜像制作、灰度发布和回滚机制能显著降低发布事故概率。Jenkins、GitHub Actions、Docker、Kubernetes 是常见组合。10. 本文面试题背后的通用答题思路是什么先回答“是什么”再回答“为什么”最后回答“怎么落地”。面试官最看重的是你是否能把技术点放进真实业务里高并发怎么抗、稳定性怎么保、数据怎么一致、系统怎么演进、AI 怎么可控。感谢阅读希望这篇互联网大厂 Java 面试实录能帮助你把技术点和业务场景真正串起来祝大家面试顺利拿到心仪的 offer