Stripe Software Engineer Interview Questions and Process - Compiled from 273 interviews

|

Note: This is NOT a sponsored post; we do not receive any incentive from Stripe for publishing this post. Any information in this article is either publicly available or submitted by NodeFlair users, and not provided by Stripe.

Stripe has one of the most unique approaches to technical interviews. Unlike many companies who are letting candidates know what they will be tested on, Stripe is not afraid to let you know. They are very open about the interview process and have shared about it on multiple occasions.

While Stripe’s interview process is pretty straightforward, there is no doubt that their interview process for Software Engineers can still be challenging. Nevertheless, it is worth it as benefits and compensation are said to be more generous at Stripe.

In this guide, we will discuss Stripe’s application and interview processes as well as provide a few tips for landing a job at Stripe

The information and questions are gathered from various sources from users who have gone through the interview process for roles. These sources include but are not limited to, Glassdoor, Leetcode, forums and users we have interviewed.

Disclaimer:

While we do our best to ensure that the content is accurate and up to date by cross-checking it with a sizable number of individuals, we acknowledge that the questions might be changed over time, or it might vary across departments and interviewers.

TL;DR: Your Ultimate Stripe Software Engineering Interview Guide

  • How Stripe design their Interviews: No hardcode 'Leetcode" + Can Google + Clean code matters
  • Interview Process: Design and Implementation + Bug Squash + Refactoring + Pair Programming + Integration
  • Popular Stripe Interview Questions and Past Questions
  • Preparation Process: Prepare questions + Understand the company
  • Evaluation Criteria (both the technical and non-technical aspects)
  • Additional preparation resources

Is Stripe a Good Company to Work For?

As of writing, Stripe has an overall rating of 4.0 out of 5 on Glassdoor. This is based on over 344 reviews, and 76% expressed that they would recommend a friend to work at Stripe. However, this rating has decreased by -2% over the last 12 months.

How Do Stripe Design Their Interviews?

No hardcore 'Leetcode' questions

Unlike common interview processes in other big companies that focus heavily on data structure and algorithm and 'leetcode' questions, Stripe’s interview is more practical and is much closer to the day-to-day job application. This is much more refreshing and a more accurate gauge of how interviewees are evaluated.

Greg Brockman, former CTO at Stripe, shared that Stripe interviews try to simulate the work you would do on a day-to-day basis. This means there will not be any pure algorithmic questions as “no project at Stripe has ever required writing a red-black tree from scratch”. 

No restrictions on external resources

In addition, Brockman also shared that it is perfectly fine for applicants to Google for solutions during the interviews. This aligns with a previous Engineering Onsite guide that Stripe sent to candidates “We encourage you to use online resources (docs, Stack Overflow, etc.) as needed during the interview.

Clean code matters

It is insufficient to write correct code – you need to write clean, maintainable code to implement the relevant functionality. Also, Brockman explained that many performed poorly during this stage as they lack a strong understanding of what makes for good code.

One thing to note: Stripe frequently changes the interview process for particular applicants to get additional signals or to handle people's constraints. Your interview experience might be different from what will be described in the next section.

Source: Know Your Meme

How Many Rounds of Interviews at Stripe?

The interview process at Stripe consists of five rounds — Design and Implementation, Bug Squash, Refactoring, Pair Programming and Integration Round.Is Stripe a good company to work for?

Design and Implementation (90 - 120 minutes)

You will be tasked to design some form of systems, such as an API, web interface or a distributed system.

For full-stack roles, you will be asked to build a small, self-contained JavaScript component, similar to those in a component library, with built-in input validation.

For backend roles, you will be tested more on system design (questions in the next section).

You will be evaluated on your ability to solve a problem end-to-end. This includes thinking through requirements, both user requirements and technical ones, and coming up with solutions - and then actually implementing them.

Some tips to do well for this round:

  • Keep it simple
  • Build it as if you were going to put it into production
  • Optimise for code quality over quantity (it’s fine if you cannot finish)
  • Write tests as appropriate
  • Offer options on how to scale the system later on
  • Being able to explain why you recommend a certain technology 

Bug squash (45 - 60 minutes)

For this round, you will be handed an open-source project and your task is to fix the bugs that are causing the failing test cases.

This round is challenging because the code base is huge with compact code and lacks comments.

You will be evaluated on how well you navigate an unfamiliar codebase and fix problems in others’ code.

Some users have shared that the repository is in Python, while others shared that it’s a language of your choice.

Refactoring (45 - 60 minutes)

You will be given a simple application and be asked to improve the structure. The goal of this round is to evaluate your idea of what makes for good code.

Pair Programming (30 - 45 minutes)

You will be given a small, self-contained project. What is interesting about this project is that it is always solvable in pure code and you should not have to use any libraries. Once again, you will be evaluated on your ability to write clean and maintainable code, given the clear constraints.

Integration Round

As Stripe works with many open source libraries and partners, one important skill required is the ability to work with 3rd party software. 

During this round, you will be given an existing Stripe API and be asked to work with it. This includes data manipulation and error handling.

Source: Gyfcat

Stripe Interview Questions 

The questions asked at Stripe interviews do not seem to change very often. From the data compiled, it seems like they are only changed every 1-2 years.

However, do remember that it is not about writing correct solutions, but good ones.

Popular Interview Questions

Best time to shut down a machine given the hours where it is running or not

  • Given a string of server-statuses ("1 0 0 1") and a time that the server was taken offline (0 is running, 1 is offline)
  • Determine how many statuses the server was off by
  • Determine the best time to take the server offline
  • Given a string with multiple server statuses nested together, determine the best time to take the server offline"
  • Example strings "BEGIN 0 0 1 END BEGIN 0 1 END" but only for the innermost BEGIN/END combination

Building accept-language parse

  • Create a function that requests languages in string format and return an array of the supported languages
  • Support non-region specific requests. ie "en" returns ["en-US", "en-CA", "en-GB"]
  • Support wildcard matching to return the rest of the supported languages

Popular questions that no longer seem to be asked

  • URL parsing
  • Write a function to rate limit API requests
  • Time Based Key-Value Store
  • Implement a mini version of Stripe: Transactions between 1) Stripe and customer and 2) Payments to merchants
  • Return a record from a dictionary which has the lowest key-value pair: 1) Implement “minByKey”, 2) Implement “min/maxByKey”, 3) Implement a comparator, and then use it to implement 4) “firstByKey” with direction, 5) “min/max” by several keys
  • Implement a "name tracker" to allocate and deallocate servers: You're running a pool of servers where the servers are numbered sequentially starting from 1. Over time, any given server might explode, in which case its server number is made available for reuse. When a new server is launched, it should be given the lowest available number. Write a function which, given the list of currently allocated server numbers, returns the number of the next server to allocate. In addition, you should demonstrate your approach to testing that your function is correct.

Less common Interview Questions

Coding Questions

  • String compression (Medium and Hard)
  • Parse out words from HTML text
  • Iterating through items in a string to find matches in a collection, in a specific order.
  • Basic data structures problem, hashes and array matching and lookup
  • Even out a series of account balances. Some balances were negative and some positive and had to generate a list of transfers that would make the balances equal to 100
  • Parse a JSON like noSQL data structure and do basic data manipulation with them
  • Given a list of bank accounts with balances, how can we move funds from account to account such that all accounts have a set minimum
  • Given a list of compare orders and keys (directions), find the hashmap that matches the directions. If the first direction gives equal, then go to the second 

System Design

It appears that the system design questions rarely repeat as they can vary vastly. Overall, there are a number of them that are based on financial systems and existing Stripe products.

  • Infrastructure for your own NPM package versioning system
  • Simple ledger service that record all transactions in a reliable and durable fashion
  • System to keep a running balance of payments for each vendor
  • System to send out invoice notifications.
  • System to handle role-based access control
  • Distributed counter based service
  • System for delivering webhooks to customers
  • System to log metrics from a login system
  • Toy NoSQL database
  • API for tracking events in different clients
  • System that developers can use to run validity and correctness checks in production

Scenarios

  • Create a program that will use various APIs along with geolocation data to create a path. You should be able to easily parse and send HTTP requests out from your language of choice.
  • Build a phone number input in a framework or library of choice (JavaScript based). It should disallow invalid characters, add formatting characters (to have it appear as "(555) 555-5555"), support keyboard commands like backspace and copy+paste.
  • Given a set of stored request-response pairs, write a program that can be used to ensure the API's backward compatibility

Questions Specific to API Engineer 

  • What HTTP responses mean: 200, 400, 500
  • Difference between the 401 and 403 HTTP status
  • In a request, what is the header used to indicate the media type? 
  • Differences between Compile-Time and Run-Time Error
  • What are the 4 main types of methods for request
Source: Gfycat

How Do I Prepare for a Stripe Interview?

In summary, you should come up with questions for your interviewers and have a good understanding of Stripe, including the current products and news.

Come with questions for your interviewers.

  • Consider what’s important to you in a job, what you would like to see in a work environment and with colleagues, and what things you’d like to avoid.
  • Feel free to also ask about the company goals, team organisation, Stripe’s values, etc.

Be aware of Stripe’s current products and services

  • Many of the system design questions will be based on Stripe's current products and other financial systems.
  • It will be helpful to also know about products not directly related to their core business activities such as Stripe Press.

Be up to date with what's happening at Stripe

  • Check out Stripe’s website and recent news to see if anything is particularly interesting to you.
  • You won’t be quizzed on anything here, but it could be a good basis for discussion. 
Source: Gifer

How Will You Be Evaluated for Stripe Interview?

For the technical aspect, you will be evaluated based on Problem Solving, Design, Correctness, Debugging, Programming Language Familiarity and Tools Familiarity. For the non-technical aspect, you will be evaluated based on the Excitement Test, Velocity Test and Communications.

Technical Aspect

Problem solving

  • How effective are you at understanding the problem and devising a solution for it?

Design

  • How do you design and lay out your code?
  • Is it well organised with easy to understand interfaces?

Correctness

  • Do you think clearly about the correctness of your code?
  • Do you use explicit reasoning and/or tests to check correctness?
  • Do you consider edge and error cases?

Debugging

  • Do you spot the bugs in your code?
  • When you find one, can you fix it?

Programming language familiarity

  • Are you comfortable with the language you’re writing?
  • Is your code idiomatic for the language?

Tools familiarity

  • Are you set up to write code?
  • Can you run it? 
  • You don’t need to have an advanced editor or setup; you should just be comfortable and productive in your chosen environment

Non-technical Aspect

Excitement test

  • “Would hiring this person make you more excited about working at Stripe?”
  • Brockman added that every new hire should make the company fundamentally better in one way or another. You have to deliver more than being strong technically.

Velocity test

  • “Would this person be on a trajectory to be self-sufficient within 6 months of joining Stripe?”
  • Stripe hires a variety of engineers of various experience levels, and expects all hires to be able to be self-sufficient in owning their work within their first six months of joining

Communication

  • Do you answer questions clearly?
  • Do you provide specific details about your work, especially when prompted, vs. generalities and just describing the work of the team/company?
  • Are you able to process prompts and feedback during the conversation?
  • Do you seek help or guidance when stuck?
Source: Tenor

Additional Resources

  • Stripe On-site interviews for Engineering: What to expect: While this guide is probably outdated, we still think there is a lot of value in giving it a read. The interview process and questions might change, but understanding how the company thinks and designs interviews would be a huge advantage.
  • Stripe Atlas: Guide to scaling engineering organizations: Stripe is a company that is very particular in how they hire, and this post concludes some of the lessons the Stripe team learned when scaling their engineering team. It also includes pointers on what Stripe is looking for beyond technical hard skills.

Find this article useful? Here’s how you can benefit from it more!

Other interview resources:

Got a job offer from Stripe? Contribute it anonymously!

NodeFlair is improving salary transparency to empower tech talents with the correct salary information so they are not lowballed by companies. Salary is a taboo subject in Singapore, so we have built it with anonymous compensation sharing in mind. Sharing your job offer anonymously will help the tech community inch one step towards salary transparency.

Help keep this article updated

This article is only made possible thanks to fellow developers. Tech interview processes and questions might change over time, so If you have had an interview with Stripe (or other companies), you are encouraged to contribute back!

Share it on social media and with your friends

Related Articles