Although there is a lot of information out there, it can be confusing for someone looking for specific and concrete steps to prepare their interviews. Everyone has different pieces of advice, and taking them all into account.
After reading this, you will know how to prepare for coding interviews in most tech companies.
I will try to keep it the most concise and accurate to respect everyone’s time.
Step 1: Review the fundamentals
For most generalists software engineer, this means review data structures and algorithms, or learn about them if you never had the occasion to do it. There are similar fundamental if you have other specialities like frontend or ML. This includes learning/reviewing the fundamentals for the language you will use when you interview. Usually the companies let you pick the language but not always; be sure to be familiar with the interview process for the company you are interested in.
Concretely, for a backend engineer working most familiar with Java, they could start by reviewing fundamentals for sorting, selection, lists, trees, BST, graphs, dynamic programming, as well as concrete Java data structures like List, Set, HashSet, TreeSet, HashMap, TreeMap, plus some strings, arrays, and collections utility functions.
Step 2: Practice coding problems
This is probably the most important steps of all. By practice, I mean try to solve the problem on your own and keep track of the time. Practicing against problems on websites like leetcode.com will give you a good idea of:
- How ready you really are: if you struggle on relatively easy problems, you need to get more experience and practice more.
- Your weak spots: some type of questions might give you more trouble than others, and you can focus and study these questions to make sure you will not be afraid if it comes up in the interview.
Practice until you feel comfortable with your problem solving skills and execution. You won’t always have a compiler available during interview, so try to write bug free code and don’t rely on the compiler to find mistakes.
Step 3: Learn how to make the interviewer’s life easy
You should make sure your interviewer is extremely satisfied about the interview and will vouch for you strongly.
One important aspect is to convince the interviewer that you understood the problem and know how to solve it before you start writing code. I suggest writing a few lines to explain the solution before you start writing the solution when practicing coding problems.
Take the driver’s seat. Let the interviewer lead when they are explaining the problem, and answering a couple of clarification questions. After that, most interviewers will want the candidate to lead. Basically this means you will reformulate the problem, talk about the solution you are proposing, make a quick O() analysis, write the solution correctly, maybe propose a few test cases, and then you will stop talking because you will be done (queuing interviewer for next question or end of interview). Maybe they are thinking about something else, sometimes interviewers are distracted, so make it easy for them to follow and understand what you are doing. Maybe they are stressed about work, don’t ask how you are doing in this interview, they can’t tell you anyways.
Don’t cut them off. I think this is actually a common mistake. Let’s say the interviewer gives you an hint, don’t try to cut them off as soon as you understand the hint, that’s not helpful. Also don’t talk about something else and proceed ignoring the hint, this will be seen as disrespectful, or having bad people skills.
Step 4: Practice interviews
Going to interview for other companies as practice is very useful and will provide you with invaluable interview experience. It will give you feedback on your coding, in particular failures. I personally remember a couple of times I tanked coding on some practice interviews. It is easier to get back on your feet when it is practice, and you will still learn.
By reviewing the fundamentals, practicing code problems, learning to make the interviewer’s life easy, and practicing in real interviews, you will set yourself up for success. The more time and commitment you will give to each of these steps, the better the results you will get.