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?
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
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
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
Thanks for reading ByteByteGo Newsletter! Subscribe for free to receive new posts and support my work.
An explanation of Raft as well by Martin kleppman
Any reference link to study these algo?