Shopify OA 高頻真題分享 | 零基礎高效刷題上岸技巧

2,029Views

最近不少同學在準備 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博士,人在海外,曾在Google、蘋果等多家大廠工作。深度學習NLP方向擁有多篇SCI,機器學習方向擁有Github千星⭐️專案。
END
 0