在线教育直播平台 Java 面试实录:Spring Boot、Kafka、Redis、JWT、RAG 与微服务云原生实战
文章简述:本文以互联网大厂 Java 面试为背景,围绕在线教育直播平台场景,模拟严肃面试官与“水货程序员”燕双非的三轮递进式问答,覆盖 Spring Boot、Kafka、Redis、JWT、RAG、Kubernetes、Micrometer 等技术点,并在文末详细解析每道题,帮助读者理解真实业务中的技术落地。
第一轮:基础架构与核心链路
面试官:我们先从在线教育直播平台的核心链路聊起。你作为后端负责人,怎么设计一个“课程开播 + 用户进入直播间”的接口?
燕双非:这个简单,Spring Boot 起一个接口,查课程状态、查用户权限,然后返回一个直播地址,前端一跳就进去了。
面试官:回答方向是对的。那你会怎么保证接口在高并发下不会把数据库打爆?
燕双非:嗯……可以先用 Redis 缓存课程信息,再加个本地缓存,应该就差不多了吧。
面试官:还可以继续说说缓存穿透、击穿和雪崩怎么处理。
燕双非:穿透就查不到的时候也缓存一下空值;击穿可以加互斥锁;雪崩……我觉得可以让缓存过期时间随机一点。
面试官:不错,至少方向没跑偏。那你说说如果课程状态变更,缓存和数据库怎么保持一致?
燕双非:这个嘛,先更新数据库,再删缓存,应该比较稳。至于极端情况……我觉得可以靠重试兜底。
面试官:可以,继续往下聊。
面试官:直播间消息通知,比如“老师开播了”,你会怎么做?
燕双非:我会用 Kafka 发消息,直播服务消费后再通知在线用户,离线用户就走站内信。
面试官:那消息重复消费怎么办?
燕双非:加幂等,比如消息 ID 落库或者 Redis 记录处理状态。
面试官:很好,这个点回答得比较完整。
第二轮:安全、稳定性与可观测性
面试官:现在用户要用手机号登录,签发 JWT 访问直播和题库接口。你怎么设计认证与授权?
燕双非:登录成功后服务端生成 JWT,里面放 userId、角色和过期时间。前端每次请求带 token,网关校验签名和有效期。
面试官:如果要做老师、学员、运营三类角色的权限控制呢?
燕双非:可以用 Spring Security 做 URL 和方法级权限控制,按角色配置接口访问范围。
面试官:那 token 被盗了怎么办?
燕双非:额……可以缩短过期时间,再配刷新令牌。重要操作再加二次验证。
面试官:思路可以。那你说说直播大促时,接口响应突然变慢,怎么定位?
燕双非:先看 Prometheus 和 Grafana 的指标,再看 Micrometer 暴露的接口耗时、JVM GC、线程池情况;如果是链路问题,还可以看 Jaeger 或 Zipkin 的调用链。
面试官:不错,说明你有一定的可观测性意识。那如果是 Kafka 消费堆积,你会怎么排查?
燕双非:先看消费组 lag,再看消费者实例数、分区数和处理耗时;如果是业务慢,就优化逻辑或者扩容消费者。
面试官:好,至少知道从数据和消费者两端看问题。
面试官:最后一个问题,在线教育平台需要做防刷课和风控,你会怎么结合日志和规则引擎做?
燕双非:我会把关键行为打日志,比如登录、支付、刷题、进出直播间,再通过 ELK 做检索分析;规则上可以对异常 IP、设备指纹、频率做限制。
面试官:回答得还行,至少不是只会“加个 if”。
第三轮:AI 增强与复杂业务落地
面试官:现在平台要做一个“AI 学习助手”,支持企业文档问答、课程知识检索和智能客服。你会怎么设计?
燕双非:可以用 Spring AI 接大模型,然后做 RAG。先把课程讲义、FAQ、公告文档加载进来,切分后向量化,存到 Milvus 或 Redis 这类向量数据库里。用户提问时先做语义检索,再把检索结果拼到提示词里,让模型回答。
面试官:不错,已经接近实战了。那为什么不能直接把所有文档塞进 prompt 里?
燕双非:因为上下文长度有限,而且成本高、噪声大。RAG 可以先检索相关片段,再让模型基于证据回答。
面试官:如果要做“课程推荐 + 学习路径规划”的 Agent 呢?
燕双非:嗯……Agent 就是让模型能调用工具。比如查用户历史、查课程库存、查考试安排这些都做成标准化工具调用,再让模型自己决定调用哪个工具,最后组合输出。
面试官:可以继续,别停。
燕双非:还可以加会话内存,保存用户的学习目标和阶段,这样下次问答能延续上下文。复杂工作流的话,可以先规划再执行,避免模型一上来胡说八道。
面试官:那你怎么避免 AI 幻觉?
燕双非:一是检索结果优先,要求回答引用证据;二是限制模型只能基于平台知识库回答;三是对关键答案做规则校验和人工兜底。
面试官:最后一个问题,假设这个 AI 助手要接入 WebSocket 实时推送学习提醒,你会怎么考虑稳定性?
燕双非:我会把提醒消息先写入消息队列,消费者再推 WebSocket,避免瞬时流量把连接服务打挂;同时做重连、心跳和失败补偿。
面试官:行了,今天先到这里,你回家等通知吧。
问题详解与知识点拆解
1. 课程开播 + 用户进入直播间接口设计
业务上通常需要同时校验课程状态、用户权限、直播房间状态等信息