Instacart SWE OA 面经|购物车折扣、配送窗口与 Debug 题型解析

作者:

编辑于:

30 June, 2026

阅读时长:

1 minute read
Instacart OA 面经配图

Instacart 的 SWE OA 准备要把算法题和业务状态题一起练。购物车、配送窗口、库存更新、优惠券叠加这些场景很容易把一道普通数组题变成带状态的实现题。做题时先把输入字段和状态转移写清楚,再去优化复杂度;只追求几行代码,后面 debug 会很被动。准备前可以先看 Interview Query 的 Instacart SWE 面试指南,它对 coding、technical screen 和 onsite 的准备方向拆得比较细。

第一题:购物车折扣结算

题目描述

给定一组购物车商品,每个商品包含 item_idcategorypricequantity。再给定若干优惠规则:满减、同品类折扣、指定商品买二减一。要求计算最终价格,并输出每条优惠命中的金额。优惠按输入顺序执行,后面的优惠基于前面折扣后的价格继续计算。

解题思路

先把购物车聚合成 item_id -> item_state,状态里保留原价、数量、当前单价和已用优惠。满减规则只需要计算当前 subtotal;品类折扣遍历同类商品并更新当前单价;买二减一按数量整除计算免费件数,再从当前单价扣减。关键是不要把所有规则硬编码成 if-else,可以定义 apply_discount(cart, rule),每条规则返回折扣金额和更新后的 cart。金额用整数分表示,最后再格式化成美元,避免浮点误差。复杂度:设商品数为 n、规则数为 r,直接实现为 O(nr),如果品类规则很多,可以提前建 category -> item_ids 降低扫描成本。

第二题:配送窗口合并

题目描述

给定若干 shopper 的可配送时间窗口 [start, end],以及用户希望下单的时间范围,返回所有可用配送窗口。窗口可以重叠,重叠部分需要合并;同一个 shopper 的窗口不能被重复计算。输出按开始时间升序排列。

解题思路

先过滤掉和用户时间范围没有交集的窗口,再把每个窗口裁剪到用户范围内。按 start 排序后做区间合并:当前窗口和结果最后一个窗口重叠时更新 end,否则追加新窗口。输入里如果带 shopper_id,先对同一个 shopper 的窗口去重或合并,再进入全局合并,避免重复曝光同一段时间。面试里要主动说明闭区间和半开区间的选择,例如 [start, end)end == next_start 不算冲突。复杂度:排序 O(n log n),合并 O(n),空间 O(n)。

第三题:库存扣减 Debug

题目描述

给一段库存扣减代码:服务先检查库存,再创建订单,最后扣减库存。隐藏问题是并发下两个订单同时通过库存检查,导致库存被扣成负数。要求指出 bug,并改成不会超卖的实现。

解题思路

库存检查和扣减必须放在同一个原子操作里。数据库实现可以用条件更新:UPDATE inventory SET count = count - qty WHERE item_id = ? AND count >= qty,再根据 affected rows 判断是否成功。分布式服务里还要给订单请求加 idempotency key,避免客户端重试时重复扣减。创建订单和扣库存的顺序也要讲清楚:先创建 pending order,再原子扣库存;扣减成功后改成 confirmed,失败则改成 rejected。这样即使中间服务重启,也能通过订单状态恢复。

备考建议

Instacart OA 不要只刷纯算法。数组、哈希、区间合并、heap、队列、状态机和 debug 都要练,尤其是购物车、库存、配送、替代商品推荐这类业务输入。写代码前先列字段和边界:空购物车、重复商品、优惠顺序、库存为 0、时间窗口贴边、并发重试。最后预留几分钟用小样例手动跑一遍状态变化。

FAQ

Instacart OA 要重点准备哪类题?

重点是带业务语义的实现题。题目本身不一定长,但输入字段多,边界也多。把哈希表、排序、区间、状态更新练熟,比只背题号更稳。

Debug 题怎么拿分?

先复述状态流,再指出失败路径。比如库存题要说明并发检查、原子扣减、幂等重试和订单状态恢复。只说"加锁"不够,要讲锁放在哪里、失败后怎么恢复。

参考来源

关于 CSOFFERPREP

进 VO 之前,可以找 CSOFFERPREP 做实时面试助攻和备考辅导。CSOFFERPREP 深耕北美 IT 行业多年,已帮助万余名学生进入全球 500 强企业。导师来自一线大厂资深工程师和面试官,对 Instacart 这类注重业务状态和工程质量的公司的面试套路很熟悉。无论是 OA辅助、OA 辅导、VO 辅助、VO 模拟面试、VO 辅助还是系统设计辅助,都可以获得更有针对性的准备方案:CSOFFERPREP · 服务详情