Advice | 27 Dec 2011
How to Succeed in a Technical Interview
Coding jobs often require a very extensive and complex interview process. Below are several tips on how to succeed in a number of different technical interviews.
The Coding Interview:
Most important is the ability to write clean and correct code. It is not enough just to be correct. A lot of people will be interacting with your code once you’re on the job, so it should be clear, maintainable, and extensible where appropriate. If your solution is clean and correct, and you produced it in a reasonable amount of time without a lot of help, you’re in good shape. Even if you stumble a bit, there are other ways to demonstrate your ability. As you work, interviewers watch for debugging ability, problem-solving and analytical skills, creativity, and an understanding of the system that surrounds production code.
The Algorithms Interview:
1. Make sure you understand the problem. Ask for clarifications. Once you understand the problem, come up with a solution, any solution, as long as it is valid. This forces you to engage with the structure of the problem and it gives you a sense of confidence.
2. Think about related problems you have seen before and how they were solved. Chances are, the problem you’ve been presented is very similar to one you have seen before.
3. Modify the problem by breaking it up into smaller problems.
4. Trying out a few different approaches rather than sticking with a single approach tends to work well in interviews. The problems chosen for an interview usually have many different solutions.
The Systems Design Interview:
This interview requires knowledge of systems and a talent for design. What makes it interesting, though, and sets it apart from a coding or an algorithms interview, is that whatever solution you come up with during the interview is just a side effect. What actually is cared about is the process.
Usually, the interview will start by asking you to design a system that performs a given task. For the most part, you’ll be steering the conversation. It is up to you to understand the problem. That might mean asking questions, sketching diagrams on the board, and bouncing ideas off your interviewer. Do you know the constraints? What kind of inputs does your system need to handle? You have to get a sense for the extent of the problem before you start exploring the space of possible solutions. And remember, there is no single right answer to a real-world problem. Everything is a tradeoff.
The best way to prepare for this interview is practice. This can mean doing mock designs, working on an actual system, digging into the performance characteristics of an open source system, or learning about how databases and operating systems work.
If you are able to follow the aforementioned advice, there is no reason why you should not be able to succeed in your technical interview.