4月21日剛剛刷完 Stripe 的 HackerRank OA。這次 Stripe 更新了題庫,但整體風格和難度與往年一致——一道大題,分多個 Part 逐步迭代。這次我遇到的正是最近很火的 Join Dataset 問題。題目背景是:客戶從老支付服務商遷移到 Stripe,需要將客戶提供的資料與老服務商的資料正確合併,生成可直接匯入 Stripe 的最終結果。
題目整體偏工程實現,考察字串解析、資料處理、Join 邏輯和邊緣 case 處理。一共 3 個 Part,前三個 Part 必須全部透過才能有比較好的透過率。下面我把各個 Part 的要求、示例和解題思路詳細分享給大家。

Stripe OA 題目背景
客戶每天會多次從原支付服務商遷移到 Stripe。為了正確遷移資料,Stripe 需要將客戶原服務商提供的資料與客戶提供的資料進行合併。你的任務是實現資料合併功能,生成可以直接匯入客戶 Stripe 賬戶的最終結果。
資料以字串陣列形式給出,第一行是表頭,後續是資料行。每行用逗號分隔,無額外逗號。
第一部分:基礎內連線
任務:實現函式 joinDataSet(fieldName, customerFile, processorFile, skipUnmatched) 返回兩個檔案的內連線結果(僅保留 fieldName 列值相同的行)。
關鍵要求:
- 結果列順序:先保留 customerFile 的所有列,再追加 processorFile 的所有列(表頭也要合併)
- 排序規則:先按 customerFile 中的 order 列排序,再按 processorFile 中的 order 列排序
- 只保留匹配成功的行(Inner Join)
示例(已提供在查詢中,我這裡略,實際輸出為合併後的表頭 + 匹配行)
解題思路:
- 解析兩個檔案的表頭,記錄每個欄位的索引
- 用字典以 fieldName 為 key 儲存 customerFile 的行(保留原始順序)
- 遍歷 processorFile,匹配時合併兩行字串
- 收集所有匹配結果,按指定規則排序後返回
第二部分:基礎左連線
更新要求:
- 支援左連線:customerFile 中的每一行都必須保留
- 如果 processorFile 中沒有匹配記錄,對應的欄位用空字串 “” 填充
其他規則(列順序、排序等)與第一部分完全一致。
示例輸出:未匹配的行會在 processorFile 對應欄位位置填充逗號(空值)
思路擴充套件:
- 在第一部分程式碼基礎上,當 customerFile 中的記錄沒有匹配時,手動構造空值的 processorFile 部分
- 注意空值填充要對應正確的列數
第三部分:一對多匹配
更新要求:
- 支援一對多:同一個 customer_id 在 processorFile 中可能有多條記錄
- 此時需要為每一條 processorFile 記錄生成一行,customerFile 的資訊重複顯示
所有前序規則仍然有效(左連線、排序、列順序等)。
示例:一個 customer_id 對應多條支付方式記錄時,結果中會出現多行,customer 資訊重複。
思路關鍵:
- 不能簡單用 dict 存單條記錄,需要把 processorFile 中相同 fieldName 的所有行收整合列表
- 遍歷 customerFile,對每一條 customer 記錄,遍歷其對應的所有 processor 記錄進行合併
寫在最後
以上就是我這次 Stripe OA 的真實題目分享和解題思路。
Stripe 的 OA 雖然題型固定,但對程式碼組織能力、邊緣 case 處理和工程實現細節要求比較高,時間也比較緊。如果你在準備 Stripe OA 時,感覺資料解析、Join 邏輯或程式碼結構方面還有提升空間,可以考慮瞭解一下 Programhelp 的服務。
他們的團隊有頂尖院校和大廠背景的學長,會直接跟你溝通,提供 OA 輔助 和針對性指導,幫助你更高效地準備 Stripe、Amazon、NVIDIA 等公司的 OA。
有需要的同學可以自己去 Programhelp 看看,學長會根據你的具體情況給出建議。
感謝閱讀,祝大家早日透過 Stripe OA,順利拿到 Offer!