Top 10 Tips for LLD Interviews
Introduction
You have spent weeks — maybe months — learning OOP, SOLID, design patterns, UML, concurrency, and domain modeling. You can draw class diagrams in your sleep and recite the Strategy Pattern's participants from memory. But when you sit down in a 45-minute LLD interview, all that knowledge needs to come together under time pressure, with an interviewer watching your every design decision.
Here is the reality: most candidates who fail LLD interviews do not fail because of lack of knowledge. They fail because of lack of process. They jump into coding before clarifying requirements. They design monolithic god-classes because they did not stop to think about separation of concerns. They spend 30 minutes on class structure and have no time left for the interesting behavioral logic.
This tutorial distills ten concrete, actionable tips that separate candidates who pass from those who do not. These are not vague platitudes like "practice more" — each tip addresses a specific failure mode we have seen in hundreds of interviews, with a concrete strategy to avoid it.
Think of this as the pre-flight checklist a pilot runs before takeoff. The pilot knows how to fly — but the checklist ensures nothing critical is forgotten under pressure.
Tip 1: Clarify Before You Design — Ask at Least 5 Questions
The single most common mistake in LLD interviews is starting to design before understanding the problem. Interviewers deliberately leave requirements vague to test whether you ask follow-up questions or just assume.
What to ask (with examples for a Parking Lot problem):
- Scope boundaries: "Should I handle payment processing, or focus on spot allocation and vehicle tracking?"
- Scale: "How many floors? How many spots per floor? Do we need to optimize for space?"
- Types/categories: "What vehicle types — car, bike, truck? Different spot sizes for each?"
- Edge cases: "What happens when the lot is full? Do we support reservations?"
- Concurrency: "Should I design for thread safety — multiple entry/exit gates operating simultaneously?"
Why this matters: Clarifying requirements does three things. First, it narrows the scope so you design what the interviewer actually wants (not an imaginary superset). Second, it shows business awareness — you think about the problem before reaching for patterns. Third, it buys you 3-5 minutes to mentally organize your approach.
The rule of thumb: Ask at least 5 questions before writing anything. If you cannot think of 5 questions, you have not thought about the problem deeply enough. Refer back to S16 (The LLD Interview Framework) — Step 1 covers requirement clarification in detail.
Tip 2: Start with Core Objects, Not Code
After clarifying requirements, your next instinct might be to open an editor and start writing classes. Resist that urge.
Instead, identify your core domain objects first. Use the noun/verb extraction technique from S8 (Domain Modeling):
- List the nouns from the requirements — these become your candidate classes (ParkingLot, Floor, Spot, Vehicle, Ticket, Gate)
- List the verbs — these become your candidate methods (park, unpark, findSpot, calculateFee)
- Draw relationships — which objects own, reference, or depend on others?
Spend 2-3 minutes on this mental exercise (or sketching on a whiteboard). This gives you a roadmap before you start coding. Without it, you end up with scattered classes that do not connect logically, and you waste time restructuring mid-interview.
A practical test: Before writing any code, can you say out loud: "The system has these 5-8 core objects, and they relate like this"? If you can, you are ready to design. If you fumble, spend another minute thinking.
Tip 3: Apply Design Patterns Deliberately, Not Everywhere
Interviewers want to see that you know design patterns. But they also want to see that you know when to use them — and more importantly, when not to use them.
The anti-pattern: A candidate applies Singleton to a Parking Lot class ("there is only one lot"), Factory for vehicle creation, Observer for every state change, Strategy for every decision, and Decorator for every modification. The result is an over-engineered design that is harder to understand than a straightforward implementation.
The right approach:
- Identify the one or two patterns that genuinely solve a design tension in the problem. For a Parking Lot: Strategy for pricing, possibly Factory for vehicle/spot types.
- Justify each pattern out loud: "I am using Strategy for the pricing algorithm because the interviewer mentioned different pricing models — hourly, daily, and membership. Strategy lets us swap pricing without modifying the ParkingLot class. This follows the Open/Closed Principle."
- Skip patterns that do not add value. The interviewer will not be impressed by forced patterns — they will be impressed by a clean design that uses 1-2 patterns precisely where they solve a real problem.
The litmus test: For every pattern you apply, ask yourself: "If I removed this pattern and used a simpler approach, would the design actually be worse?" If the answer is no, remove the pattern.
Tip 4: Use SOLID as Your Design Compass, Not a Checklist
SOLID principles (S6) are the foundation of good LLD — but in an interview, you should use them as a compass for design decisions, not mechanically recite them.
How to weave SOLID into your interview naturally:
-
SRP: When building a class, ask: "Does this class have more than one reason to change?" If your
ParkingLotclass handles spot management, fee calculation, AND ticket generation — split it. Say out loud: "I am separating fee calculation into aPricingStrategybecause spot management and pricing are different responsibilities." -
OCP: When the interviewer asks "What if we add a new vehicle type?" — your design should handle it without modifying existing code. Polymorphism and Strategy make this possible.
-
LSP: When using inheritance, verify the substitution holds. A
HandicappedSpot extends ParkingSpotmust support all operations of a regular spot. -
ISP: If you define interfaces, keep them focused. A
Searchableinterface for reading and aBookableinterface for writing — not one fatParkingOperationsinterface. -
DIP: High-level orchestration (
ParkingService) depends on abstractions (PricingStrategy,SpotRepository), not on concrete MySQL or file-system classes.
The key insight: Do not say "Now I will apply SRP." Instead, let SOLID naturally guide your decisions and articulate why you are making each structural choice.
Tip 5: Manage Your Time — The 45-Minute Breakdown
Time management is the silent killer of LLD interviews. Most candidates spend too long on class structure and run out of time before implementing the interesting behavior.
Recommended time allocation for a 45-minute interview:
| Phase | Time | What to Do |
|---|---|---|
| Requirements & Scope | 5 min | Ask 5+ clarifying questions, agree on scope |
| Core Objects & Relationships | 5 min | Identify 5-8 classes, key relationships, enums |
| Class Diagram / UML | 5 min | Sketch the class structure (whiteboard or verbal) |
| Code — Core Classes | 15 min | Implement the main classes and interfaces |
| Code — Key Behavior | 10 min | Implement 1-2 critical flows (e.g., park/unpark) |
| Review & Extensions | 5 min | Walk through, discuss trade-offs, answer "what if" |
Critical: The code phase (25 minutes total) should prioritize working behavior over completeness. It is far better to have a clean park() flow that works end-to-end than 15 skeleton classes with no behavior.
A common trap: Spending 20 minutes defining every class, enum, and interface perfectly — then having only 10 minutes for actual logic. The interviewer cares more about seeing your park() method handle spot selection, ticket creation, and edge cases than seeing a perfect class hierarchy.
Tip 6: Talk Through Your Thinking — The Interviewer Cannot Read Your Mind
An LLD interview is as much about communication as it is about design. The interviewer is evaluating your thought process, not just the final code.
What to verbalize:
-
Design decisions: "I am making
Spotan abstract class withCompactSpot,LargeSpot, andHandicappedSpotsubtypes because different spot types have different size constraints and pricing rules." -
Trade-offs: "I could use a simple list to track available spots, but a priority queue would give us O(log n) allocation. For a parking lot with hundreds of spots, I will go with the list for simpler code — but I want to acknowledge the alternative."
-
Alternatives considered: "I considered using the Observer pattern to notify the display board when a spot is taken, but since we only have one display board, a direct call is simpler. If the interviewer wants multiple notification targets, I would switch to Observer."
-
What you are skipping and why: "I am not implementing the full payment flow — I will define the
Paymentinterface and a mock implementation to keep focus on the parking logic."
Why this matters: Two candidates can produce identical code, but the one who explains their reasoning will score higher. The interviewer wants to know why you chose composition over inheritance, why you used Strategy instead of switch-case, why you made that class abstract.
Tip 7: Handle Edge Cases Before the Interviewer Asks
Nothing impresses an interviewer more than a candidate who proactively addresses edge cases. It shows production-level thinking.
Common edge cases to consider in any LLD problem:
- Full/empty states: What happens when the parking lot is full? When the cart is empty? When there are no available drivers?
- Concurrent access: What if two gates try to allocate the last spot simultaneously? This is S14 (Concurrency) in action.
- Invalid input: What if
parkVehicle(null)is called? What if the ticket has already been used? - Undo/rollback: What if payment fails after a spot is allocated? How do you roll back?
- Capacity limits: What if a user tries to add more items than the system supports?
How to bring it up naturally:
After implementing the main flow, say: "Let me handle a few edge cases. What happens if findAvailableSpot() returns null because the lot is full? I want to throw a ParkingFullException rather than letting a NullPointerException crash the system."
Address 2-3 edge cases proactively. The interviewer will test you on others — but showing you thought about them first demonstrates maturity.
Tip 8: Use Enums, Not Magic Strings
A small but telling indicator of design quality: how you represent fixed categories.
The wrong way:
spot.type = "COMPACT"
spot.status = "available"
vehicle.type = "car"
Magic strings invite typos ("compact" vs "Compact"), prevent IDE autocompletion, and cannot be validated at compile time.
The right way:
Define enums for every fixed set of values — vehicle types, spot types, ticket statuses, payment methods, order states. This is something we covered in S3 (Enums), and it matters in interviews because it signals that you think about type safety and code correctness.
When you introduce an enum, say: "I am using an enum for VehicleType rather than strings because it gives us compile-time safety and makes the code self-documenting." This is a small design decision, but interviewers notice it.
Tip 9: Show Extensibility — Answer 'What If' Before It Is Asked
LLD interviewers love the "what if" question: "What if we need to support electric vehicle charging spots?" "What if we want to add a loyalty discount?" "What if this needs to work across multiple data centers?"
The best candidates answer these questions before they are asked — by building extensibility into the design from the start.
Concrete strategies:
- Use interfaces at extension points: Define a
PricingStrategyinterface so new pricing models (surge, loyalty, membership) can be added without modifying existing code (OCP from S6). - Use Factory for object creation: If vehicle or spot creation logic might change, encapsulate it in a factory method.
- Keep state transitions explicit: Use the State Pattern (S12) for objects with complex lifecycles (e.g., Order states: CREATED → CONFIRMED → SHIPPED → DELIVERED).
After finishing your design, proactively say: "This design supports extension in three ways: new vehicle types through the Vehicle hierarchy, new pricing models through the PricingStrategy interface, and new notification channels through the Observer pattern. None of these extensions require modifying existing classes."
This demonstrates mastery of OCP and shows the interviewer you think beyond the immediate requirements.
Tip 10: Close Strong — Summarize Trade-Offs and Acknowledge Limitations
The last 3-5 minutes of an interview shape the interviewer's final impression. Do not let them be silence or frantic last-minute coding.
How to close:
-
Walk through the design: "Let me trace the main flow: A vehicle arrives at the gate → the system finds an available spot using the allocation strategy → a ticket is generated → the vehicle parks. On exit, the ticket is scanned, the fee is calculated using the pricing strategy, payment is processed, and the spot is freed."
-
Acknowledge trade-offs: "I chose a HashMap for spot lookup (O(1) by ID) over a sorted structure because most operations are lookups by spot ID, not range queries. If we needed 'find the nearest spot,' I would switch to a spatial index."
-
Name what you would add with more time: "Given more time, I would add: (a) thread safety for multi-gate access using the patterns from S14, (b) a persistence layer behind the repository interfaces, (c) a notification system using Observer for parking alerts."
-
Connect to the bigger picture: "The repository interfaces follow DIP, so this design could connect to any database. The pricing strategy follows OCP, so business rule changes do not require code changes."
This closing shows the interviewer you are self-aware, you understand trade-offs, and you can evaluate your own work critically — all senior-level skills.
Quick Reference

Key Takeaways
- Clarify before you design — ask at least 5 questions to narrow scope and show business thinking
- Identify core objects before writing code — use noun/verb extraction from S8 (Domain Modeling) to build a mental roadmap
- Apply 1-2 patterns precisely rather than forcing patterns everywhere — justify each one with a design tension it resolves
- Use SOLID as a design compass that naturally guides decisions, not as a separate checklist step
- Manage your 45 minutes with the 5-5-5-15-10-5 framework — prioritize working behavior over complete class hierarchies
- Talk through your thinking — verbalize decisions, trade-offs, and alternatives. The interviewer evaluates your process, not just the output
- Handle edge cases proactively — address 2-3 edge cases before the interviewer asks, showing production-level thinking
- Close strong — walk through the design, acknowledge trade-offs, and name what you would add with more time