Comic courtesy of XKCD, via Creative Commons License

The goal of a coding or a technical interview is to spend a little more time trying to solve problems that are difficult to do over the phone. These interviews are typically done in person or through Skype. Whenever possible, we prefer a face to face interview. This also enables us to determine if there is a good social and cultural fit with our team. If you do come onsite, ask to be shown around the office so that you too can determine whether or not our environment meets your needs.

If you are interviewing for a technical position, it is a safe bet that we will be asking you questions around algorithms and coding. If you area UI/UX designer, you may be asked to take some sample designs and show us how you could translate them into front end code.

We hope this post helps you get thinking about what we are expecting and helps you prepare.

Understand The Problem

Right after you’ve been asked a question, take a moment to think it over. This isn’t Jeopardy and no one will beat you to the buzzer. Sometimes, it helps to reformulate the question and re-state it so that you can hear yourself articulate the problem in your own words. The interviewer will be impressed that you got the problem — we’ve done enough interviews where the interviewee was already checked out.

Questions usually have many correct answers. Some answers are elegant. Some are efficient. Some just get the job done. Start with the last one. Figure out the simplest solution that would solve the problem (or the majority of the problem). Get that answer out there and then start sketching out refinements from there.

Think Out The Solution

Here is  a surprise tip. Interviewers are usually not interested in knowing the correct solution — I mean, they came up with the question so they already know the answer. What they are dying to know is how you get at your solution. It is super important that you talk out your rationale towards the answer.

Use the whiteboard. Get up and start sketching out the architecture of the solution and then feel free to use pseudo-code to show how you would tackle the problem. Feel free to use your favorite programming language to do this. The interviewers will keep up with you and they won’t be worried about syntactical errors.

At a minimum, you want to write down and enumerate the following:

  • Assumptions you are making

  • The general architecture of the overall solution

  • A first pass solution that highlights the algorithms and data structures you plan on using

  • Then iterate multiple times in ever increasing granularity as you decompose the problem into smaller, solvable problems

Don’t Forget The Unasked Question

Most interviewers are so focused on determining your analytical and algorithmic skills, they will often simply forget to ask you the big picture questions about security and performance. If you are applying for a senior technology role, this unasked question should always be proactive answered:

  • What is the performance trade offs of your solution? If you’re working with large data sets, is the performance O(n), O(n²), O(n!) or O(log n)? Are there multiple solutions that trade off engineering complexity for performance?

  • How are you protecting the data? If the dataset contains sensitive or classified material, is the data encrypted at rest? If it is a publicly facing login page, what are the usual techniques to head of a SQL injection attack?

As you are answering your question, feel free to ask for input from the interviewer of what they think so far. If you’ve gone off track, they will gently guide you back to the answer they are looking for. If you have brought up a discussion topic they had not anticipated, they will appreciate the intellectual diversion.

To sum it up, our interviews are not designed to trip you up. Instead, they are designed to provoke a thoughtful discussion about the pros and cons of various solutions to any given problem. So relax, start sketching on the whiteboard and you will find that just talking through to a solution will put you on the right track.