JavaRush /Java Blog /Random EN /Aerobatics in a technical interview: how I got into Googl...

Aerobatics in a technical interview: how I got into Google, Microsoft and more

Published in the Random EN group
Translation and adaptation of the article Ace Your Technical Interview: What Got Me Into Google, Microsoft and More in The Startup community on Medium. Aerobatics in a technical interview: how I got into Google, Microsoft and more - 1Before my first internship interview, I had no idea that technical questions would also be asked. I assumed that there would only be a bunch of “tell me about yourself” questions waiting for me. However, I was not properly prepared for them either. I spent two hours at the career guidance center trying to get some valuable advice out of everyone, and another two hours at home rehearsing answers to various questions. But when I came for the interview, the interviewer did not ask about my strengths and weaknesses. Instead, I was handed a marker and told to go to the board. And I didn’t even think that they would check my technical skills first! This took me by surprise. I didn’t know how to answer the questions correctly and a few hours later I received an email with a polite refusal. Fortunately, after this incident I had many successful interviews. I have been to fifty technical interviews and prepared many of my friends for them. My approach seems to work quite well, as it has helped me and others succeed in 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 ace technical interviews. I learned what can and cannot be done in such situations through 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 right into mock interviews.

People usually advise doing as many mock interviews as possible—and they're right. But if you're unprepared, a mock interview can be ineffective, intimidating, and even demoralizing. I can tell you from experience: if I interviewed someone who was completely unprepared as a practice, in the end they felt demotivated because they “floated” in the questions and did not answer very well. Take the time to prepare better and understand what a technical interview is like. Here's a good example of a mock interview at Google:

2. Communication skills > level of technical training

Many people prepare for technical interviews by spending hours on sites like LeetCode and Hackerrank. These are great platforms for practice. But it's best to take a little time off before you waste a bunch of hours haphazardly solving the problems you think you'll face in an interview. This is an ineffective approach: in an interview you will come across at least one question that you have not seen anywhere before. Some of my friends have stronger programmers than me, and I was often surprised by why I aced tests of my technical background while they (sometimes) did not. The biggest difference between us is probably that I spent a lot of time practicing my communication skills. Seriously: knowing how to solve the top 100 technical tasks will not help if you cannot clearly explain your solution logic. It is very important to learn to formulate thoughts. At first, all this may seem difficult, awkward and unnatural, but practice helps. It's important to keep your technical background up to date, but developing your communication skills is perhaps even more important. If you're pressed for time before an upcoming interview, it's better to focus on communication than trying to redo the material you spent two years studying in computer science in two days. Before your next technical interview, try learning this:

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. Usually those who conduct interviews do not give all the information, so you have to extract additional details from 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 a list - in ascending or descending order?
  • What type of data does the list contain?
  • Could you give an example of what data input and output should look like for this type of task?
  • Etc.
There may be many more questions - these are just a few examples. Be sure to clarify various nuances: Ask for an example of input and output
  • Specify the data type
  • Check if there are any restrictions on the range of values
  • Ask if you 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

Once you've asked all the clarifying questions and know exactly what you need to solve the problem, it's time to learn how to properly communicate 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 wrong. You will not receive points for this, not to mention the fact that you may end up writing the wrong solution. When you explain the logic behind your decision along the way, the interviewer can point you in the right direction if you get a little off track. Before writing any code, try this:
  • Tell your interlocutor about your possible solution - will you be able to solve the problem “head-on” and is it possible or can it be improved somehow?
  • Walk through your solution step-by-step with an example to get the gist of how it should work.
  • Divide the solution into several steps and write pseudocode or “skeleton” so that the interviewer understands your thought process
  • Test your solution with different edge cases to see if you've covered everything. Ask for the interviewer's opinion.
To practice, take a worked interview question and try to tell the correct answer (solution) to a friend. If you can't find a friend, take a stuffed animal or any other object and practice with it.

3. Improve your technical knowledge and skills

Once you have learned how to communicate correctly in an interview, you can put all your energy into improving your technical knowledge. Be sure to brush up on algorithms and data structures. Make sure you understand key topics such as data structures, sorting, working with algorithms, bitwise operators, Big O notations, etc. The list of things you need to know differs depending on the position you are applying for.

4. Practice!

Now, having upgraded the necessary skills and knowledge, you can throw all your energy into practice.
The JavaRush course contains many “puzzle” tasks and entire projects for creating application solutions.
Try not just to write a solution, but to think through the steps: mentally ask clarifying questions, think through the structure, and only then write the solution. This will help you feel more confident in the interview, and confidence is king!

5. What to do if you “stalled” during an interview?

Now let’s imagine that you got into a real interview and suddenly realized that the question had stumped you. You have no idea what needs to be done and how to solve the problem. You want to just run out of the room and not come back. I understand - I have been in situations that I still dream of in nightmares. But don't worry—all 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 “clue”. Test your solution with a simple example. Try to create a simplified version of the solution to a similar problem, but simpler, paying attention to the 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 at the beginning. How would you implement this solution in code? Tell us about a private solution. If a full solution doesn’t emerge, that’s okay. Tell the interviewer this, but also let him in on your train of thought. Does this challenge resemble any you have encountered? Does it seem like you need to use a specific data structure to solve it? Share the logic that guides you. Be honest. If you are sure that the question you were asked is from an area of ​​knowledge that is unfamiliar to you, tell the interviewer about it. Say that you are ready to look for a solution, but that you do not yet have the necessary skills. I was once 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 to me the necessary basics so that I could cope with the task. You will be interviewed by real people :) They understand you perfectly, because they themselves have been in similar situations. These are all the tips that I have developed over several years of interviews. They helped me and my friends get into top companies. Good luck searching!
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION