- Prepare short and to the point Introduce yourself
- stay calm and first read the question and asked about it and see the input ranges and edge case
- start with brute force solution and the start the conversation
- Always go with the simple solutions which is easy to code
- Explain your thoughts and ask them if you're going to the right direction or not
- Proper variable names, method names and use modular approach
- Dry run
- Discuss the time complexity
- At the end ask questions about project that your team/company is currently doing
- Array
- Linked List - Single and Doubly
- Stack
- Queues
- Binary Search Trees or general Binary Tree
- Heaps
- Basic Graph Traversal and Shortest Path
- Hashing
Following data structures may be asked. I would say that their probability of being asked is between 50 to 75% -
- Tries
- Advance Graphs like flow and min-cut etc.
- Bit Manipulation
You will probably crack interviews with sufficient knowledge of above. Following have very low probability of being asked ( < 25%) :
- Segment Trees / Binary Indexed Trees
- AVL Trees
- B+ Trees
- Suffix arrays and trees
Other hard data structures are absolutely unnecessary. Following Algorithms / Tricks / Topics may also be important :
- Memory Management
- Basic Co-ordinate geometry - Manhattan Distance, Closest Point Pair
- Divide and Conquer
- Greedy
- Dynamic Programming - Extremely important
- Probability and basic Number Theory
- Sorting and Searching
- OS - Threads, Processes and Locks using Mutex, Semaphores (Operating systems Archives - GeeksforGeeks)
- Scalability Issues, RPCs, Rate limiter, etc.
- OOP Concepts
- Databases - SQL, NoSQL, Writing simple Queries, Transactions, ACID
- Linux Commands - sed, grep, ps, etc.