System Design (Draft Post)
- Classical Design Patterns
- Consistency
- Basics of Distributed Systems
- How databases work
- Message queueing
- Performance
- Applicability
- Scalability
- Reliability
How do you design a messaging service?
How do you design a database system?
How do you design a scalable hashtagging system?
Spend 30-40 minutes on each problem.
Spend a certain time on each aspect for example to cover the problem holistically:
- Data modeling
- API design
- Error handling
Look at real life implementations to see examples.
Example:
Design a system for photo storage service
There are different types of system design types.
- System Design is classical distributed system problem
- Product design is like an API design problem for say
- Special design for specific domain problem like Compiler design etc.
Problem Examples and Discussions
- URL Shortening like TinyURL
- Design a search engine
- Great discussion on StackPOverflow
- Design a key-value store
- World-wide video distribution system
- Build Facebook chat
- Design a shared drive
- Design a recommendation system
Resources
- A complication of terminologies and concepts for System Design is here https://www.freecodecamp.org/news/systems-design-for-interviews/amp/
- Another interesting piece here discusses capacity planning for the web applications
- A good list of problems on GeeksForGeeks
- Snippets of ideas and a list of example questions can be found here