Lyft VO 面试真题解析:Mock Client(分页客户端模拟)

18次阅读
没有评论

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);
    }
}

这道题本质上是一个分页接口模拟题,重点不在业务算法,而在于按照接口约定返回每一页的数据,并正确处理随机超时和结束条件。实现时通常需要维护当前页码、每页固定的大小,以及当没有更多结果时返回空列表和终止标记。面试中要注意不要依赖题目里给出的测试常量,因为它们可能变化;更稳妥的做法是只遵循分页协议本身,保证返回结构一致、边界处理正确。

正文完
 0