It wasn’t raining when Noah built the ark.
The moment you start thinking about job search or appearing for the interviews, the first thought that comes to your mind is how to prepare. When you are halfway through the preparation, you start feeling anxious, you don’t feel confident, you are unsure about how much preparation you need. In this post, I am going to help you with exactly that conundrum. As you might have already realized, there is no limit to how much you can prepare for your interview. So let’s put being 100% percent ready aside. You would have heard the 80-20 rule: 80% of anything can be achieved with 20% of the work. Applying the same rule here, I am going to list down some important things, knowing those should make you feel fairly confident about yourself and your ability to nail the interview.
1. You have gone through your resume at least once.
Knowing your resume can help you in small talk at the beginning. More importantly, if the interviewer has read your resume and they want to know more about something, they would ask a couple of questions. You don’t want to be the person who can’t talk about the project you listed on your resume. Secondly, practice a little to articulate what you do in your current job and what product you work on. If it’s not a consumer product, your interviewer might not have used it, so you might want to give them some brief idea before getting into the details. Irrespective of what the type of interview is, you will always be asked to introduce yourself where you will most likely also talk about your current job.
2. You have finalized the programming language that you are going to use in the interview.
Although I believe you should choose the best language for the problem (e.g. maybe Python for string parsing questions), it helps to have a default programming language because it saves you from making one additional decision at the time of the interview which is, in fact, a very important one. Do you already have one very strong language? If yes, I recommend sticking to it as long as it has basic support from the library like the hash map, stack, etc. If you haven’t decided on the language, I will write about choosing the language for the interview. My short answer is to choose the one that you are most comfortable with. However, if you have no inclination towards any, choose Python, Java, or C++ with preference towards Python.
3. You know your default language well.
Well once you have finalized your language, you should confirm that you know all the necessary-for-interview syntaxes and internal details of the language. Also, knowing additional library methods available in the language can be very helpful in an interview, so I recommend knowing those. To not keep you wondering about what all those things are, I have written a separate detailed post on what all things in a programming language you should know for the interview. I highly recommend taking a look at those and make sure you check all those boxes.
4. You know every major data structure inside out with common algorithms.
There are only a few data structures that get asked in the interviews. They are essentially the tools to solve the problems. As with any tool – mechanical or software – you must know how to use it, when to use it and why to use it. Data structures, algorithms are exactly such tools that you will apply on various problems in the interview. You must know the fundamental properties – strength & weaknesses of each data structure, operations that you can perform on them, time complexities of each operation. This can logically help you come up with the right use cases of each data structure. If you get this right, you will intuitively know what data structures to use for solving any given problem efficiently. No different than you thinking of a screwdriver when you want to tighten a screw.
5. You are curious about the company you are interviewing with.
It shows up when someone is curious about the company or not interested in the company. Of course, any company would like to hire a person who is interested in what the company does, what are the products and services, etc. I assume you are happy to join the company you are interviewing with. Do some research about the company. See what their products are, see if you would like to be the one developing the product. Get a feel of the product if you can. Sometimes you might realize that you actually are not interested and that is fine. If you like the company and the products, you will naturally have some questions about it. Almost all interviewers will spare some time at the end of the interview for you to ask questions. This is the right time to get answers to your questions. You can also learn about the company culture, processes, technologies, tools, etc. from the interviewer. Be genuinely curious.
6. You can solve most of the easy & medium problems.
You are going to solve coding problems for more than 30 minutes in the 45-minutes interview which is like around 70% of the interview time and the purpose of the interview is to see if you can solve such problems or not. You are primarily judged on that. So there is no second opinion about how important practicing problem solving is. The interviewer wants you to be able to solve the problem. They are going to help you along the way, they will provide hints as long as you are thinking about the problem and coming up with various solutions. If you can provide a basic (read as not the most efficient) solution easily within a minute or two for 80-90% easy-medium problems chosen at random, you should be good. Leetcode is a very good resource to test this. I strongly advise getting in a position where you can solve most problems (even if it’s in an inefficient way) before appearing for the interviews. Interviews are not meant to be a cakewalk and tech interviews are no exception. Before you roll your eyes, it is indeed not hard to find a basic solution to a problem and that solution helps you in finding the optimal solution. I have created a post with some problems and solutions to give you an idea of how coming up with a basic solution in a couple of minutes is possible. The basic idea is to simply do what you would do manually & step by step without worrying about how much space you are using or the time complexity. If you think you are not able to find an optimal solution to the easy-medium problems in 30-40 minutes, you might want to practice more to increase your chances of clearing the interviews. There is no point in going into an interview when you are unprepared. The competition is obviously high to be a Software Engineer at top tech companies like Google or Microsoft (or FAANG if you will).
7. You have done a couple of mock interviews.
This is, of course, optional. Many people don’t do it. Some don’t need it while others are afraid of them. In reality, they can be extremely helpful. I don’t think I have to explain all the benefits that they can provide. I strongly recommend getting some practice of writing code when someone is watching, writing code when you have to also articulate the thought process to the other person, and writing code when the clock is ticking. Mock interviews will help you test your preparation plus overcome your fear or anxiety about the interview. If at all you still don’t want to do those, at least practice thinking out loud and solving problems with a clock on the side. Record your own voice when solving the problem and listen at the end.
8. You know how to navigate in coding interview and how to get unstuck if you get blocked on some problem.
I have written two separate blog posts to cover these two items in details, so I would just refer you there instead of repeating the information.
How to navigate in a coding interview.
How to get unstuck in a coding interview and solve the problem.
9. If you can check all the above things and you have an interview scheduled, you are ready!
Yes, this is it. And it’s pretty much it. As I said earlier, a 100% preparation goal is an unrealistic one to have. On your day, zero preparation can get you a job and if it’s not your day, 100% preparation would not be enough. So just relax, being 80-90% prepared is already a very good sign. I recommend going to an interview with an open mind. Bombing an interview is not the end of the world and yes, even if it is a dream company. You certainly get multiple chances at the same company, so it’s not a big deal. Relax and have a good conversation with the interviewer. Don’t forget that you are interviewing the company as much as they are interviewing you. The company wants to hire you as much as you want to join the company. The company already values your experience and your brain, otherwise they wouldn’t be spending time (and in turn $dollars$) in interviewing you. You have so many reasons to be confident about acing the upcoming interview. Some last-minute tips –
- Have your interview schedule on your calendar.
- Read the email from the recruiter carefully. It will have a lot of information that can give you some hints.
- Have your phone charged.
- Make sure the shared editor (Google docs or Coderpad) link is accessible.
- Know if it is a video interview or phone. Know the correct link to join if it’s a video.
I hope that this list helps you as a checklist you can use to assess your interview readiness. Of course there might be some more things that are important for someone while someone else might think that some point is not as important. What do you think? What is your way of knowing that you are ready? Is there something that I did not add and you think is important? Let me know in the comments below.
Don’t forget to like, share the post and subscribe to the blog.