Coding in the Car: Technical Interview Prep
- Sep 24, 2017
- 4 min read
Updated: Feb 29, 2020

Anyone interested in applying for an internship or job as a software developer has likely heard the term "technical interview."
A technical interview is typically an hour-long session during which the candidate is either tasked with solving a coding problem or is expected to discuss code she/he has written. Some companies ask candidates to complete multiple technical interviews, during which different problems are presented.
The nature of this interview can be nerve-wracking, as the answers to questions don't seem as obvious as those characteristic of a typical interview. Responding to, "What is your educational background?" may seem easier than developing code on the spot to handle a string concatenation problem. The technical interview, though, is nothing to feel anxious about. By answering common questions, such as, "How do I prepare?", "What if I don't know the answer to the question?", and "What if I don't have code to discuss?" the process can be demystified.
Before the interview: How do I prepare?

Choosing a Language
When your technical interview is scheduled, you will most likely be able to choose which programming language to write your code in. If you know Python inside and out, choose to be interviewed in Python. If Java is your favorite language and memory allocation in C still occasionally confuses you, then choose Java. The language you choose is not important. What is important is that you understand how to write effective code in your language of choice.
Preparation
Once you have chosen a language, you will want to prepare for the interview. Here's the good news: all of the time you have spent learning your language counts towards your preparation time. But, just as the SAT and ACT have their prep books, technical interviews have theirs. Cracking the Coding Interview is a comprehensive guide that not only discusses the structure of technical interviews but also provides sample problems and solutions.
During the Interview: What if I don't know the answer?

A technical interview begins with the interviewer presenting a problem to the applicant. The applicant is then expected to work out the solution either on a whiteboard, if the interview is done in person, or in a shared document, if the interview is done over the phone.
If the solution with the best runtime immediately comes to you, that's fantastic, but if it doesn't--or even if it does--here are some tips to keep in mind.
Technical Interviews: Not Like Academics
Here's how a technical interview is not like an academic assignment:
You don't have to get the correct solution. It is far more important for your interviewer to see your thought process.
Your first attempt doesn't have to be perfect. If you think of an answer but know that the runtime could be improved, begin by developing your imperfect solution in code. After you have done this, you can always make the solution better and more robust.
Keep Talking
One point that is repeatedly emphasized about technical interviews is to keep talking. If you are going to implement a suboptimal solution to start and then tweak it to improve the runtime, say that this is what you're doing. If you need clarification of the question you are asked, then ask your interviewer.
If you don't say anything, your interviewer will have no idea what your thought process is, especially if the interview is conducted over the phone. For some, describing code out loud while it is being written is natural. If it's not for you, spend some time developing this skill, so that the interview feels more natural.
Test Your Code
When you are done developing your solution, run through some test cases. These should be simple examples that you can describe and execute relatively quickly. Testing your code is useful for two reasons: it shows the interviewer that you understand how to test and debug code, and running the tests may help you find any mistakes you made during development.
During the Interview: What if I don't have code to discuss?

Although most technical interviews involve solving a problem presented by the interviewer, there are cases where the applicant is expected to explain code that she/he has previously written for class, an extracurricular, or at a previous job.
If you already have code you want to discuss, review it ahead of the interview and be prepared to answer questions about error handling, runtime, and potential flaws.
You may, however, not have code at your disposal to discuss. I was notified of a technical interview of this nature a day in advance. Although I had developed code in Java and Python that I felt would work for the interview, my larger projects were owned by the companies I had interned for. Wanting to ensure that I had code to discuss, I thought of a problem related to the company's work that could be solved by code within a reasonable span of time. In the car on my return trip to campus, I developed and tested an 86-line Python binary that would accept command line input, parse the input, and add it to a database. The following day, in addition to being able to discuss in general terms the work I had done at my previous internships, I had a code sample that could represent my understanding of data structures and runtime optimization. The moral of the story is to be prepared to develop software anywhere, even in a van filled with belongings for move-in day.
Like any other skill, becoming comfortable with technical interviews takes time. During preparation and the interview itself, it is important to remember that everyone is rooting for you. Your interviewer really wants to hire you, so take time to prepare, and, during the interview, have a positive attitude. Ask questions, seek clarification, and describe your thought process. Show your interviewer that hiring you means bringing someone onboard who is excited about using code to solve problems. Good luck and stick the landing!