0 like 0 dislike
in Advice/Suggestion/Opinion by
retagged by | 2,386 views

4 Answers

1 like 0 dislike
Best answer
I would do the following assuming I am learning Ds and Algo for interviews

First Month

Go through all the fundamentals, data structures, algorithms, os, networking, design patterns.

Study programming language your comfortable with and solve at least 50 easy problems on leetcode.

Second Month

Once your done with fundamentals and have solved some easy problems, complete Cracking the coding interview book, solve at least 50 medium problems on leetcode. Compare different data structures, different approaches to solve problems

Third Month

Solve 100 medium/hard problems on leetcode.

Solve hard problems from leetcode, take part in weekly contests.

Also anytime during this course whenever you encounter new algorithm/ datastructure that you missed during first month, try to cover it.
by Expert (19,470 points)
selected by
1 0
great content
0 0
just like you :)
1 like 0 dislike

Top 500 questions asked in DSA interviews : https://www.desiqna.in/253/questions-asked-faang-interviews-product-based-companies


Best resources : 

1)Arrays,String,Hashing : https://bit.ly/2XmWGTH https://bit.ly/3os4DD6 https://bit.ly/3hY9XvE

2)Dynamic-Programming : https://www.desiqna.in/44/best-tutorials-resources-dynamic-programming-for-free-2021

3)Greedy Algos : https://bit.ly/2XmSMdx  https://www.geeksforgeeks.org/greedy-algorithms/ 


4)Linked Lists : https://leetcode.com/tag/linked-list/


5)Stack and queues : https://bit.ly/2LdQBqi 


6)Tree and Graphs : https://leetcode.com/tag/tree/







RoadMap : 


Pick any programming language of your choice. If you want to build DSA from scratch, I'll suggest C/C++.



For a fantastic building, you need an extraordinary basement. Get a good understanding of pointers, structures, classes, dynamic memory allocation, and recursion. Learn how to find time and space complexities of algorithms and learn about the notations


Learn about what is an array, how do they work, how data is stored in an array, how memory is managed in an array, and all other things. After knowing the basics of arrays, learn about the operations that we can perform on arrays like, insertion, deletion, replacing, searching, etc.

Searching algorithms.

Learn basic searching algorithms such as, Linear search and Binary search, with their time complexities and use cases. There are many searching algorithms but learning these first will give a clear understanding of others.

Sorting algorithms.

Learn basic sorting algorithms that follow a NORMAL APPROACH such as selection sort, bubble sort, etc.


Learn about Divide and Conquer methodology. Sorting algorithms such as merge sort, quick sort, and others follow this methodology.

This is an important programming paradigm.


Learn about what is a linked list, how do they work, how data is stored, how memory is managed, and all other things. After knowing the basics of linked lists, learn about the operations that we can perform on them like insertion, deletion, searching, traversing, reversing, etc. Learn about their applications. Also know the different types of linked lists.


Follow the same steps as mentioned for linked lists.


Now we are coming to the most important part. Learn about binary trees, binary search trees, traversal methods, the height of a tree, and all other operations. Learn about the Depth-first search and Breadth-first search.

The same goes for Graphs. A tree, in fact, is a special type of graph.

Almost all algorithmic concepts that come under trees will definitely come under graphs. Do an IN-DEPTH analysis for understanding these data structures.


Greedy is an algorithmic paradigm. Almost 70 percent of algorithms under trees and graphs follow this methodology.

Greedy Algorithms

1.Dijkstra’s shortest path algorithm.

2.Prim’s and Kruskal's Minimum Spanning Tree.

3.Dial’s Algorithm (Optimized Dijkstra for small range weights)

And other algorithms that follow the greedy approach. These are very important algorithms. After learning, apply this concept in other kinds of data structures to get the solution to the problem in that specified data structure.


This is also an algorithmic paradigm. Give more concentration to this one, as this is the toughest one of all other paradigms. Know the basics of how this paradigm works and move to the understanding of these algorithms.



1.Traveling salesman problem

2.Coin change problem

3.Bit Masking.

Get a good grasp of these algorithms by practicing them again and again.


Know the foundation of this algorithm and learn about the N-Queens Problem. Practice as many problems as you can

After learning, try to apply a problem solving technique in some other data structure. For example, try dynamic programming approach in solving problems in arrays.

Finally, I would like to conclude by saying that, knowing all this is not enough. You must do hard work and practice enough problems daily for mastering these techniques. There are many resources out there. Some of them are Hacker RankHackerEarthGeeksForGeeksCodeChef and many more(Codeforces).

by Expert (19,470 points)
1 like 0 dislike
  • Start From Basic
    • Learn about basic Data Structure , e.g:- Linked List, Stack, Queue, Tree,Graph , Map(C++ STL).
    • Data Structures - GeeksforGeeks is enough for learning about these Data Structure.
    • Implement them by your self (in your favorite language, it will help you to understand them well and also learn about time complexity more clearer)
    • So it will take around 10 - 15 days to learn about basic Data Structure deeply.
    • Now start learning about ALGO. For Algorithm i will suggest CLRS book.
    • Topcoder Tutorial, Codeforces Tutorial and you can find many awesome blog online doing just Google Search. Learn from there also.
    • For each topic (Algorithm which you learn ), start solving problem on codechef , hackerrank, Codeforces. (It will make you perfect). While practicing read problem description slowly , think about solution, give enough time to think , implement. If you solved (Just read other person solution , it will just increase your thinking ability, give you new ways to solve problem). If not able to solve , than don't worry , read other person solution. and understand that, Maybe some time it will be hard to understand , just use pan and paper and try to understand each line of code , what it is doing. It will help you alot. If you programming enthu, than do much coding otherwise for learning you can just solve some problem for your better understanding. (Practice Make A Man Perfect.)
    • Here is useful link :- Programming problems for dp (can find all codeforces problem categories ).
  • Go to Advance.
    • Advance Data Structure (Segment Tree, BIT, Tries, Suffix Tree, Suffix Array,Advance Graph Theory)
    • Again read form GeeksForGeek.
    • Topcoder Tutorial(recommended).
    • Read Blog(just google search Topic, you will find top university lecture ppt or top blog).
    • Again Solve problem on various online judges Topcoder , Coderforces, Codechef etc.
0 like 0 dislike

Tech companies mainly focus on your problem solving skills and designing skills. For both of these you should have good knowledge of Data Structures and some standard Algorithms.

I was in the same situation when I started preparing for my Interviews. I had 2 months left for placements and knew only some Data structures and Algorithms (but you have more time, so yes you are on same page with me). I worked really hard for 2 months and grabbed first day campus placement in Morgan Stanley :)

So, you have enough time, just you need to make a proper strategy.

My suggestions:

  1. Start with basic Data Structures and implement them. (Data Structures - GeeksforGeeks).
  2. Once you learn them head for basic algorithms and implement them. (Algorithms - GeeksforGeeks)
  3. After this you will find that you are able to think solutions to problems easily. Now start practicing new problems to sharpen you problem solving skills.
  4. You can practice problem solving at - https://www.Coding Interview preparation made easy
  5. Along with this study the Object oriented concepts of C++. These would be very helpful in designing.
  6. Prepare all the courses you have studied, lots of questions are asked from them. (Operating systems, Database Management System, Networking).
  7. Solve Interview questions of the company you are targeting.( Interview Corner - GeeksforGeeks)
  8. Prepare general HR question and write them somewhere to look whenever required.
  9. Read your Resume properly and prepare whatever you have written in that.(Lot of questions would be asked from you internship and projects).
  10. Now you are ready to crack any interview :)

P.S. GeeksforGeeks | A computer science portal for geeks is a very good site for interview preparations, follow it religiously.