Implement a mock client for testing.
Do not rely on its behavior in your implementation.
class MockClient implements Client {
// These numbers are for testing only and may be changed by the interviewer.
// Do not use them in your solution.
private static final int MAX_RESULTS = 103;
private static final int PAGE_SIZE = 10;
public Page fetchPage(int page) throws Exception {List<Integer> results = new ArrayList<Integer>();
if (Math.random() < 0.3) {throw new Exception("Timeout");
}
if (page * PAGE_SIZE > MAX_RESULTS) {return new Page(results, -1);
}
results = TestHelpers.makeRange(page * PAGE_SIZE, Math.min(MAX_RESULTS, (page + 1) * PAGE_SIZE));
return new Page(results, page + 1);
}
}
这道题本质上是一个分页接口模拟题,重点不在业务算法,而在于按照接口约定返回每一页的数据,并正确处理随机超时和结束条件。实现时通常需要维护当前页码、每页固定的大小,以及当没有更多结果时返回空列表和终止标记。面试中要注意不要依赖题目里给出的测试常量,因为它们可能变化;更稳妥的做法是只遵循分页协议本身,保证返回结构一致、边界处理正确。
正文完