What is the BEST way to Practice "Cracking the CODING Interview Problems?

 Original Author: Harsh Goel(CEO,  InterviewCamp.io - Online Bootcamp for Tech Interviews)

                           No of Words: 253
                        No of Backlinks: 2  
Here is a sequence I recommend:
  1. (Before starting CTCI) Master important data structuresLearn at least the following for each data structure:
    Implementation, Insertion, Deletion, Lookup.
    Get a book in your language of choice, or rely on online articles.

    Here is a list of data structures to master:
    1. Arrays and Lists
    2. 2D Arrays
    3. Strings
    4. Linked List
    5. Stack
    6. Queue
    7. Hash Table & Hash Set
      1. Heap
      2. Graphs
      3. Binary Tree
      4. Binary Search Tree
      5. Trie
    8. Master a few classic algorithms: You should know how to implement them in < 10 minutes if you practice them a few times.
      1. Binary Search
      2. Breadth-First Search
      3. Depth First Search
      4. Merge Sort
      5. Quick Sort
      6. Selection Algorithm
  1. Prepare for Recursion and Backtracking: Used very often. Do the following problems to get a good base:
    Recursive Practice Problems with Solutions - GeeksforGeeks

    Congratulations! You’ve mastered the basics. Now for the good part.
  2. Start Cracking the Coding Interview(CTCI). Go chapter by chapter. We’ve already developed a good base in the previous steps.

    Note: You don’t need to implement all the questions. Follow this strategy:
    1. For each chapter, implement the first 2 questions. This gives you practice with that data structure.
    2. Then, go down the list of questions and try to solve them. Try visualizing the code in your head. Can you figure out the structure?
    3. If yes, move to the next question to save time.
    4. If no, try implementing the code.

All the best for your interviews!

Comments

Popular posts from this blog

Basic HTTP Server Using NodeJS From Scratch

Which laptop Should you Buy for Intense Programming(i.e.to develop advanced projects)