Assessment tips
- Confirm the current Urban Company pattern from the drive mail before practising old papers
- Finish one problem or section fully before starting the next
- Revise the fundamentals listed in the round table on this page
How Urban Company fresher and off-campus SDE interviews actually run - loops differ by year. Campus reports emphasise a hard OA plus two LLD interviews and sometimes a VP-level managerial round; 2025 off-campus referrals often skip the big OA for live DSA + entity-modelling LLD + HR. Synthesized from public write-ups into round tables and outcome notes - treat this as a prep map, not a script.
Eligibility (candidate-reported): 7.0+ CGPA / 70% through 10th, 12th, and graduation; CS/IT; no active backlogs.
Fresher package ballpark (candidate-reported): ₹18–25 LPA. Confirm on your offer letter. Work location is commonly Gurugram.
| Track | Typical stages | What they test |
|---|---|---|
| Campus SDE-1 (2021 write-up) | 1.5 hr OA + 3 × 1 hr interviews | 3 hard problems; LFU task manager; driverless cab LLD; VP DSA + resume |
| Campus SDE (public write-up) | OA + live DSA + LLD + tech HR | DP-heavy OA; Uber Carpool LLD; genuine motivation |
| Off-campus 2025 | Referral screen + 3 rounds | Merge intervals + topo sort DSA; BookMyShow LLD; culture HR |
| Off-campus 2024 | 4 rounds | DSA; e-commerce LLD; caching HM; production Q&A |
Confirm your drive mail - Urban Company merges or skips stages by team.
These are rewritten from public candidate write-ups, not invented composites. Details differ by campus and year.
Source: Urban Company (formerly UrbanClap) Interview Experience for SDE 1 (On-Campus) - GeeksforGeeks
The drive opened with a pre-placement talk by the SVP of Engineering and the VP of Product, then one coding test and three hour-long interviews.
Takeaways
Source: Urban Company Interview Experience for SDE (On-Campus) - GeeksforGeeks
Takeaways
Common thread: Urban Company weights low-level / OOP design more heavily than most fresher loops - two of the four rounds in both accounts are design, and the prompts are consistently marketplace-shaped (cab booking, carpooling, task scheduling). Practising class-diagram-level design out loud matters at least as much as DSA volume here, and DP shows up repeatedly on the coding side.
Source: Urban Company SDE-1 Interview Experience Off-Campus - 2025
Referral after resume screen; HR phone screen on internships, location, and expected CTC.
Outcome: Strong hire on DSA and HR; lean hire on LLD (candidate still progressed).
Takeaway: Off-campus loops may replace the triple-problem OA with a focused live DSA round but keep entity-modelling LLD as the differentiator.
Source: Urban Company SDE-1 Interview Experience - Atul Kumar
Four rounds after LinkedIn outreach.
Outcome: Rejected despite excellent rounds 1–2; feedback cited gaps on caching and production ops.
Takeaway: LLD alone does not carry if later rounds expose missing production fundamentals - study cache-aside, idempotency, and basic reliability patterns.
Source: Urban Company SDE-1 Backend Interview Experience - Hrithik Roushan
Outcome: Rejected (reason not shared publicly).
Takeaway: LLD prompts extend beyond ride-sharing - inventory + booking + payment systems appear frequently; practise coding core methods, not only class lists.
After technical rounds, Urban Company usually closes with a short HR / hiring-manager conversation: motivation, location, notice period, and a couple of behavioural stories. Prepare those answers on the dedicated page rather than cramming them into this hub.
Use these as frames, not scripts - interviewers probe follow-ups.
Q. How do you design an LRU cache with O(1) get and put?
A. Combine a hash map with a doubly linked list. The hash map maps key to the list node holding that key’s value, giving O(1) lookup; the doubly linked list keeps nodes in recency order with the most recently used at the head. On get, look the node up and unlink-then-reinsert it at the head. On put, insert at the head, and if size exceeds capacity, remove the tail node and delete its key from the map. Both operations are O(1) because a doubly linked list lets you unlink a known node in constant time without scanning. Java’s LinkedHashMap with accessOrder = true implements exactly this and you can override removeEldestEntry.
Q. How would you design a task manager that evicts the least-frequently-used task?
A. LFU needs a count per key plus a way to find the minimum count in O(1). Keep three structures: a map from key to value and frequency, a map from frequency to a doubly linked list (or LinkedHashSet) of keys at that frequency, and an integer minFreq. On access, remove the key from its current frequency bucket, increment its count, and append it to the next bucket; if the old bucket was minFreq and is now empty, increment minFreq. On eviction, drop the oldest key in the minFreq bucket, which resolves frequency ties by recency. All operations are O(1). The tie-breaking rule is the part interviewers actually probe, so state it explicitly.
Q. How do you match a customer to a nearby service professional efficiently?
A. A naive scan computing distance to every professional is O(n) per request and does not scale. Instead index professionals by a spatial key - geohash, S2 cell, or Uber’s H3 hexagons - so a lookup becomes a hash lookup on the customer’s cell plus its ring of neighbours, narrowing to a small candidate set. Then rank that candidate set by a score combining travel time, rating, skill match, and current load, and lock the chosen professional with an atomic compare-and-set so two bookings cannot grab the same slot. Keep availability in an in-memory store like Redis with a TTL so stale professionals fall out automatically.
Q. How would you model booking state transitions in an object-oriented design?
A. Model Booking with an explicit status enum - PENDING, CONFIRMED, IN_PROGRESS, COMPLETED, CANCELLED - and never let external code set the field directly. Instead expose intent methods such as confirm(), start(), and cancel() that validate the current state before transitioning, throwing on an illegal move like completing a cancelled booking. This is the State pattern: each transition is defined in one place, so adding RESCHEDULED later touches one table of allowed edges rather than scattered if-statements. Persist transitions as an append-only event log so you can audit why a booking ended up where it did, and enforce the transition in the database with a conditional update so concurrent cancel and confirm requests cannot both win.
Q. What is the difference between composition and inheritance in a design round?
A. Inheritance expresses an is-a relationship and binds the subclass to the parent’s implementation at compile time, so a change to the parent ripples into every subclass - the fragile base class problem. Composition expresses has-a: the class holds a reference to a collaborator behind an interface and delegates to it, which can be swapped at runtime. For a marketplace design, a PricingStrategy or MatchingStrategy injected into a booking service is composition, and it lets you vary pricing per city without a subclass explosion. The usual guidance is to prefer composition and reserve inheritance for genuine substitutable subtypes that satisfy the Liskov Substitution Principle.
Assessment tips
Interview tips
HR tips
These links are research inputs we used to map campus vs off-campus LLD-heavy loops - not copied page mirrors. We reorganized reports into process tables, outcome notes, and prep takeaways for Urban Company.