2dbi
Home/Experiences/Uber/Uber · Mid — 6 rounds, DSA + LLD + HLD + behavioural, rejected at HLD (Bar Raiser)
Uber·Software Engineer II · mid
Rejected

Uber · Mid — 6 rounds, DSA + LLD + HLD + behavioural, rejected at HLD (Bar Raiser)

May 20260by Anonymous

I recently went through the Uber interview process and sadly was not able to secure an offer. Sharing my experience so it can help others prepare, as others' posts helped me too.

Round 1 — Online Assessment

Two DSA questions (I don't remember them exactly):

  • One was Graph-based, solvable efficiently with DSU (Disjoint Set Union)
  • One was String operations related

Difficulty: Medium–Hard

Round 2 — Business Phone Screen (BPS)

One Graph question (Medium–Hard):

Given a list of allowed itineraries, identify the itinerary with the most visited unique cities.

Input: Chennai→Hyderabad, Hyderabad→Bangalore, Bangalore→Delhi, Hyderabad→Delhi
Expected Output: Chennai→Hyderabad→Bangalore→Delhi

Key Idea: Naïve DFS from every node is O(N²). Since there are overlapping subproblems, I used memoization — storing the longest path length for each node to avoid revisiting. The interviewer was happy with this approach. We discussed space/time complexity and edge-case test cases. I missed the cycle-in-itinerary case, but the interviewer wasn't expecting it either.

Feedback: Strong Hire

Round 3 — Coding Round

Problem: Earliest Full Connectivity Timestamp

Given a chronological log of Uber Share rides, return the earliest timestamp when all riders become connected through the shared-ride network.

I started with a BFS approach (quadratic complexity), then switched to DSU, which I implemented from scratch including input parsing. The original timestamps were 12 digits long.

We discussed space/time complexity, then a follow-up was introduced:

Follow-up: Riders can also block each other — blocking events can break connections. How would you update the solution?

I gave a DSU-based approach but missed a few cases, and due to time pressure I fell back to explaining a BFS approach.

Feedback: Hire

Round 4 — Low-Level Design (LLD)

Problem: Design a key-value store supporting the following in O(1):

  • V get(K)
  • (K, V) getRandom()
  • void put(K, V)
  • V delete(K)

This is a standard problem. I coded it from scratch in C++, covered all edge cases, and ran through multiple test cases. The interviewer then asked me to implement it as a template class (generic types instead of int–int), which I completed and verified.

Feedback: Strong Hire

Round 5 — High-Level Design (HLD) — Bar Raiser Round

Note: I had to send a follow-up email after 10 days of silence before this round was scheduled.

HLD is not my strongest area — I come from a Security & Networking background coding in C++, so I prepared specifically for this.

Problem: Design a Stock Broker Notification Framework

An external source sends events in the form { Stock Symbol, Price, Closing Price }. Users subscribe to stocks. If any stock price jumps or drops ≥5% from closing price, send push notifications to all subscribed users.

My design:

  • Kafka for event ingestion
  • PostgreSQL for storing user–stock subscriptions
  • A flaw: I was hitting the DB on every event — after 1–2 hints from the interviewer, I corrected this
  • Final design: a threshold-calculating service filters relevant events and passes them to a separate DB-lookup service that fetches subscribed users per stock

We discussed:

  • DB choice: Postgres can handle ~50K QPS via sharding by stock symbol, but the system can be write-heavy; Cassandra is an alternative (with consistency trade-offs)
  • At-most-once notifications, Dead Letter Queue, Idempotency keys

I needed a few hints and missed some cases, so I was unsure about my performance going in.

Feedback: No Hire ← this was the deciding round

Round 6 — Hiring Manager (HM) / Behavioural Round

  • Most interesting or crucial project I've worked on
  • Cross-team collaboration experience
  • How I handled feedback from seniors
  • General experience-based questions

The interviewer avoided standard questions — they seemed tired of rehearsed answers.

Feedback: Hire

Verdict: Rejected

I received Strong Hire or Hire in every round except HLD, which was a No Hire. The recruiter said I can re-appear after 6 months.

The full process took ~2 months due to holidays and scheduling issues.


Preparation Tips

  • Strong grip on DSA — especially Graph and DP
  • Practice real-world system design questions
  • Be structured in both LLD and HLD
  • Don't skip behavioural prep — many candidates are rejected at the HM round
  • Focus on communication and trade-offs
  • Resources I used: HelloInterview (YouTube) + TechGranth for HLD; CoderArmy + TechGranth for LLD

Didn't make it this time, but every interview adds experience, clarity, and resilience. Taking the learnings forward and continuing the grind.

Shared Jun 2026
LeadersAccount