快手AI应用后端开发岗面经
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 线程池的核心参数如何配置,CPU密集型和IO密集型任务应如何设置线程数?
- 自定义线程池需要注意哪些拒绝策略、线程命名和异常处理问题?
- 为什么不建议直接使用 Executors 创建线程池?
- 如何计算多个区间中互不重叠区间的个数?
- 如何设计满额赠品页面的前后端交互?
- 如何测试 Agent 项目,单元、集成和压力测试分别覆盖什么?
- 消息队列消费失败时如何设计重试、死信和人工介入?
- 如何用 Redis 做消费幂等,key 的过期策略如何设计?
- 如何评测 Agent 效果并让 badcase 回流?
- 高合规场景下如何保证模型不越权?
《参考解析》
- 核心参数包括核心线程数、最大线程数、队列和拒绝策略,应根据任务耗时、CPU核数、IO等待和可接受延迟用压测校准。线程命名便于定位问题,任务异常要通过 Future 或统一执行器记录,不能静默丢失。
- Executors 的无界队列或按需创建线程可能导致队列堆积、线程数失控和 OOM。生产代码应显式指定有界队列、线程工厂和拒绝策略,并对拒绝做可观测处理。
- 区间按右端点升序排序,优先选择最早结束且与已选区间不冲突的区间,这是区间调度的贪心最优解。
- Agent 测试要把工具调用、状态流转和异常分支拆成单元测试;用真实或仿真工具做集成测试;再用固定数据集压测延迟、吞吐和失败率,并保留可复现样本。
- 消费失败应有限次指数退避重试,超过上限转入死信并告警,由人工决定重放或修复。消费端以业务唯一键做幂等,过期时间覆盖最大重试窗口,处理中的状态不能因 key 过期而被误判为可重复执行。
- 用标注集和 badcase 回流持续评测任务成功率、工具参数正确性、越权率和延迟。高合规动作必须经过 schema、权限、资源范围和幂等校验,模型只能提出结构化意图,不能直接改写业务数据。