Introduction:
This Blog is about 5 Step process of passing coding interview rounds of any Tech company. Everyone has to go through this technical round and these rounds vary from company to company. These are tips given by Joe Karlsson through Open Source Cafe Podcast with Kunal.
Irrespective of the toughness of the Technical Interview the following Steps given by Joe Karlsson will help you crack the coding rounds.
Joe's favorite way to evaluate a candidate:
Joe's favorite way to evaluate a candidate in a technical round is "White Board Interview".
Yes, this may sound old-fashioned but this is the best way to evaluate a candidate. Why? Because not all companies are of the same size. So, Big tech companies get 1000+ applications, and take-home projects are not possible, that's why a whiteboard interview is the best way.
Meeting the candidate in person is one of the best ways to know and evaluate a person and there will be very less chances of copying code from google.
5 Step approach in passing Technical Interview:
Get good enough at a programming language. Master a programming language.
Learn Algorithms and complexity analysis
DSA practice websites
Mock Interviews
Final test
Each step is discussed in detail below.
Step 1: Master a programming language:
Mastering a programming language doesn't mean becoming an expert at it, it means getting comfortable with the syntax and concepts of that language.
Which language to choose?
For Whiteboard interviews it doesn't matter if you choose java / c++/ python / JavaScript etc. What matters is problem-solving skills. IF you can code in one language you can learn to code in other languages too.
- How do I know that I mastered a language?
Have a muscle memory, like guitarists move their fingers easily because their fingers get used to that flow and have their own muscle memory. In the same way with enough practice in a programming language, you can develop that muscle memory too and that's when you know that you have mastered it.
You become more comfortable with that programming language.
All programming concepts are pretty much the same in all languages so, what matters is the Broad concept of how you are approaching it matters.
The interview is not about getting the right answers to the given problem but mostly about your approach to solving a problem.
- Approaching a problem in interview:
Ask follow-up questions, first try the brute force approach then mention the complexity analysis, and then optimize it.
- The main mistake candidates do is jump into writing code immediately after listening to the question.
After understanding the problem again don't jump into writing code, write pseudo code and ask if the approach is okay.
If the problem is huge, then break the problem and also test cases for the problem.
Interviewers don't want to see you fail, they don't ask questions to see you fail.
To avoid awkward situations verbalize the work while writing code.
Step 2: Algorithms and complexity analysis:
Algorithms play a major role in cracking the interviews, cracking the coding interview book is a good start.
Few important topics for Big tech interviews are Stacks, Queues, Linked lists, Graphs, BFS, DFS, DP, and Tree traversal questions.
You are not directly asked to traverse a tree, they give you questions and you need to figure out which algorithm to use if it can be solved using graphs then you use the graph algorithm in the round.
Understand complexity analysis. After writing the code try to optimize it using the complexity analysis.
If two people solve the same problem, one person writes optimized code which runs faster than another person's unoptimized code then the first person gets hired.
Step 3: DSA practice websites:
Leetcode is the best website for DSA practice.
Consistency is key here. Practice one problem at least every day till you get a job.
Slowly start with easy and then get into hard problems so that you don't get demotivated in the initial phase.
If you are learning about Array topic then use the filter feature in Leetcode to filter out the questions based on topic and solve easy and medium and eventually get to hard questions.
Choose good questions based on their likes and dislikes ratio. If the likes and dislikes, the ratio looks bad then skip the question. Because solving that bad question is a time waste.
Hard or easy depends on the mindset of the learner. For a person who is prepared every question is easy but for an unprepared person, even an easy question is hard.
Most importantly even the hard problems are actually built on top of easy or medium topics. They are just one or two steps in-depth compared to easy/medium problems.
Don't spend too long hours solving one problem. Spend a few minutes on a problem, if you don't get it then use the hints section.
You get only 30-45 min to solve a problem in the interview so use time blocking in your practice. Set a certain time limit to solve a problem.
If you fail to solve a problem, bookmark it, and again after a few days/weeks come back to the same problem and solve it.
Step 4: Mock Interviews:
Mock interviews are a great place to practice for real interviews.
Checkout pramp for mock interviews. Here you get matched with developers and you get interviewed by them and also get feedback about the interview on various topics. This is completely remote/virtual.
You get to do mock interviews with people who are already working in your dream companies.
Get a whiteboard. Working on a whiteboard helps you a lot in the real world. If not whiteboard, then use pen and paper as an alternative.
Step 5: Final test:
In this final test you apply to all the companies and sort the company interviews from 1 to n(no.of companies) ranks. for example, rank them by the companies I want to work for, from least desirable to most desirable companies.
Now experiment or practice in the real interviews of companies that you really don't care about first, by the end before you reach your dream company you gain flow and personal interview experience.
Even if you fail in the least desirable interviews you get to learn and get prepared for the real interview.
Conclusion:
Finally, All the best to all the students/developers for your upcoming interviews. Try these steps and do share your experience and learnings in public.