我最近剛剛刷完 Two Sigma 的 Online Assessment,順利透過 OA 進入下一輪。Two Sigma Code Test 是申請 jobs at Two Sigma 時最關鍵的第一關,難度和風格都非常有特色。不同於傳統大廠偏 LeetCode 高頻題的 OA,Two Sigma 的題目更注重機率思維、資料結構設計和工程實現能力,時間壓力也比較大。下面我把這次遇到的真實高頻題型、詳細解題思路和備戰心得分享給大家。

Two Sigma Code Test 整體情況
- 平臺:HackerRank(主流) / CodeSignal(部分崗位)
- 題量:通常 3 道 Coding 題
- 時長:90~120 分鐘
- 難度:1 Easy-Medium + 1 Medium + 1 Medium-Hard
- 特點:機率與模擬題佔比高,邊界條件多,注重程式碼質量和最佳化意識
Two Sigma Code Test 越來越考察實際工程場景下的思考能力,單純刷題已經不夠,必須多練 simulation 和機率建模類題目。
高頻真題詳解
1. Efficient Regression V5
題目描述: 實現線性迴歸(Ordinary Least Squares),計算 N 個資產 x0~xN 與 N 個資產 y0~yN 之間的 univariate OLS regression coefficients(betas)。 不包含截距項(no intercept)。輸入為兩個 pandas DataFrame:dfx 和 dfy,每一行對應同一時間點的資產回報率。
解題思路:
- 對每一對 (xi, yi) 單獨計算 beta = cov(x,y) / var(x)
- 注意處理 NaN 值和資料對齊
- 输出为 beta 列表
核心程式碼框架(Python):
import pandas as pd
import numpy as np
def compute_betas(dfx: pd.DataFrame, dfy: pd.DataFrame):
betas = []
for col in dfx.columns:
x = dfx[col].dropna()
y = dfy[col].dropna()
if len(x) == 0:
betas.append(0.0)
continue
beta = np.cov(x, y)[0,1] / np.var(x) if np.var(x) != 0 else 0.0
betas.append(beta)
return betas
2. Linear Interpolator
題目描述: 給定 n 個 knot points(x_knots, y_knots),實現線性插值函式。對於輸入 x_input,返回對應的插值值。如果 x_input 在 knot points 範圍外,進行外推(extrapolation)。
解題思路:
- 先對 knot points 按 x 座標排序
- 使用二分查詢找到 x_input 所在區間
- 計算線性插值(或外推)
3. Daily Temperature By Town
題目描述: 給定 P 個城鎮和紐約市(NYC)多天的每日溫度資料,回答以下 6 個問題:
- Q1:溫度變化最大的城鎮名稱
- Q2:當 Town2 溫度在 90~100 度時,NYC 的中位數溫度
- Q3:用簡單線性模型預測 NYC 溫度,計算所有模型係數的絕對值之和(不含截距)
- Q4/Q5:找出對 NYC 溫度預測最準確的單個或兩個城鎮(基於 MSE)
- Q6:找出聯合預測效果最好的五個城鎮
解題思路:使用 pandas 進行資料分組、相關性計算和線性迴歸擬合。
量化公司的 OA,已經不是傳統網際網路刷題邏輯了
做完 Two Sigma OA 後,我最大的感受其實不是題有多難,而是量化公司的資訊差真的很明顯。
網上很多舊面經現在參考價值已經沒那麼高了,尤其是近兩年的 Code Test,考察方向變化挺快。很多人還在按傳統 LeetCode 思路準備,但真實考試裡已經越來越偏 simulation、order book、implementation stability 這種更接近實際交易場景的內容。
後來我接觸到 Programhelp 後,才發現他們內部整理的高頻題型和真實考試重合度確實挺高,包括訂單簿、機率模擬、低延遲實現這些方向,很多內容都會提前覆蓋到。相比自己盲目刷題,這種針對性的準備效率會高很多。
另外他們也會提供 OA 實戰輔助 、模擬訓練和節奏指導,對量化 OA 這種時間壓力特別強的考試幫助還是挺明顯的。如果最近也在準備 Two Sigma、Jane Street、Citadel 這些量化公司的同學,可以去了解看看。