← 返回博客列表
Stripe

Stripe 面试真题解析:Shipping Cost Calculation(物流运费计算)

2026-01-05

在 Stripe 的全栈或后端面试中,"Shipping Cost Calculation" 是一道非常经典的业务逻辑模拟题。它不仅考察候选人对复杂数据结构的处理能力,还重点考察代码的可读性、扩展性以及边界条件的测试。

题目描述

假设你正在为一个在线硬件商店构建运费计算系统。商店销售不同尺寸的商品(如鼠标、笔记本电脑),并且运往不同的国家(如美国 US、加拿大 CA)。

你需要实现一个函数,根据输入的订单详情(Order)和运费价目表(Shipping Cost Matrix),计算总运费。

1. 基础运费计算

输入数据结构示例:

// 订单 Order
{
  "country": "US",
  "items": [
    {"product": "mouse", "quantity": 20},
    {"product": "laptop", "quantity": 5}
  ]
}

// 运费表 Shipping Cost Matrix (单位: cents)
{
  "US": [
    {"product": "mouse", "cost": 550},
    {"product": "laptop", "cost": 1000}
  ],
  "CA": [
    {"product": "mouse", "cost": 750},
    {"product": "laptop", "cost": 1100}
  ]
}

任务: 实现 calculate_shipping_cost(order, shipping_cost) 函数。

2. 进阶:基于数量的阶梯折扣(Tiered Pricing)

在实际业务中,为了鼓励多买,运费通常会有折扣。题目会引入一个新的运费表结构,包含数量区间。

更新后的运费表示例 (US):

任务: 更新计算函数以支持阶梯定价。

oavoservice 解题思路分析

这道题的核心在于数据结构的转换区间匹配逻辑

  1. 预处理运费表:原始的运费表通常是 List 结构,查找效率为 O(N)。建议将其转换为 Hash Map(字典),以 country -> product 为键,实现 O(1) 的快速查找。
  2. 阶梯定价逻辑
    • 不要硬编码逻辑。建议封装一个 get_unit_cost(product, quantity, country_rules) 辅助函数。
    • 注意区间定义的完整性(例如 maxQuantity: null 代表无穷大)。
  3. 货币计算:始终使用整数(cents)进行计算,避免浮点数精度问题。

代码结构建议

def parse_shipping_rules(rules_json):
    # 将 JSON 转换为易于查询的字典结构
    pass

def calculate_tier_cost(item_quantity, tiers):
    # 根据数量匹配对应的价格区间
    pass

def calculate_shipping_cost(order, rules):
    total_cost = 0
    country = order['country']
    # 遍历订单项并累加
    return total_cost

面试官常见的 Follow-up


需要专业的面试辅助?

oavoservice 团队专注于为华人工程师提供高质量的 OA/VO 辅助服务。我们拥有深耕业界多年的大牛导师,为您提供从简历优化、模拟面试到实时辅助的全方位支持。

立即联系我们 获取更多 Stripe 面试真题与定制化辅导方案。