There are generally two types of design interviews
- Deep dive on current project (or a complex project from the past with business impact and you had technical/architectural influence); this is usually referred to as a Project walkthrough and Retrospective
- Provide business impact, the scope of the problem
- Breakdown the architecture components
- Bring out the tough decisions you have taken
- Challenges you have handled
- Operational excellence
- How did you manage the support and feature development?
- What would you do differently if you have a chance to redo the same project?
- Provide a design for an abstract problem, for example
- Design Twitter
- Design Chat application
- Design a web crawler that identifies the prices for products from different e-commerce websites
Practice narration of your project as well as abstract design in the following way:
- Untimed practice: Try an untimed practice with a blank canvas and cover each system component, talk about its significance, and any design decisions. Focus on metrics/monitoring, operational process, internal communication between services, etc.
- Timed practice: Once untimed is good and you were able to capture all the details, you should go for a 30-minute fixed time to walk through the design.
- For an abstract design, you may want to limit the requirements to fit with in the time constraints
- It is very important to time your design narration as you will be able to accommodate in-between questions during the interview. At times after finishing your design narration, the interviewers would dive into scalability, security, design choices or component details and having an extra time towards the end helps in favor of you!
Suggestions for Design interview flow (an example
breakdown for a 60 min round)
- Clarify the scope - 3-5 minutes
- Functional and non-functional requirements
- System design requirements
- Specify assumptions - 2-3 minutes
- Napkin math - 3 min
- Suggestion: Specify 1-2 metrics such as #of users on boarded or # of product sold before launch of this feature vs after the launch of feature etc
- System metrics
- Optimal usage of systems - CPU/Memory/IO Transfer
- Connection pools
- Cache hit ratio (if cache is planned to be used)
- Identify high-level components or services - 3-5 min
- Database design - 3 min
- Relational vs NoSQL
- Metadata & Table structure
- Draw an architecture diagram - keep explaining as you draw - 10 min
- Note: Get to this point by 20 min into the design interview.
- Practice on a whiteboard or online tools
- Identify bottlenecks - 2 min
- Scaling
- Performance
- Flexibility
- Dive into specific component (or ask interviewer to choose which one to deep dive) - 10 min
- Showcase your knowledge on technical aspects like specific technologies or various algorithms. For example, load balancers, API Gateways,
- Refine the architecture (its okay to change some components, but explain before you make changes) - 10 min
- Buffer - 5-10 min
- Questions for interviewer - 3-5 min