Acing the Technical Interview: Lessons from 30 Tech Companies
I recently started a company called Hatchways, a platform designed to match candidates with paid work placements to help them discover fulfilling work at any stage of their life. We have worked with over 30 companies and 100 candidates in the last six months. Having seen how these companies conduct technical interviews, I have put together this basic guide to help you prep for the technical interview.
Disclaimer: the following guide is based on full-stack web development interviews for internship roles in Toronto-based startups. This interview prep is for people who are interviewing for similar positions at similar companies.
What do companies look for?
A common assumption is that technical interviews are about getting the best answer in the shortest amount of time. However, it is so much more than that. There are many factors that come into play when deciding if a candidate is strong or not. Here is what I have found companies to look for:
- Can you communicate? Companies want to see how you understand the question and your ability to discuss your solution.
- What is your thought process? Often companies want you to not only solve the problem, but to consider the tradeoffs of different solutions. This is why understanding time and space complexity is crucial for technical interviews, regardless if they ask about Big O Notation.
- Can you code? At the end of the day, companies want to see if you can code. They want to see if you can easily write a for loop or a conditional statement. This is a strong indicator that you code on a regular basis.
- How do you code? It’s not just about your ability to write code. Do you test your code? Is your code readable? Is it efficient?
- Do you have relevant experience? Small startups value experience in their stack — they want to see if you can jump into their team with little training. Be prepared to answer specific domain related questions.
Approaching technical problems
Based on what companies are looking for, I have put together this step by step approach to technical interview questions:
1. Comprehension of Question
The first step is to understand the problem. Repeat the question back to the interviewer to show that you understand it clearly.
2. Discussion
A tip to candidates in an interview is to discuss your approach to a problem before you start coding.
Before writing any code, discuss your approach with the interviewer. This immediately demonstrates your ability to approach the problem, and also allows you to get feedback about your solution without wasting time on coding. If the interviewer has a problem with your approach, they may question it, allowing you to reach the solution faster. The ability to discuss the question with the interviewer shows strong communication skills.
3. Keep it simple
If you don’t immediately know the best solution, start with a simple one! Sometimes interviewers don’t care if you have the optimized solution. Interviewers may just want to see if you can code and how you code. If you take a long time thinking in silence before writing anything, this can be problematic. At least attempt the naive and inefficient solution if you are stuck thinking about a more optimized one. This also buys you time to think of a better solution and sometimes, the inefficient solution can shed light on a more optimized one.
If you are having trouble coming up with any solution, try solving some examples of the problem. By walking through the solution of an example, it can help shed light on the programmatic solution.
4. Optimize it
Keeping it simple is a great starting point, but companies will want to see if you can optimize your solution. This is where you start to think about using data structures and other programming techniques (dynamic programming, etc.) to improve your solution.
Optimizing your solution can sometimes mean there are other tradeoffs. Often a solution with better time complexity could have worse space complexity. Interviewers want to see if you can discuss these tradeoffs.
5. Test, test, test
Good programmers don’t just write code and assume it works. You need to try to break your solution! If you do, that’s a good thing, not a bad thing. Think about edge cases, and demonstrate that you have the competency to walk through your code using examples.
Conclusion
Acing the technical interview goes beyond getting the best answer in the shortest amount of time. Companies are looking for individuals with strong communication skills, good programming practices, and relevant experience. The best practice you can do is to keep coding — either working on projects to improve the relevance of your experience, or to practice technical interview questions.