The following is a long list of topics. If you're preparing to interview at a top tech company and don't have much time (<2 months), just go over the essentials.

Do all the Leetcode problems from the "Google Problems" section. Don't worry if you're not applying to Google. And don't be a cry baby. Just do them all and you'll be in a better shape.

Be able to implement any of these from scratch

Linked List (Notes)

Hash Tables (Notes)

BinaryHeaps (Notes)

Splay Tree (Notes)

Radix trees (Notes)

Try implementing these.

Bit Manipulation & Numbers (Notes) - Unsigned vs signed numbers. Negative and positive number representation. Know how add and subtract works.

Heapsort - Sort it in-place to get O(1) space

Selections - Kth Smallest Elements (Sort, QuickSelect, Mediums of Mediums) - Implement all three ways

Subsets

Tree Traversals - BFS, DFS (in-order, pre-order, post-order): Implement Recursive and Iterative

External Sort - No implementation

NP-Complete (Video) - just know the concept

Detect cycle in an undirected graph

Detect cycle in a directed graph

Count connected components in graph

Find strongly connected components in graph

Disjoint Set

What is a Spanning tree?

Minimum Spanning Tree (Kruskal and Prim)

A*

Radix Sort —— Didn’t cover in class

General Sorting Algorithms (Notes) - Bubble sort, insertion sort, etc.

Explain bipartite graph (how do you check if graph is bipartite?)

Do Traveling Salesperson and other NP problems