System Design Flashcards Preview

Software Developer Interview Prep > System Design > Flashcards

Flashcards in System Design Deck (7)
Loading flashcards...

Primary step or Step 1 for System Design Interview - Requirements Clarification?

There is no ONE correct answer. Ask questions and clarify the ambiguities and the scope of problem. So spend enough time defining end goals of system.


Step 2 for system design interview - System interface design?

System interface design.
Define what APIs are expected fromt the system. This will help to ensure if we haven't got any requirements wrong.


Step 3 of system design interview - Back of the envelop estimation or rough estimation of scale?

Back of envelop estimation. Estimate the scale that we will be seeing.
- No of tweets per second
- No of tweet views
- No of timeline generations per second
- Storage requirements (if only text tweet or photos and videos too)
- Network bandwidth usage (this will be useful for deciding how traffic management and load balancing will be done)


Define Step 4 of System Design interview - Define data model?

Defining data model. It will clarify how data will flow among components. Later will be useful for data partitioning. Identify various entities of system and how they will interact with each other.
Which database to use, will NoSQL like Cassandra work? What block storage should be used for photos and videos?


Define Step 5 - High Level Design?

High Level Design. Block diagrams representing core components of system. We should identify enough components that are needed to solve the actual problem end to end.


Define Step 6 - Detailed Design or Low level design?

Dig deeper in some components based on interviewer's feedback. We should be able to present different approaches, with pros and cons, and provide why we chose one approach over other. No single answer, consider tradeoffs and constraints in mind.


Define Step 7 - Identify and resolve bottlenecks

Discuss as many bottlenecks and different approaches to solve them. Is there a single point of failure? Are there enough replicas of data? Are there enough copies of services? Are we monitoring serviecs and getting alerts if performance suffers?