尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

大数据与AI服务大厂Java面试实录:JDK17、Redis分布式锁、Kafka数据削峰、Seata分布式事务、Spring AI+RAG智能分析,谢飞机三轮被虐哭(附完整答案解析)

大数据与AI服务大厂Java面试实录:JDK17、Redis分布式锁、Kafka数据削峰、Seata分布式事务、Spring AI+RAG智能分析,谢飞机三轮被虐哭(附完整答案解析) 大数据与AI服务大厂Java面试实录JDK17、Redis分布式锁、Kafka数据削峰、Seata分布式事务、Spring AIRAG智能分析谢飞机三轮被虐哭附完整答案解析面试公司智数云大数据与AI服务独角兽面试官老K严肃人称“死亡凝视”求职者谢飞机水货程序员简历写了“精通”Java实际精通CtrlC/V场景设定智数云——国内领先的大数据与AI服务商为金融、零售、政务、医疗等上千家企业提供数据中台与AI能力。日处理数据量 5000 亿条实时计算峰值每秒 2000 万条平台托管 10 万 离线任务与 5 万 实时任务。业务链路贯穿全程数据采集 → 数据清洗 → 数据存储 → 离线/实时计算 → 数据服务API → BI可视化 → 智能分析问答 → AI模型训练 → 模型服务。第一轮·筑基期Java基础 JVM 构建工具老K先做个自我介绍吧。谢飞机面试官好我叫谢飞机5年Java经验精通Spring全家桶、大数据全家桶还懂点AI……老K低头看简历哦那我们直接开始。你们公司有个数据中台项目你们生产环境用的哪个JDK版本说说 JDK 8、11、17 怎么选谢飞机这个简单8是经典11是……三分糖奶茶17是一起发我们公司用的是17因为17一起发图个吉利老K额头冒青筋……图吉利你当JDK是开业放鞭炮呢那你说说 JVM 内存都分哪几块线上 OOM 你怎么排查谢飞机JVM内存嘛有堆、有栈、还有……元宇宙空间对元宇宙空间OOM排查更简单重启大法好不行就加内存加到256G拉满再不行就换电脑老K深吸一口气……那换个问题。你们项目用 Maven 还是 GradleMaven 依赖冲突怎么解决谢飞机用Maven依赖冲突谁报错删谁删到不报错为止实在不行把同事的代码也删了反正报错就是它的锅老K沉默10秒……你简历上写的“精通”两个字是打印店老板帮你打的吧第二轮·历劫期数据库 缓存 消息队列 分布式事务老K我们数据中台要存千万级的元数据你觉得 MyBatis 和 JPA 怎么选说说它们各自的坑。谢飞机MyBatis 灵活SQL 自己写JPA 省事但“JPA一时爽排查火葬场”我们上个项目用 JPAN1查询直接把数据库干崩了后来全改成 MyBatis 了老K嗯这个回答还算靠谱。那连接池呢为什么用 HikariCP 不用 C3P0谢飞机HikariCP 名字短加载快C3P0 听名字像科幻电影里的机器人不靠谱老K嘴角抽动……行吧算你对了一半。那缓存三兄弟穿透、击穿、雪崩分别怎么解决谢飞机这个我会口诀背得滚瓜烂熟穿透用空值缓存布隆过滤器击穿用互斥锁逻辑过期雪崩用随机过期时间多级缓存老K微微点头难得你能答利索。那再问你你们数据平台有个“元数据上报”接口峰值 QPS 10万怎么用 Redis 做分布式锁防止重复上报谢飞机setnx 一把梭set key value成功就加锁完事删锁老K那锁过期了怎么办删锁删到别人的锁怎么办谢飞机……锁过期就过期呗过期了别人就能进来了删锁管它谁的删就完了老K血压飙升那你听说过 Redisson 看门狗吗谢飞机看门狗是不是楼下那条大黄狗它负责看门的我懂老K……我们聊下一个。你们用 Kafka 接实时数据流怎么保证消息不丢失谢飞机Kafka 是大厂产品大厂产品不会丢消息的信我就完了老K那消费者挂了重平衡丢消息呢offset 没提交呢谢飞机……那就让它丢吧反正数据多不差那几条老K深呼吸那分布式事务呢数据中台要同步元数据到 ES还要发消息给下游怎么保证一致性谢飞机Seata撒海盐就一致我们叫“海盐事务”四种模式海盐味、烧烤味、番茄味、原味老K闭上眼睛……你出去吧不你坐下还有最后一轮。第三轮·飞升期WebSocket 可观测性 Spring AI老K我们数据平台要给客户实时推送任务执行进度用 WebSocket 支持百万连接怎么设计谢飞机for 循环挨个发先存起来然后 for (连接 : 连接列表) { 连接.send(msg); }百万连接就循环一百万次呗简单老K差点把保温杯捏碎……那百万连接一台机器扛得住吗要不要 Netty要不要 Redis Pub/Sub 广播要不要心跳保活谢飞机……啊这那可能可能要吧。老K行那说说你们平台怎么监控的谢飞机这个我会可观测性三件套Prometheus 收指标、ELK 收日志、Jaeger/Zipkin 做链路追踪指标看 Prometheus Grafana日志查 ELK链路用 Jaeger三件套齐活老K眼睛一亮难得这个答得利索比福尔摩斯还神老K最后一个环节。我们平台要做“企业数据智能问答”用户问“上个月华东区销售额环比增长多少”你怎么做谢飞机这个我会用 Spring AI 的 ChatClient先向量化再语义检索最后让大模型生成答案先搜后答RAG老K那向量存在哪用什么向量数据库谢飞机Milvus性能强Chroma 轻量Redis Stack 也行小数据量用 Chroma大数据量用 Milvus要快就用 Redis Stack老K点头不错。那模型怎么接入外部工具比如查天气、查订单谢飞机MCP模型上下文协议AI界的USB-C统一标准插上就能用还有 Google A2A智能体之间互相通信Apple to Apple苹果对苹果老K那 Agentic RAG 和普通 RAG 啥区别谢飞机普通 RAG 是“搜一次答一次”Agentic RAG 是“AI侦探”会自己拆问题、多轮检索、推理、查工具直到破案ReAct 循环老K那 AI 幻觉怎么解决谢飞机这个我懂幻觉只能缓解不能消除用 RAG 给事实依据、提示词约束、温度调低、引用来源、人工审核、评估监控六管齐下老K长叹一口气小谢啊你基础知识稀碎但 AI 这块倒是有点东西。今天面试先到这里你回去等通知吧。谢飞机好嘞这是第七张“等通知”卡片了集齐七张就能召唤神龙了老K……保安送客。彩蛋三个月后谢飞机靠着本文的答案解析成功入职了智数云的竞品公司。 文末答案解析小白学习版16大考点1. JDK 8/11/17 特性对比与选型| 版本 | 核心特性 | 适用场景 | |------|----------|----------| | JDK 8 | Lambda、Stream、Optional、新的日期API、默认方法 | 存量老项目、依赖兼容性要求高 | | JDK 11 | 单文件启动、ZGC试验、HTTP Client标准化、String新API | 中间过渡版本 | | JDK 17 | 密封类、记录类型、模式匹配、ZGC转正、LTS| 新项目首选Spring Boot 3.x 强制要求 |选型逻辑新项目无脑 JDK 17LTS老项目逐步升级Spring Boot 3.x 必须 JDK 17。2. JVM 内存分区 OOM 排查四板斧内存分区程序计数器、虚拟机栈、本地方法栈、堆、方法区元空间、直接内存。面试常问堆对象实例、栈局部变量/方法调用、元空间类元信息。OOM 排查四板斧口诀jps找进程 →jmap -dump导堆 →jstack看线程 →MAT/JProfiler分析对象引用链定位大对象/泄漏点。别再“重启大法”了3. Maven/Gradle 依赖冲突四板斧mvn dependency:tree查依赖树mvn dependency:analyze查未使用/缺失依赖用exclusion排除冲突传递依赖用dependencyManagement/ BOM 统一版本推荐Spring Boot 项目直接用spring-boot-dependenciesBOM 锁版本。4. MyBatis vs JPA HikariCP 核心原理MyBatisSQL 手写、灵活可控适合复杂查询、报表、大数据量场景。JPA/Hibernate对象映射省代码但容易踩N1 查询坑级联查询一次查一条。解决EntityGraph/join fetch/ 批量抓取。HikariCP号称“最快的连接池”核心优化是FastList省去 ArrayList 越界检查和ConcurrentBag无锁化借还连接。5. 缓存三兄弟穿透/击穿/雪崩| 问题 | 现象 | 解决方案 | |------|------|----------| | 穿透 | 查不存在的key打穿到DB | 空值缓存 布隆过滤器 | | 击穿 | 热点key过期瞬间打爆DB | 互斥锁 逻辑过期 | | 雪崩 | 大量key同时过期 | 随机过期时间 多级缓存 熔断降级 |口诀防空、加锁、错峰。6. Redis 分布式锁三大坑 Redisson 看门狗三大坑锁过期业务没执行完锁就过期 → 用 Redisson 看门狗自动续期默认30s每10s续一次。误删他人锁删锁前必须校验 value 是否自己的 UUID。不可重入同线程重复加锁失败 → Redisson 内部用信号量实现可重入。正确姿势SET lockKey uuid NX PX 30000 Lua 脚本原子释放 看门狗续期。7. Kafka 三环节不丢失保障生产者acksall等所有ISR确认retries重试 幂等enable.idempotencetrue。Brokermin.insync.replicas2 副本因子 ≥3避免单点故障丢数据。消费者手动提交 offset先处理业务再提交关闭自动提交消费失败重试/进死信队列。8. 分布式事务四方案选型| 方案 | 原理 | 适用场景 | |------|------|----------| | 2PC/XA | 两阶段提交强一致 | 银行/支付等对一致性要求极高、并发低 | | TCC | Try-Confirm-Cancel 补偿 | 需要业务侵入控制适合长事务 | | 可靠消息 | 本地消息表 MQ最终一致 | 异步解耦允许短暂不一致 | | Seata AT | 自动生成反向SQL回滚 | 无侵入、性能好业界主流 |9. 注册中心 CAP 对比EurekaAP节点间互相注册可用性优先Netflix OSS 已停更。NacosAP/CP 可切换支持配置中心国内主流。ConsulCP强一致自带健康检查与 KV。10. WebSocket 百万连接架构单机扛不住百万连接需要Netty实现高性能 WebSocket 服务端非阻塞IO。用ChannelGroup管理连接按userId/roomId分桶存储。多节点用Redis Pub/Sub或 Kafka 广播消息粘性会话 路由转发。心跳保活 断线重连 消息幂等去重。11. 可观测性三件套指标 MetricsPrometheus Micrometer 采集Grafana 展示。日志 LoggingLogback/Log4j2 输出 → Filebeat → ELKElasticsearch Logstash Kibana。链路 TracingJaeger / ZipkinOpenTelemetry 标准追踪一次请求跨服务的完整调用链。12. JWT 痛点与双 Token 方案JWT 无状态但无法主动失效。方案Access Token短15分钟 Refresh Token长7天。退出登录/改密时把 token 加入Redis 黑名单。对接 OAuth2 / Keycloak 做统一认证授权。13. Spring AI 核心能力表| 能力 | 说明 | |------|------| | ChatClient | 统一的大模型调用客户端类似 JdbcTemplate | | EmbeddingModel | 文本向量化OpenAI / Ollama 本地模型 | | VectorStore | 对接 Milvus/Chroma/Redis 等向量库 | | ChatMemory | 聊天会话记忆内存/Redis/数据库 | | Function Calling | 让模型调用外部工具/API | | Advisors | 提示词填充、RAG 检索增强等横切能力 |14. RAG 离线/在线双阶段全流程离线阶段文档加载 → 清洗分块Chunk→ Embedding 向量化 → 存入向量数据库。在线阶段用户提问 → 问题向量化 → 语义检索 TopK → 拼装 Prompt → 大模型生成 → 返回带引用答案。向量数据库选型Milvus海量高性能、Chroma轻量开发、Redis Stack低延迟、复用Redis。15. MCP 三大原语 A2A Agentic RAGMCP模型上下文协议统一 AI 与工具/数据源的接入标准三大原语 Tools工具调用 Resources资源读取 Prompts提示模板客户端-服务器架构被称作“AI 界的 USB-C”。A2AAgent2Agent智能体之间的通信协议让多个 Agent 协作完成复杂任务。Agentic RAG不是“搜一次答一次”而是像侦探一样ReAct 循环思考→检索→调用工具→再思考多轮迭代直到给出可靠答案适合复杂企业文档问答。16. AI 幻觉本质与 6 大缓解手段本质大模型基于概率生成可能编造不存在的事实。只能缓解无法完全消除。RAG 检索增强让答案有事实依据。提示词约束明确“不知道就说不知道”。降低 temperature减少随机性。引用来源强制附上依据链接。人工审核高价值场景人机协同。评估监控用评测集持续量化幻觉率。 收藏本文面试前背一遍你也能从“谢飞机”进化成“老K”
返回列表