• 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:

  1. Data modeling
  2. API design
  3. 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.

  1. System Design is classical distributed system problem
  2. Product design is like an API design problem for say
  3. Special design for specific domain problem like Compiler design etc.

Problem Examples and Discussions

  1. URL Shortening like TinyURL
  2. Design a search engine
  3. Design a key-value store
  4. World-wide video distribution system
  5. Build Facebook chat
  6. Design a shared drive
  7. Design a recommendation system

Resources

  1. A complication of terminologies and concepts for System Design is here https://www.freecodecamp.org/news/systems-design-for-interviews/amp/
  2. Another interesting piece here discusses capacity planning for the web applications
  3. A good list of problems on GeeksForGeeks
  4. Snippets of ideas and a list of example questions can be found here