京东后端Agent开发一面面经
面试题目
- 实习经历提问
- 如果是一个金融系统,不能让agent自己去真实操作(钱放出去就是大问题),你会选择怎么做?
- JAVA常用数据结构包含哪些
- 如果是一个并发量比较高的系统,你在写代码的时候会考虑哪些问题?
- 锁这块你用过吗?ReentrantLock的底层实现了解过吗?在并发场景下用HashMap会有什么问题?
- 分布式这块有什么了解吗?比如一些常用框架?
- Redis你用在什么场景下了?
- 分布式锁用过吗?分布式锁(用setnx命令实现)底层怎么实现的,了解吗?用setnx实现锁会有什么问题吗?
- 如果有一个MySQL需要调优,你会基于哪些角度去考虑?执行计划(explain)里你会看哪些列?
- 如果有一张5000万的表,让你做分页查询,你会怎么查?回表听说过吗?
- 用非聚簇索引查,5000万那张表有ABC三列的组合索引,条件只有AB,要查ID大约在2500万位置的10条数据,这个SQL会怎么执行?逻辑是什么?如果这张表有50个字段,要把50列全查出来,你会从哪些角度去优化?
- AI自带幻觉,它在工程层面能不能落地的问题?
参考解析
- 金融系统Agent操作: 引入人工审核机制(Human-in-the-loop),通过审批流执行;使用“预执行”+“结果校验”模式;权限隔离,限制Agent仅能查询或仅能操作受限资产。
- 并发与HashMap: HashMap非线程安全,高并发下扩容可能导致链表死循环或数据丢失;推荐使用ConcurrentHashMap(分段锁/CAS+synchronized实现)。
- Setnx分布式锁: 问题包括死锁(需加过期时间)、锁过期任务未完成(需续期机制/Redisson WatchDog)、节点宕机导致锁丢失(需Redlock)。
- MySQL分页与优化: 分页优化核心是利用索引覆盖。大数据量跳页可用“延迟关联”即先通过索引查询ID,再回表查完整记录;50字段查询应尽量避免
SELECT *,使用覆盖索引,若无法避免可垂直拆表。 - AI幻觉与落地: 采用RAG(检索增强生成)减少幻觉;在流程中加入Prompt约束与置信度过滤;增加人工兜底与逻辑判定模块以保障业务可靠性。