I just finished on April 21 Stripe HackerRank OA. Stripe updated the question bank this time, but the overall style and difficulty were consistent with previous years: one large problem split into multiple iterative parts. The question I encountered was the recently popular Join Dataset problem. The background is that a customer is migrating from an old payment processor to Stripe and needs to correctly merge the customer's data with the old processor's data to generate a final result that can be directly imported into Stripe.
The problem is engineering-oriented and tests string parsing, data processing, join logic, and edge-case handling. It has three parts, and passing all the first three parts is usually necessary for a strong pass rate. Below, I will share the requirements, examples, and solution ideas for each part.

Stripe OA Question background
Customers migrate from their original payment provider to Stripe multiple times a day. In order to migrate the data correctly, Stripe needs to merge the data provided by the customer's original service provider with the data provided by the customer. Your task is to implement the data merging functionality to produce a final result that can be imported directly into the client's Stripe account.
The data is given as an array of strings. The first line is the header, and the following lines are data rows. Each row is separated by commas, with no extra commas.
Part 1: Basic inner join
Task: Implement the function joinDataSet(fieldName, customerFile, processorFile, skipUnmatched) to return the inner join results of the two files (only rows with the same fieldName column value are retained).
Key requirements:
- Column order: keep all columns from customerFile first, then append all columns from processorFile. The headers should also be merged.
- Sorting rule: sort by the order column in customerFile first, then by the order column in processorFile.
- Keep only successfully matched rows (inner join).
ExampleThe example is already provided in the prompt, so I omit it here. The actual output is the merged header plus matched rows.
Problem-solving ideas:
- Parse the headers of both files and record the index of each field.
- Use a dictionary with fieldName as the key to store customerFile rows while preserving the original order.
- Iterate through processorFile and merge the two row strings when a match is found.
- Collect all matching results, sort them by the specified rules, and return them.
Part 2: Basic left join
Updated requirements:
- Support left join: every row in customerFile must be retained.
- If there is no matching record in processorFile, the corresponding field is filled with the empty string ""
Other rulesColumn order, sorting, and other rules are exactly the same as in Part 1.
Example outputUnmatched rows will have commas inserted in the corresponding processorFile field positions to represent empty values.
Solution extension:
- Based on the Part 1 code, when a customerFile record has no match, manually construct the empty-value processorFile part.
- Make sure the number of empty values matches the correct number of columns.
Part 3: One-to-many matching
Updated requirements:
- Support one-to-many matching: the same customer_id may have multiple records in processorFile.
- In this case, generate one row for each processorFile record, while repeating the customerFile information.
All previous rules still applyincluding left join, sorting, column order, and so on.
ExampleWhen one customer_id corresponds to multiple payment-method records, multiple rows appear in the result and customer information is repeated.
Key idea:
- You cannot simply use a dict to store a single record. Instead, collect all processorFile rows with the same fieldName into a list.
- Iterate through customerFile, and for each customer record, iterate through all corresponding processor records and merge them.
Write at the end
That is my real Stripe OA question sharing and solution breakdown.
Although Stripe's OA question types are relatively fixed, it has high requirements for code organization, edge-case handling, and engineering implementation details, and the time is tight. If you are preparing for Stripe OA and feel that your data parsing, join logic, or code structure still needs improvement, you can consider learning about Programhelp's services.
Their team includes mentors from top universities and major tech companies, who will communicate with you directly and provide OA assistance and targeted guidance to help you prepare more efficiently for OAs from Stripe, Amazon, NVIDIA, and other companies.
Students who need help can check Programhelp themselves. The mentors will provide advice based on your specific situation.
Thanks for reading. I hope everyone passes the Stripe OA soon and receives an offer smoothly!