Different types of programming interview
Just like system design interviews, coding interviews are a common test for software engineers during the interview loop. Companies use different names for the interview. Here are a few examples:
- Doctolib calls it “Feature Building”
- Atlassian calls it “Code Design interview” and “Data Structures interview”
- Shopify calls it “Pair Programming”
- Spotify simply calls it “Programming interview”
Despite the diverse names, the purpose remains the same: assess candidates ability to code and solve problems on the fly.
People assume Leetcode challenge is the most common type for programming interviews but that’s not true. Many companies use formats that provide more insights and are closer to everyday engineering work. Curious about the alternatives? Below is the list.
Leetcode challenge
This format of programming interview is a preferred one by FAANG companies. During the interview a candidate is asked to implement an algorithm that based on a set of rules and input will produce a specific output. The correctness of the implementation is checked by a test suite provided by the interviewer. The interview format often includes discussion about time and space complexity. For examples of algorithmic challenges you can visit leetcode.com.
Companies using this type of interview format: Google, Facebook, Miro, Snap, Spotify
Feature \ service \ framework implementation
This kind of interview is similar in overall structure to Leetcode challenge however problems presented are closer to what software engineers experience on a daily basis. Examples include implementing HTTP API or integration with 3rd party API. For the sake of simplicity often IO during those interview will be mocked however some companies are using services like CoderPad which allow for real database integration from within their online editor (for more details check CoderPad works with database). The interview also includes discussion about tradeoffs and best practices ranging from low level (representing money in a computer program) to high level (how to shield your program from unreliably 3rd party API).
Companies using this type of interview format: Docker, Doctolib, Reddit, Shopify
Code review
I heard about some companies using this format but my only firsthand experience comes from my team at Groupon who used it. During this interview a candidate is presented with a code that’s full of anti-patterns, bugs and code smells. The goal is to refactor the code where possible within a given timeframe. For parts that are not possible to address within the interview’s time the candidate should describe how such a fix should look like and what engineer implementing it should pay attention to. This approach includes discussions about tradeoffs and best practices in a similar way as Feature \ service \ framework implementation.
Companies using this type of interview format: Groupon, Vinted
Take home assignment
Take home assignment is an asynchronous version of Feature \ service \ framework implementation. Candidate receives a task with a list of constraints and tests to validate implementation. The task needs to be implemented within the next X days and sent to the company for evaluation (usually by sharing Github repo). If the implementation is up to a company’s standard the candidate is invited for an interview where the code is discussed. Main focus of the interview is on tradeoffs and why the candidate made certain decisions.
Companies using this type of interview format: Flix, Wayfair