credits - Ajinkya Ghadge - follow him on the Quora
After series of debacles i have reached out to one of the system design interviewer who has shared valuable insights on how to prepare for system design.
Thanks for reaching out! I can totally understand how daunting it can get while preparing for system design interviews. Here are some tips that i can give you to prepare well for design interviews.
- I’d highly recommend going through basic distributed system concepts before starting out. This video does a pretty good job of giving an overview of the important topics like CAP theorem, sharding, replication, horizontal/vertical scaling etc. https://www.youtube.com/watch?v=UzLMhqg3_Wc
- Post this, i would recommend to get well “aware” about the available technologies offered in the market. For example, for queueing of data there are technologies like Amazon SQS. For NOSQL there is MongoDB or DynamoDB. It is not necessary to understand everything about how they work internally but be well versed in case you are thrown questions about it. During the interview you should be able to justify WHY? did you pick one technology over the other. For example, “Why is NoSQL database better than a relational database?”
- Try to go over existing system design blogs available on the internet, few of them which i found helpful are
- https://www.youtube.com/channel/UCn1XnDWhsLS5URXTi5wtFTA - this guy has some good videos on designing systems like uber/ola etc.
- https://github.com/lei-hsia/grokking-system-design - this is a git repo for a paid online course on educative.io called grokking the system design interview. (So its free!)
- Learn to identify patterns across the design problems. You can prepare a single design and apply it to different use cases. For example, If you are well versed with the design for Uber/OLA, you can apply it to other publisher-subscriber based designs like Air Traffic Control, Bike sharing app etc. Here are some common designs across each category.
- Social media
- Design twitter timeline
- Design facebook time
- Design instagram timeline- Text editor
- Design Google docs
- Design codepair.com
- Video streaming
- Design Youtube
- Design netflix
- Design hulu
- Static systems
- Design payment processor
- Design an alarm clock
- Design tinyURL.com
- Design pastebin
Basically if you understand one system from each category, all the others in the same category have only minor tweaks!
- Most of the behavioral tips I have already mentioned in my Quora answers, make sure to follow them.