Technical Interviews are 45-60 minute live video sessions with professional Software Engineers. You’ll be sent a video call link beforehand, and should join at exactly the time your interview is scheduled to start. Technical interviews are intended to assess your coding skills, so coding will take up the bulk of the time. There may also be introductions at the beginning of the call and time for questions at the end, so be prepared for either or both of these.
What a Technical Interview Looks Like
Introductions (3-5 minutes)
See the Elevator Pitch section for more detail. The interviewer will also explain their role at the company and any relevant job history.
Technical questions (30-45 minutes)
Just like with a technical screen, you’ll be given 2-4 coding questions to complete as quickly as possible. You’ll either use a shared-coding platform or share your screen while you code so that your interviewer can follow along. The first question will probably be pretty easy, and the last one will probably be quite hard (depending on the company). Here’s the procedure you should follow for every question:
- Plan
- Code
- Debug
Plan
Read over the question carefully and ask clarifying questions if you have any (this can be a good signal to the interviewer that you’re thinking critically about the problem).
Sketch out a structure for your solution and ask the interviewer if it makes sense or if they have questions/concerns. If you get the go-ahead, it’s time to start coding. Otherwise, continue explaining your proposed solution and consider other options if the interviewer thinks you’re going down the wrong path.
As you’re explaining your solution, consider the time and space complexity of the code you’re about to write. Is that the best possible solution, or is there a more efficient one? Be prepared to explain to your interviewer what the Big O values for time and space are, and why your code is efficient.
Code
Begin coding and explain what you’re doing as you go. For example, you should say “now I’ll write a function to turn the input into a dictionary” or “I need to make a double for loop here to iterate through all of the items in the 2D list.” Make sure to name variables and functions well, as these small details matter to software engineers. Naming conventions hardly matter for college projects or Leetcode questions, but for large code bases, organized and readable code is critical. Don’t be lazy here!
As you’re coding, try to move quickly but don’t hurry so much that you begin to make mistakes. Time is a factor because the more time you have for later (and more difficult) questions, the better. Also, finishing all of the questions early is quite a strong signal that you’re good at coding. If you can get really fast at Leetcode and answer each question in just a few minutes, your interviewer will be quite impressed.
Debug
If the code doesn’t work or fails some edge cases, talk through your debugging process. Think out loud about which step might be failing, and explain why you’re putting print statements in certain places. Reread the problem statement to look for edge cases you might not have thought about. A completely-working solution is significantly better than a pretty-much-working solution, so you’ll have to handle every edge case if you want to get full credit.
Question time (5-15 minutes)
The end of the interview is a chance for you to ask your interviewer questions. You can ask about the company, Software Engineering in general, or anything else you’re curious about. See our list for some ideas, but also be sure to direct your questions towards the company’s specific programs/values. This section may seem innocent, but it’s still part of the interview. You’ll be assessed on your level of interest, your thoughtfulness, your prior knowledge of the company, and your preparedness.
Sign-offs (1 minute)
Thank the interviewer for their time and for the chance to interview. Tell them that you enjoyed meeting them, and you hope they have a great rest of their day.