You might be considering positions in software engineering or others that will require a test of your technical skills. In addition to the traditional behavioral interview (if you need help here, make an appointment with a career adviser and we can practice your behavioral interview skills), you may be asked to solve a problem in front of your interviewer.
Here are some of the most important things to think about:
What is Technical Interviewing?
A type of interviewing that measures your technical programming skills. It is usually completed in a particular programming language (ex., Java, Python, C, C++, etc.) and is a series of prompts or problems that the interviewee must work out. It can be done in-person or online and generally includes a subject matter expert. For example, if you are interviewing for a Software Engineering role, a Senior Software Engineer who uses the same programming language as the technical interview will be in the room–providing the prompts and observing your work.
A technical interview helps the interviewer assess your coding skill in a particular language and, learn a bit more about how you think: your approach to problems, finding solutions, navigating challenges, communication, and accepting feedback. It can either be in-person, where you will probably work out your problem on a whiteboard, or more common right now, online, where you might use Google Docs or a system like HackerRank.
What are they looking for?
Engineering skills they’re assessing:
- Data structures and algorithms
- Problem solving and analytical skills
- Code understanding
As you walk through the problem, insure that you are explaining your thought process and decisions out loud. The interviewer wants to know your approach and why you’re doing what you’re doing. It can also help them redirect you if they feel you’re going in the wrong direction. Listen to your interviewer, as their questions might be hinting at specific ideas or direction.
As the interviewer observes you, they might have the following considerations:
- How did the candidate analyze the problem?
- Did the candidate miss any special or edge cases?
- Did the candidate approach the problem methodically and logically?
- Does the candidate have a strong foundation in basic computer science concepts?
- Did the candidate produce working code? Did the candidate test the code?
- Is the candidate’s code clean and easy to read and maintain?
- Can the candidate explain their ideas clearly?
- Is the candidate pleasant to work with?
What are some common mistakes people make in a coding interview?
1. Diving right into the code
Don’t just dive into the code-- ask questions and be sure you know the problem and what the interviewer is looking for.
- They care more about how you get to the solution than the solution itself
- If you jump in, you won’t know if you’re headed down a dead end
- Interviewer may not be able to offer hints if you get stuck—You may run out of time if you need to start over
- You may only have unfinished/incorrect code to evaluate
2. Not working out examples/testing
- Discuss testing verbally first
- Pick a simple example
- Think about an edge case or two
- Analyze complexity (runtime and space)
3. Not writing real code
Don’t use pseudocode
4. Premature optimization
Unnecessary concerns about performance might affect your code design. Don’t get ahead of yourself thinking about things that might not be relevant in the moment.
- Cracking the Coding Interview by Gayle Laakmann McDowell is repeatedly referenced as one of the best resources to use when preparing for technical interviews. This text has prompts with answers as well as a brief job search and interview process overview. This text is available through Duke Libraries.
- Programming Interviews Exposed: Coding Your Way Through the Interview by John Mongan, Noah Kindler, and Eric Giguère has also received some great feedback. Available new and used from Amazon.
- Interviews can be messy – don’t worry
- Don’t worry about small syntax errors; try to get the details right
- Write legibly, leave extra room, draw arrows, use helper functions
- Be conscious of time
- Coding interviews are fluid: one mistake does not mean failure
- There are no shortcuts; practice, practice, practice!
- Err on the side of over-communicating
- Test your code and don’t forget edge cases
- Don’t panic. You know your stuff.
Overall, the key to technical interviewing, and ALL interviewing really, is practice!
The more comfortable you get, the better you’ll be able to think clearly, explain well and talk through your thought process with an interviewer. Confidence often makes the difference between a good interview and a great one!