Design timestamped key-value map
Company: Character.AI
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
Overview: This question evaluates the ability to design a timestamped key-value data structure, testing competencies in time-based indexing, ordered retrieval, and data structure selection for efficient timestamp queries.
Constraints
- 1 <= len(operations) <= 200000
- Each operation is either ["insert", key:str, value:str, timestamp:int] or ["get", key:str, timestamp:int]
- All insert operations appear in nondecreasing timestamp order (timestamps may be equal)
- 0 <= timestamp <= 1e9
- 1 <= len(key), len(value) <= 50
- The function returns results for get operations only; insert operations produce no direct output
Hints
- Map each key to a sorted list of timestamps and a parallel list of values.
- Because inserts are in nondecreasing timestamp order, you can append to each key's lists to keep them sorted.
- Use binary search (bisect_left) on the timestamps list to find the first index with timestamp >= query.
- If inserts were out of order, maintain each key's timestamps in sorted order via bisect.insort or use a balanced BST.