
Java 面试实战Spring Boot Kafka Redis Kubernetes RAG燕双非在大厂互联网医疗场景的 3 轮面试翻车与逆袭故事背景今天的面试场景是一家互联网大厂的 Java 岗位业务方向为互联网医疗与健康管理。面试官神情严肃桌上放着一叠系统架构图候选人燕双非则保持着一贯的“我好像懂但又没完全懂”的气质。这场面试分三轮推进先聊基础平台与业务链路再聊系统稳定性与安全最后深入到 AI 化升级与工程化落地。每一轮的问题都尽量围绕真实业务展开让回答不只是背八股而是能落到系统设计与线上实践。第一轮基础架构与核心链路面试官你先说说互联网医疗平台里挂号、问诊、处方单这条链路为什么常见选型是 Spring Boot MyBatis Redis燕双非Spring Boot 启动快配置少MyBatis 方便写复杂 SQLRedis 用来缓存热点医生、科室列表还有验证码和会话信息。这样用户访问快一些数据库压力也小一些。面试官回答得不错至少知道它们分别解决什么问题。那你再说说Redis 缓存挂号余号时怎么避免“缓存击穿”或者“超卖”燕双非嗯……可以加锁吧比如用分布式锁。还有就是库存不够的时候直接返回别一直查数据库。面试官方向对。那如果高并发下多个请求同时抢最后一个号源你会怎么设计燕双非可以用 Lua 脚本原子扣减先在 Redis 里判断和扣减再异步落库。这样更稳。面试官这个思路就对了说明你不是完全只会“手动挡”。面试官那 Spring Boot 里如果你想统一处理接口返回、异常和日志追踪一般怎么做燕双非可以用 ControllerAdvice 统一异常处理拦截器或者过滤器记录 traceId再配合 SLF4J 打日志。面试官很好至少基础链路还是清楚的。第二轮稳定性、安全与消息驱动面试官现在平台要接入短信通知、问诊消息、支付结果回调。你会怎么用 Kafka 做异步解耦燕双非下单后把消息发到 Kafka短信服务、消息通知服务、订单服务分别消费。这样主流程不用等下游响应会快一些。面试官不错。那如果 Kafka 消息重复消费了医疗订单状态会不会乱你怎么保证幂等燕双非可以……在数据库里加唯一键或者记录消息 ID消费前先查一下有没有处理过。面试官可以幂等是必须考虑的。再往下支付场景里你怎么设计权限控制比如患者、医生、运营、管理员看到的数据不一样。燕双非Spring Security 做认证授权JWT 携带用户身份和角色信息接口层根据角色做权限控制。敏感数据可以再做字段级脱敏。面试官答得还行。那如果是医院内部系统还要支持单点登录和第三方身份接入呢燕双非可以接 OAuth2或者用 Keycloak 做统一身份管理。这样多个系统共享登录态少让医生反复登录。面试官这个思路很符合企业场景。面试官最后一个问题这类系统上线后你怎么监控核心指标比如挂号成功率、接口延迟、消息积压燕双非可以用 Micrometer 暴露指标Prometheus 抓取Grafana 看图表日志进 ELK链路追踪可以用 Zipkin 或 Jaeger。Kafka 堆积的话就看消费 lag。面试官很好这一轮比刚才靠谱多了。第三轮AI 升级、工程化与复杂业务面试官现在公司想把平台升级成智能医疗助手支持“自然语言问诊、企业文档问答、智能客服”。你会怎么用 RAG 和 Spring AI 设计燕双非嗯……先把医院知识库、科室说明、医保规则做文档加载然后切分、向量化存到向量数据库里。用户提问后做语义检索再把检索结果和问题一起喂给大模型生成回答。面试官继续说为什么不能直接让大模型裸奔回答燕双非因为会幻觉容易瞎编。医疗场景不能乱说所以要加检索增强生成尽量基于可信知识库回答。面试官不错。那如果要做 Agent让它自动帮患者完成“查科室、预约、提醒、补充材料”这些复杂流程你怎么理解工具调用标准化燕双非就是把预约接口、消息发送接口、医保查询接口这些能力封装成工具让 Agent 按步骤调用。工具输入输出最好标准化不然每次都靠模型自由发挥容易出错。面试官很接近实际落地了。再问一个工程问题这种系统如何在 Kubernetes 上做弹性伸缩保证高峰期挂号不崩燕双非可以把服务容器化配合 HPA 根据 CPU、QPS 或自定义指标扩容。重要服务前面放网关后面做限流和熔断避免一下子把数据库打挂。面试官那如果你要用 Jenkins 做 CI/CD保证发布安全呢燕双非代码提交后跑单元测试、静态检查、镜像构建再部署到测试环境最后灰度发布。失败就回滚。嗯……最好再加数据库迁移工具比如 Flyway避免表结构不一致。面试官回答完整了。那最后一个问题医疗知识库更新后怎么保证检索效果不劣化燕双非可以做离线评测集比较命中率和回答准确率再做线上 A/B 实验看用户追问率、满意度、转人工率。嗯……如果效果差就调整切分策略、Embedding 模型和召回参数。面试官行今天先