- 日期:2026-07-31
- 企业与岗位:字节跳动|大模型测试开发
- 适用层级:中级
内容说明
本篇为社区对用户分享面经的整理汇编,旨在帮助求职者了解面试考察方向。问题部分力求忠实还原原帖问答脉络;「参考答案 / 复盘思路」为整理方结合工程实践原创补充,仅供交流参考,不代表官方标准答案。
原始素材来自公开面经汇编,具体面试细节以末尾原帖为准。
一、原面经涉及的面试问题(8项)
1. 为什么测试覆盖率不能简单达到100%?
参考答案 / 复盘思路: 测试覆盖率只能量化某个测量口径,不能直接代表质量。比如行覆盖率100%仍可能遗漏异常路径、并发竞争、权限边界和错误断言。面试中应先区分需求覆盖、分支覆盖、接口组合覆盖以及风险场景覆盖,然后结合业务重要性决定重点。支付、授权等高风险功能即使代码覆盖率很高,也需要故障注入与负面用例;低风险展示页不必追求穷举。合适的目标是让风险被识别并有证据证明,而不是一味追求单一数字。
2. 大模型接口测试如何判断用例通过?
参考答案 / 复盘思路: 先把大模型接口的“确定性部分”和“语义部分”拆开。协议状态、超时、鉴权、JSON结构、工具参数Schema等可以精确断言;开放式回答则需基于任务定义相关性、事实忠实性、拒答合理性和安全边界等标准。建立人工标注的基准集,必要时采用经过校准的LLM-as-Judge辅助批量评分,并定期抽样复核评分偏差。针对随机性,记录模型与Prompt版本,对关键样本多次采样,关注失败比例和分布而不只比较一句话是否完全相同。上线门禁需要明确阈值和高风险用例一票否决规则。
3. 如何定位一个难以复现的Bug?
参考答案 / 复盘思路: 第一步保存现场:请求ID、Trace、时间窗口、环境、版本、参数、依赖服务返回和用户操作路径;不要在日志不足时凭经验猜原因。然后先按影响范围和是否可复现分类,尝试固定随机种子、网络延迟、并发度或测试数据,让偶发条件变成可控变量。通过上下游调用链和数据库状态寻找异常发生的第一处,而不是最后报错的位置。必要时设计故障注入与压力回放。修复后回放历史失败样本,监测线上同类信号是否下降,并保留回归测试避免问题复现。
4. Kafka发生重复、乱序、积压,应该测试什么?
参考答案 / 复盘思路: 把Kafka问题拆成三组。重复:测试消费者重试、提交offset前崩溃、生产者超时重发,检查幂等消费和重复写入控制。乱序:说明Kafka只保证同分区内的相对顺序,验证同一业务键是否稳定进入相同分区,以及消费者并行处理会否打乱业务顺序。积压:通过限速消费者或突发写入模拟,观察consumer lag、处理延迟、扩容能力与下游压力。最后验证死信队列、告警阈值和恢复后的数据一致性,不能仅以“消息最终被消费”作为成功标准。
5. 如何验证提交接口真正实现幂等?
参考答案 / 复盘思路: 先明确幂等语义:同一业务请求重复提交,不应产生多笔订单或多次扣款,并不意味着每次HTTP响应必须逐字相同。构造相同幂等键的串行重试、并发重试、超时后重试、跨实例重试以及服务中途崩溃等场景。观察数据库唯一约束、业务流水、下游消息和资金变化,证明副作用只发生一次。还要测试同一个幂等键带不同请求体、键过期、失败后重新请求的规则。常见保障是业务唯一键加事务状态机,但仍应确认下游服务本身能处理重复事件。
6. 任务提交和结果查询为什么要设计成两个接口?
参考答案 / 复盘思路: 典型原因是任务耗时可能超过HTTP请求的合理等待窗口,尤其涉及文档解析、大模型推理或异步批处理。提交接口负责校验参数并生成task_id、返回可查询状态;查询接口负责呈现排队、执行、成功和失败等状态及结果,必要时支持回调。测试要覆盖重复提交、非法task_id、结果尚未完成、任务超时、失败重试、过期清理以及权限隔离。要确认结果查询具有最终一致性预期,不能把一时查不到直接判成数据丢失;同时检查客户端轮询对系统造成的额外负载。
7. 多租户文档审校平台如何设计数据库表?
参考答案 / 复盘思路: 可以从租户、用户/角色、文档、审校任务、模型版本、评测记录和审计日志几类实体出发。重要表携带tenant_id并建立适用的复合索引;任务和文档通过外键或业务引用关联,避免把所有记录堆在一张表。多租户风险不是“能不能查到自己的文档”这么简单,还包括跨租户ID枚举、缓存键不带租户、异步队列消费串租以及对象存储链接越权。测试时使用A/B两个租户构建交叉访问矩阵,验证读取、编辑、导出、检索和删除的隔离。数据量大时还要评估分区或独立库策略的成本与治理边界。
8. 算法:最长无重复字符子串。
参考答案 / 复盘思路: 最长无重复字符子串可用滑动窗口:右指针逐个扫描字符,哈希表记录字符最近一次出现的位置;如果字符上次出现位置不小于左边界,就把左边界更新到上次位置加一。每步更新窗口长度的最大值,时间复杂度O(n),额外空间与字符种类数相关。面试时应主动验证空字符串、全部相同、全部不同、重复字符出现在窗口外,以及Unicode字符等边界。常见错误是遇到重复字符直接把左指针退回去,导致窗口错乱。
延伸思考(社区补充)
同一条大模型接口测试用例,在相同提示词下重复执行10次,有8次满足验收要求、2次失败时,测试团队应该如何设定上线门禁?
思考方向: 可讨论按风险分层设定通过阈值、扩大重复样本、测量置信区间,以及对高危Bad Case采取更严格的阻断规则。
