I want to share my recent phone screen experience with Stripe's frontend team. The role was a remote Frontend Engineer position, and I got into the process through a friend's referral. Things moved pretty fast — when scheduling the interview, the recruiter sent over the coding guide and prep focus areas right away.
The phone screen was 45 minutes of live coding. The interviewer was a senior frontend engineer based in the US — seemed pretty professional, but also easygoing, spoke at a normal pace, and the whole thing was conducted in English.
The question was to implement a multi-step form:
- step 1: collect basic user info
- step 2: collect address info
- step 3: confirm and submit
The requirements were to support basic validation, step switching, disabled state control, a submit loading state, and error messages on failure.
I used React + useReducer for state management, with each step's component cleanly split out. Partway through, the interviewer asked a few follow-ups:
- Why did you choose a reducer instead of multiple states?
- How would you structure things when a form has a lot of steps?
- How do you design error messages that balance UX with clear logic?
- Did you consider any form optimizations, like memo or lazy rendering?
It felt like the conversation went fairly smoothly — my thinking was pretty clear, and I explained my design choices as I coded. The interviewer's overall feedback was pretty positive. There wasn't time to go deep on the last one or two follow-ups, but the vibe stayed normal throughout.
Two days later the recruiter followed up to say I'd passed the phone screen and that they'd schedule the next round.
Overall it was a good experience. Stripe's interviews lean toward "realistic scenarios" rather than something you can grind through on memorized solutions — they want your code to be clean, well-structured, and written with reusability and extensibility in mind.
My suggestion: practice a few realistic UI scenario problems beforehand, things like forms, nested modals, or list interactions. You don't need to implement every feature, but you should be able to clearly explain your state flow and component-splitting logic.
Discussion
Loading comments…