Why Coding Interviews?

Most of your time as a software engineer will probably be spent coding or reviewing code, so it is important that we see how well you can do it during the interview process. In addition to assessing your coding skill, coding interviews also let us see what it is like to collaborate with you on a difficult problem.

With a coding question, what are interviewers trying to judge in a candidate?

Through a coding question, the interviewer is judging three main things: critical thinking, attention to detail, and working attitude.

Critical thinking

  • The most challenging part of software engineering is solving difficult problems. In an interview, we do not have the time to partner with you to solve one of our company’s real-world problems. The next closest thing is to solve a difficult problem with you. Therefore, most coding interviews will include a difficult algorithmic component to assess how you solve challenging problems.

Attention to detail

  • In coding, a single mistyped character can break a program in many ways. Having you actually write code during an interview lets us see how well you do this, including how well you are able to review and correct your own mistakes.

Working attitude

  • Nobody likes to work with people with a bad attitude or incompatible culture. During the process of the interview, while working through a difficult problem and while pointing out mistakes or issues in your thinking/solution, we see how you respond and interact with the interviewer. This helps us assess what kind of peer you would be like to work with.

What can candidates do to prepare for interviews?

As with any kind of test, there are test-specific preparations you should make, but more importantly are the broader learnings you should engage in to push your career to the next level. There are many books / sites dedicated to this topic, but here are some of our recommendations:

Interview-specific skills

  • Practice interviewing: Do coding interviews on a whiteboard with your friends first, then acquaintances that you do not know that well, and even strangers if you can! This will help you practice solving a problem with a stranger and explaining your thoughts out loud.
  • Write code by hand: Some IDEs write a huge portion of code for you, but there are environments/languages where these IDEs can’t be used. We prefer hiring people that can code without any support.
  • Write code on a whiteboard: You only need to do this once or twice to figure this out. Don’t let the interview be your first experience doing this.

Job skills

Learn how to think about algorithms:

  • Most candidates should have done a lot of this during school.
  • Websites like geeksforgeeks or leetcode or hackerrank, etc. are all excellent resources for practicing algorithms.
  • During your work, you usually won’t have a beautifully stated dynamic programming question to solve, but the concepts of caching, precomputing, and removing redundant work will come up constantly.

Focus on how you figure out these algorithms from first principles

  • Do not just memorize the questions/solutions you see.
  • We will not proceed with a question if we suspect you’ve seen it before (it’s quite easy to tell when this happens), so it’s not useful to memorize algorithm questions.