Algorithms you should know before you take system design interview

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. 

algo|1000

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