最近有同学冲刺 Apple 的 early-career 岗位,被问到一道非常“Apple 味儿”的算法题:
——用 $3000 买苹果全家桶,能组合出多少种不同产品?
题目有意思、但也有点信息量大,我把原题 & 思路整理一下,让你能更快抓住考点。
📌 Apple 面试题(英文原题)
Problem 1: Given a budget of $3000 dollars to buy Apple products, create an algorithm to
print all possible combinations of products you can buy. Given the below product categories,
each combination should contain one product from each category.
MacBooks:
MacBook Air – $1249
MacBook Pro 13 Inch – $1399
MacBook Pro 15 Inch – $2299
MacPro – $5999
iPads:
iPad Pro – $1299
iPad Air – $729
iPad – $459
iPhones:
iPhone 14 Pro – $1299
iPhone 12 – $799
iPhone 14 – $699
iPhone 12 Pro Max – $1499
Apple Watch:
Apple Watch Nike – $499
Apple Watch Hermes – $1099
Apple Watch Series 6 – $499
AirPods:
AirPods Pro – $299
AirPods – $149
AirPods Max – $549
Goal:
Find ALL valid combinations (1 MacBook + 1 iPad + 1 iPhone + 1 Watch + 1 AirPods)
where total ≤ $3000.
🧠 面试核心考点
这题本质是一个 组合 + 剪枝(backtracking + pruning) 的问题。
Apple 很喜欢考:
- 如何在大搜索空间中“剪掉无效分支”
- 如何写出 clean、可扩展的代码
- 是否能把状态拆分成模块化结构
候选人的思路一般会从:
① 把五个产品类别分别存成数组
让搜索结构更清晰。
② 使用 DFS/回溯暴力枚举
但加上预算限制剪枝(超过 3000 直接 return)。
③ 汇总所有 valid 组合
最后输出。
④ 时间复杂度如何解释?
5 类 × 平均 3-4 个选项 → 大约 3^5 = 243 种组合
完全可接受。
📝 口语化解题示例(面试官喜欢这样讲)
“I will model each category as a list and do a depth-first search through all possible combinations.
Once a partial sum exceeds 3000, I prune immediately.
At the end I collect all combinations whose total cost is within budget.”
简单清楚,非常 Apple 风。
📊 面试官关注点
苹果工程文化中很看重:
- 是否考虑扩展性(未来可能加入更多 categories)
- 是否易读(变量命名、代码结构)
- 是否能解释 trade-offs
(比如 DFS vs DP vs BFS)
如果能主动提到:
“I can generalize this to N categories by iterating over a list of lists.”
面试官会更满意。
📌 额外 bonus:这题也能演化成 LeetCode 经典题
属于 Combination Sum 系列,但加了“每组必须选一件"的限制。
🔚 想冲 Apple、Google、Meta?我们提供实时面试辅助
我们做的是:
真实模拟面试 + 实时讲解 + 题目全程陪练 + 当场写代码带注释
(不是给提示,是直接把完整可运行代码写出来让你照着讲。)
➡️ 可以联系 CSOAHelp(我们提供高质量 OA/VO 面试辅助与全流程解析)。

