CODING INTERVIEW PREP
By Neuromancers
Milestone 0: Learning a programming language
You should be confident with at least one language for both online and interview rounds. Prefer
C++/Python as we can write shorter codes which saves time.
Resources:
C : https://www.hackerrank.com/domains/c
C++ : https://www.hackerrank.com/domains/cpp
Python: https://www.hackerrank.com/domains/python
JAVA : https://www.hackerrank.com/domains/java
Solve questions as well as take a look at the Discussion and Editorial tabs.
Disclaimer (For Milestone 0):
Here, you are required to learn the basics until functions and classes. But this definitely
does not guarantee a strong background in that language. So, to sharpen your language
knowledge, do these:
1. For smart and sleek codes:
Practise algo/ds questions online in coding competitions:
a. CodeForces
b. CodeChef
2. For very deep language understanding and writing maintainable codes:
Work on projects, OOPs, Hackathons, contribute on Github, etc
Milestone 1: Basic Data Structures
Data Structures are very important for cracking coding interviews. You should be thorough with all the
key questions related to each data structure. Below is a list of basic Data Structures and the relevant
resources:
1. Arrays: https://www.geeksforgeeks.org/category/data-structures/c-arrays/
2. Linked Lists:
https://medium.com/@codingfreak/linked-list-interview-questions-and-practice-problems-55f75302
d613
3. Stacks: https://www.geeksforgeeks.org/stack-data-structure/
4. Queues:
https://medium.com/@codingfreak/queue-data-structure-practice-problems-and-interview-questio
ns-f459bf0578db
Milestone 2: Basic Algorithms
Practice algorithms for at least 4 hours a day.
1. Algorithm analysis - Time & space complexity analysis -
https://codility.com/media/train/1-TimeComplexity.pdf
https://www.hackerearth.com/practice/basic-programming/complexity-analysis/time-and-space-co
mplexity/tutorial/
2. Searching -
- Theory: http://www.cs.carleton.edu/faculty/adalal/teaching/f04/117/notes/searchSort.pdf
- Questions:
https://www.geeksforgeeks.org/searching-algorithms/
3. Sorting - https://www.geeksforgeeks.org/top-10-algorithms-in-interview-questions/#algo4
- https://www.youtube.com/watch?v=pkkFqlG0Hds&list=PL2_aWCzGMAwKedT2KfDMB9YA5DgA
SZb3U
4. Recursion -
- Theory: https://www.youtube.com/watch?v=KEEKn7Me-ms
- Questions: https://www.geeksforgeeks.org/practice-questions-for-recursion/
Milestone 3: Advanced Data Structures I
1. Tree: https://www.youtube.com/watch?v=oSWTXtMglKE
2. Binary Tree: - https://www.studytonight.com/data-structures/introduction-to-binary-trees
https://www.geeksforgeeks.org/binary-tree-data-structure/
3. Binary Search Tree: https://www.youtube.com/watch?v=pYT9F8_LFTM
4. AVL Tree: https://www.youtube.com/watch?v=jDM6_TnYIqE
https://www.geeksforgeeks.org/avl-tree-set-1-insertion/
5. Red-Black Tree: https://www.youtube.com/watch?v=ZxCvM-9BaXE
https://www.geeksforgeeks.org/red-black-tree-set-1-introduction-2/
6. N-ary Tree: https://leetcode.com/articles/introduction-to-n-ary-trees/
Milestone 4: Advanced Data Structures II
1. Heap: https://www.youtube.com/watch?v=t0Cq6tVNRBA
https://www.geeksforgeeks.org/heap-data-structure/
2. Graph: https://www.youtube.com/watch?v=pcKY4hjDrxk
https://medium.com/@codingfreak/graph-data-structure-interview-questions-and-practice-
problems-22d5cd488855
3. Others: https://www.geeksforgeeks.org/advanced-data-structures/
Milestone 5: Advanced Algorithms I
1. Dynamic Programming: https://codeforces.com/blog/entry/43256
2. Greedy: https://www.topcoder.com/community/competitive-programming/tutorials/greedy-is-good/
https://www.geeksforgeeks.org/greedy-algorithms/
3. Divide and Conquer:
https://cp-algorithms.com/dynamic_programming/divide-and-conquer-dp.html
4. Backtracking:
https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/tu
torial/
5. Bit Manipulation:
-https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-
manipulation/tutorial/
6. Math-related: https://www.geeksforgeeks.org/number-theory-competitive-programming/
https://github.com/dylan007/winter-resources/wiki/Mathematics-in-Competitive-progr
amming
Milestone 6: OOPs
OOPs aka Object Oriented Programming consists of a major part of interviews. Mostly theoretical, but
one can be asked to write small codes using the same;
Basic Theory:
https://www.geeksforgeeks.org/oops-object-oriented-design/ (Read all the recommended posts
given at the bottom of this link’s page)
Each language has some difference with respect to OOPs:
C++ : https://www.youtube.com/watch?v=ZOKLjJF54Xc&t=904s
Python: https://www.youtube.com/watch?v=qiSCMNBIP2g
Common Interview Questions:
https://www.geeksforgeeks.org/commonly-asked-oop-interview-questions/
Milestone 7: SYSTEM DESIGN
Companies like Gojek and Codenation generally ask these questions. Many great coders get stuck
here. These questions need the presence of mind as well as practice.
Reference: https://www.educative.io/courses/grokking-the-system-design-interview
Milestone - 8: Showing your online presence
A. Online Coding Competitions from your dream companies:
a. Google
i. KickStart, HashCode, and CodeJam: here
b. Facebook
i. HackerCup: here
B. ML Competitions:
a. Kaggle: here
C. Open Source Contributions:
a. GitHub: here
b. Google Summer of Code (GSoC): here
D. With a strong resume in hand (or in the cloud):
a. Connect with people on Linkedin
b. Grow your network
c. Post meaningful content based on your recent project works, participation in famous
competitions, etc.