In a system design interview, the first step is gathering requirements, focusing on how users will interact with the system. Here's how we approach this:
- Understand user needs: We consider the basic functions users will need, such as applying filters, viewing original images, and deleting images.
- Confirm and prioritize: We check with the interviewer to ensure we've captured all the key requirements and prioritize the most important ones.
- Identify trade-offs: We analyze potential trade-offs, such as image quality versus storage needs, and quantify them whenever possible.
- Set realistic expectations: We avoid aiming for perfection and instead focus on creating a practical design that meets the core requirements.
- Provide concrete examples: We use real-world examples to illustrate our understanding of system design concepts and demonstrate our ability to make informed decisions.
Gaurav Sen has conducted 1000s of system design interviews while working at Uber and building his YouTube channel to 500K+ subscribers. His platform InterviewReady combines video explainers, live Zoom classes, and an automated System Design Judge.