Step 1: Recognize depth vs breadth
Everyone has a friend who has mastered 500 coding challenges. They cherish donning it as a badge of courage. However, they completely bomb interviews. This situation occurs frequently. We refer to it as the "Breadth-Only" strategy. They are just concerned with finding solutions to as many issues as possible.
A weakness of the breadth-only strategy is that a solid foundation isn't established. A deep understanding of problem-solving techniques and quick, correct coding skills are essential for interviews. These abilities can only be acquired via careful preparation.
Here is a method that seems counterintuitive but is more effective:
Right, this is reassuring. When can you concentrate on just 100 issues? Who wants to focus on 500?
The key is to learn them well, though. Depth has a role in this.
An extensive analysis of a problem entails:
- It is quickly programmable.
- You are proficient in the language if you can code it using proper syntax.
- Since it comes naturally to you, you can write clean code in a single pass.
- The same code can be rapidly applied to a fresh issue.
- If required, you can implement the data structure you are utilizing.
You must concentrate on a few representative issues to accomplish this (around 100 works well.) Once you've solved them a few times, you'll begin to notice trends. Additionally, you start to improve your coding skills.
So, kudos to you for covering depth! You now have a strong foundation.
Now is the time to go all out and address as many issues as you wish. The best part is that not many of them will require coding. Find a solution, and if it resembles one of your fundamental issues (which it frequently does), you're done. You're already skilled at it. Therefore there's no need actually to develop and debug it.
Step 2: Start by creating a list of fundamental inquiries.
Make a list of 100 core issues. You may find 100 handpicked problems on many websites.
Here is another approach:
Purchase these two books:
- Interview components for programmers
- Getting through the coding interview.
Together, they provide you with a decent selection of specially chosen tasks. Visit Learnbay’s Data structure course if you want a formal training for this.
Step 3: Recognize each data structure.
Start with the fundamentals now that your list has been determined. Understand each data structure.
Study each data structure in your language and how to use it.
Also, learn how to put them into practice. Yes, carry them out by hand. This is often disregarded, yet it's crucial. You may be questioned about data structure internals in interviews. Many issues alter data structures or re-design them to fit a particular use case. You must understand how they operate to make full use of them.
Imagine that you must implement a queue solely utilizing stacks (a popular question). This data structure has been altered. You'll have problems getting started if you haven't used it either.
You do not, however, have to be familiar with the code of every implementation. Some data structures are quite challenging to construct; removing a node from a binary search tree, for instance, is not an easy task. But you should be aware of how it functions.
List of data structures to master:
- Arrays and Lists
- 2D Arrays
- Linked List
- Hash Table & Hash Set
- Binary Tree
- Binary Search Tree
Step 4: Discrete Repetition
Alright. You compiled a list of inquiries and got to work answering them. Here is a typical query we get:
"I can answer many questions, but I can't in a week! How do I remember the answers?
The secret is to avoid remembering answers. The secret is to put them to use. You should be able to deconstruct an issue and recreate the answer as soon as you perceive one. This is distinct from learning through repetition. You're identifying various elements, dissecting them, and resolving the issue.
The best method we've seen is to solve the issue once more in three days. The following week. The following month. You'll start to do it naturally.
Step 5: Identify and separate recurrent methods.
Isolate the actual blocks of code. The Depth-First methodology is exciting at this point. You'll begin to see patterns as you work through these issues.
Say you utilized Binary Search to solve five problems. The Binary Search code can be isolated and repeatedly practiced. You anticipate applying it to issues of a like nature.
And among the many strategies you can choose from is this one. Other such examples are as follows:
- Recursive Depth First Search, Memoization Hash Table, Linked List, Searching a Binary Tree, etc.
You now possess a variety of methods that you might use to address brand-new issues.
Step 6: Breadth will now be discussed.
Let's assume that you have conquered your primary issues. You're comfortable with using standard data structures. You can now expand your search outside your existing set of skills. You don't need to code all the new questions because you've already used many strategies.
Try to solve practical interview difficulties during this period. Once you get proficient, you may start concentrating on extremely challenging issues. If I can figure out these very challenging problems, interview questions will be easy, the thinking goes. Typically, that is not the case. Really difficult problem-solving strategies frequently have little to do with difficulties found in interviews.
Step 7: Practice on Paper
At some point during your preparation, we advise practicing on paper. Coding without an IDE and Stack Overflow forces you to step outside your comfort zone.
The following are some advantages to practicing on paper:
- You must organize your code before writing it. You are unable just to retype.
- You'll begin learning how to use data structures and the proper syntax for languages. Code used to write itself while using an IDE.
- Anywhere you go, practice with a piece of paper and pen.
- Furthermore, it is a faithful recreation of a whiteboard interview.
Check out the popular data structures and algorithms course, if you want to master DSA from scratch and ace your challenging technical interviews.