Stripe Software Engineer Interview Questions and Process - Compiled from 273 interviews
Tips
|
May 10, 2022
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.
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
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
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.
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!
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!