去哪儿春招 Java 一面凉经

去哪儿 · Java开发 · 一面 · 2026-04

面试题目

项目经历:

  1. 请介绍你的 Agent 项目。
  2. 项目的输入来源是什么?
  3. 简述该 Agent 的工作原理(定义 tools、机器人拦截、大模型意图识别、语义检索)。
  4. 该项目如何进行具体部署与业务接入?
  5. 系统是否需要主动 fetch 业务代码?
  6. 除了 excel 导出告警外,还有其他的根因分析案例吗?(提及业务耗时 30s 与 ForkJoinPool 的排查)
  7. 告警内容是否可以通过日志查询?
  8. 查询数据库耗时 30s 的问题真的是由 ForkJoinPool 导致的吗?最后如何解决的?

八股文:

  1. Java 中 List 有哪些常用的实现类?
  2. 两个线程同时向 List 中添加 100 万次数据,会出现什么问题?
  3. 核心线程数 4,最大线程数 8 的线程池适用于什么场景?为什么?
  4. 当有 4 个核心线程、队列长度 100,第 105 个任务到来时会发生什么?

参考解析

  1. List 并发问题:ArrayList 是非线程安全的,多线程调用 add() 会发生数组越界异常或数据覆盖(因 size++ 操作非原子),应使用 CopyOnWriteArrayListCollections.synchronizedList
  2. 线程池场景分析:该配置适用于 IO 密集型场景(如数据库操作、网络请求)。因为 IO 密集型任务 CPU 等待时间较长,增加线程数可以提高 CPU 利用率;而 CPU 密集型应尽量减少线程切换。
  3. 线程池任务拒绝策略:核心线程 4 个满载,队列 100 个满载,当第 105 个任务到来时:前 4 个在执行,100 个在队列,第 105 个任务会触发创建非核心线程(直到达到最大线程 8),若超出 8 则触发 RejectedExecutionHandler 拒绝策略。