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.
For basic information about technical interviews, refer to my September 2017 post "Coding in the Car: Technical Interview Prep." During the process of applying to full-time software engineering roles, I encountered a few new elements to the application process, which I wanted to cover separately in this follow-up to my original post.
Coding Challenges
Some tech companies, before conducting a technical interview over the phone, will request that you complete a coding challenge. A coding challenge, although it can range in duration, is typically a 60-minute timed coding task completed online, often on hackerrank.com. The type of problem is not significantly different from an over-the-phone interview, although there is, of course, not the opportunity to ask follow-up questions during the challenge. The best way to prepare is by familiarizing yourself with HackerRank by completing sample problems.
Technical Interview Coding Environment
Unless conducted in person, in which case the interview question will likely be solved on a whiteboard, a technical interview relies upon some shared document that both the interviewer and interviewee can view. Through my interviews, I encountered two main environments: a shared Google Doc and a pad on coderpad.io.
Within coderpad, the interviewer may either enable or disable code execution capabilities, depending on whether the interviewer is concerned with whether the code would run or is more interested in the applicant's thought process.
The coding environment chosen by the company and interviewer is communicated to the applicant ahead of the interview and is largely unimportant in regards to preparation, aside from the fact that it is beneficial to be familiar with the environment one will have to work in.
Onsite Interviews
After a coding challenge and/or one to two technical interviews on the phone, some companies will next invite the applicant to the company's office for a day of onsite interviews. Although each company is different, a basic template for how the day might go is:
Technical Interview
Behavioral interview to determine culture fit with a coding question at the end
Technical Interview
Lunch
Opportunities to tour the office and meet employees
Of all of the types of interviews, onsite interviews are the most like an endurance challenge. Personally, I find them the most enjoyable, as they provide the candidate with a chance to better understand the company's work and culture. As the day can run long, it is not a bad idea to pack a few Kind bars in the event that a boost is needed between morning interviews.
Technical interviews allow for the opportunity to solve interesting coding problems, but they are also mentally draining. As a result, my parting advice is to ensure you're spacing out interviews to the extent you can to allow for recuperation time between rounds. Best of luck!