Algorithms you should know before you take system design interviews

I put together a list and explained why they are important. Those algorithms are not only useful for interviews but good to understand for any software engineer. 

One thing to keep in mind is that understanding “how those algorithms are used in real-world systems” is generally more important than the implementation details in a system design interview.

What do the stars mean in the diagram?

It’s very difficult to rank algorithms by importance objectively. I’m open to suggestions and making adjustments. 

Five-star: Very important. Try to understand how it works and why.

Three-star: Important to some extent. You may not need to know the implementation details.

One-star: Advanced. Good to know for senior candidates.

Where to learn more?

Geohash: https://www.pubnub.com/learn/glossary/what-is-geohashing/

Quadtree: https://engblog.yext.com/post/geolocation-caching

Consistent hashing: https://www.toptal.com/big-data/consistent-hashing

Leaky bucket /token bucket: https://www.quora.com/What-is-the-difference-between-token-bucket-and-leaky-bucket-algorithms

Trie: https://en.wikipedia.org/wiki/Trie

Rsync: https://rsync.samba.org/tech_report/

Raft: https://raft.github.io/

Paxos: https://martinfowler.com/articles/patterns-of-distributed-systems/paxos.html

Bloom filter: https://www.linkedin.com/posts/alex-xu-a8131b11_systemdesign-coding-interviewtips-activity-6917494340315463680-O0sG/

Merkle tree: https://en.wikipedia.org/wiki/Merkle_tree

Hyperloglog: https://engineering.fb.com/2018/12/13/data-infrastructure/hyperloglog/

Count-min sketch: https://florian.github.io/count-min-sketch/

Hierarchical timing wheels: https://www.cse.wustl.edu/~cdgill/courses/cs6874/TimingWheels.ppt

Operational transformation: https://en.wikipedia.org/wiki/Operational_transformation

Other things made by us:

System Design YouTube channel: https://www.youtube.com/channel/UCZgt6AzoyjslHTC9dz0UoTw

Twitter: https://bit.ly/3HqEz5G

LinkedIn: https://bit.ly/39h22JK

Thanks for reading ByteByteGo Newsletter! Subscribe for free to receive new posts and support my work.