Shopify OA 高频真题分享 | 零基础高效刷题上岸技巧

2,031Times read

最近不少同学在准备 Shopify OA ,这一家的风格其实挺“产品化”的,不是纯刷 LeetCode 能完全 cover。这里帮你整理一版常见结构 + 4–5 道高频题,基本把核心考点覆盖了。

Shopify OA 高频真题分享 | 零基础高效刷题上岸技巧

Shopify Online Assessment 基本信息(2026 最新)

  • 平台:CoderPad
  • 题量:通常 2-3 道 Coding 题(主流是 3 题,少数情况 2 题)
  • 时长:90 分钟
  • 难度:Easy ~ Medium-Hard,第一题较友好,后面题目逐渐增加业务逻辑和优化要求
  • 通过关键:至少 2 题 Full AC,代码风格清晰、边界 case 处理完整

很多候选人反馈 Shopify OA 题型相对固定,但第二、三题会加入电商业务背景,需要快速理解规则。

2026 高频真题分享

Q1. 捆绑购物车计价(哈希表 + 模拟)

题目描述: 输入一个格式为 [“日期”, “商品”] 的订单数组。规则如下:

  • 同一天同时购买了 popcorn 和 soda → 捆绑价 $9.00
  • 单独购买 popcorn → $8.00
  • 单独购买 soda → $2.50

计算并返回总价(浮点数)。

示例:

orders = [
  ["10212021", "popcorn"],
  ["10222021", "popcorn"],
  ["10212021", "soda"],
  ["10212021", "popcorn"],
  ["10212021", "soda"]
]
# 输出: 28.5

解题思路:

  1. 用 HashMap 按日期分组,统计每天 popcorn 和 soda 的数量
  2. 每天可配对的捆绑数 = min(popcorn_count, soda_count)
  3. 剩余未配对的按单品价格计算
  4. 注意浮点精度(建议用整数分计算,最后转回美元)

参考代码:

from collections import defaultdict

def calculate_total(orders):
    daily = defaultdict(lambda: {"popcorn": 0, "soda": 0})
    for date, item in orders:
        daily[date][item] += 1
   
    total = 0.0
    for items in daily.values():
        p, s = items["popcorn"], items["soda"]
        bundles = min(p, s)
        total += bundles * 9.0
        total += (p - bundles) * 8.0
        total += (s - bundles) * 2.5
    return total

注意事项:同一天可以有多次捆绑;注意浮点精度,面试中可用整数分(cents)避免误差。

Q2. 最长有效括号子串(栈 / DP)

题目描述: 给定一个只包含 ‘(‘ 和 ‘)’ 的字符串,返回最长有效(格式正确)括号子串的长度。

示例:

  • “(()” → 2
  • “)()())” → 4
  • “” → 0

解题思路(推荐栈方法):

  1. 初始化栈,放入哨兵 -1
  2. 遇到 ‘(‘ 入栈
  3. 遇到 ‘)’ 弹出栈顶
    • 若栈空,则将当前索引入栈作为新基准
    • 若栈非空,更新最大长度 = 当前索引 – 栈顶索引

参考代码:

def longestValidParentheses(s: str) -> int:
    stack = [-1]
    max_len = 0
    for i, ch in enumerate(s):
        if ch == '(':
            stack.append(i)
        else:
            stack.pop()
            if not stack:
                stack.append(i)
            else:
                max_len = max(max_len, i - stack[-1])
    return max_len

注意事项:栈为空时要 push 当前索引作为新基准;Shopify 比较看重代码可读性,栈方法比 DP 更清晰。

Q3. 判断回文串(双指针 / 字符串)

题目描述: 给定一个字符串,判断它是否是回文。要求:

  • 忽略标点符号和空格
  • 大小写不敏感
  • 空字符串视为回文

示例:

  • “A man, a plan, a canal: Panama” → True
  • “race a car” → False
  • ” ” → True

解题思路:

  1. 双指针从两端向中间移动
  2. 跳过非字母数字字符
  3. 比较字符(转小写后)

参考代码:

def isPalindrome(s: str) -> bool:
    left, right = 0, len(s) - 1
    while left < right:
        while left < right and not s[left].isalnum():
            left += 1
        while left < right and not s[right].isalnum():
            right -= 1
        if s[left].lower() != s[right].lower():
            return False
        left += 1
        right -= 1
    return True

注意事项:Shopify 很看重边界处理(空串、全符号、单字符、大小写)。

Q4. 各地区高于均值的平均订单收入(SQL)

题目描述: 给定 orders 表和 customers 表,找出 2024 年各地区的平均订单收入,只返回高于所有地区整体平均值的地区及其平均收入。

解题思路(CTE 写法推荐):

  1. 第一步 CTE:按地区统计 2024 年平均收入
  2. 第二步:在结果中过滤高于整体均值的地区

参考代码:

WITH region_avg AS (
    SELECT 
        c.region,
        AVG(o.revenue) AS avg_rev
    FROM orders o
    JOIN customers c ON o.customer_id = c.customer_id
    WHERE EXTRACT(YEAR FROM o.order_date) = 2024
    GROUP BY c.region
)
SELECT region, ROUND(avg_rev, 2) AS avg_rev
FROM region_avg
WHERE avg_rev > (SELECT AVG(avg_rev) FROM region_avg)
ORDER BY avg_rev DESC;

注意事项:年份过滤不能忘;要区分“各地区均值的均值”和“所有订单的总均值”。

Q5. 字母分值单词求和(哈希表 / 贪心)

题目描述: 给定一个单词列表,对每个单词计算其“字母分值”(a=1, b=2, …, z=26),返回每个单词的分值列表。扩展版可要求返回分值最高的单词。

解题思路:

  • 对每个单词遍历字母,用 ord(ch) – ord(‘a’) + 1 计算分值
  • 如需最高分单词,用 max() + key 参数

参考代码:

def word_scores(words):
    def score(word):
        return sum(ord(ch.lower()) - ord('a') + 1 for ch in word)
    return [score(w) for w in words]

def highest_score_word(words):
    def score(word):
        return sum(ord(ch.lower()) - ord('a') + 1 for ch in word)
    return max(words, key=score) if words else ""

注意事项:主动处理大写字母、空字符串等边界;Shopify 比较看重代码风格和可读性。

备考建议

官方推荐复习方向:算法重点练习 LeetCode Easy–Medium,核心题目包括 #20、#32、#56、#88、#121;SQL 重点复习聚合函数、JOIN、CTE 与子查询;逻辑推理部分可以参考 GMAT Critical Reasoning 或商业案例题。Shopify 尤其看重代码可读性,变量命名清晰、边界情况处理(如空购物车、零库存、浮点精度)都会影响评分。建议将 OA 当作第一轮正式面试来对待,在注释中写清楚自己的假设。

如果你在准备 Shopify OA 时遇到具体难题,或者想针对 Shopify 高频题型做系统模拟练习,欢迎了解 Programhelp 的服务。我们团队有丰富的大厂 OA 辅导经验,能提供针对性的实时思路指导和全真模拟,帮助你更高效地准备 Shopify、Amazon 等公司的 OA。

author avatar
Jack Xu MLE | 微软人工智能技术人员
Princeton University博士,人在海外,曾在谷歌、苹果等多家大厂工作。深度学习NLP方向拥有多篇SCI,机器学习方向拥有Github千星⭐️项目。
End of text
 0