
互联网大厂 Java 面试实录场景某互联网大厂电商 AIGC 平台 Java 岗面试。面试官神情严肃候选人燕双非一脸轻松试图用“会一点点”应对整个面试。第一轮基础与业务落地面试官你先说说电商平台做首页推荐活动页时如果用 Spring Boot 搭一个服务为什么大家都爱用它燕双非因为它启动快、配置少直接把 Tomcat 和常用组件集成好了。做活动页这种需求迭代快的场景Spring Boot 能让开发效率高很多。面试官回答得还行说明你不是完全“只会复制粘贴”。那如果活动页要做秒杀商品展示Redis 该怎么配合燕双非可以把高频读取的数据放到 Redis 里比如商品库存、活动配置、限时价格减少数据库压力。页面请求先读缓存缓存没有再查数据库并回填。面试官不错缓存思路是对的。那你知道缓存击穿和缓存雪崩有什么区别吗燕双非击穿是某个热点 key 失效后大量请求直接打到数据库雪崩是很多 key 同时失效数据库一起被冲垮。一般会用互斥锁、逻辑过期、随机过期时间来缓解。面试官嗯至少你知道不是“缓存一开天下我有”。最后一个基础问题订单提交后为什么常用 Kafka 做异步解耦燕双非因为下单后往往还有很多后续动作比如发券、发短信、推荐系统埋点、风控校验。Kafka 可以把这些动作异步化主链路只关心下单成功其他逻辑由消费端慢慢处理。第二轮中间件与分布式面试官好那我们往深一点。电商大促时订单服务、库存服务、支付服务会拆成微服务你会怎么做服务间调用燕双非可以用 OpenFeign 发起声明式调用配合 Spring Cloud 做服务发现和负载均衡。如果是高性能或强契约场景也可以考虑 gRPC。面试官那服务调用失败了怎么办不能每次都“再试试”。燕双非可以用 Resilience4j 做熔断、限流、重试和隔离避免某个下游服务异常把整个链路拖垮。面试官还行。那支付回调这种幂等场景你怎么保证消息不会重复处理燕双非可以利用业务唯一键比如订单号、支付流水号在数据库里做唯一约束消费端也可以做去重表或者状态机控制确保重复消息不会重复更新订单状态。面试官如果消费 Kafka 时发现同一订单消息顺序不能乱你怎么处理燕双非可以按订单号做分区键让同一订单进入同一个分区这样单分区内消息顺序是有保障的。消费端再保证单线程或同 key 串行处理。面试官还可以。那你说说 Spring Security 在支付系统里能做什么燕双非做认证和鉴权比如基于 JWT 判断用户身份配合 OAuth2 或 Keycloak 做统一登录。不同角色可以访问不同接口例如商家、客服、财务权限隔离。面试官嗯至少不会把“鉴权”和“鉴黄”混为一谈。最后问一个部署相关的如果你把服务放到 Docker 和 Kubernetes 上最关心什么燕双非镜像要小、启动要快、配置要外置健康检查和资源限制要配好。Kubernetes 里还要关注滚动发布、HPA 自动扩缩容以及服务发现和日志采集。第三轮AI 化电商与系统设计面试官现在很多电商都在做 AI 导购。假设你要做一个“商品问答助手”用户可以直接问“适合通勤的 500 元以内耳机推荐”你会怎么设计燕双非可以用 Spring AI 接入大模型再结合 RAG。先把商品、评价、知识库文档做向量化存到向量数据库里用户提问后先做语义检索再把检索结果和问题一起拼成提示词给模型生成答案。面试官你提到了 RAG那为什么不能只靠大模型直接回答燕双非因为大模型可能有幻觉尤其是商品价格、库存、活动规则这些强时效信息不能乱编。RAG 能让回答基于真实数据降低幻觉风险。面试官如果要支持“帮我对比两款耳机差异并给出推荐理由”这算什么能力燕双非这更像 Agent 工具调用。模型先理解意图再调用商品检索、价格查询、用户画像、评价摘要等工具最后综合输出。这样就不只是聊天而是能执行复杂工作流。面试官那如果知识库里有 PDF、Word、网页文章你怎么接入燕双非先做文档加载和清洗再切分成 chunk进行 embedding存入向量库。后面查询时做语义检索召回相关片段再进入生成阶段。面试官很好。最后一个问题如果这个助手要接入商家后台还要通过 MCP 暴露标准化工具接口你怎么看燕双非我理解 MCP 更像是把工具调用标准化让模型、客户端和服务端之间的交互更统一。这样可以扩展更多能力比如查库存、拉订单、生成营销文案而不是每个工具都单独定一套协议。面试官行今天先到这里。你回去等通知吧。问题详解1. Spring Boot 为什么适合电商活动页服务Spring Boot 的核心价值是约定大于配置适合快速交付。电商活动页通常迭代频繁需求变化快需要快速上线、快速回滚、快速扩展。Spring Boot 集成了常见依赖、自动配置、嵌入式容器和统一的配置管理能显著降低开发和运维复杂度。业务上常用于活动页、营销页、推荐页等轻量服务。2. Redis 在秒杀和高并发读取中如何使用Redis 适合承接热点数据和临时状态例如库存、活动规则、用户限购次数、验证码等。常见做法是缓存预热、读写分离、热点 key 保护、逻辑过期、互斥锁重建缓存。对于秒杀场景还要结合原子扣减、Lua 脚本、消息队列异步落库避免超卖。3. 缓存击穿、缓存雪崩、缓存穿透有什么区别击穿是热点 key 失效导致瞬时流量打到数据库雪崩是大量 key 同时失效穿透是请求的 key 本身就不存在持续打穿缓存和数据库。解决方案分别是互斥重建、过期时间打散、空值缓存、布隆过滤器、参数校验等。4. 为什么 Kafka 常用于订单异步解耦Kafka 适合高吞吐、可扩展的事件流处理。下单后很多动作并不需要同步完成比如发短信、积分、推荐埋点、风控预警。使用 Kafka 后主流程只关注订单创建成功其他副作用通过消息异步处理提高系统响应速度和可维护性。5. 微服务调用为什么常用 OpenFeign 和 gRPCOpenFeign 适合 Spring Cloud 体系下的声明式 HTTP 调用上手简单、与生态结合紧密。gRPC 则适合高性能、强契约、跨语言场景基于 Protobuf序列化体积小、性能高。电商内部服务之间可按场景混用。6. Resilience4j 在分布式系统中解决什么问题它主要处理熔断、限流、重试、隔离和舱壁模式。业务上当支付、库存、物流等下游服务不稳定时Resilience4j 可避免失败扩散保护核心链路可用性。尤其在大促场景中限流和熔断非常关键。7. 支付和订单系统如何保证幂等幂等的关键是同一请求多次执行结果一致。常见方案包括唯一业务键、去重表、状态机、分布式锁、数据库唯一索引、消息消费幂等标记。支付回调和 MQ 重试都可能重复到达因此幂等设计必须前置考虑。8. Kafka 顺序消息如何保证Kafka 的顺序性只在分区内保证。因此需要把同一业务实体的消息路由到同一分区常用订单号作为分区键。消费端也要保证同分区串行消费避免并发处理导致顺序错乱。9. Spring Security 在支付系统中有什么作用它用于认证、授权、会话管理、权限控制和安全防护。结合 JWT、OAuth2、Keycloak可实现统一登录、单点登录、接口鉴权和角色权限隔离。支付系统对安全要求高必须区分用户、商家、运营、财务等不同权限边界。10. Docker 和 Kubernetes 在 Java 服务部署中关注什么重点包括镜像体积、启动速度、配置外置、健康检查、日志规范、资源限制、滚动升级和弹性扩缩容。Java 服务在容器中要关注 JVM 内存参数与容器内存限制的匹配避免 OOM 和频繁 GC。11. AI 导购为什么需要 RAG因为电商数据具有强时效性和强事实性不能靠模型“猜”。RAG 通过检索增强把商品信息、FAQ、活动规则、售后政策等真实知识注入到生成过程降低幻觉风险提高回答准确率和可追溯性。12. Agent 和普通聊天机器人有什么区别普通聊天机器人主要是对话生成Agent 更强调目标驱动和工具使用能力。它能根据用户意图调用商品检索、库存查询、订单查询、文档搜索等工具完成复杂工作流更适合企业级场景。13. 文档加载、切分、向量化、语义检索在知识库系统里分别做什么文档加载负责接入 PDF、Word、网页等数据源切分把长文切成适合检索的小片段向量化将文本转成 embedding语义检索根据语义相似度召回相关片段。最终把召回内容交给模型生成答案形成企业文档问答系统。14. MCP 有什么意义MCP 的核心价值是标准化工具调用协议让模型与外部系统的连接更统一、可扩展、可复用。对于企业后台来说它可以把库存、订单、营销、客服等能力封装成标准工具方便 AI 应用快速接入。感谢阅读希望这篇文章能帮助大家更好地理解 Java 大厂面试中的高频知识点与 AI 业务融合思路祝各位求职顺利、面试通关