尧图精选

Java 面试实战:Spring Boot + Kafka + Redis + Spring Security 在电商大厂中的高频问答

🕒 发布时间:2026/9/1 23:41:39 📁 来源:尧图网络
Java 面试实战Spring Boot Kafka Redis Spring Security 在电商大厂中的高频问答场景设定一家互联网大厂的电商技术团队正在面试 Java 求职者。面试官风格严肃候选人是“水货程序员”燕双非回答简单问题时还能勉强接住复杂问题时则开始含糊其辞但现场氛围始终围绕技术展开。第一轮订单系统的基础架构面试官我们先从你熟悉的电商下单链路开始。一个 Spring Boot 订单服务为什么通常会选择内嵌 Tomcat它和传统部署 WAR 包到外部容器相比有什么优势燕双非嗯内嵌容器的话启动更方便部署也简单不用单独再配一个应用服务器。Spring Boot 开箱即用适合微服务拆分。面试官回答得不错说明你至少理解了 Spring Boot 的工程化价值。那如果订单服务要做接口幂等你会怎么设计燕双非可以用订单号做唯一键数据库加唯一索引或者前端提交时带 token服务端校验后删除。高并发场景下还可以配合 Redis 做去重。面试官很好已经能覆盖到数据库约束、业务 token 和缓存三层思路了。那再往下订单创建成功后你怎么把“发货”“积分”“优惠券核销”这些动作解耦燕双非发个 Kafka 消息吧。订单主流程先落库后面的动作订阅消息异步处理这样主链路快一些。面试官方向对。那你知道 Kafka 里为什么常说“至少一次投递”吗燕双非……大概就是消息有可能重复所以消费者得自己保证幂等不然会重复发货。面试官可以虽然你说得比较朴素但核心点是对的。第二轮高并发、缓存与安全面试官现在电商大促来了商品详情页 QPS 飙升。你会怎么使用 Redis 和 Spring Cache 做缓存体系燕双非热数据放 Redis页面配置可以本地缓存Spring Cache 做统一抽象。商品详情这种读多写少的场景先查缓存没命中再查数据库然后回填。面试官不错。那缓存穿透、缓存击穿、缓存雪崩分别怎么处理燕双非穿透可以做布隆过滤器或者缓存空值击穿可以加互斥锁、逻辑过期雪崩可以给缓存加随机过期时间必要时做降级和限流。面试官这题答得挺完整。继续说电商支付回调接口怎么做安全校验燕双非签名验签、时间戳、防重放必要时还要做 IP 白名单。内部接口可以接入 Spring Security 或者 JWT。面试官很好。那如果我们现在要做一个商家后台要求不同角色对订单、商品、库存有不同权限你会怎么落地燕双非用 Spring Security 做权限控制用户登录后根据角色和权限点做 URL 和方法级别鉴权。复杂点可以结合数据库动态加载权限。面试官能落到方法级鉴权说明你不是只会背概念。那我再追问一个JWT 放在前后端分离系统里好用但它有什么缺点燕双非嗯缺点是不好主动失效或者说注销比较麻烦而且 token 一旦很长传输成本也会高。通常会配合 Redis 黑名单或者短 token refresh token。面试官回答得可以说明你理解过实际系统。第三轮链路稳定性与观测面试官接下来我们看系统稳定性。订单服务调用库存服务、优惠券服务、物流服务你怎么处理下游超时和雪崩燕双非可以用 Resilience4j 做限流、熔断、隔离和重试。再配合超时控制和降级策略不要让一个服务拖垮整个链路。面试官不错。那你知道为什么重试不能乱加吗燕双非因为如果下游已经很慢了盲目重试会放大流量可能把服务打得更慢。对于非幂等操作还可能造成重复扣库存。面试官对。那如果要排查一个“下单成功但库存没扣”的线上问题你会看哪些监控和日志燕双非先看链路日志和请求 ID再看 Prometheus 指标、Grafana 面板、应用日志和 Kafka 消费堆积。如果有分布式追踪可以看 Jaeger 或 Zipkin。面试官很好至少你知道怎么把问题闭环。最后一个问题订单链路里你会如何避免事务和消息一致性问题燕双非可以用本地消息表、事务消息或者 Outbox 模式。先保证数据库写入和消息记录同事务再异步投递消息消费端做幂等。面试官思路是对的。今天就到这里吧你先回家等通知。问题详解结合电商大厂场景逐题拆解1. Spring Boot 为什么适合电商订单服务电商订单服务通常要求快速迭代、独立部署和弹性扩缩容。Spring Boot 的优势在于内嵌容器简化部署适合容器化和微服务化。自动配置减少样板代码提升交付效率。便于和 Spring Cloud、Kafka、Redis、Spring Security 等生态集成。在实际业务中订单服务常常承担交易链路核心职责因此工程化效率和可维护性尤为重要。2. 幂等设计为什么重要电商下单、支付回调、发货通知都属于典型的幂等敏感场景。常见方案包括数据库唯一索引保证物理层面不重复写入。请求 token前端提交一次性 token服务端验证后失效。Redis 去重通过 setnx 或短期键记录请求状态。实际中常组合使用避免单点失效。3. Kafka 在订单链路中的作用Kafka 常用于事件驱动架构。订单创建成功后后续的发货、积分、营销通知可以拆成多个消费者异步处理减少主链路耗时。但 Kafka 通常需要面对“至少一次”
上一篇/下一篇内容由系统自动关联 返回资讯列表 →