[USA] Uber SWE II, Backend Interview

uber logo
uber
SWE II, BackendUSAOffer
October 13, 202517 reads

Summary

I successfully interviewed for a SWE II Backend role at Uber for their Grocery organization in the USA and received an offer. The interview process included an Online Assessment, two technical coding rounds, a system design interview for a cart management system, and a behavioral chat with the hiring manager.

Full Experience

My interview journey for the SWE II Backend role at Uber's Grocery organization, which is apparently their second largest vertical by gross revenue after Rideshare, was quite comprehensive. It started with an Online Assessment, which was similar to Codesignal GCA, featuring two easy questions, one tricky and confusing, and one algorithmic.

After passing a pretty chill recruiter phone screen that mostly served as a vibe check and confirmed my interest, I proceeded to the onsite rounds.

The first coding onsite was a 60-minute DSA round. It involved implementing an interface for a 2D MxN array of restaurants, specifically openRestaurant(r, c), countOpenRestaurants(r, c), and hasOpenRestaurant(r, c). The core challenge was countDeliveryZones(), which required finding connected components of open restaurants based on directional adjacency (up, down, left, right). I initially developed a working solution using DFS/BFS, but the interviewer indicated that Uber seems to highly favor Union-Find for such problems and was looking for a more optimal solution. The interviewer was unfortunately uncooperative and didn't offer hints like a coworker would.

The second 60-minute DSA round focused on implementing scheduleMeeting(startTime, endTime) to assign rooms within an office. The implementation itself wasn't too bad, but the follow-ups were quite insightful:

  • What would happen if we had 10,000 concurrent requests to scheduleMeeting? What would be the bottleneck, and how would you solve it?
  • My solution was initially O(M*N) where M is the number of rooms and N is the number of bookings. How could this be improved? A hint was given: what if bookings are sorted? Perhaps use binary search to achieve logarithmic time complexity by smartly checking likely intervals for overlap.

Next was the System Design interview, where I designed a Cart Management System, specifically in the context of a grocery delivery order application.

Finally, I had a great behavioral interview with the Hiring Manager, which was a pleasant conversation and the best part of the interview process. Overall, the recruiter and hiring manager were nice, but some of the technical interviewers were unfortunately not the most collaborative people. Uber also didn't really want to budge on the base salary, even with a competing offer, only offering to bump the sign-on bonus.

Interview Questions (3)

Q1
Restaurant Grid: Count Delivery Zones
Data Structures & AlgorithmsMedium

Given a 2D MxN array where each cell (r, c) represents the number of open restaurants. Implement an interface with the following functions:

  • openRestaurant(r, c): Open a restaurant at location (r, c).
  • countOpenRestaurants(r, c): Number of open restaurants at location (r, c).
  • hasOpenRestaurant(r, c): Are there open restaurants at location (r, c).

The main problem is countDeliveryZones(), where a delivery zone is defined as a clustering of open restaurants connected directionally (up, down, left, right). The task is to count these distinct delivery zones.

Q2
Meeting Room Scheduler with Concurrency & Optimization
Data Structures & AlgorithmsMedium

You have a set of rooms in your office. Implement a function scheduleMeeting(startTime, endTime) which should return an available room for the meeting.

Follow-up 1: What would happen if we had 10,000 concurrent requests to scheduleMeeting? What would be the bottleneck, and how would you solve for the bottleneck?

Follow-up 2: My solution is currently O(M*N) where M = number of rooms and N = number of bookings. Could you improve the time complexity? Hint: what if bookings are sorted? Maybe use binary search to get logarithmic time complexity and smartly check the likely intervals for overlap.

Q3
Design Cart Management System
System DesignHard

Design a Cart Management System, specifically in the context of a grocery delivery order application.

Preparation Tips

Based on my experience, Uber seems to particularly like problems disguised as Union-Find, so knowing how to implement it thoroughly would be to your best interest. Also, for the recruiter phone screen, it's essential to read the job posting and understand the company's mission to sound genuinely interested. For coding rounds, be prepared not just for the initial solution but also for significant follow-ups involving concurrency and time complexity optimizations. System design should cover common e-commerce or delivery-related systems like cart management.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!