Settings

Technical Interviewing Primer by Tim

Watch the full video of Tim’s talk here:

Source: CSUMB talk on “Tips for Technical Interviewing” on Feb 12th

Written Guide

This guide will cover specific tips for technical interviewing that we wish we would have known while in college.

Why Software Engineering

Technical Interviewing Process

Succeeding in Technical Interviews

General Advice for Succeeding as a Software Engineer

Gaining Real-world Experience: Web and Mobile Development

Finding Companies to Apply To

Standing Out when Applying

Getting into the Technical Interview

Common reasons why students don’t get an offer

We’ve surveyed dozens of companies and worked with hundreds of engineers going through interviews:

Speed is a huge factor. This is not representative of real-world engineering, but it’s a key factor in interviews due to the sort time windows. The only way to get fast is to practice problems many times across the major categories, over and over. Any can become fast at algorithms through enough dedicated and repeated practice coupled with an understanding of the known techniques and solutions for each major problem type. Daily practice (1 question every day) can really help, you need to make solving these types of problems into an intuitive habit through time and focus.

Verification step can be the most important. Even if you finished the coding question with a first solution you think works, there may likely be issues or edge cases where the solution fails. It’s your job as an engineer to evaluate several cases, and look for edge cases and catch the cases where your solution might be incorrect. 50% of the work is writing the solution and 50% of the work is verifying its correctness. You can do this by picking 2-3 cases and tracing through your solution to check the outputs.

One common thing we hear is, “I feel like I solved the problems, but I didn’t get the job”. This can often mean you got a decent coding score, but a poor algorithms score or poor technical communication while you were solving.

Approaching a Coding Interview - “The Right Way”

You get a problem from the interviewer and you don’t start coding right away, instead you should follow a sequence that begins with exploring the problem space, and ends with verifying for correctness and analyzing runtime efficiency. You’ll want to make sure to discuss your overall plan and approach, maybe visually with the whiteboard, before you even begin coding. You also might want to start with psuedocode to work out the algorithm first as well.

There are six key steps to a great interview solution, we call the UMPIRE method:

  1. Understand - Explore the constraints of the problem, ask questions about inputs, understand sample test cases
  2. Match - Match this to known categories of problems you already know how to solve with known techniques
  3. Plan / Pseudocode - Discuss your approach, the data structures or rough algorithm plan, get interviewer feedback
  4. Implement - This is writing the actual code to solve the algorithm
  5. Review - Verify correctness by running specific examples and recording values
  6. Evaluate - Analyze the performance of your algorithm and discuss any potential improvements or weaknesses

Many students will skip these steps or rush into coding to try and finish on-time. Avoiding the other steps may lead you to get a poor algorithm score. Because time is a factor, you have to be able to move quickly through but still touch on each one of these stages.

How much time do I spend on each section? There’s not a set time, you should work proactively with your interviewer to understand what they are looking for. They will help you know when you should move on, or if you should continue in the current stage. Think of an interview as a negotiation and collaboration with your interviewer.

Learn the standard techniques and approaches. Many of the problems posed fall into one of a few buckets, and there are known and specific techniques for solving the problems that would be very hard to derive yourself from scratch. Instead, make sure you are comfortable applying known techniques for common problems before you step into the interview. For example, for Linked Lists, almost every problem involves one or more of the following techniques: “Two pointer technique”, “Dummy head”, or “Multiple passes through the list”. There are only a total of 30 frequent algorithms and techniques you need to know and of course some of these are much more commonly encountered in interviews than others.

Resources for Further Learning