真实面经题目 · 原创解析

热搜应展示 10 条但页面只展示 9 条时,测试开发应如何定位前端、接口、排序和过滤链路问题?

这题考端到端定位能力。答案不能停留在“前端或后端都有可能”,而要说明如何固定复现条件,逐层核对接口响应、过滤去重、排序补位、客户端解析、渲染和日志,最终把缺失的一条定位到具体链路和可验证证据。

出现于:字节跳动 · 测开

60 秒回答模板

我会先把问题变成可复现的同一组样本:固定时间、地域、版本、登录状态、实验分组、请求参数和缓存状态,抓到一次页面只展示 9 条的请求。然后从链路上逐层对账:数据源或推荐服务是否生成 10 条,接口响应是否真的返回 10 个有效 item,服务端过滤、去重、内容安全或地域规则是否删掉一条且没有补位,客户端是否解析丢字段,前端是否因为图片、标题、链接、rank 或样式异常把某个 item 隐藏,虚拟列表或分页是否有 off-by-one。每层都要有断言:itemId 集合、rank、count、total、过滤原因、渲染节点数、曝光日志和错误日志。最后用最小复现数据和自动化回归固定问题,例如构造重复 item、空标题、无效图片、缺 rank、返回 10 但过滤 1 的场景,验证列表要么补足 10 条,要么展示明确降级策略。

考点 同一请求对账
难度 真实面经题
回答目标 讲清设计、取舍和边界

深入解析

01

先固定复现上下文

热搜列表会受时间、缓存、地域、登录态、版本、实验分组和刷新时机影响。排查前要记录请求参数、响应 trace、客户端版本、用户上下文和缓存命中状态,避免拿不同请求之间的 10 条和 9 条做无效对比。

02

从接口契约开始对账

抓包或查看测试环境日志,确认接口响应里 items 数量、total/count 字段、每个 itemId、rank 和必要字段。若接口只返回 9 条,问题在上游生成、服务端过滤或补位策略;若接口返回 10 条,问题更可能在客户端解析或渲染。

03

检查过滤、去重和补位

热搜列表可能经过内容过滤、地域限制、低质量过滤、重复标题去重、过期内容剔除和兜底补位。测试要验证过滤原因可追踪,过滤后是否需要补足 10 条,重复或无效 item 是否会导致结果少一条。

04

检查客户端解析和渲染

接口返回 10 条时,要比较客户端数据模型和最终渲染节点。字段类型不兼容、空标题、缺图片、跳转链接为空、rank 为 0、样式高度为 0、key 重复、虚拟列表窗口计算错误,都可能让一个 item 被丢弃或不可见。

05

观测点要能串起来

每个阶段都应记录同一批 itemId:服务端候选集、接口返回集、客户端解析集、渲染集和曝光集。若某个 id 从某一层开始消失,就能定位责任链路。没有 item 级 trace 时,至少要补充 count、过滤原因和客户端错误日志。

06

用回归用例封住问题

定位后要补充自动化用例,例如接口返回 9 条、返回 10 条但含重复、含空字段、含无效图片、过滤 1 条后是否补位、快速刷新是否错用旧缓存。回归标准是数量、顺序、曝光和降级策略都符合契约。

易错点

  • 只回答前端或后端都有可能,没有给出逐层定位路径。
  • 不固定时间、用户状态和缓存上下文,拿不同请求结果做对比。
  • 只看接口 count,不核对具体 itemId、rank、过滤原因和渲染节点。
  • 忽略过滤后补位规则,导致服务端返回不足时无法判断是否符合契约。
  • 忽略虚拟列表、key 重复、字段异常和样式隐藏等前端丢项原因。
  • 没有补充回归用例,问题修复后仍可能在重复、空字段和弱网刷新下复现。

面试官追问

如果接口已经返回 10 条,为什么页面还会只有 9 条?

可能是客户端解析丢弃异常字段、列表 key 重复导致节点复用错误、虚拟列表窗口计算少渲染一项、某个卡片因样式或资源错误高度为 0,或者曝光统计口径只记录了 9 条。

如果服务端过滤后只有 9 条,应该算 bug 吗?

要看产品契约。如果页面承诺固定展示 10 条,过滤后应补位或展示明确降级;如果契约允许不足 10 条,前端和埋点也要按不足场景正确处理,不能默默造成布局或统计异常。

为什么要关注 itemId 而不是只看数量?

数量只能说明少了一条,itemId 能定位是哪一条在哪个阶段消失,也能发现去重误杀、缓存混用和排序错位。

怎么设计回归用例防止再次出现?

构造固定响应:正常 10 条、重复 1 条、空字段 1 条、过滤 1 条、图片失败、快速刷新切换缓存。分别断言最终展示数量、顺序、错误降级和曝光日志。

热搜刷新时出现偶发 9 条怎么排查?

重点看缓存版本、并发请求返回顺序、增量更新和前端状态合并。可以给每次响应加 requestId 或版本号,确认旧响应不会覆盖新列表。