第一轮:Spring Boot与微服务基础
面试官:小曾,你在简历里提到用过Spring Cloud,能说说Spring Boot和Spring Cloud的关系吗?
小曾(自信):啊这个简单!Spring Boot是“快速启动器”,Spring Cloud是“微服务全家桶”!Boot是单车,Cloud是共享单车集群!(挠头)不过…集群怎么调度来着?
面试官(微笑):比喻不错。那你说说,用Spring Cloud Netflix实现服务发现时,Eureka和Ribbon怎么配合?
小曾(突然结巴):Eureka…是服务注册中心,Ribbon是…是…负载均衡的!具体代码?我一般用@LoadBalanced
注解,其他交给框架!(擦汗)
面试官(追问):如果Eureka Server宕机,现有服务调用会怎样?
小曾(眼神飘忽):这个…应该…可能…会有缓存?或者熔断?对了!Resilience4j可以救场!
第二轮:数据库与缓存实战
面试官:你们电商项目用Redis缓存商品详情,如何解决缓存穿透?
小曾(抢答):布隆过滤器!还有…缓存空值!(突然心虚)但布隆过滤器咋实现来着…
面试官(点头):不错思路。那缓存和数据库一致性呢?比如秒杀时库存更新。
小曾(支吾):先更数据库…再删缓存?或者…用消息队列异步搞?(小声)其实我们当时直接调了@CacheEvict
…
面试官(叹气):说说JPA的N+1问题怎么优化?
小曾(突然兴奋):这个我知道!@EntityGraph
或者写JOIN的JPQL!(补充)但Hibernate的懒加载我总调不好…
第三轮:AI集成与场景设计
面试官:你们用Spring AI做智能客服,如何避免AI幻觉(Hallucination)?
小曾(懵):幻觉?AI还会做梦?(反应过来)哦!要用RAG!从企业文档里检索答案!
面试官(引导):RAG的向量数据库选型考虑过吗?比如Milvus和Redis对比。
小曾(汗流浃背):Redis…方便但慢?Milvus专业但…要运维?(突然摆烂)其实我们用的ChatGPT API…
面试官(合上笔记本):今天先到这里,回去等通知吧。
技术解析与答案
-
Spring Cloud Netflix
-
业务场景:电商微服务中,商品服务通过Eureka注册,订单服务通过Ribbon调用时自动负载均衡。
-
技术点:Eureka Server宕机后,客户端本地缓存服务列表仍可短期使用,需配合
resilience4j-circuitbreaker
实现熔断。
-
-
Redis缓存穿透
-
场景:恶意请求不存在的商品ID导致频繁查库。
-
解决方案:
-
布隆过滤器预存合法ID(Guava的
BloomFilter
)。 -
缓存空值并设置短TTL。
-
-
-
RAG架构
-
AI客服场景:用户问“退货政策”,RAG先通过OpenAI Embedding将问题向量化,从Milvus中检索相似文档片段,再生成回答。
-
技术栈:
-
向量数据库选型:Redis简单但适合小规模;Milvus支持高维向量相似搜索。
-
防幻觉:限制AI仅基于检索片段生成答案。
-
-