System design interviews play a very important role in any Software development interviews in most of the companies. Not only this, it is very imperative to understand all the concepts behind designing large scale distributed scalable systems. Obviously, there is no replacement to hands on experience but if you wish to learn the basic concepts and understand the different algorithms at play then fret not! I have compiled a list of must do algorithms, techniques and sources that will definitely help you become a better engineer and will ultimately improve your system design skills.
Algorithms required to do before any system design interview:
- Trie algorithm
- Reverse index
- Frugal Streaming
- Geo-hashing
- Leaky bucket, Token bucket and its variation
- Bloom Filters
- Operational transformation
- Quadtree / Rtree
- Loose Counting
- XMPP / Web Sockets uses
- HTTP Long polling
- Consistent Hashing
Some of the good resources available online which can easily help in understanding these concepts more deeply:
- System design primer in Github (Free).
- AWS Documentation(Free).
- Amazon ReInvent videos in youtube(Free).
Rest is continued in the comments.