这不是“投简历收到系统消息,自动安排面试”的OA流水账,这是真·Amazon面试,真人面试官,真·思维拉扯,真·算法硬碰硬。如果你也在准备Amazon的SDE岗位,或者怕算法面试翻车,这篇文章你一定要看完。
🧠 面试场景还原:远程 + 实时coding + 全英文交流
背景是我投的是Amazon的SDE岗位(Software Development Engineer),这轮是正式的远程技术面试(不是OA),全程屏幕共享,在线实时coding,面试官是印度口音的亚麻工程师,全英文交流,不过人还挺nice。
刚连上线寒暄完,面试官就直接给了这道题(原题如下👇):
💬 原题:Top K Product Bundles for Maximum Revenue
Amazon frequently offers product bundles to customers, where multiple related products are combined and sold together at a discounted price. The goal is to create attractive bundle offers that maximize potential revenue.
Given two equally sized arrays, A and B, where A represents the individual selling prices of a set of products, and B represents the individual selling prices of another set of related products.
Return the top K product bundle combinations that generate the highest total price (A[i] + B[j]).
❗Output format:
(revenue, index in A, index in B)
📍Clarification 确认逻辑:先别急着写代码!
我马上确认了一些问题,避免踩坑:
- Q: 我们要的是top K最大价格组合吗?
A: 是的,利润不用考虑,只比价格之和。 - Q: A和B长度一样吧?K不会大于N²吧?
A: 对,数组长度是N,K <= N²。
💻 Brute Force暴力解法:能写但不推荐
暴力做法就很直接:
- 枚举所有
A[i] + B[j]
,生成 N² 个组合。 - 对这些组合按revenue排序,返回前K个。
优点:简单,容易写。
缺点:一到N大就直接炸了,时间复杂度 O(N² log N²),空间 O(N²),不是面试官想看到的优化解。
🚀 高能解法:Min-Heap + K大小限制 → 空间压缩 + 时间优化!
我立马切换到优化思路,用的是小顶堆(min heap):
核心思想:
- 遍历每一个
A[i] + B[j]
组合 - 用一个最小堆(容量为K)只维护当前最大的K个组合
每次遇到新组合:
- 如果堆还没满,直接放进去
- 如果已经K个了,就看新组合是否比堆顶大,如果大就替换掉最小的

🧠 时间复杂度分析:
- 遍历所有组合:O(N²)
- 堆操作:每次 O(log K),最多 N² 次 → 总体 O(N² log K)
- 空间复杂度:O(K),只保留top K个组合
✅ 相比暴力排序 N² 项,空间和时间都省一大截!
🧩 面试官追问来了:能不能再优化,不枚举所有组合?
来了来了,这是Amazon面试常见套路:第一问解完,继续优化!
我用了更进一步的heap + visited组合优化,不遍历所有组合,只从最大组合出发,逐步扩展相邻最大可能。
思路和Leetcode上的 Find K Pairs with Largest Sums
类似:
- 先把A和B都降序排序(从高价往下看)
- 初始化heap里放最大组合:A[0] + B[0]
- 每次从堆里弹出最大组合
(i, j)
,并把(i+1, j)
和(i, j+1)
放进heap(避免重复用一个set记录)
优点:
- 不生成所有 N² 个组合,只探索有希望进入Top K的组合!
- 只生成K个左右的组合 → 时间接近 O(K log K)

✍️ 面试总结 & 面试官评价
面试官对我先写出暴力版,再主动优化成堆结构,然后再讲到更进一步heap优化思路表示非常满意。重点表扬:
- 对时间/空间复杂度理解很清晰
- 优化有层次感,不是死记硬背的套路
- 能准确沟通每一步的设计选择和tradeoff
最后5分钟还交流了一些我对亚马逊系统设计兴趣点,他也简要介绍了他负责的系统如何处理大规模实时数据写入——很有收获。
🎯 总结:Amazon面试想拿高分,不是会做题就够了!
这场面试让我明确:
✅ 题要做对
✅ 优化要有逻辑
✅ 交流要主动、解释要清晰
✅ 不只是代码能力,更看你是不是个能“解决问题”的人
如果你也在准备Amazon或FAANG的技术面,建议一定要刷Leetcode高频题+练习Heap/双指针等思维题型,但别死背,要理解思路背后的本质。
经过csoahelp的面试辅助,候选人获取了良好的面试表现。如果您需要面试辅助或面试代面服务,帮助您进入梦想中的大厂,请随时联系我。
If you need more interview support or interview proxy practice, feel free to contact us. We offer comprehensive interview support services to help you successfully land a job at your dream company.
