PREPARATION. PREPARATION. PREPARATION. Preparation is the key to be successful in any interview and land that job or internship that you always wanted. When you decide you need a job, the first thing you do is evaluate your preparation level. Self-assessment can be tricky. Sometimes we are over confident, and sometimes we are under confident. Knowing what you know is the key. Before we proceed further, I am assuming that you are well familiar with Computer Science fundamentals and can at least solve how to reverse a linked list using two pointers and using recursion without any hints. If you are not sure you can answer these directly, go to the section ‘Prepare from scratch’ explained below first and then come back and continue with the rest of the sections.
How to know what you know
The best way to judge yourself is to have a mock interview or multiple mock interviews with the genre of questions similar to what the software companies ask. The Internet is filled with interview questions of every company. For example, head over to CareerCup, select the company from the drop-down.
And you will get tons of interview questions of that company. Ask a friend to create four set of two questions and then ask you to solve them on paper or whiteboard. If you don’t want to bother anybody, then do it yourself, just don’t look at the solution yet. The advantage of having a friend take your interview is you get hints if you are stuck on some questions, but this is not a big deal at this stage of preparation. This exercise takes around a couple of hours.
After you solve or try to solve all the questions, look at the solutions. Judge yourself how far did you go. Were you near the solution and a little hint would have taken you all the way or were you headed towards a wrong direction? Don’t worry if you don’t get even one question correct. Keep calm and patient. If you haven’t interviewed for a long time, then chances are you might not get even one question correct at this stage. What you get from this exercise is the overall idea of the type of questions asked and how long you would need to get into battle shape. Other resources to get questions for mock interviews are:
Create a study plan. Based on the mock interview assessment, create a thorough study plan. A study plan should include:
- Equal time for topics you are comfortable with and significant time for topics you are not comfortable.
- Self-assessment days where you create a set of unseen questions for yourself to solve in an interview like environment, similar to the first mock interview, to judge yourself and if needed course correct your preparation plan.
- Wiggle room for any unforeseen circumstances.
- Make sure to review the other candidates’ interview experience in careercup or just google.
I like to divide software engineer interview questions into one of these topics:
- Arrays (include stacks and queues)
- Linked List
- Misc. data structures like trie etc.
- Language specific questions
- Company specific questions
I try to divide my time equally on these topics, but I must confess I need more time to prepare algorithms than language specific problems.
By “company specific questions” I don’t mean going through history and try to find more about the company, this you would have done before you applied, I mean going through the past experiences of the candidates who interviewed at this company. Some companies have a culture-fit round which is extremely tricky if you don’t prepare, they will give you a hypothetical scenario or an open ended non-technical question and ask you how will you go ahead and solve this. Pay special attention to these type of rounds. You may have performed well in the technical rounds, but chances are you may completely fail the culture-fit round, if you are not prepared, and get yourself rejected.
Prepare from scratch
If you didn’t get even one question correct in the first mock interview, then you need a different plan. The very first step will be to start leetcode practice questions. Sort the problems, easy first, and start solving. Go through all the easy and medium difficulty questions. Look at the solution only when you think you have honestly tried but failed. One note here, solutions of the problems in leetcode may not always be interview friendly, some of them are just to get the best time possible in the online judge, avoid these solutions and go for the one which provides a better algorithm. Once you are confident, create the study plan described in the ‘Next Steps’ above.
How do I do it
When I start to look for a new opportunity, I do a self-evaluation first. I randomly pick up a couple of sets from geeksforgeeks Amazon archives. I try to answer each round in 45 mins. In the end, I evaluate myself by looking at the solution and see how far was I from the ideal solution. I am honest to myself since I don’t want to mislead myself. Based on my self-evaluation, either I postpone the interviews and go to leetcode and solve the easy, medium and some hard questions, or I go to this page and prepare topic-wise according to my study plan as I described in the previous ‘Next Steps’ section. I devote equal time to all the topics with a little more emphasis on algorithms and design problems.
When I interview ultimately depends on how comfortable and confident, I am with the interview questions.
I hope this helps you to reduce your anxiety, calm your mind and create a methodical approach to interview preparation.