← 返回部落格列表 Akuna Capital Intern OA 2026 攻略|HackerRank 70 分鐘 Order Book + 機率題完整解析
Akuna Capital

Akuna Capital Intern OA 2026 攻略|HackerRank 70 分鐘 Order Book + 機率題完整解析

2026-05-16

Akuna Capital 是芝加哥本土起家、專注選擇權做市的 prop trading 公司,在華人留學生圈知名度不如 Citadel / Optiver,但實習生招聘量卻是同體量公司裡最大的之一(2026 全球 ~90 個實習 offer,其中 SDE ~40 + Trader ~30 + Quant Research ~20)。

它的 OA 走 HackerRank,70 分鐘 4-5 題,特點是程式設計 + 機率 + 業務知識混合——只刷 LeetCode 的同學經常 OA 通過但 onsite 掛掉。本文按 2026 春季最新候選人回饋,把 OA 題型、三個 track 差異、備考路徑講一遍。

Akuna Intern OA 概覽

維度 細節
平台 HackerRank
時長 70 分鐘
題量 4-5 題(含 MCQ + 程式題)
難度 LC Easy/Medium 演算法 + 2 道機率/數學 MCQ + 1 道情境題
通過線 程式題 90%+ AC 且 MCQ 全對
回饋週期 7-10 天
Next Step Super Day(3-4 輪 onsite,含 trading game)

重要變化:2026 cycle 起 Akuna 把 SDE / Trader / Quant Research 三個 track 的 OA 題庫部分分開——SDE 偏演算法 + 系統題,Trader / Quant 偏機率 + 心算。一份 OA 通常包含 2 道公共程式題 + 2-3 道 track-specific MCQ。

真題一:Order Book Simulator(SDE / Trader 共有)

題目描述

實作一個簡化的 limit order book,支援以下指令:

ADD <order_id> <BUY|SELL> <price> <qty>
CANCEL <order_id>
PRINT

ADD 後必須立即做 matching:buy 與 sell 價格交叉則成交(按價格優先 + 時間優先),輸出每筆成交 MATCH <buy_id> <sell_id> <price> <qty>

PRINT 輸出 best bid / best ask 與各自掛單總量。

解題思路

經典 limit order book,用兩個heap維護:

注意:HackerRank 上 70 分鐘拿不完所有點,但只做 ADD + matching 部分通常夠 80% AC。CANCEL 用 lazy deletion(id → cancelled set)即可,不要真的從 heap 裡刪。

Python 解法

import heapq
from collections import defaultdict

class OrderBook:
    def __init__(self):
        self.buy = []   # max heap: (-price, ts, id, qty)
        self.sell = []  # min heap: (price, ts, id, qty)
        self.qty = {}   # id -> remaining qty
        self.cancelled = set()
        self.ts = 0

    def _alive_top(self, heap):
        while heap and (heap[0][2] in self.cancelled or self.qty.get(heap[0][2], 0) == 0):
            heapq.heappop(heap)
        return heap[0] if heap else None

    def add(self, oid, side, price, qty):
        self.ts += 1
        self.qty[oid] = qty
        matches = []
        if side == "BUY":
            while qty > 0:
                top = self._alive_top(self.sell)
                if not top or top[0] > price:
                    break
                sp, sts, sid, sqty = top
                trade = min(qty, self.qty[sid])
                matches.append(("MATCH", oid, sid, sp, trade))
                qty -= trade
                self.qty[sid] -= trade
                self.qty[oid] -= trade
                if self.qty[sid] == 0:
                    heapq.heappop(self.sell)
            if qty > 0:
                heapq.heappush(self.buy, (-price, self.ts, oid, qty))
        else:  # SELL
            while qty > 0:
                top = self._alive_top(self.buy)
                if not top or -top[0] < price:
                    break
                bp, bts, bid, bqty = top
                trade = min(qty, self.qty[bid])
                matches.append(("MATCH", bid, oid, -bp, trade))
                qty -= trade
                self.qty[bid] -= trade
                self.qty[oid] -= trade
                if self.qty[bid] == 0:
                    heapq.heappop(self.buy)
            if qty > 0:
                heapq.heappush(self.sell, (price, self.ts, oid, qty))
        return matches

    def cancel(self, oid):
        self.cancelled.add(oid)
        self.qty.pop(oid, None)

時間複雜度:amortized O(log n) per ADD :matching 時一定要先看 _alive_top——否則 heap 頂可能是已取消訂單,會輸出錯誤的 match。

真題二:Coin Flip Expected Value(Trader / Quant Research 共有)

題目描述(MCQ 風格)

一枚均勻硬幣最多拋 10 次,但出現連續兩次正面(HH)就停止。設 X = 拋擲總次數。求 E[X]。

解題思路

經典狀態期望——設 $E_0$ = 當前沒有連續 H 時還需要的期望次數,$E_1$ = 當前已經一次 H 時還需要的期望次數。

不帶上限時:

$$E_0 = 1 + 0.5 E_1 + 0.5 E_0 \implies E_0 = 6$$

但題目有「10 次封頂」約束,要 倒推 DP

def expected_flips(N=10):
    # E[k][s]: 還剩 k 次時、當前狀態 s (0 或 1 = 已 H) 的期望拋擲次數
    # 狀態 2 = HH 已出現(吸收態,貢獻 0)
    dp = [[0, 0] for _ in range(N + 1)]
    for k in range(1, N + 1):
        # 狀態 0:本次拋一次
        dp[k][0] = 1 + 0.5 * dp[k - 1][1] + 0.5 * dp[k - 1][0]
        # 狀態 1:本次拋一次;若 H 則結束,T 則回到 0
        dp[k][1] = 1 + 0.5 * 0 + 0.5 * dp[k - 1][0]
    return dp[N][0]

print(expected_flips(10))  # ≈ 5.97

答案:約 5.97 次,逼近無上限的 6。 為什麼這道題反覆出現:Akuna 想確認你懂得把「最多 10 次」這一類有限邊界用 backward DP 處理——不是簡單套公式。

真題三:Pricing Permutations(SDE 偏 algo 題)

題目描述

給定一個長度 n 的浮點數陣列 prices,對每個位置 i,求「以 i 為起點、嚴格遞增子序列」的乘積之和 mod 1e9+7(每條子序列貢獻 ∏ prices[k])。約束:n ≤ 1000,prices ∈ (0, 1e6)。

解題思路

類似 LC 300 LIS 的 sum-of-product 變種:

Python 解法

MOD = 10 ** 9 + 7

def pricing_sum(prices):
    n = len(prices)
    f = [0] * n
    for i in range(n - 1, -1, -1):
        s = 1  # 子序列只含 i 自己
        for j in range(i + 1, n):
            if prices[j] > prices[i]:
                s = (s + f[j]) % MOD
        f[i] = int(prices[i] * s) % MOD
    return sum(f) % MOD

時間複雜度:O(n²),n=1000 完全 OK :浮點 × 整數模運算——題目通常承諾 prices 是整數;如果是浮點,最後取整再 mod。

三個 Track 的 OA 差異

Track 程式題 MCQ 重點 推薦準備
SDE 資料結構 + 系統題(order book、cache、graph) 時間複雜度、記憶體模型、並行基礎 LC + CTCI System Design 章節
Trader 簡化版程式題 + 模擬 心算、機率、博弈論、做市基礎 Heard on the Street + 100 Brainteasers
Quant Research numpy / pandas + 簡單 stats 期望值、變異數、布朗運動、option 定價直覺 Hull《Options》+ Cornell ORIE 課件

強烈建議:投遞時只選一個 track——Akuna 的 ATS 會把「投三個 track」標記為「focus unclear」,影響 recruiter screen。

備考時間表(4 週)

重點 資源
W1 LC Medium 50 題(heap / DP / graph) LeetCode 高頻面經
W2 機率 100 題 + 心算 Heard on the Street + Akuna 歷年 brainteaser
W3 Order Book / Trading 業務基礎 Hull《Options》+ Akuna 官方部落格 trading article
W4 Mock OA 2-3 次 + onsite trading game 模擬 一畝三分地 Akuna 真題貼

FAQ

Q1:Akuna Capital Intern OA 難度怎麼樣?

程式難度 LC Easy-Medium,但整體難在「通過線高 + 時間緊」。70 分鐘 4-5 題,意味著平均每題 12-15 分鐘必須做完。SDE candidate 通常報告程式題全做 + MCQ 錯 1 個是過關閾值。

Q2:Akuna OA 可以用什麼語言?

HackerRank 預設提供 Python / C++ / Java。Trader / Quant Research candidate 多用 Python(寫得快),SDE 多用 C++(Akuna 工程團隊偏 C++ 文化)。建議:選你能 70 分鐘內 debug 完的語言,不要為了 culture fit 選不熟悉的

Q3:Akuna OA 不過還能再投嗎?

12 個月內同一 track 不能重投,但換 track 可以(例如 SDE 掛了之後投 Quant Research)。Akuna 內部會保留之前 OA 成績,所以第一次 OA 寫得差,第二次門檻會變高——慎選 track。

Q4:Akuna OA 通過後多久 Onsite?

通常 1-2 週 進入 Recruiter Call → Super Day(一天連續 3-4 輪)。Super Day 包含一個 Trading Game:5-6 人組隊,30 分鐘內做市 + 套利。這是 Akuna 招牌環節——OA 拿滿分但 Trading Game 表現差的 candidate 70% 被拒

Q5:Akuna Trading Game 怎麼準備?

模擬做市,常見情境:(1)給定某 asset 的真實價格分布,你定一個 bid-ask spread;(2)市場會向你 hit 或 lift,你要動態調整 inventory。核心技巧:永遠算 expected value、控制單筆損失上限、不要 chase prices。**油管搜「Akuna Trading Game」**有玩家復盤影片。

Q6:Akuna 實習生薪資如何?

2026 cycle 美國實習


聯絡方式

如果你正在準備 Akuna Capital、Optiver、IMC、Belvedere 這類選擇權做市 + prop trading 公司的實習 / 全職,OA 只是入門門檻——onsite 的 trading game + brainteaser 才是淘汰主力。我們整理了 2025-2026 cycle Akuna 真題 + Trading Game 復盤 + brainteaser 題庫,歡迎聯絡交流。

立即加入微信 Coding0201獲取 Akuna OA 真題與 Trading Game 模擬