目录
正在加载目录...

Weee! SWE 面经|生鲜电商的面试,题目和业务绑得很紧

刚面完 Weee! SWE ,出来第一反应是:这家和大多数互联网公司不一样。不是说题难,是每道题都能感觉出来它在考什么实际问题——购物车合并区间、高并发库存扣减、生鲜购买频率统计,这些在他们系统里都是真实的工程挑战。整场下来没有一道题是为了考而考,这种面试风格挺少见的。四轮按顺序写。

Weee! SWE 面经|生鲜电商的面试,题目和业务绑得很紧

一面

题目是处理购物车商品的合并区间——类似 Merge Intervals,但加上了商品类别和有效期的条件。同一类别、有效期相邻或重叠的商品可以合并,过期或数量为 0 的直接丢弃。

我没有上来就写代码,先和面试官确认了几个问题:商品数量为 0 怎么处理、有效期已过的算不算、跨类别的商品可以合并吗。面试官说”大多数候选人上来就直接写,你这样更好”。

核心逻辑是按类别分组,再按有效期排序做标准 Merge Intervals。代码本身不复杂,但业务规则要先澄清清楚,不然方向就跑偏了。

VO Round 1:库存扣减系统

这轮要设计一个库存扣减系统,核心考点是两个:高并发下怎么防超卖,用户取消订单后库存怎么回滚。

我从最简单的版本开始说——单机用乐观锁(version 字段加 CAS 更新),冲突时重试;超卖防护用预扣库存(下单先扣,支付确认后落库,超时或取消后回滚)。面试官追问并发量很高时数据库锁竞争怎么优化,我提了 Redis 原子操作做库存预扣、数据库做最终一致,他满意了。

这轮如果能主动提到乐观锁 vs 悲观锁的取舍、消息队列做异步回滚,面试官反应会明显更好。提前了解一下电商基础架构很值。

VO Round 2:Coding

这轮两道题,一道滑动窗口一道树遍历,节奏挺快的。

第一道:时间窗口内购买最频繁的用户

Weee! 把它包成了生鲜购买的业务场景——给一份带时间戳的购买记录,找出某个时间窗口内购买特定生鲜最频繁的用户。核心是滑动窗口加哈希表,Amazon、Datadog 的面经里也有类似场景出现过。

双指针:右指针扩张把新记录加进窗口,左指针在时间跨度超出窗口长度时收缩,把移出的记录从哈希表里减掉(次数减到 0 就删掉这个 key)。全程维护最大频次和对应的用户。

写完之后面试官追了两个:同一用户同一秒内购买多次怎么算(按记录条数还是去重);如果要返回 Top K 用户而不是只返回第一名怎么改(最小堆维护 K 个最大值)。

这类题最容易漏的是:左指针收缩时哈希表要及时清零,以及窗口边界是严格大于还是大于等于,对着题面确认清楚。

第二道:分类目录树的层级展示

本质是 N-ary Tree 的层序遍历(LC 429),包了一层”电商分类目录树按层渲染”的业务皮。

BFS 标准写法,每次把当前层所有节点出队、记录值、子节点全部入队,循环到队列空:

from collections import deque

def level_order(root):
    if not root:
        return []
    result, queue = [], deque([root])
    while queue:
        level = []
        for _ in range(len(queue)):
            node = queue.popleft()
            level.append(node.val)
            queue.extend(node.children)
        result.append(level)
    return result

写完之后面试官说优化一下空间复杂度。我分析了:BFS 显式队列是 O(W)(最大宽度),DFS 递归省掉队列但递归栈深度是 O(H)(树高),两种最坏情况都是 O(n),没有更优的通用方案。

VO Round 3:HM 面

这轮问得很细,不是走过场。

Why Weee? 面试官真的在听,不是让你背稿。我说了对他们”把生鲜电商做到线上”这件事的认可,以及对供应链技术的兴趣,他追问了”你觉得生鲜电商最大的技术挑战是什么”——考你有没有真的思考过这个行业。

还有一道很有意思的排查题:如果你发现线上支付 API 突然报错,你会怎么排查?

我的思路是:先看错误日志和监控(是所有用户还是部分用户、哪个支付渠道)→ 确认第三方服务状态有没有 incident → 看最近有没有代码变更、回滚是否可行 → 临时降级策略(提示用户稍后重试或切换支付方式)→ 通知相关团队同步信息。面试官对这个排查链路比较认可。

Weee! SWE 相关FAQ

Q1:Weee! SWE 面试难吗?
整体 Coding 难度中等,更看重业务理解、边界条件和沟通。

Q2:Weee! 会考 System Design 吗?
会,重点准备库存、订单、支付等电商系统。

Q3:Weee! Coding 主要考什么?
常见方向包括 Merge Intervals、Sliding Window、BFS 和 Hash Table。

Q4:Weee! HM 面需要准备什么?
重点准备 Why Weee?、项目深挖和业务场景类 BQ。

相关面经文章

  • [Shopify SDE NG 面经|Coding + System Design] — 电商技术岗面试可以重点参考,里面包含购物车、库存管理和订单处理系统等相关内容。Shopify SDE NG 面经
  • [Uber SDE 面经|Coding + System Design 全流程] — 适合补充 Sliding Window、Merge Intervals 以及高并发系统设计思路。Uber SDE 面经
  • [Meta NG 面经|Coding + BQ + System Design] — 如果重点准备 VO 和 BQ,可以参考这篇的追问方式和 System Design 准备思路。Meta NG 面经
  • [Microsoft SDE 面经|Coding + 系统设计 + OOD] — 适合准备 Coding、OOD 和需求澄清类问题。Microsoft SDE 面经

出来的感受

Weee! 的面试官都挺 nice,是引导型而不是压力型,卡住了他们会给提示。但不要因此松懈——BQ 那轮追问很深,Why Weee? 随便说两句很容易被问穿。

最值得提前准备的是电商基础架构这块:库存扣减、订单状态机、支付回调幂等。进去之后能主动把技术方案和业务场景联系上,印象分会高很多。

有在准备 Weee! 或其他电商赛道公司的同学,可以来找我们聊聊。InterviewShow 做过这类电商技术岗的面试,库存系统 OOD、滑动窗口业务场景题、BQ 故事打磨都有覆盖,一对一跟着走。有需要的来聊。

END