得物Java开发一面面经

得物 · Java开发工程师 · 2026-07

《面试题目》

  1. Apache Tika 的底层原理,为什么可以实现多源异构文件的读取?
  2. Tomcat 最大工作线程数一般设置为多少?为什么要这样设置?
  3. 线程池的核心参数如何设置?队列该如何选型?
  4. 包装类转 int 时会出现什么问题?
  5. RAG 项目中,专业术语映射表无法覆盖生僻词时怎么办?
  6. 大模型上下文该如何设计?
  7. 上下文压缩过度导致模型出现幻觉,该如何解决?
  8. 如果专业术语连 AI 也无法理解,应该怎么处理?

《参考解析》

  1. Tomcat 最大工作线程数:默认 200,实际要结合 CPU 核数、单次请求平均处理时间和期望 QPS 来估算(线程数 ≈ QPS × 平均响应时间),并结合压测结果微调,避免线程过多导致上下文切换开销、或线程过少导致请求排队超时。
  2. 包装类转 int 的坑:如果包装类对象为 null,自动拆箱时会抛 NullPointerException;此外 Integer 缓存池(-128~127)范围外的对象用 == 比较会出现”看似相等实际不等”的问题,需要用 equals 或提前判空。
  3. RAG 专业术语映射表覆盖不全:可以引入同义词/近义词扩展(基于向量相似度做术语归一化),或在检索阶段用大模型做查询改写(Query Rewriting)把生僻说法归一到标准术语再走向量检索;长期方案是把未命中的术语记录下来,人工/半自动补充词典。
  4. 上下文压缩导致幻觉:本质是关键信息在摘要压缩中丢失。可以采用分层记忆(原文分片保留 + 摘要仅做索引)、对关键实体(人名、编号、金额等)做结构化抽取单独保留,避免完全依赖自然语言摘要,在压缩比和信息保真度之间找平衡。