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、同一卡种、同一到账日的多笔交易需要合并,因此核心就是“分组 + 求和”。