小红书产品工程师 Agent 一面:线程池与幻觉控制

2 道题 · 更新于 2026-10-28

本场面试题

  1. 异步转存的线程池怎样设计,核心参数怎样设置?
  2. 如何减少大模型生成的幻觉?

面经与参考答法

小红书产品工程师 Agent 一面:线程池与幻觉控制

公司为小红书,原记录标题标注产品工程师、Agent 开发、一面;没有明确面试日期或部门。本页选录异步转存的线程池设计与大模型幻觉控制两组。原算法给出的步长与前一步限制是清晰题面,但本文未选录;缓存与锁、个人实习贡献、自注意力和模型训练等其余问题也未展开。

以下短答与示例均为编辑补充,不代表作者的现场回答、实际技术栈、项目实现或企业标准答案。原记录没有给出线程池运行时;第一组以 JDK 21 的平台线程池作为有边界的教学例子。

(1)异步转存的线程池怎样设计,核心参数怎样设置?

先确定任务是计算、阻塞 I/O 还是混合负载,测量服务时间、到达率和下游容量。以 ThreadPoolExecutor 为例,把核心数、最大数、队列、空闲回收、线程工厂与拒绝策略一起设计;任务被接纳不等于已经完成,无界排队也不能解决持续过载。

在正常运行的简化接纳路径中,先在核心数内创建线程,之后优先入队,队列无法接纳时才尝试扩容到最大数,仍不能接纳就按策略拒绝。无界队列通常让最大线程数难以发挥扩容作用;真实实现还复核并发关闭等状态。JDK 21:ThreadPoolExecutor。

教学例子:转存对象先持久化为带任务 ID 的待办,再用有界线程池执行,并记录成功、失败或结果未知。提交被拒绝时应明确延后或失败,不能先向用户返回“转存完成”;请求超时后也应先查任务状态,避免重复写。监测排队等待、执行耗时、拒绝率、CPU 和下游错误,再按同一负载调整参数。这个方案是编辑示例,不是原项目架构。

(2)如何减少大模型生成的幻觉?

先区分缺少证据、检索漏召回、证据误读与无依据推断,再分别改进数据、检索、提示与结果校验。可验证事实交给可信来源或确定性工具,缺证据时保留未知或拒答;RAG、长上下文和模型自报置信度都不能保证零幻觉。

教学例子:产品资料没有保修期限时,模型不能凭同类产品补一个数字。检索应在用户权限内保留文档版本和原文引用,回答再检查数字、单位与引用是否真的支持结论;未命中就说明信息缺失。格式正确的 JSON 也可能装着编造事实。

改进后在冻结样本上分别检查有答案、无答案、冲突资料、过期信息和诱导输入,人工复核关键事实与拒答,报告错误类型和失败样本。降低一次错误不代表整个任务集已可靠;需要同时观察答案质量、覆盖率、延迟与成本。这些验收步骤是教学展开,并非原帖记录的额外面试追问。

面经是候选人自述,解析为 Agent Journey 整理。更多大厂 AI / Agent 岗面经 · 按目标公司模拟面试