Do you still have trouble getting shortlisted at some or all of the top tech companies?
Tips to prepare for your software engineering interview
Maximize your chances of being shortlisted
Your resume could be the issue.
Your resume is the single most important entry point to getting shortlisted in major tech companies. After getting shortlisted, your past achievements become markedly less important as compared to your coding interview skills – which as we know, can be methodically learnt. Being able to frame your past achievements well enough to get through the screening stage is hence very important.
Unfortunately, even the most qualified candidates I know personally don’t know how to write a good resume and fail to get shortlisted. The truth is that when many of us don’t get shortlisted at top tech companies, we tend to think that we were under-qualified – but in most cases, it’s probably just the lack of good framing.
Find out the interview format
You may encounter various interview formats in your software engineer interviews (from early to late stage):
Quizzes are meant to be a first-pass filter as a quick and dirty way of weeding out extremely weak (or even non-technical) candidates. They are structured questions and have clear-cut answers which makes them possible to be administered by recruiters/non-technical folks or automated graders. They are typically done early in the process.
Online coding assessment
Like quizzes, online coding assessments are usually given early in the process. An algorithm problem is given with well-formed input and output and candidates are expected to write code in an online coding interface to solve the problem.
Take home assignment
There have been numerous debates on whether asking algorithm questions are a good way of assessing individual abilities as they aren’t exactly the most relevant skills needed on a day-to-day basis at a job. Take home assignment is a format designed to address the shortcomings of the algorithm interview by getting candidates to work on larger projects which allow them to demonstrate software design skills.
However, this interview format takes up more time from both the candidates and the company and hence it is not as commonly seen in large companies where they have a high volume of candidates. This format is more common among startups and small companies.
Phone screen interviews
Phone interviews are the most common format and every candidate will face this at least once while interviewing. You will be asked to speak with an interviewer either over a phone call or VoIP (BlueJeans/Skype/Google Hangout). A question will be given to you and you will work on that question using an online collaborative editor.
You are usually not allowed to execute the code even if the editor supports execution. So don’t rely on that for verifying the correctness of your solution. Formats would differ slightly depending on the roles you are applying to. Many companies like to use CoderPad for collaborative code editing. CoderPad supports running of the program, so it is possible that you will be asked to fix your code such that it can be run. For front end interviews, many companies like to use CodePen, and it will be worth your time to familiarize yourself with the user interfaces of such web-based coding environments.
Check out coding interview best practices as well for do’s and don’ts before your phone screen interviews.
If you have made it to this stage, congratulations! This is usually the final stage before an offer decision. Candidates who made it to the onsite stage will be required to have an in-person interview at the office. If you are an overseas candidate, companies might even fly you in and pay for your accommodations!
The onsite stage usually consists of multiple rounds (coding, system design, behavioral) and is expected to last for a few hours. Since you are onsite, it is possible that you will be asked to do a whiteboard exercise with an interviewer, usually either solving an algorithm question or a system design question. It is also possible that you have to bring your own laptop and work on a project/solve a coding problem on the spot.
For onsite interviews at smaller (non-public) companies, most will allow (and prefer) that you use your own laptop. Hence it is important that you prepare your development environment in advance.
If the company provides lunch, you might also have a lunch session with an employee where you can find out more about the company culture.
Pick a programming language
With your resume done, the next step of your software engineering interview journey is a simple one and won’t take long – decide on a programming language. Unless you’re interviewing for a specialist position like mobile or front end where there are domain-specific languages, you should be free to use any language you want for the algorithmic coding interviews.
Read more on programming languages for coding interviews: Picking a programming language
Study and practice for coding interviews
The next and most important step is to practice solving algorithm questions in your chosen programming language. While Cracking the Coding Interview is a great resource, I prefer learning by actually solving problems.
Coding interview study plan
The recommended time period to set aside for coding interview preparation is 3 months (11 hours a week i.e. 2-3 hours a day) for a more holistic preparation.
Resources to use in your practice
In the market, there are plenty of resources vying for your attention, plenty of them just vying for your money but not providing any value.
Try out mock coding interviews (with Google and Facebook engineers)
Coding right in front of your interviewer can be a nerve-wracking experience especially if you have never done it before – which is why getting hands-on experience is so important. Even better – if you want to have an easier transition into real world coding interview – you could view recorded interviews and see what phone interviews are like.
Prepare for the system design interview
If you are a mid or senior-level candidate, you may expect system design questions as part of your technical interview. They aren’t covered adequately by LeetCode and good resources are still harder to come by.
The objective of system design interviews is to evaluate a candidate’s skill at designing real-world software systems involving multiple components.
Prepare for the behavioral interview
Every top tech company has at least one round of behavioral interviews for software engineers. Typically, behavioral interviews for software engineers include: Sharing about details of previous experiences on resume Providing examples of past situations and behavior that demonstrate certain behavioral attributes (e.g. conflict management, data driven) Sharing of ambitions and career plans
Discussing technical achievements and high-level programming topics
In a typical technical phone interview, you’ll have a conversation with a senior member of the team you would join or with the manager of that team. You can expect a lot of this conversation to be focused on two things:
- Recent problems you have experienced in your current position and the solutions you implemented for them, and
- General language familiarity (such as when would you want to use an array instead of a hash table (object)?)
What is the on-site interview all about?
The final stage of the interview process is usually referred to as the on-site. This is often the most in-depth and the most important to perform well at.
One of the main questions the company would like to have a good answer for is, how does this person work? The answer to this question is usually echoed through multiple levels as well, personal, technical, and professional.
Companies seek this answer by giving the candidate various exercises, technical and interpersonal, to gauge your skills and how well you will fit in at their company.
Depending on the company this interview can include various elements, but a few that are most common are:
- Pair programming
- Take-home assignments
Excel during your pair programming session
One of the most common methods of gauging your skills is to pair program with a member of the team you might work with.
This session is usually 20 to 30 minutes and the problem you are given is generally something you will see on the job at this company.
There are a few things to keep in mind if you have a session like this:
- Try to stay calm and remember that you are interviewing here for a reason, they like you and see promise in you.
- Communicate out loud as much as possible, even if you think you are talking too much. It’s better to over-communicate in these exercises than to sit in silence typing away at the keyboard.
- Don’t be afraid to ask questions, they’re on your side! The interviewer has probably left out critical details on purpose to test your communication skills while working with other developers.
Ultimately, try and be conscious of the fact that this company sees promise in you on a personal and technical level. Be yourself and be confident!
If the company does not have a pair programming exercise included in their process, another common exercise is to give you a project or a collection of problems to solve on your own.
Crush your take-home assignment
If the company wants to gauge your work through the lens of how you work as an individual, they might ask you to complete a take-home assignment.
Regardless of the style of take-home assignment, there are a few things I think you should keep in mind to increase your chances of success:
- Ensure you are in a distraction-free area for the entire allotted time
- Put any distraction-prone devices away
- Read all instructions to the problem(s), and then read them again
If your assignment is timed and you do not think you will have enough time to finish, write comments throughout the assignment with what your next steps would be if you had more time.
To be honest, a lot of these assignments are supposed to take longer than the scheduled time to complete.
The interviewer is always primarily focused on how you communicate, not that you can write code the fastest, or solve every algorithm you see.
Conquer the whiteboard exercise
Sometimes a company would prefer to take a look at your technical skills and ability to break down complex problems in more of an abstract way. The most common way of testing a candidate this way is by having them complete a whiteboard exercise.
This method of interviewing might be the most talked about, and the most feared. If you are asked to use a whiteboard to solve a question remember this: they are (usually) far more interested in how you communicate your problem-solving process, not that you can solve the problem.
If the problem they give you seems really hard, that is not because they are trying to stump you. They want to get a feel for how you tackle a hard problem. If you don’t end up solving the problem, that does not mean you blew your chance.
If you keep these things in mind during this exercise, it will increase your chances of impressing your interviewer:
- Repeat the question back to the interviewer
- Ask clarifying question about edge cases
- Confirm optimal results of the problem
- Write your code legibly
- Communicate each step you take
If you answered the question successfully by the time the session ends, ask your interviewer if that was the solution they commonly got. If not, ask what other candidates have done or what you could have done differently. This shows that you are engaged and curious.
If you did not answer the question successfully, write comments throughout the code about where you might continue to find the solution if you had more time. Again, a lot of these sessions are not focused solely on getting the “right” answer, but to get a good idea of how you approach new problems.
Practice interviewing, without the pressure
As I mentioned earlier, interviews are tough and can be hard to prepare for. However, I am a firm believer that the best way to ensure a higher chance of success is to practice, practice, practice.
Have you ever practiced a big presentation for school in front of friends or family? You might have still been nervous but, it sure does help you feel more comfortable speaking about your topic.
Interviewing is also a presentation, and the concept of practice runs are just as important. In the 2020 world, most interviews are completed remotely, which makes performing mock interviews feel more real.
If you know someone who is currently in the software industry, I would ask them if they would be willing to set aside an hour or so a week to perform these mock interviews with you. If they currently work in a similar role that you are interviewing for, even better!
Interviews are nerve-racking, but I am confident as you complete more of them your confidence and comfort level will increase.
Why is it important to choose Entri?
- Excellent online platform for all the Competitive Exams.
- Provides updated materials created by the Entri Experts.
- Entri provides a best platform with full- length mock tests including previous year question papers.
- You can download the app for free and join the required classes.
- Entri wishes you all the best for your examinations and future endeavours.
“YOU DON’T HAVE TO BE GREAT TO START, BUT YOU HAVE TO START TO BE GREAT.”