I put collectively an inventory and defined why they’re necessary. These algorithms should not solely helpful for interviews however good to know for any software program engineer.
One factor to bear in mind is that understanding “how these algorithms are utilized in real-world methods” is usually extra necessary than the implementation particulars in a system design interview.
What do the celebs imply within the diagram?
It’s very troublesome to rank algorithms by significance objectively. I’m open to recommendations and making changes.
5-star: Crucial. Attempt to perceive the way it works and why.
Three-star: Necessary to some extent. You might not must know the implementation particulars.
One-star: Superior. Good to know for senior candidates.
The place to be taught extra?
Geohash: https://www.pubnub.com/be taught/glossary/what-is-geohashing/
Quadtree: https://engblog.yext.com/put up/geolocation-caching
Constant 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/
Rely-min sketch: https://florian.github.io/count-min-sketch/
Hierarchical timing wheels: https://www.cse.wustl.edu/~cdgill/programs/cs6874/TimingWheels.ppt
Operational transformation: https://en.wikipedia.org/wiki/Operational_transformation
Different issues made by us:
System Design YouTube channel: https://www.youtube.com/channel/UCZgt6AzoyjslHTC9dz0UoTw
Twitter: https://bit.ly/3HqEz5G
LinkedIn: https://bit.ly/39h22JK