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!