Coding Interview Curated
This is a curated list of various algorithms and coding interview resources. Although not focussed specifically on coding interviews, check out the collections Algorithms: Design and Analysis and Algorithms: Design and Analysis II, as well as the page Algorithms Curated.
General
- Coding Interview Q&A - CS Dojo
- Cracking the Coding Interview - HackerRank
- 500+ Data Structures and Algorithms practice problems
- Algorithms - Martin Broadhurst
- tryalgo
- Ruslan Writes Code
- Problem Solving with Algorithms and Data Structures
- Algorithms and Problem Solving
- Tech Dev Guide
- Buttercola
- CS 97SI: Introduction to Programming Contests
- Theory of Programming
- MIT 6.851: Advanced Data Structures
- matthewsamuel95/ACM-ICPC-Algorithms
- kvaluruk/Data-Structures-And-Algorithms-Hacktoberfest18
- mrrusof/algorithms
- micheleorsi/exercises
- raywenderlich/swift-algorithm-club
- asarkar/adm
- asarkar/epi
- asarkar/coding-interview
- ngalayko/dcp
- nowol79/Daily_Coding_Problem
- marcelodebarros/dailycodingproblem
- r1cc4rdo/daily_coding_problem
- Jedshady/daily-coding-problem
- vineetjohn/daily-coding-problem
- Li-Victor/Daily-Coding-Problem
- Abhisarkar/GitHub
- Dimka Maleev - Medium
- MIT 6.046 Term Websites. Quizzes and homeworks are not available publicly after 2008 Fall.
- allenlipeng47
- Omar Faroque - Medium
- AlexLin
- Tian Cao - Leetcode Unlocked
- LeetFree
- High Scalability
- What are the Best Resources to Learn How to Build Scalable Systems - Quora
Practice
Bits
Numerics
- Hamming’s Problem - Dijkstra
- The Role of Smooth Numbers in Number Theoretic Applications - Pomerance
- Square Roots, Newton’s Method - MIT 6.006 2011
- Approximating Square Roots with Newton’s Method
- Finding Square Roots Using Newton’s Method - Kazdan
- Markov Chains - University of Auckland
- Topics in PRECALCULUS
Arrays
- Algorithms for Minesweeper Game Grid Generation - Cicvarek
- Fun with array rotations
- Longest Increasing Subsequence - Jan
- Sparse Data Structures in Python
Sorting and Searching
- Counting Sort - YouTube
- Radix Sort - YouTube
- External Sorting - YouTube
- External Sorting - OpenDSA
- External Sorting - Yahoo
- K-way-Merge-Algorithms - Quora
- K-way Merging and K-ary Sorts - Greene
- A Comparative Study of Linked List Sorting Algorithms - Shene
Combinatorial
- Permutation Generation Methods - Sedgewick
- Efficiently Enumerating the Subsets of a Set
- Ranking and Unranking Permutations in Linear Time - Myrvold+Ruskey
- Efficient Algorithms to Rank and Unrank Permutations in Lexicographic Order
- Steinhaus–Johnson–Trotter algorithm
- Interview Question: Subarray Sums - Stanford
- Interview Question: Two Sum - Stanford
- Reservoir Sampling
- Finding Squares and Rectangles in Sets of Points
Linked Lists
Binary Trees
Hashing
- Bloom Filters by Example
- Merkle Trees: What They Are and the Problems They Solve
- Comparing Git Trees in Go
- Using Merkle Trees to Detect Inconsistencies in Data
Strings
- Prefix Hash Tree
- Trie, Suffix Tree, Suffix Array - MIT 6.851
- Suffix Arrays - Vladu+Negruşeri
- Simple Linear Work Suffix Array Construction -Karkkainen+Sanders
- Tries and Suffix Tries - Langmead
- Algorithm to find the Least Lexicographic Rotation of a Circular String
- Tutorial on Trie and Example Problems
- Interview Question: Anagram Detection - Stanford
- Aho-Corasick Automata - Stanford
- Aho-Corasick Algorithm - Grainger
- Construction of Aho Corasick Automaton in Linear Time - Dori+Landau
- Efficient String Matching - Aho+Corasic
Recursion
- Interview Question: Recursion Problems - Stanford
- Exhaustive Recursion and Backtracking - Zelenski
- A Warnsdorff-Rule Algorithm for Knight’s Tours on Square Chessboards
Graphs
- Incremental Cycle Detection, Topological Ordering, and Strong Component Maintenance
- Existence of the de Bruijn Cycles
- Algorithms for De Bruijn Sequences - Vassallo+Ralston
- Introduction to the A* Algorithm
- Implementation of A*
- Negative-Weight Cycle Algorithms - Huang
Dynamic Programming
- 19. Dynamic Programming I: Fibonacci, Shortest Paths - MIT 6.006
- 20. Dynamic Programming II: Text Justification, Blackjack - MIT 6.006
- 21. DP III: Parenthesization, Edit Distance, Knapsack - MIT 6.006
- Approximate String Matching
- Dynamic Programming I - Carnegie Mellon University
Network Flow
- Hopcroft-Karp algorithm - Wikipedia
- Bipartite Maximum Matching - IIT Bombay
- Dinic’s Algorithm - YouTube
- Algorithms - Avrim Blum
- A Second Course in Algorithms - Tim Roughgarden
- A Fast and Simple Algorithm for the Maximum Flow Problem
System Design
- TinySearch Engine: Crawler Data Structure Design
- Efficient Crawling Through URL Ordering
- Spiders, Crawlers, Harvesters, Bots
- Design Autocomplete
- Building Prefixy
- Regular Expression Matching Can Be Simple And Fast
- 5.4 Regular Expressions - Algorithms 4e
- An Efficient and Elegant Regular Expression Matcher in Python
- A Play on Regular Expressions
- Pattern Matching - Dartmouth College CS 10
- HashLife - Rokicki
- An Algorithm for Compressing Space and Time (Conway’s Life)
- An O(1) Algorithm for Implementing the LFU Cache Eviction Scheme
JVM
- When is a Singleton not a Singleton?
- How to make the perfect Singleton?
- The “Double-Checked Locking is Broken” Declaration
- Using JDK 9 Memory Order Modes
- VarHandles for Atomic Operations
- A Post-Apocalyptic sun.misc.Unsafe World
Scalability
- Sharding & IDs at Instagram
- What I Wish I Had Known Before Scaling Uber to 1000 Services
- How We’ve Scaled Dropbox
- Hired In Tech
- Consistent Hashing
- What is Consistent Hashing and Where Is It Used?
- Grokking the System Design Interview. Paid content.
Comments