Implement basic pagination for a list
Company: Coinbase
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
You are given:
- A zero-indexed array of items `items` (you can assume it fits in memory).
- An integer `pageSize > 0`.
Design and implement a pagination helper that supports the following operations:
1. Initialize the paginator with the array and `pageSize`.
2. Given a **page number** `pageIndex` (0-based), return the subarray of items that belongs to that page.
- Page 0 contains items with indices `[0, pageSize - 1]` (if they exist),
- Page 1 contains `[pageSize, 2 * pageSize - 1]`, and so on.
3. If `pageIndex` is out of range (no items on that page), return an empty list.
Assume:
- `0 <= pageIndex`
- `1 <= pageSize <= 10^5`
- `0 <= len(items) <= 10^6`
Define the interface and implement the core method(s) for pagination. Focus on clean indexing and handling boundary cases correctly.
Quick Answer: This question evaluates a candidate's competence in array indexing, boundary-condition handling, and simple pagination logic, focusing on correct subarray extraction and off-by-one considerations within given size constraints.
Return the items for a zero-based page index, or an empty list if out of range.
Constraints
- Inputs are Python literals matching the function signature.
- Return a deterministic exact-match value.
Examples
Input: ([1,2,3,4,5], 2, 0)
Expected Output: [1, 2]
Explanation: First page.
Input: ([1,2,3,4,5], 2, 2)
Expected Output: [5]
Explanation: Partial final page.
Hints
- Use deterministic tie-breaking for prompts with multiple valid outputs.
- For design-style APIs, simulate operations with explicit inputs.