尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Spring Boot + Kafka + Redis + Spring Security 面试实录:燕双非在电商秒杀场景的 3 轮过招

Spring Boot + Kafka + Redis + Spring Security 面试实录:燕双非在电商秒杀场景的 3 轮过招 Spring Boot Kafka Redis Spring Security 面试实录燕双非在电商秒杀场景的 3 轮过招文章简述围绕互联网大厂 Java 面试场景结合电商秒杀、订单风控、消息削峰、缓存一致性与权限安全等业务模拟严肃面试官与搞笑候选人燕双非的 3 轮问答并在文末对所有问题进行详细解析帮助读者系统理解 Spring Boot、Kafka、Redis、Spring Security、MyBatis、Micrometer、OpenAPI、Docker、Kubernetes 等技术在真实业务中的落地方式。一面开始面试官今天聊一个电商秒杀系统。你先说说假设大促来了商品详情页、下单、支付、库存扣减这条链路你会怎么做整体设计燕双非我先上 Spring Boot把接口都暴露出来然后 Redis 缓存商品详情Kafka 做异步削峰MyBatis 负责落库JVM 调大一点应该就能顶住。面试官思路不算离谱至少知道要做缓存和异步。那你继续说秒杀场景里为什么不能直接同步扣库存燕双非因为……同步太慢而且容易把数据库打爆。应该先在 Redis 里做预扣库存成功后发消息到 Kafka订单服务异步消费最后再落库。面试官不错方向对了。那如果 Kafka 消息重复消费了你怎么办燕双非嗯……做幂等吧。比如订单号做唯一索引或者消费端记录处理状态重复消息来了就直接忽略。面试官这个回答可以。你知道幂等是秒杀系统里最基础的底线。那再追问一下Redis 预扣库存成功后如果订单落库失败怎么补偿燕双非可以搞一个补偿任务定时扫失败订单或者用死信队列把失败消息重新投递。再不行就人工兜底。二面继续面试官好进入第二轮。假设这个电商系统还要接入Spring Security JWT做登录鉴权用户抢购前必须先登录。你会怎么设计认证流程燕双非前端先登录服务端校验账号密码后签发 JWT后续请求带上 tokenSpring Security 拦截请求解析 token 看是不是合法用户。面试官可以。那 JWT 放哪儿更合适如果用户退出登录token 还没过期怎么办燕双非一般放 header 里退出登录可以把 token 加入黑名单或者把有效期设得短一点再配合刷新 token。面试官嗯基础掌握得还行。那你说说为什么很多大厂会把登录态和权限控制拆开燕双非登录态解决“你是谁”权限控制解决“你能干啥”。比如普通用户只能下单运营用户能改活动配置管理员还能看风控面板。面试官回答得不错。现在我们把业务往前推一步。商品活动页面要做限流、熔断和降级你会用什么组件燕双非Spring Cloud 里可以配 Resilience4j 做限流和熔断热点商品直接返回静态页或者缓存结果。大促期间非核心接口可以降级比如推荐列表先不展示。面试官这个思路很好。那如果你的服务部署在 Kubernetes 上如何做健康检查和自动扩缩容燕双非嗯K8s 配 liveness 和 readiness probe服务活着但没准备好就不放流量。扩缩容可以看 CPU、QPS、延迟这些指标再结合 HPA。面试官回答得比较完整。你要记住监控是压测和大促的眼睛。那再问你一个偏工程的问题为什么这类项目里会用 Micrometer 接 Prometheus Grafana燕双非Micrometer 可以统一采集 JVM、接口耗时、线程池、Kafka 消费延迟这些指标Prometheus 拉取后Grafana 画看板方便看系统瓶颈。三面深入面试官最后一轮我们加点难度。现在老板要求你在电商系统里加一个AI 导购助手用户可以自然语言问“我想买适合通勤的手机”系统要能结合商品库、活动规则和用户画像回答。你会怎么设计燕双非这个我熟Spring AI 可以接大模型然后把商品数据做向量化存到向量数据库里用户提问后先语义检索再把召回内容喂给模型生成回答。面试官继续。那你说说RAG 和纯大模型直接回答相比价值在哪燕双非RAG 更依赖企业自己的知识库能减少幻觉。纯模型容易瞎编尤其是价格、库存、活动规则这种实时信息不能靠它乱猜。面试官对幻觉问题在业务里很致命。那如果这个导购助手还要支持“看过的商品历史”“聊天上下文记忆”“多轮追问”你怎么处理燕双非要保存聊天会话内存用户上下文要有短期记忆商品浏览历史可以做用户画像多轮对话时把关键信息拼进 prompt或者用 Agent 去调用搜索、库存、优惠券等工具。面试官很好。那你再往前一步假设你要做一个企业级智能客服不光回答商品问题还要查物流、退换货、订单状态、优惠券规则你觉得 Agent 和普通问答有什么区别燕双非Agent 更像会自己做事它会先判断要不要调用工具比如查订单、查物流、查售后政策普通问答更多是“问一句答一句”。Agent 还要有工具调用标准化不然一会儿查订单一会儿查库存接口会很乱。面试官这个方向是对的。那最后我问一个工程落地题如果你要让这个 AI 客服能接企业知识库、PDF、FAQ、工单系统还要保证检索效果和权限控制你会怎么组织燕双非我会做文档加载把不同来源转成统一结构按部门、角色、租户做权限过滤然后用向量检索加关键词检索混合召回再用重排提升准确率。工单系统可以接入工具调用敏感信息得做脱敏。面试官行今天就到这儿吧。你回去等通知。问题详细解析1. 电商秒杀链路为什么要用 Redis 预扣库存 Kafka 异步下单在秒杀场景中核心矛盾是“流量瞬时暴涨”与“数据库处理能力有限”。如果每个请求都直接同步扣库存、写订单表会导致数据库锁竞争激烈、响应时间飙升甚至拖垮整套系统。Redis 预扣库存可以把高并发压力前置到内存中处理速度快、成本低Kafka 则用于把“扣库存成功”与“真正创建订单”解耦通过消息队列实现削峰填谷。业务上通常会这样做用户请求到达后先校验登录态与活动资格再在 Redis 中通过 Lua 脚本原子地完成库存判断与扣减成功后发送订单创建消息到 Kafka订单服务异步消费消息创建订单并落库。如果落库失败可以通过重试、死信队列或补偿任务兜底。2. Kafka 消息幂等为什么重要消息队列通常只保证“至少一次”投递不保证绝对不重复。网络抖动、消费者重平衡、手动重放消息等都可能造成重复消费。如果消费者不是幂等的就会产生重复订单、重复扣款、重复发券等严重问题。常见做法包括利用业务唯一键建立唯一索引消费前先查处理状态使用去重表记录消息 ID在 Redis 中设置幂等标记或者将消息处理设计为天然幂等例如“设置状态为已支付”而不是“状态加 1”。3. Spring Security JWT 在登录鉴权中如何配合Spring Security 负责拦截请求、识别身份、做权限判断JWT 负责承载无状态认证信息。用户登录成功后服务端签发 JWT客户端在后续请求中携带 token。服务端解析 token验证签名、有效期与声明信息再把用户身份注入到安全上下文中。优点是无状态、易扩展、适合分布式系统缺点是退出登录、强制下线、权限变更的即时生效比较麻烦通常需要黑名单、短 token refresh token、或者结合 Redis 做 token 状态管理。4. 为什么要把登录态和权限控制拆开登录态解决“你是谁”权限控制解决“你能做什么”。在电商系统里消费者、运营、客服、管理员的权限不同。将认证与授权分层能让系统设计更清晰也方便后续接入角色、资源、数据权限等更细粒度控制。5. Resilience4j、限流、熔断、降级分别解决什么问题限流是控制进入系统的流量避免被瞬时请求压垮熔断是在下游服务不稳定时快速失败避免线程一直等待降级是在资源紧张或依赖异常时返回简化结果或备用内容保障核心链路可用。电商大促时非核心能力如推荐、评论、营销弹窗等常被降级而下单链路优先保留。6. 为什么 Micrometer Prometheus Grafana 很适合做监控Micrometer 是 Java 生态里统一的指标门面可以兼容多种监控后端。它能采集 JVM、线程池、HTTP、数据库连接池、Kafka 消费延迟等关键指标Prometheus 负责抓取和存储时序数据Grafana 负责可视化展示。对于大促压测和线上排障这套组合非常高效。7. AI 导购助手为什么适合用 RAG 而不是直接让大模型回答电商场景中的价格、库存、优惠、活动规则、商品参数变化非常快纯大模型无法保证实时准确。RAG 的思路是先从企业知识库、商品库、活动配置中检索相关内容再把检索结果作为上下文交给模型生成答案。这样能显著降低幻觉提高可控性和业务可信度。8. Agent 与普通问答的区别是什么普通问答主要是“生成答案”Agent 则可以“理解目标—选择工具—执行动作—整合结果”。例如用户问“我的订单到哪了”Agent 可以自动调用订单查询、物流查询、售后政策查询等工具再综合输出。对于企业级客服、导购、工单流转、知识检索等场景Agent 更接近真实业务流程。9. 聊天会话内存、用户画像、工具调用标准化为什么重要多轮对话必须保留上下文否则模型会“忘记”前文信息用户画像能帮助推荐更贴合需求的商品工具调用标准化能让 AI 与内部系统之间形成稳定接口降低耦合度。特别是在复杂工作流中规范的工具协议和权限控制非常关键。10. 企业知识库问答如何兼顾准确率与权限控制通常要做文档加载、切分、向量化、索引构建再结合关键词检索与向量检索进行混合召回。为了减少误答可以增加重排模型、引用来源、答案置信度阈值。权限控制上要在检索阶段就过滤租户、部门、角色、文档级别权限避免模型“看见不该看的内容”。感谢阅读希望这篇文章能帮助你更好地准备互联网大厂 Java 面试也希望你在真实面试中能稳住心态、讲清思路、拿下 Offer。
返回列表