← 返回面经列表

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

2 分钟

在 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):

  • Mouse: 任意数量 -> 550 cents
  • Laptop:
    • 0-2 台 -> 1000 cents/台
    • 3台及以上 -> 900 cents/台

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

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

  • 全球化扩展:如果支持 100+ 国家,内存放不下运费表怎么办?(考察数据库设计/缓存)
  • 缺省处理:如果订单中的商品在运费表中不存在,应该抛出异常还是使用默认运费?
  • 多币种支持:如果运费表包含不同币种,如何计算总价?

需要专业的面试辅助?

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

  • 100% 原创代码:拒绝雷同,确保安全。
  • 实时辅助:VO 面试中提供关键思路与代码片段,助你流畅作答。

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


联系方式

Email: [email protected] Telegram: @OAVOProxy