面灵AI→

京东 后端开发岗面经合集 01:Agent 日志排查、JVM 调优与中间件 11 场真题

轮次
多轮面试合集
时间
2026-09
来源
牛客网

《面试题目》

面经 01(2026 年 8 月 20 日)

  1. 你对未来的工作和职业生涯有什么预期?想做哪方面的工作?
  2. 能讲一个你做过、对你来说比较有代表性的项目吗?
  3. 项目 1 里,有自己的知识库吗?是怎么构建的?
  4. 项目 2 系统能做到问题发现,还是主要做问题排查?
  5. 你在这个项目中承担的是什么角色?
  6. 你觉得这个 Agent 的难点在哪里?问题排查的场景很多,哪些问题比较难解决?
  7. 你们会去下游看日志,除了日志之外还会看哪些信息?
  8. 这个业务属于什么类型?告警是系统性告警,还是也会涉及业务告警?
  9. 如果系统的请求量和告警量非常大,比如每天几百万条、每分钟上千甚至上万条告警,如何在大量相似日志中,根据一条告警精确定位对应的日志,避免通过时间范围检索出大量无关内容?
  10. 你们会先把告警做结构化处理,再去检索对应位置吗?
  11. 结构化处理时,你们会提取哪些关键信息?
  12. 你们后端的服务是微服务、多服务系统,还是单体服务?
  13. 既然这个系统是单体服务,是不是只需要收集这个系统的日志就够了?
  14. 除了日志之外,你们还会做代码定位吗?具体是怎么做的?
  15. 你们是怎么构建代码知识库的?
  16. 你了解过 Code Graph 这类开源项目吗?
  17. 你们是通过让大模型基于代码生成描述,再把这些描述存入知识库吗?
  18. 这个描述是针对整个代码库生成的,还是针对某个具体逻辑生成的?
  19. 你是一轮一轮和大模型交互,让它这样生成的吗?

面经 02(2026 年 7 月 24 日)

  1. 并发集合,Concurrent 里的 CAS 机制是什么?
  2. 无锁并发不可靠的地方是什么?
  3. 线程池有用到过吗?(结合实习经历描述)
  4. 用哪种线程池,用的是 CountDownLatch 还是 Barrier?线程池启动的时候是怎么启动的?
  5. 想问多个线程去拉取这些数据,如何判断这几个线程已经执行完了?中间某个线程出现异常了,又是怎么处理的?如何验证所拉取的数据是和数据源一致的?
  6. 结合 JVM 参数和 MAT 做内存参数排查,如何做的?在实际项目中有遇到过内存溢出问题吗?
  7. 问主服务宕掉了,备份服务如何接管主服务的数据,保证这部分数据的一致性?
  8. 为什么这个东西要做成备份服务,而不将两个服务一起并行运作?
  9. 你这边涉及到这个实习项目的时候,SQL 这种数据库是怎么使用的,涉及哪些场景?SQL 调优有没有遇到?
  10. 为什么分库分表这里,分完表后为什么是全量查询慢,原因是什么,如何优化这一缺点?为什么没有选择把这些数据放在 ES 或者 MongoDB 里?
  11. 都是什么字段加上了索引?对于用户 IP 地址这类字段,有没有办法把它变成数据存储,加快搜索效率?
  12. 插了一条八股,B+ 树是一颗什么样的树?
  13. 这里看你写到了 AOP 编程,这里的 AOP 主要做了什么事情?
  14. AOP 拦截在哪里拦,拦截到的数据又存在了哪里?
  15. AOP 通过 Java 的哪种技术实现?
  16. RAG 是一种什么技术框架,做了什么?
  17. 提供这个智能体检索文件这一功能,主要是给用户使用还是给管理者维护?
  18. 如何识别用户想查找文件这一个意图,做了些什么?
  19. 团队对应更看重哪些技术深度?
  20. 后续流程大概怎样?

面经 03(2026 年 7 月 10 日)

  1. 闲聊,之前在哪实习,实习多久?
  2. 介绍你的实习。
  3. 向量知识库遇到不同格式的文件怎么处理?
  4. 文本拆分策略有哪些?
  5. 简历上的项目里,你遇到最大的困难?
  6. 向量嵌入是做什么的?
  7. 用的什么大模型?
  8. 计算距离有哪几种方式?
  9. 多个 prompt 怎么管理的?
  10. 缓存击穿的解决方法?
  11. 有关悲观锁,加在哪,代码还是数据库?
  12. Kafka 的原理?
  13. Kafka 中 Java 的什么方法保证顺序性?
  14. 线程池参数设置?
  15. 核心参数设置的公式?
  16. 有关缓存线程池的使用。
  17. 有关索引,B+ 树对于 B 树的优势,到底为什么是用 B+ 树?
  18. 操作系统的文件管理?
  19. Git 多版本管理遇到冲突怎么解决?
  20. 如果同一个文件都进行了操作且逻辑不同,怎么解决?
  21. 拷打项目,定位是什么?
  22. 项目做了、负责的什么?
  23. 核心创新点是什么?
  24. 用户痛点是什么,为什么要做这个?
  25. 为什么要来我们公司?

面经 04(2026 年 6 月 16 日)

  1. 对实习工作中有哪些棘手的问题,怎么排查解决?
  2. 网络不通怎么解决?
  3. DNS 的作用以及流程?
  4. 域名中间的点号是干什么用的?
  5. 根域名服务器在哪里?
  6. 什么场景用 UDP?
  7. 什么是 VXLAN?
  8. Docker 最低哪个版本?
  9. Linux 安装和升级驱动如何操作?
  10. Linux 防火墙的原理以及四表五链?
  11. 代码写的多吗?了解 Python 吗?
  12. K8S 的三个主要组件?
  13. Docker 如何查看镜像?
  14. 如何清除不用的镜像?
  15. 桌面运维问题,电脑卡怎么清理?
  16. C 盘怎么清理?
  17. Ansible 如何编写针对多个不同平台的 playbook?
  18. 在 Linux 上搭建 SFTP 服务器,如何限制访问某目录?
  19. top 怎么查看 CPU?
  20. MySQL 的集群状态?
  21. 普罗米修斯了解吗?工作原理?
  22. 一万台机器如何自动化管理?
  23. K8S、Docker、KVM 的优缺点?
  24. 八个小球,一个超重,一个天平。如何最少次数找出?

面经 05(2026 年 5 月 8 日)

  1. 公司目前要实现一个 AI 换脸的工作,如果是我该怎么做?
  2. 同事想法和你不一致你该怎么做?
  3. Spring 中事务的实现方法?
  4. @Transactional 底层实现原理?
  5. ThreadLocal 底层实现原理?
  6. 引用的类型有哪些?
  7. 弱引用什么时候被 GC?
  8. 介绍一下单例模式。
  9. 单例模式中用 volatile 的原因?
  10. 锁类不锁对象的原因?
  11. 看没看过 Spring AI 的源码,介绍一下?
  12. MCP 的底层实现原理?

面经 07(2026 年 5 月 3 日)

  1. 你做的 RAG 知识库,具体业务场景是什么?整体是怎么搭建起来的?
  2. 项目一开始存在大事务问题,这个问题具体怎么优化的?
  3. 这个知识库支持什么内容形态?只有图文吗?图片是怎么处理的?
  4. 知识库面向的业务是什么?图文混合内容是怎么存储和还原的?
  5. 知识库更新怎么做?怎么保证内容实时保鲜?
  6. 这个项目里你遇到过哪些挑战和技术卡点?
  7. 向量库选型时考虑过哪些方案?为什么最终选择 Milvus?抛开公司基建,会从哪些维度选型?
  8. 简历里提到吞吐、检索性能有提升,提升具体来自哪里?你做了哪些优化动作?
  9. 当前链路访问量、文档量级、线上运行情况如何?灰度切量到什么程度了?
  10. 线上有没有完整监控?链路出问题如何及时发现告警?
  11. 灰度切流过程中实际暴露过哪些线上问题?怎么解决的?
  12. 你最近参与的个人用户向、AI Coding 相关产品,目前做到什么阶段?你负责哪部分?
  13. 在这些项目中,你个人最大的技术收获是什么?
  14. 你理解 Milvus 底层原理,这些原理在实际落地中怎么指导你的技术决策?
  15. ES 深翻页问题有没有遇到过?背后原理和瓶颈怎么理解?
  16. 有没有做过高并发场景?大促、秒杀这类高并发场景一般怎么设计处理?
  17. 平时开发会用设计模式吗?在实际项目里是怎么落地使用的?

面经 08(2026 年 4 月 28 日)

  1. AI 方面有哪些实践?
  2. 固定次数窗口的实现思路(Redis list:LPUSH 推入 + LTRIM 修剪)。
  3. 编码过程当中有没有用过一些设计模式?
  4. 为什么会有设计模式呢?设计模式主要是为了解决什么问题呢?
  5. 面向对象设计原则?
  6. 设计一个秒杀系统,有什么思路?
  7. 为什么在 agent 方面实践不多?精力都放在哪里了?
  8. 你学新技术一般是看视频多呀?还是看官网多?还是看博客多?
  9. 如果让你去学习 AI 应用开发,你怎么学?
  10. 这个实习过程当中,你觉得你最大收获是什么呀?

面经 09(2026 年 4 月 26 日)

  1. 八股:慢 SQL 怎么检测、优化?
  2. 结合项目:如果用 AI 去检测慢 SQL,你会怎么做?
  3. 你要设计 skill 的话,会放哪些内容?

面经 10(2026 年 4 月 21 日)

  1. 项目里最具备挑战的部分是什么?
  2. 八股:慢 SQL 怎么检测、优化?
  3. 结合项目:如果用 AI 去检测慢 SQL,你会怎么做?
  4. 你要设计 skill 的话,会放哪些内容?
  5. 询问未来的职业规划。
  6. 你认为你会被 AI 取代吗?

面经 11(2026 年 4 月 18 日)

  1. 介绍之前实习的业务。
  2. 比如你在重构一些历史性的业务,这个时候新的需求来了,遇到这种情况了吗?怎么处理?
  3. 你简历上其他的项目涉及到多人协作吗?是从哪里找的这些项目?
  4. 讲一讲你的 agent 项目。
  5. 讲一下项目中 RAG 的拆分、存储、使用逻辑。
  6. 项目用了 Spring AI 框架,讲一下这个框架的整体结构?
  7. 当时为什么选择这个框架?
  8. 了解非 Java 的 agent 开发框架吗?
  9. 我看你的这个 agent 项目各层级都搭建好了,你认为你的这个项目还缺什么?
  10. 讲一下你的 agent 上下文怎么做的?
  11. 你了解长期记忆、中期记忆和短期记忆吗?
  12. 你这个项目用的什么大模型?
  13. 其他的大模型你用过或者调研过?
  14. 你平常的时候用什么大模型或者 IDE 工具辅助开发,AI 辅助编程用什么?
  15. 你用刚刚提的大模型或者 IDE 写了哪些代码?
  16. 你平时用 AI 编程的时候,你感觉它的代码质量高不高?你觉得有什么办法提升吗?
  17. 我来问一下,就是你来实习,想要达到一个什么样的目标?
  18. 实际上我们对实习的同学有一些产出要求,来了后要承接一些真实落地项目,按照你的理解,以什么方式最快能上手,然后做需求?

《参考解析》

  1. 告警到日志的精确定位是面经 01 的核心,要答成一条链路:先说清难点——量级大(每天几百万条、每分钟上万条告警)、日志高度相似(同一段代码不同请求参数)、按时间范围检索必然泛化。可行的做法是四步:先把告警结构化(抽出服务名、实例、接口或链路 ID、异常类型、错误码、机房、时间戳等可检索维度),再用 trace ID 或请求 ID 这类唯一标识把告警与日志串起来,检索时用结构化字段做前置过滤而不是全文搜索,最后把结果收敛到「哪个服务、哪个方法、哪次调用」。如果链路里没有 trace ID,就要退一步从日志模板(把变量替换掉的日志骨架)做聚类归一,用模板加参数定位,而不是靠关键字。答题时主动提一句结构化字段的取舍:字段太多写入成本高,太少过滤不掉噪声,通常按「定位一次故障真正用到的维度」来定。

  2. 代码知识库这类追问答什么:面试官连问「怎么构建、描述是整库还是单个逻辑、是不是一轮轮交互」,本质是在考你有没有真的落地过。可讲的路径是:先用 AST 解析或静态分析把代码拆成函数、类、接口粒度的块,再按块让模型生成结构化描述(功能、输入输出、依赖、异常),与向量一起入库;检索时先按问题定位到模块,再拉取相关的调用链上下文。规模大时必须做增量更新(按 git 提交或文件哈希只重算变化的块),否则全量重算既贵又慢。Code Graph 这类开源方案的思路是用代码图(调用关系、依赖关系)补足纯向量检索丢结构的问题,被问到时可以对比:向量检索擅长语义相近,图检索擅长「谁调用了谁」,好的方案是两者混合。

  3. 并发与线程池这组要答细节:CAS 是「比较并交换」的原子指令,靠自旋重试实现无锁更新,问题是 ABA(值被改回原值导致判断失效,解法是加版本号)、自旋开销大、只能保证单个变量原子性。多线程拉数据这种场景,面试官会盯三件事:怎么等所有线程结束(CountDownLatch 一次性、CyclicBarrier 可循环复用、CompletableFuture.allOf 更贴合组合场景)、某个线程异常怎么办(Future 的异常会被吞,必须显式 get 或加回调收集异常并决定是整体失败还是降级)、怎么校验数据与源一致(条数与校验和比对、按主键抽样回查、记录每批的拉取水位)。线程池的启动要交代核心参数、队列类型、拒绝策略与预热,自定义 ThreadFactory 命名线程是加分项。

  4. JVM 内存排查要按流程讲:先拿到现象(OOM 类型、GC 日志里的 Full GC 频率与回收效果),再用 jstat、jmap 观察堆与对象分布,dump 后用 MAT 看支配树(Dominator Tree)找最大的保留集,重点区分是内存泄漏(老年代持续增长、GC 后不回落)还是内存不够(调参或扩机器)。常见诱因是集合持有大对象、缓存没有淘汰策略、ThreadLocal 未 remove、以及大文件一次读入内存。答题时把「改代码」和「调参数」分开说,先定位泄漏点再谈 -Xmx 之类的参数调整。

  5. 主备服务与一致性这题容易被追到底:主服务宕机后的接管方案要说清三件事——数据从哪来(共享存储、数据库、还是主服务同步过来的副本)、如何判断主真的挂了(心跳超时加重新选主,避免脑裂)、接管期间的数据一致性怎么保证(写请求的幂等、补偿对账、以及数据水位差)。被追问「为什么不做双活并行」时,答双活的代价在写冲突与路由复杂度上:同一份数据两个写入点必须有冲突解决策略,对账和回滚都更难;备份服务方案牺牲了切换时间换来简单正确,适合对 RTO 要求不极端的场景。这个回答能体现你理解「一致性、可用性、复杂度」的三角。

  6. MySQL 与索引这几问都有标准答法:分库分表后全量查询慢,是因为跨分片要合并结果、排序分页都要在内存里做,且无法用单表索引;优化方向是避免全表扫描类需求(把清单类查询交给 ES 或做异步报表)、用基因法把关联查询收进同一分片、以及限制深分页。选不选 ES 或 MongoDB 要看需求——全文检索与聚合分析选 ES,文档型灵活 schema 选 MongoDB,强事务与关系约束还是留在 MySQL。B+ 树要讲清三件事:非叶子节点只存键、因此一页能放更多键、树更矮(减少磁盘 IO);叶子节点用链表相连,天然支持范围查询和排序;B 树则数据分散在所有节点上,范围查询要中序遍历、效率低。IP 这类字段做检索,可以把点分十进制转成整型存储(省空间、可比较、可做范围查询),或者存 IP 前缀再加索引。

  7. Spring 与并发工具这几问是必背项:Spring 事务靠 AOP 代理加上 ThreadLocal 绑定连接实现,@Transactional 的失效场景(自调用不走代理、方法非 public、异常被吞、传播行为与多数据源)比原理更常被追问。ThreadLocal 底层是每个线程一份 ThreadLocalMap,key 是弱引用、value 是强引用,所以不 remove 会随线程存活造成泄漏。引用类型四级(强、软、弱、虚)要能区分回收时机。单例模式用 volatile 是为了禁止指令重排,保证「分配内存—初始化—赋值引用」的顺序不被破坏;「锁类不锁对象」对应类锁(Class 对象上的锁)与实例锁的区别,静态方法同步就是类锁。

  8. RAG 知识库、Milvus 选型与 ES 深翻页:答「为什么这么选」而不是「选了什么」:知识库这组问题(内容形态、图文混合怎么存和还原、怎么保鲜)答的是工程完整性——图片通常存对象存储、库里只存引用和 OCR 或图注文本,更新靠增量索引加版本号,保鲜靠数据源变更事件或定时同步加缓存失效。向量库选型要给的维度是:数据规模与召回性能、过滤检索与元数据能力、索引类型与内存占用、水平扩展与运维成本、与现有基建的契合度、以及社区与商业支持。Milvus 的常见理由是大规模下的分布式架构与索引种类丰富,代价是运维组件多。ES 深翻页的瓶颈是每个分片都要取出 from+size 条再全局排序,页越深内存与网络开销越大,解法是 search_after(游标)或 scroll(离线导出),并说明为什么不能用 from+size 解决。

  9. 「用 AI 检测慢 SQL、设计 skill」是新的高频题型:慢 SQL 检测的标准链路是慢查询日志加 performance_schema、按执行时间与扫描行数筛出候选,再看执行计划(type、key、rows、Extra 里的 Using filesort 与 temporary),优化手段是补合适索引、改写 SQL 避免索引失效(函数包裹列、隐式类型转换、前导通配)、减少回表或大范围排序、以及拆分为分页或异步。让 AI 参与时的关键是别让它直接改线上——把慢 SQL、表结构与执行计划喂给模型,让它给出候选索引与改写方案,再用 explain 与影子库验证,最后人工审核上线。设计 skill 时值得放的内容:判定标准与阈值、可用的工具接口(explain、慢日志查询)、常见反模式清单、验证与回滚步骤。这个答法把「AI 用在哪一环、人管哪一环」讲清楚了,正是面试官想听的。

  10. 高并发与秒杀是收尾常客:回答按四层展开——前置(CDN 静态化、答题或验证码削峰、限流)、库存(Redis 预扣减加 Lua 保证原子、分段库存、防超卖)、下单(MQ 异步削峰、幂等去重、库存与订单的最终一致对账)、兜底(降级开关、熔断、超时与重试策略、监控告警)。面试官常追问「Redis 扣减成功但下单失败怎么办」,答案是补偿任务与预占库存的超时释放,并说明为什么不能用强一致两步提交来扛这个量级。