Coding interviews are a mixed bag. It depends on the company, the interviewer, your skill set, etc. There’s no silver bullet for acing the interview, no matter how much we wished. It essentially comes down to how you prepare.
This may seem trivial, but you’d be surprised at how many candidates wait till the last minute to start laying out their plan. Here, we’ve outlined the top 5 things you should do to prepare for the interview.
Here’s what we’ll cover today:
Study the types of coding questions asked by the top interviewers.
At most companies, they don’t require you to interview in one specific language, but they do require you to interview in one and stick with it. You should be familiar with the syntax, nuances of the language (i.e. memory management), and the most commonly used collections, libraries, etc. You should also know how to test your code, as well as come up with corner cases and edge cases.
But what if I’m comfortable in more than one?
Here are some guidelines for selecting your language:
Choose the language you’re most comfortable with… Can you easily go from problem to solution?
If someone asked you to sit down and write a solution to a problem in 25 minutes, what language would you go with? Think carefully about this. Some languages have different built-in types and paradigms, meaning the language you choose can change how you solve the problem and what problems you get asked.
As an example, common interview questions asked in Java deal with manipulating a linked list. However, in Python, lists are a built-in datatype so you usually won’t see questions like this.
Ultimately, you shouldn’t let this decide what language you choose, but if you’re struggling to decide, choose the one that will make your life easier. This is partially why some developers choose Python over Java or C++; there’s a lot of extra fluff. Consider the setup required to even start writing your solution:
Interview pass rate by language
Some languages have a better pass rate than others. Triplebyte scraped together data and found that those who interview in Ruby, Swift, C#, and Python have a better success rate in interviews than those that choose Java or C++. This could be due to a few reasons, the main being that they’re dynamic languages. With that said, you should choose the language you have the most experience in and the one you’re most passionate about.
Consider interviewing in a dynamic language
Why? Well the syntax is compact, the typing is flexible, and they’re considered permissive and expressive making them a great option when trying to cram lines of code onto a whiteboard.
Know the fundamentals like the back of your hand
You should be very familiar with the types of data structures and algorithms available to you as well as when to use them. You should know string operations, array, and list operations. For example, you should know how to split a string, how to transform a char into a string, and even more simple things like how to read/write to/from a file, and how to declare and use 2D arrays.
Lastly, find out what languages the company uses and lean towards those
Don’t fret if the language you’re planning to use is not one the company uses, especially if you’re a new grad where you’ll learn new languages and skills on the job. When they interview you, they may ask if you know any other languages, this is to see whether you’re eager and willing to learn.
Common languages at some top companies:
This is up for debate and depends on how much you already know and your comfortability. It may seem like a lot, but three months is usually the sweet spot for prep time. There’s a lot to cover, from algorithms and data structures to system design and object-oriented design so it’s best to space out your practice and take the time to understand each concept thoroughly.
When studying for three months, there will be days when you are unmotivated, in times like this it’s best to set a routine and hold yourself to it. If your ultimate goal is to land the job, you need to always be progressing towards that goal. You’ve probably heard the concept of “no zero days”; little progress is better than none at all, so even if it’s 30 minutes a day that will be enough to keep you on track.
Find a routine that works for you. We recommend the 3 Month Coding Interview Preparation Bootcamp as a tried and true routine that has worked for software developers who’ve landed jobs at Facebook and Microsoft:
While you’re beginning your practice, it’s important to keep these guidelines in mind:
Start timing yourself. Ideally, you shouldn’t spend more than 20–30 minutes solving any given problem. (This probably won’t be possible for all questions right away.)
Don’t be discouraged if you are not able to solve a problem within the allocated time. Solve it even if takes you a couple of hours, without looking at the solution. This will help you build the confidence that you can solve it and then you can focus on solving them faster later.
Start thinking about the Big O complexity of each solution. You will have to articulate the complexities in the actual interview clearly, so it’s better to start now.
Each company interviews a little differently. They all have their own values, as well as methods and styles for interviewing. As an example, Google waits for you to have 3-5 years of experience before they ask system design questions, whereas Facebook will ask it to new grads.
Study up on the company
Some companies like Google and Facebook put right on their career page what you should study. This is really valuable information that can relieve some anxiety when you’re preparing. Also, almost every company has their values and culture on display for you to check out. Again this is valuable information that shouldn’t be overlooked. According to Triplebyte, about 50% of candidates who fail interviews at companies fail for non-technical reasons. Culture plays a big part when companies evaluate you, a great example of this is Amazon’s “Bar Raiser” who is an expert in evaluating you against their 14 core principles.
Find out what different products they sell, try them out if you haven’t used them, and be sure to have some opinions about what you like and dislike (make sure you explain why and what changes you’d make) about the product.
Learn how they interview
Are you required to take an online assessment? Is the coding portion whiteboard or laptop-based? What do they look for in candidates?
Learning how a company interviews will help you prepare accordingly, and can greatly reduce your anxiety. To find out how some of the top companies interview, you can check out detailed interview guides on CodingInterview.com.
As briefly mentioned in the previous section, behavioral/cultural interviews are just as important as the technical portion, and in some cases even more so. As a best practice show how what you’ve done relates to the position, and tailor it to the job description as it will better demonstrate how you’re a fit for the role. It’s also a good idea to show how the work you’ve done can translate into their core values.
Here are some basic rules in cultural fit interviews:
Show interest in the product, and demonstrate an understanding of it.
Be ready to describe scenarios where you had a conflict with your teammates or managers and how you resolved it. Please don’t say that you never had a conflict if you’ve been working as a software engineer for a few years.
Talk about what you want to accomplish in the company
Talk about some of your recent / most significant accomplishments as an engineer
Talk about some particularly crazy/difficult bugs that you encountered.
Before scheduling your interview, it’s a good idea to practice what it’s like to be in a real interview. Have a programming buddy? Grab them and ask them to sit down with you for an hour.
This is often overlooked, but success in your behavioral interviews is just as important as your coding interview.
These 5 strategies are key to standing out to modern recruiters. Above all else, hands-on practice with different types of real-world interview questions is the best way to prepare yourself.
By the end of the course, you’ll have the real-world context you need to adapt and solve any problem, even variations you haven’t seen before.
Join a community of more than 1 million readers. A free, bi-monthly email with a roundup of Educative's top articles and coding tips.