Intro/interviews Flashcards
1
Q
What is system design?
A
System design is the process of designing components and its integration, APIs and data models into a large scale system that meets a specified set of functional and non-functional requirements.
2
Q
What are the three main domains of system design
A
- Computer networking
- Parallel computing
- Distributed systems
3
Q
How many building blocks for system design are there?
A
16
4
Q
How should you cover a system design interview?
A
- Ask refining questions to understand direct and indirect requirements
- Scope to be able to cover in 30-40mins, including data (size/rate/consistency/privacy) and discuss components
- Discuss all the trade offs in the system and engage the interviewer
5
Q
Why do we not design systems capable of handling more work?
A
Cost, we want to efficiently utilize resources
6
Q
What are the system designers responsibility?
A
- Provide fault tolerance (ability to operate when 1+ components fail) at design level as almost all modern systems use off-the-shelf components.
- Use mature SW principals: 1/ robustness (maintain ops during crisis), 2/ scalability 3/ availability 4/ performance 5/ extensibility 6/ resilience (return to normal)
7
Q
How to learn system design?
A
- Learn how popular apps work
- Understand and ask why a component was used vs another
- Build serious projects
- Get familiar with processes and details
Less about mechanics and more about trade offs