Java 面试实录:Spring Boot + Kafka + Redis + AI RAG,在互联网大厂求职场景里如何“说人话”
场景:互联网大厂 Java 求职面试
人物:严肃面试官、搞笑但有点水的程序员燕双非
第一轮:电商订单链路与基础技术栈
面试官:你先别急着讲架构。假设你负责一个电商秒杀下单系统,从用户点击到订单落库,你会怎么设计 Spring Boot 服务?
燕双非:我会先起一个 Spring Boot 项目,分 controller、service、dao 三层。前面用 Redis 做库存预热和限流,避免一窝蜂全打到数据库。订单请求进来后先校验参数,再走库存扣减和订单创建流程。数据库这边我会优先保证事务一致性,别让用户点了半天最后啥也没买到。
面试官:这回答还算像样。那如果库存扣减和订单创建要异步化,你怎么处理消息可靠性?
燕双非:可以用 Kafka。下单成功后发一个订单创建事件,库存服务、支付服务、通知服务各自消费。为了避免消息丢失,我会考虑生产者确认、消费者幂等、失败重试,还有必要时做本地消息表或者事务消息。反正不能让消息像我年终奖一样,说没就没。
面试官:那 Redis 在这个链路里除了库存,还有别的价值吗?
燕双非:有啊。比如热点商品详情可以缓存,用户秒杀资格也可以缓存,登录态、验证码、分布式锁也都能用。Spring Cache 配合 Redis 还能把一些读多写少的数据层抽象掉。
面试官:可以,至少你知道缓存不是只能拿来“存点东西”。最后一个问题,遇到高并发时你怎么监控接口性能?
燕双非:我会接 Micrometer,把接口延迟、错误率、QPS 这些指标暴露给 Prometheus,再用 Grafana 看图。卡顿的时候还能结合日志和链路追踪定位问题,不然只靠直觉优化,基本等于开盲盒。
第二轮:安全、网关与可观测性
面试官:现在假设这个电商系统要接入用户中心、支付中心和营销中心,怎么做统一认证授权?
燕双非:我会先考虑 Spring Security 配合 JWT 或 OAuth2。用户登录后签发 token,网关和各个服务验签。权限可以按角色、资源、接口粒度做控制。比如普通用户只能下单,运营人员才能发优惠券。
面试官:如果 token 被篡改或者过期了呢?
燕双非:那就直接拒绝啊。JWT 里会有过期时间,验签失败就返回未授权。要是需要更强的控制,可以结合黑名单、刷新 token,或者把会话状态放到统一认证服务里。总之不能让过期 token 继续“复活”。
面试官:大促期间接口变慢,你怎么判断是代码问题、数据库问题还是下游服务问题?
燕双非:先看监控。Prometheus 看指标,Grafana 看趋势,日志用 SLF4J + Logback 统一打点。链路追踪用 Zipkin 或 Jaeger,看看耗时卡在哪一跳。如果是数据库慢,查慢 SQL 和连接池;如果是下游慢,看看熔断和限流是不是生效。
面试官:说到连接池,你知道 HikariCP 为什么在很多项目里更受欢迎吗?
燕双非:大概因为它快、轻、配置简单吧。它对连接管理和性能优化做得比较好。相比一些老连接池,启动和运行开销更低,适合高并发场景。虽然我平时也会把它和 C3P0 混着说,但面试时我还是知道该选谁。
面试官:那如果你要上线一个新接口,怎样保证不把老系统搞崩?
燕双非:可以做灰度发布、限流、熔断、降级。Spring Cloud 里结合 Resilience4j 比较方便。新接口先放少量流量,观察指标没问题再全量。
第三轮:AI 服务与企业级演进
面试官:现在公司想做一个 AI 商品问答助手,用户问“这个手机适合拍夜景吗”,系统要结合商品文档回答。你怎么设计?
燕双非:我会做 RAG。先把商品说明、评测文档、FAQ 做文档加载和切分,再做向量化,存到向量数据库里,比如 Milvus 或 Redis。用户提问后先做语义检索,把相关片段召回,再交给大模型生成回答。这样比让模型瞎编靠谱多了。
面试官:如果检索回来的内容很多,怎么提升准确率?
燕双非:可以做召回后重排,控制上下文长度,优化提示词,还可以做 Agentic RAG,让 Agent 根据问题决定先查哪类资料、要不要调用工具。像企业文档问答这种场景,工具调用标准化很重要,不然模型一会儿查知识库,一会儿跑工单系统,最后自己把自己绕晕。
面试官:你提到 Agent,那它和普通聊天机器人有什么区别?
燕双非:普通机器人更多是问答,Agent 更像会干活的助手,能记住聊天会话上下文,调用工具执行动作,比如查库存、生成工单、发消息。复杂工作流里,Agent 能把多个步骤串起来,不过也更容易出幻觉,所以必须加权限、校验和人工兜底。
面试官:最后一个问题,如果 AI 回答错了,或者出现幻觉,你怎么处理?
燕双非:我会限制它的知识来源,优先基于企业文档回答,必要时返回“不确定”。还会把关键答案做置信度判断和人工审核。模型不是祖师爷,不能它说啥我们都信。
面试官:行吧,今天就到这。你先回去等通知。
所有面试问题详细解析
1. 电商秒杀下单系统如何设计 Spring Boot 服务?
核心目标是高并发下保证用户体验、库存准确性和系统稳定性。Spring Boot 适合快速构建分层清晰的服务,典型结构是 controller、service、repository/dao。
业务上通常会把商品详情、库存、活动规则等热点数据放入 Redis,减少数据库压力。秒杀时可先在 Redis 中做库存预扣,命中才进入下单流程。这样可以把大流量挡在数据库之前。