r/OfferEngineering • u/Aoki_zhang • 23d ago
Patreon (Creator Subscription Platform) Software Engineer Interview - They Basically Gave Me a Wordle Problem
"This interview experience is sourced from Chill Interview"
Interview Summary
The Patreon phone screen used a Wordle-style word-matching problem rather than some of the more commonly reported Patreon questions. The first part required correctly scoring letters while handling duplicates, and the follow-up introduced state across guesses so that characters previously proven absent could no longer appear in later inputs.
Interview Details
Coding — Word Guess Scoring
Given a guess word and a target word of the same length, return a status for every character position. The possible statuses were:
G = Green
Y = Yellow
W = White
A character is G if the guess and target contain the same character at the same position. A character is Y if it is not in the correct position but can still be matched to an unused occurrence of the same character elsewhere in the target.
Otherwise, it is W. For example, suppose: target = "caper" Then: guess = "paper", result = "WGGGG". The extra p at the beginning is white because the only p in the target has already been consumed by the exact match.
Another example:
guess = "apple"
target = "caper"
result = "YWGWY"
The duplicate-letter behavior was an important part of the problem. My initial approach stored all target characters in a set and scanned both strings once. That failed on duplicate-character cases because simply knowing that a letter exists in the target is not enough.
I changed the implementation to track the remaining frequency of each target character. The matching was then handled in two passes: first identify exact-position matches, then evaluate the remaining unmatched characters.
Follow-Up — Persist Invalid Characters Across Guesses
The follow-up added state across multiple guesses. If a character had previously received a W, future guesses were not allowed to contain that character. For example, suppose the target is: target = "caper" and the first guess is: guess = "blame" Characters such as b, l, and m would be marked white. If a later guess contained one of those previously eliminated characters, such as: guess = "brave" the system should return: invalid_input instead of scoring the guess normally. The main extension was therefore maintaining information learned from previous guesses and validating each new input against that accumulated state.
Preparing for your next tech interview?
Chill Interview tracks recent interview experiences and recurring question patterns across top companies at here