While inconsistencies remain, you can still dial into an online interview prepared and brimming with confidence if you take time to learn what your interviewer is looking for. Generally speaking, this boils down to two things:
From these two points, you can reverse engineer a plan of attack when preparing for interviews. How can you demonstrate that not only can you write beautiful, functioning code, but that you'll also be a great fit for the team, even when interviewing from afar? Here are three tips to help you crush your online interview:
Technical interviews—and technical online interviews—are skills that can be practiced. And according to a post by Facebook engineer Andrew Rothbart, one of the best ways to practice that skill is through coding contests:
“You’ll learn how to critically analyze your work. Because you don’t get credit for solving a problem until the code you write can generate the correct results for a large input set (and you don’t know what that input set looks like), you’re forced to think about things such as time complexity, memory usage, and nasty corner cases.”
This means that you’ll get better at decomposing problems and writing bug-free code, en route to becoming a faster and more confident programmer. Rothbart wrote that, from his experience, “it turns out that many technical interview questions are interchangeable with the types of questions that show up in programming contests.”
Need somewhere to start? Try the coding challenges and contests on HackerRank. Many of the companies you’ll be interviewing with are the same ones hosting these contests, so it'll give you a leg up in understanding the skills they're looking for.
As a software developer, you'll like work on a team of people with a diverse array of experiences and assumptions about coding, logic, and design. So as you go through your online interview, it’s thoroughly important that you communicate the “Why” behind your decisions. Why did you take that shortcut? Why did you write it this way?
Getting used to explaining your thought process out loud helps in two ways. First, it forces you to get a grip on complexity by breaking things down to simpler component parts. If you can’t clearly explain the reasoning for each decision you make, you might not actually understand the problem at hand. In an online interview, talking through your decision will show the interviewer your command of the problem. They'll be able to spot the difference between candidates who truly understand the problem, versus those hiding behind technical jargon.
Second, justifying your choices helps the interviewer understand the assumptions you're testing, your approach to problem solving. It's a great chance to show off the unique perspective you bring to the table.
The developer community is amazing at sharing its knowledge. So why not tap into this deep well of knowledge? No listicle is going to be comprehensive enough to cover every case, but there are thousands of engineers out there who want others to learn from their specific experiences.
For example, if interviewing with Airbnb, you should know that they value inventive candidates with an eye for design. A Foursquare interview might have you implement a Foursquare leaderboard in a scripting language. Dropbox especially cares about clean code and side projects.
The key to success at an online interview is practice and preparation. So we recommend you get started on coding challenges on HackerRank, think out loud as you code, and read up on how your favorite companies interview candidates.
Editor's Note: This post was originally published in September 2014. It was updated for freshness in 2020 by the HackerRank editorial team.