Stick to Basics.
I would classify the following data structures as
**must know**
1. Linked List - Single and Doubly
2. Stack
3. Queues
4. Binary Search Trees or general Binary Tree
5. Heaps
6. Basic Graph Traversal and Shortest Path
7. Hashing
Following data structures may be asked. I would say that their
probability of being asked is between 50 to 75% -
1. Tries
2. Advance Graphs like flow and min-cut etc.
3. Bit Manipulation
You will probably crack interviews with sufficient knowledge of
above.
Following have very low probability of being asked ( < 25%) :
1. Segment Trees / Binary Indexed Trees
2. AVL Trees
3. B+ Trees
Other hard data structures are absolutely unnecessary.
Following Algorithms / Tricks / Topics may also be important :
1. Memory Management
2. Basic Co-ordinate geometry - Manhattan Distance, Closest Point Pair
3. Divide and Conquer
4. Greedy
5. Dynamic Programming - Extremely important
6. Probability and basic Number Theory
7. Sorting and Searching
Following topics is important for Knowledge / Experience based
questions :
1. OS - Threads, Processes and Locks using Mutex, Semaphores
(Operating systems Archives - GeeksforGeeks)
2. Scalability Issues, RPCs, Rate limiter, etc.
3. OOP Concepts
4. Databases - SQL, NoSQL, Writing simple Queries, Transactions,
ACID
5. Linux Commands - sed, grep, ps, etc.
Resources :
GeeksforGeeks | A computer science portal for geeks
Programming Interview Questions | CareerCup
Coding Interview preparation made easy
Buy Cracking the Coding Interview: 150 Programming Questions and
Solutions Book Online at Low Prices in India (Bible - Seriously)
Edit: Related Answer : Ashish Kedia's answer to How should one
start preparing for the Google APAC?