Uber backend engineer interviews typically focus on APIs, databases, system design, concurrency, caching, and data structures.
JobScheduler with the following methods:addJob(driverId: int, startTime: int, endTime: int): Adds a job for a driver within specific time bounds.getSchedule(driverId: int) -> List[Tuple[int, int]]: Returns a list of scheduled jobs for a driver.Example 1:JobScheduler scheduler = new JobScheduler();scheduler.addJob(1, 1, 5);scheduler.addJob(1, 6, 10);scheduler.getSchedule(1)[(1, 5), (6, 10)]1 <= driverId <= 10^61 <= startTime < endTime <= 10^9RateLimiter class with the following methods:RateLimiter(limit: int, timeWindow: int): Constructor that initializes a rate limiter allowing limit requests every timeWindow seconds.allowRequest(userId: int) -> bool: Returns true if the request is allowed, or false if the limit is exceeded.Example 1:RateLimiter rateLimiter = new RateLimiter(3, 10);rateLimiter.allowRequest(1) => Output: truerateLimiter.allowRequest(1) => Output: truerateLimiter.allowRequest(1) => Output: truerateLimiter.allowRequest(1) => Output: false1 <= limit <= 1001 <= timeWindow <= 10001 <= userId <= 10^6Sign up for free to access walkthroughs, AI-generated questions, and more.
Get Started Free