CheatSheet: System Design For Job Interview

File me Issues or star this repo.
1.1 Reference
Name |
Summary |
YouTube |
YouTube: Intro to Architecture and Systems Design Interviews, YouTube: System Design Interview |
YouTube |
YouTube Channel: Success in Tech, YouTube: Scalability Harvard Web Development |
YouTube |
YouTube: Prepare for Your Google Interview: Systems Design |
Papers |
CheatSheet: Well-Known Papers For IT Industry, Github: papers-we-love |
Github |
Github: donnemartin/system-design-primer, Github: checkcheckzz/system-design-interview |
Github |
Github: puncsky/system-design-and-architecture, Github: yangshun/tech-interview-handbook |
Website |
Website: hiredintech – System Design, Website: blog.gainlo.co |
Website |
Website: interviewing.io, Website: interviewbit.com |
Cheatsheet |
CheatSheet: Leetcode For Code Interview, CheatSheet: Common Code Problems & Follow-ups |
Cheatsheet |
CheatSheet: System Design For Job Interview, CheatSheet: SRE/DevOps/Sysadmin |
Cheatsheet |
CheatSheet: Behavior Questions For Coder Interview, Programming Language Implemenetations CheatSheet |
Cheatsheet |
CheatSheet: Concurrency & Parallel Programming |
Coding |
Code problems for #oodesign |
Individual Tech Blog |
Blog: highscalability, Blog: All Things Distributed – Amazon CTO |
Company Tech Blog |
Website: Facebook Engineering, Website: Google Developers |
Company Tech Blog |
Medium: Netflix Blog, Medium: Airbnb Engineering & Data Science |
Company Tech Blog |
Medium: Instagram Engineering, Medium: Mixpanel |
Company Tech Blog |
Shopify Engineering, Github Engineering |
Company Tech Blog |
Doordash Engineering, Uber Engineering |
Reference |
Link: Facebook Engineering Interview, Link: The System Design Process |
1.2 Design Problems Per Category
1.3 Top 50 Component Design
1.5 Top 30 Product Design
Num |
Name |
|
1 |
Design: TinyURL – A URL Shorterner Service |
|
2 |
Design Twitter News Feed |
|
3 |
Design K/V DB |
|
4 |
Design autocomplete/typeahead |
|
5 |
Design a online contest system like leetcode.com |
|
6 |
Design Google Calendar |
|
7 |
Design a load balancer |
|
8 |
Design: Flight booking service |
|
9 |
Design: Uber Backend |
|
10 |
Design: An Elevator Service |
|
11 |
Design amazon shopping cart |
|
12 |
Design: Google Suggestion Service |
|
13 |
Design a payment processor |
|
14 |
Design google doc |
|
15 |
Design gmail |
|
16 |
Design RSS news reader |
|
17 |
Design a client-server API to build a rich document editor |
|
18 |
Design instagram, a photo sharing app |
|
19 |
Design Yelp, a location-based system |
|
20 |
Design Pastebin.com |
|
21 |
Design amazon book recommendation system |
|
22 |
Design Google PageRank |
|
23 |
Design messaging/notification system |
|
24 |
Design memcache/redis |
|
25 |
Design a voice conference system |
|
26 |
Design an API gateway |
|
27 |
Design slack |
|
28 |
Design a service auto-discovery feature |
|
29 |
Design a secrets management system |
|
30 |
Design Google Adsense fraud detection |
|
31 |
Design The Great Firewall |
|
1.6 Process Of System Design
Num |
Name |
Summary |
1 |
Outline use cases: List major and focus on some |
Show good sense. The questions you asked define your level |
2 |
Estimate scale: Data + Traffic |
Back-of-the-envelope estimation |
3 |
Defining data model |
It helps to clarify how data will flow among different components |
4 |
Abstract design |
Sketch main components, explain workflow, avoid too deep for details |
5 |
Detailed design + discussion with interviewers |
Explain trade-off of your proposal + on-demand deep dive |
6 |
Identify and resolve Bottlenecks |
Key challenges + Trade-Offs. Usuaully no optimal solution(s) |
7 |
Scale your design |
Availability, Resiliency, Scalability, Security, Serviceability, etc |
8 |
Show your relevant experience and learning |
Industry best practice; You experience of scaling/trade-off/resiliency |
1.7 Common Mistakes Of System Design
Num |
Name |
Summary |
1 |
Run into an opinioned solutions before clarification |
Inexperienced; Hard to communicate |
2 |
Not driving the conversation |
Inexperienced |
3 |
General answers without your personal experience/thinking |
|
4 |
Makes interviewers feeling you’re stubborn |
|
1.8 Top 30 Concepts For Feature/System Design
Num |
Name |
Summary |
1 |
Caching |
Stores data so that future requests of data retrieval can be faster |
2 |
Message Queue |
Provides an asynchronous communications protocol, |
3 |
Data Partition & Sharding |
Break up a big data volume into many smaller parts |
4 |
DB Indexing |
Create indexes on multiple columns to speed up table look up |
5 |
DB replication |
Duplicate data to increase service availability |
6 |
CAP: Consistency/Availability/Partition |
A distributed database system can only have 2 of the 3 |
7 |
DB: SQL & NoSQL |
Relational databases and non-relational databases |
8 |
Concurrency & Communication |
|
9 |
Pessimistic And Optimistic Locking |
|
10 |
Consistency Module |
weak consistency, eventual consistency, strong consistency |
11 |
Conflict resolution |
Quorum, vector lock, reconcile on read/write, CRDTs |
12 |
B+ Tree |
|
13 |
Networking: HTTP |
|
14 |
Networking: TCP/UDP |
|
15 |
Pull vs Push model |
|
16 |
Garbage Collection |
|
17 |
Memory Management |
|
18 |
Heartbeats |
|
19 |
Self Protection |
API Rate limit, Circuit breaker, bulkhead, throttling |
20 |
Filesystem |
|
21 |
API: RPC vs gRPC vs REST |
|
22 |
Load balancer |
|
23 |
Scale up vs Scale out |
Vertical scaling and Horizontal scaling |
24 |
API Design |
|
25 |
Session management |
|
26 |
Networking: TCP vs UDP |
|
27 |
Consistency patterns |
Weak consistency, Eventual consistency, Strong consistency |
28 |
Availability patterns |
Fail-over vs Replication |
29 |
CDN – Content Delivery Network |
Edge caching |
30 |
Monitoring |
|
31 |
Security |
|
32 |
Networking: DNS |
|
33 |
Linux signals |
|
1.9 Top 20 Advanced Data Structure & Algorithms
1.10 Explain tools: how XXX supports XXX?
Num |
Name |
Summary |
1 |
How JDK implement hashmap? |
|
2 |
Explain java garbage collection model |
|
3 |
Explain raft/etcd |
|
4 |
How OS supports XXX? |
|
1.11 Cloud Design Principles
Num |
Name |
Summary |
1 |
Fail fast |
|
2 |
Design for failure |
|
3 |
Immutable infrastructure |
|
4 |
Cats vs Cattle |
Avoid snowflake servers |
5 |
Auto healing |
|
6 |
Async programming |
|
7 |
GitOps operational model |
|
8 |
Event-Driven Architectures |
|
1.12 Cloud Design Patterns
1.13 Engineering Of Well-Known Products
1.14 Grow Design Expertise In Daily Work
Num |
Name |
Summary |
1 |
Keep the curiosity |
Thinking about interesting/weird questions helps |
2 |
Deep dive into your daily work |
Unify and normalize problems from daily work |
3 |
Learn the work of your coleagues |
Indirect working experience also help |
4 |
Popular products under the hood |
Once you notice an interesting feature, think about how it’s supported? |
5 |
Read engineering blogs |
Especially for big companies |
6 |
Tools under the hood |
Common tools/frameworks |
7 |
Try tools |
Use cases; Alternatives; Pros and Cons |
8 |
Read papers |
Best practices in papers |
9 |
Try new things |
Gain hands-on experience; evaluate alternatives |
10 |
Datastore & OS |
Learn how databases and operating systems work |
11 |
Language implementation |
Deep dive into one programming language. Java, Python, Golang, etc |