Stripe OA 面试真题解析:按 merchant、card type、payout date 聚合 receivables

15次阅读
没有评论

Part 1 prompt: Stripe in Brazil is obliged to register customers’ transactions for each merchant with the central bank as an aggregated unit per day. These are called receivables.

A receivable is identified by 3 identifiers:

  • merchant_id (String): The id of the merchant on Stripe side.
  • card_type (String): The type of the card used for the transaction (e.g. Visa).
  • payout_date (String): String date of the funds available to the merchant by Stripe.

A payment transaction in Stripe API can be represented as the following object:

Transaction {
  string customer_id
  string merchant_id
  string payout_date
  string card_type
  int amount
}

Implement register_receivables function that takes a string in CSV format where each line represents a transaction and returns the registered aggregated receivables using the rules above. Print the returned receivables to console using the format below. Feel free to parse the CSV using a standard or a 3rd party library or implement it yourself.

You can assume the following about the input:

  • The first line of the input is a header. The header is always the same so it can be ignored or hardcoded.
  • You can assume that the input has already been read from a file and checked for correctness.
  • No data fields in this file will include commas or whitespace surrounding the field values.

You can also assume the following about the output:

  • The first line of the output is the header. The header is always the same so it can be hardcoded.
  • Order of the output does not matter.

Example input 1:

customer_id,merchant_id,payout_date,card_type,amount
cust1,merchantA,2021-12-30,Visa,150
cust2,merchantA,2021-12-30,Visa,200
cust3,merchantB,2021-12-31,MasterCard,300
cust4,merchantA,2021-12-30,Visa,50

Output 1:

id,card_type,payout_date,amount
merchantA,Visa,2021-12-30,400
merchantB,MasterCard,2021-12-31,300

Example input 2:

customer_id,merchant_id,payout_date,card_type,amount
cust1,merchantA,2021-12-29,MasterCard,50
cust2,merchantA,2021-12-29,Visa,150
cust3,merchantB,2021-12-31,Visa,300
cust4,merchantB,2021-12-29,MasterCard,200

Output 2:

id,card_type,payout_date,amount
merchantA,MasterCard,2021-12-29,50
merchantA,Visa,2021-12-29,150
merchantB,Visa,2021-12-31,300
merchantB,MasterCard,2021-12-29,200

这道 Stripe 面试题考察的是 CSV 解析、哈希表分组聚合,以及按多个字段对交易进行汇总的能力。题目要求把每条交易按 merchant_id、card_type 和 payout_date 作为同一个 receivable 进行归并,并把 amount 累加后输出。实现时通常可以先跳过表头,再用字典或映射结构把三元组作为 key,value 保存累计金额;最后按题目要求输出 id、card_type、payout_date、amount。由于示例中同一 merchant、同一卡种、同一到账日的多笔交易需要合并,因此核心就是“分组 + 求和”。

正文完
 0