I participated in over 70 interviews during my time at Waterloo. I had 6 internships, and had to interview for 5 of them. Through these many interviews, I found a pattern in the interview structure, what they wanted to hear, and how people studied for them.

The Interview Structure

Interviews are weird. They’re very formulaic, but fortunately this makes them easy to prepare for. The interviewer is not trying to get to know you personally. The interview is simply a time to gather certain signals about you, and relay those signals to those in charge of hiring. The structure looks like this:

  • intro
  • (optional) behavioral question
  • technical question
  • technical question follow-up
  • time for you to ask questions

The Intro

The interview starts with the interviewer introducing themselves, describing the company, and asking you if you need to use the bathroom before the interview starts. The purpose of the intro is to calm you down. Save any questions you have for the end, to leave as much time as possible for the actual interview. Often I will be asked the classic “tell me about yourself”. Be concise with this. The interviewer is probably not going to care about your answer, and is just asking you in order to calm you down. The interview will be focused on the technical question. Don’t try to impress them by telling, impress them by showing.

The (Rarely Asked) Behavioral Question

I rarely get asked a non-technical question during an interview, but if I do, it is usually “tell me about a challenge you faced recently and how you overcame it”. I have no advice for you here, other than to prepare the answer beforehand.

The Technical Question

The interviewer doesn’t care if you solve the question or not. They are simply looking to gather certain signals about how you work. The signals they look for are:

  • Do you ask clarifying questions?
    • Once you are told the technical question, do not immediately start solving it. Often, the interviewer will intentionally leave out important details and want you to ask for clarification. It’s important to ask questions for two reasons: first, it shows that you have a collaborative attitude, and are not afraid to ask for help. Second, it shows that you are able to work with vague requirements and can ask the right questions to specify them.
  • Can you accept a hint?
    • When the interviewer gives you a hint, take it. First, it shows you are able to adapt to new information and think on your feet. Second, it shows that you are able to accept help from others.
  • Can you test and debug?
    • You aren’t finished answering the technical question once you’re done writing on the whiteboard. You still have to test your program on example inputs, and debug your program if you find a bug. Before you start thinking about a solution, I would suggest writing some example test cases on the whiteboard. Companies love an intern that values testing.
  • Are you aware of time and space complexity?
    • Don’t wait for the interviewer to ask you about the time complexity of your program. Once you’re done writing your code and testing your code, offer up the time and space complexity yourself. This initiative shows that you think about complexity proactively.

The Technical Question Follow-Up

It’s rare to be asked just one technical question in a 45-minute interview. Either the interviewer will ask you a completely different question, or they will add a challenge to the original question. Often, the challenge will be a tighter time-complexity constraint. Often, the time-complexity is a hint to the solution. If the interviewer tells you it can be solved in linear time, you know you can’t have nested loops or recursive calls.

What Questions To Ask Them

The interview will end with a chance for you to ask questions. This is a good opportunity to show your interest in the company. Research the company beforehand, learn about what makes them unique, and ask a question about something you find genuinely interesting about the company. If there’s nothing about the company you’re curious about, you either didn’t do enough research, or you’re not that interested anyways.

Before the Interview

  • Know your resume. See my previous post for resume advice.
  • Bring a copy of your resume to the interview.
  • Bring spare whiteboard markers, pencils, and paper to the interview.
  • Practice questions on a whiteboard, from HackerRank, LeetCode, GeeksForGeeks, etc.
  • Read up on common algorithms and data structures.
  • Practice time-complexity and space-complexity analysis.
  • Big companies like Google and Facebook are known to value syntactically correct code. Pick 1 popular language to study (C++, Java, or Python), and learn to code in it with correct syntax without an IDE.
  • Don’t dress up. Don’t follow Waterloo’s advice on how to dress. You want the interviewer to be able to picture you on the job. Dress how you would on the actual job. Convey your professionalism with your demeanor, not your wardrobe.

TL;DR

Interviews are weird. They’re very focused on the technical question. Technical questions are used to gather signals about you. Make sure you send those signals, and don’t just answer the question. Research the company so you can ask them interesting and specific questions at the end. Know your resume, bring materials to the interview, and don’t dress up.

Comments