Translation and adaptation of the article Ace Your Technical Interview: What Got Me Into Google, Microsoft and More in The Startup community on Medium. Before the first interview for an internship, I had no idea that technical questions would also be asked there. I assumed that only a bunch of questions in the spirit of “tell us about yourself” await me on it. However, I wasn't ready for them either. I spent two hours at the career counseling center, trying to get some valuable advice out of everyone, and another two hours at home, rehearsing the answers to various questions. But when I came to the interview, the interviewer did not ask about my strengths and weaknesses. Instead, I was handed a marker and told to go to the blackboard. And I didn’t even think that they would first check my technical training! It took me by surprise. I did not know how to correctly answer questions and a few hours later received an email with a polite refusal. Fortunately, after this incident, I had many successful interviews. I've been to fifty technical interviews, and I've prepared a lot of my friends for them. My approach seems to be working well, as it has helped me and other people successfully complete interviews at companies like Google, Microsoft, Apple, Amazon, etc. I would like to help everyone personally, but there is simply not enough time for this. The best I can do is share a step by step guide on how to pass technical interviews. What can and cannot be done in such situations, I learned by trial and error. So here is a list of useful tips from me that I have compiled over several years of practice. I would like to help everyone personally, but there is simply not enough time for this. The best I can do is share a step by step guide on how to pass technical interviews. What can and cannot be done in such situations, I learned by trial and error. So here is a list of useful tips from me that I have compiled over several years of practice. I would like to help everyone personally, but there is simply not enough time for this. The best I can do is share a step by step guide on how to pass technical interviews. What can and cannot be done in such situations, I learned by trial and error. So here is a list of useful tips from me that I have compiled over several years of practice.
1. Don't jump in for test interviews
Usually people advise to take as many test interviews as possible - and they are right. But if you are unprepared, a test interview can be ineffective, scare you away, and even demoralize you. From experience I will say that if I interviewed someone who was not at all ready as a training session, they ended up feeling demotivated because they “floated” in questions and did not answer very well. Take the time to prepare better and understand what a technical interview is like. Here is a good example of a test interview on Google:
2. Ability to communicate > technical level
Many people prepare for technical interviews by sitting for hours on sites like LeetCode and Hackerrank. These are great platforms to practice. But it's better to digress a bit before you spend a lot of hours randomly solving problems that you think you will face in an interview. This is an inefficient approach: in an interview, you will come across at least one question that you have not seen anywhere before. There are better programmers among my friends than I am, and I've often wondered why I was good at testing my technical background and they (sometimes) weren't. The biggest difference between us is probably the fact that I spent a lot of time practicing my communication skills. Seriously, knowing how to solve the top 100 technical problems will not help if you can’t really explain your solution logic. It is very important to learn to formulate thoughts. At first, all this may seem heavy, awkward and unnatural, but practice helps. It's important to keep your technical background at a high level, but developing your communication skills is perhaps even more important. If you're running out of time before an upcoming interview, it's better to focus on communication than trying to re-learn the material that you studied for two years in computer science in two days. Before your next technical interview, try to learn the following: than trying to re-learn in two days the material that you studied for two years in computer science. Before your next technical interview, try to learn the following: than trying to re-learn in two days the material that you studied for two years in computer science. Before your next technical interview, try to learn the following:
2.1 Learn to ask clarifying questions
One of the main advantages of an interview is the ability to clarify the question you were asked. Typically, interviewers don't give all the introductory information, so you have to pry extra details out of them. You can't solve a problem without fully understanding what it is! To practice, you can take a few questions from technical interviews and come up with a series of clarifying questions for them. For example, if you are asked to sort a list, you might ask:
How to sort the list - in ascending or descending order?
What type of data does the list contain?
Could you give an example of what input and output should look like for this type of task?
Etc.
There can be many more questions - these are just a few examples. Be sure to specify different nuances: Ask for an example of input and output
Specify data type
Check if there are any restrictions on the range of values
Ask, have to deal with edge cases
Find out if you can use certain libraries and features of the language you are programming in
2.2 Learn to express thoughts
Since you've asked all the clarifying questions and know exactly what you need to solve the problem, it's time to learn how to correctly state the essence of your solution. If you start just writing code without explaining why you are doing it along the way, it will be difficult for the interviewer to figure out whether you are right or not. For this you will not get points “in offset”, not to mention the fact that you can end up writing the wrong solution. As you explain the logic behind your decision along the way, the interviewer can correct you in the right direction if you get a little off course. Before writing code, try this:
Tell the interlocutor about your possible solution - will you succeed in solving the problem “on the forehead” and can or can it be somehow improved
Speak your solution step by step using an example to explain the essence of how it should work
Divide the solution into several steps and write pseudo-code or “backbone” so that the interviewer understands your thought process
Test your solution with different edge cases to see if you've accounted for everything. Ask for the interviewer's opinion.
To practice, take a worked question from an interview and try telling the correct answer (solution) to a friend. If you can't find a friend - take a plush animal or any other object and practice on them.
3. Upgrade your technical knowledge and skills
Since you have learned how to communicate properly in an interview, you can throw all your strength into pumping technical knowledge. Be sure to brush up on information about algorithms and data structures. Make sure you understand key topics such as data structures, sorting, working with algorithms, bitwise operators, Big O notation, etc. The list of things to know differs depending on the position you are applying for.
4. Practice!
Now, having pumped the necessary skills and knowledge, you can throw all your strength into practice.
The CodeGym course has many "puzzle" tasks and entire projects for creating applied solutions.
Try not just to write a solution, but to think about the steps: mentally ask clarifying questions, think over the structure, and only then write the solution. This will help you feel more confident in the interview, and confidence is everything!
5. What should I do if I get stuck in an interview?
Now let's imagine that you got into a real interview and suddenly realized that the question had baffled you. You have no idea what to do and how to solve the problem. You want to just run out of the room and not come back. I understand that I have been in situations that still give me nightmares. But don't worry - hope is not lost yet. This happened more than once during interviews, but they usually ended with an offer. It's hard, it gets on your nerves, but anything is possible. Take a break and think. Take a breath, put your thoughts in order. Perhaps you will have a "hook". Practice the solution with a simple example.Try to create a simplified version of the solution on a similar problem, but simpler, paying attention to step-by-step actions. For example, if you need to sort a list - what do you do? You find the smallest number and put it first. How would you implement this solution in code? Tell me about your personal decision. If a full-fledged solution does not emerge, it's okay. Tell the interviewer about it, but also let him know your thoughts. Does this task resemble any of the ones you have faced? Does it seem like you need to use a specific data structure to solve it? Share the logic you are guided by. Be honest.If you are sure that the question you were asked is from an area of knowledge unfamiliar to you, tell the interviewer about it. Say that you are ready to look for a solution, but so far you lack the necessary skills. One day I was asked a question related to network security. At that time, I had no practice in this area, which I told the interviewers about. They explained the necessary basics to me so that I could cope with the task. You are being interviewed by real people :) They perfectly understand you, because they themselves have been in similar situations. That's all the advice that I have developed over several years of interviews. They helped me and my friends get into top companies. Good luck searching!
GO TO FULL VERSION