Technical Fundamentals & Core Skills Topics
Core technical concepts including algorithms, data structures, statistics, cryptography, and hardware-software integration. Covers foundational knowledge required for technical roles and advanced technical depth.
Sorting and Searching Algorithms
Comparison and non-comparison sorts (quicksort, mergesort, heapsort, counting/radix), their stability and complexity, and binary search with its many variants. Covers divide-and-conquer reasoning, searching in rotated or implicit spaces, and choosing an algorithm from input constraints. A staple of both fundamentals screens and optimization discussions.
Algorithmic Problem-Solving and Data Structure Selection
The higher-order meta-skill of attacking an unfamiliar problem: recognizing problem archetypes and mapping them to known techniques, decomposing under constraints, and choosing, composing, or designing the right data structures to meet specified operation costs (LRU cache, min-stack, ordered maps, disjoint-set/union-find). Covers reasoning about trade-offs between competing structures and approaches, working through medium-to-hard problems methodically, handling problem variations, and communicating an approach before coding. The connective-tissue topic that ties the individual structure and algorithm topics together, rather than any single structure or algorithm.
String Algorithms and Pattern Matching
Advanced string processing beyond basic manipulation: substring search (KMP, Rabin-Karp, Z-algorithm), tries and suffix structures, edit distance, and text-parsing problems. Covers the algorithmic machinery behind search, autocomplete, and tokenization. Distinct from introductory string manipulation in depth and complexity.
Time and Space Complexity Analysis
Reasoning about algorithmic efficiency: Big-O/Theta/Omega notation, amortized analysis, recurrence solving, and the time-versus-space trade-off. Covers deriving bounds from code, comparing candidate approaches, and communicating complexity clearly under interview pressure. The analytical layer applied across every algorithm topic.
Linear Algebra and Numerical Computing
Applied mathematics for computation: matrix and vector operations, linear-algebra foundations, numerical stability, optimization, and the mathematical/statistical rigor behind machine-learning theory. Covers formulating problems mathematically and reasoning about precision and convergence. Serves quantitative and research-leaning engineering roles.
Recursion and Backtracking
Recursive decomposition, base/recursive-case design, and backtracking search over combinatorial spaces (permutations, subsets, constraint satisfaction, N-queens style problems). Covers recursion-tree reasoning, pruning, and converting recursion to iteration. The conceptual bridge into dynamic programming and search.
Arrays, Strings, and Hashing
Manipulating arrays and strings using the standard toolkit for entry-level coding-interview problems: two-pointer and sliding-window techniques, in-place modification (reversal, rotation, partitioning, deduplication), prefix sums, and hash-map or hash-set based techniques used to solve array or string problems in optimal time (frequency counting, lookup-based pairing such as two-sum, duplicate detection, grouping by a computed key such as anagram grouping). Hashing appears in this topic only as an applied technique for solving an array or string problem faster: how hash tables work internally (hash functions, collision resolution, load factor, resizing) and hash-based structures that are not array or string shaped (Bloom filters, HyperLogLog) belong to the separate hashing and hash tables topic, not this one. Covers the most frequent entry-level coding-interview problem shapes and the trade-offs between time, space, and readability. The default warm-up surface for any coding interview.
Dynamic Programming
Solving problems with overlapping subproblems and optimal substructure via memoization and tabulation. Covers recognizing DP-amenable problems, defining state and transitions, 1D/2D formulations, and space optimization. Widely regarded as the highest-difficulty and highest-discriminating coding-interview topic.