在北美找 SDE 工作,幾乎每個人都會撞上 CodeSignal OA。越來越多公司把它當作第一輪篩選——Roblox、Databricks、DoorDash、Robinhood,再加上一大批快速擴張的新創公司。它和你平時刷 LeetCode 最大的差別在於:CodeSignal 是一套資料驅動的標準化測評,很多公司用的是 GCA(General Coding Assessment),而且是按分數而非單純的通過/不通過來決定你能否進下一輪。
本文幫你把 GCA 這道首輪門檻拆清楚:題目結構、計分邏輯、高頻考點,一道可直接執行的代表性題解,以及一套能讓你穩定發揮的備考路線。
一、GCA 結構速覽
GCA 通常是 4 題 / 約 70 分鐘,難度遞增,總分約 850+。評分不只看對錯,還看速度與程式碼的乾淨穩定程度——寫得越快、邊界越穩,分數越高。
| 題號 | 難度 | 典型題型 | 建議時間預算 |
|---|---|---|---|
| Q1 | 入門 | 陣列/字串基礎走訪 | 3–8 min |
| Q2 | 簡單-中等 | 實作題 / 模擬 | 10–15 min |
| Q3 | 中等 | 主流演算法(滑動視窗、圖、DP 入門) | 20–30 min |
| Q4 | 困難 | DP / 圖 / 最佳化建模 | 20–30 min |
關鍵認知:GCA 是「滿分制 + 分數排序」。Q1/Q2 要又快又穩地拿滿,把時間省下來砸在 Q3/Q4 上;Q4 就算寫不完,能拿到的部分分也常常是拉開差距的關鍵。
二、哪些公司用 GCA,哪些用自訂 OA?
CodeSignal 的用法大致分兩類:一類直接用標準化的 GCA(分數可跨公司複用,即 Certified Assessment);另一類是公司自己出題的 Custom CodeSignal OA(題目貼合自家業務)。
| 公司 | 類型 |
|---|---|
| Databricks | GCA |
| Uber | GCA |
| Robinhood | GCA |
| Asana | GCA |
| Brex | GCA |
| Ramp | Custom OA |
| Two Sigma | Custom OA |
| Opendoor | Custom OA |
| Cruise | Custom OA |
| Square | Custom OA |
分清這兩類很重要:GCA 分數常可複用——一次好成績可能同時打開多家公司的下一輪;而 Custom OA 更貼業務語境,需要針對該公司單獨準備題型。
三、代表性題解:滑動視窗(Q3 級)
GCA 的 Q3 常見的一類是滑動視窗。下面這道是典型變體,給出完整可執行的 Python 解法。
3.1 題目
給定一個整數陣列
nums和整數k,找出長度恰好為 k 的連續子陣列中,和的最大值。若陣列長度小於 k,回傳None。
3.2 思路
- 先算出前
k個元素的和,作為初始視窗。 - 視窗每向右滑動一格:加上新進入的元素、減去滑出的元素,得到新視窗和,O(1) 更新。
- 全程維護最大值。整體一次走訪,O(n)。
3.3 Python 解法
from typing import List, Optional
def max_subarray_sum_k(nums: List[int], k: int) -> Optional[int]:
"""回傳長度恰好為 k 的連續子陣列的最大和;長度不足回傳 None。"""
n = len(nums)
if k <= 0 or k > n:
return None
# 初始視窗:前 k 個元素之和
window = sum(nums[:k])
best = window
# 視窗右滑:加右端、減左端,O(1) 更新
for i in range(k, n):
window += nums[i] - nums[i - k]
if window > best:
best = window
return best
if __name__ == "__main__":
print(max_subarray_sum_k([2, 1, 5, 1, 3, 2], 3)) # 9 (5+1+3)
print(max_subarray_sum_k([-1, -2, -3, -4], 2)) # -3 (-1+-2)
print(max_subarray_sum_k([4, 4], 3)) # None
時間複雜度:O(n) | 空間複雜度:O(1)
GCA 評分偏愛這種「一次走訪 + 常數空間」的寫法:既跑得快,隱藏測資也不容易逾時——正是評分模型裡「速度 + 穩定」兩項都能拿分的答法。
四、高頻考點清單
| 考點 | 出現位置 | 備考重點 |
|---|---|---|
| 陣列滑動視窗 | Q2–Q3 | 定長/變長視窗、O(1) 更新 |
| 字串切分/解析 | Q1–Q2 | split、雙指標、格式還原 |
| 模擬 / 排列 | Q2 | 嚴格照題意逐步執行,別自作聰明 |
| 圖(BFS/DFS/併查集) | Q3–Q4 | 建圖、連通分量、最短路 |
| 動態規劃 | Q4 | 狀態定義、轉移方程、邊界初始化 |
五、備考策略:把 GCA 當成一場「節奏賽」
- 先吃透計分模型。GCA 看的是分數與速度,不是「做出來就好」。練習時給自己嚴格計時,模擬 70 分鐘 4 題的真實壓力。
- 重點攻 Q3/Q4 題型。Q1/Q2 靠熟練度拿滿,真正拉開分差的是中後段。集中練滑動視窗、圖、DP 三大塊。
- 多做整套限時模擬。適應格式與節奏,比零散刷題更有效——讓「讀題→定難度→分配時間→自測」成為肌肉記憶。
- 借助端到端陪練。我們的 OA輔助 / OA代面 服務提供題型預測、完整解法拆解與即時陪練/協作輔導:幫你熟悉 GCA 的平台機制與評分口徑,進考場前心裡有底、發揮更穩。這是一套從複盤到實戰的端到端教練式輔導,目標是讓你把已有實力完整、穩定地打出來。
70 分鐘節奏參考
| 階段 | 用時 | 動作 |
|---|---|---|
| 0–3 min | 通讀 4 題 | 排難度、定順序 |
| 3–18 min | Q1 + Q2 | 拿滿分、跑一組自測 |
| 18–45 min | Q3 | 寫完 + 至少 1 組邊界自測 |
| 45–65 min | Q4 | 先拿部分分,能最佳化再最佳化 |
| 65–70 min | 回查 | 複查邊界與隱藏測資 |
FAQ
Q1:GCA 分數多少算高?
總分約 850+。學員回饋裡,600 分以上通常能覆蓋多數公司的下一輪門檻,700+ 屬於有競爭力的區間。不同公司門檻不同,頭部公司會更高。核心是把 Q1–Q3 穩穩拿下、Q4 盡量拿部分分。
Q2:GCA 和 LeetCode 刷題有什麼區別?
LeetCode 是單題練習,通過即算過;GCA 是標準化測評,按分數排序,還額外看速度和程式碼穩定性。所以光會做題不夠,還要練「限時把題又快又穩地寫出來」,這也是模擬練習的價值所在。
Q3:哪些公司用 GCA?
Databricks、Uber、Robinhood、Asana、Brex 等常用標準化 GCA;而 Ramp、Two Sigma、Opendoor、Cruise、Square 等更多用自訂 CodeSignal OA。投遞前建議先確認對方用的是哪一類,再針對性準備。
Q4:GCA 分數可以複用嗎?
GCA(Certified Assessment)的一大優勢就是一次成績、多家複用——一個好分數常能同時解鎖多家公司的後續流程。這也是為什麼值得認真準備一次、爭取一個高分。
Q5:GCA 之後是什麼流程?
通常是 Recruiter Chat → 技術面(VO)→ Onsite。如果你擔心後續 VO 環節,我們的 OA輔助 / OA代面 與 VO 陪練可以做整段流程的即時協作輔導,幫你在每一輪都穩定發揮。
正在準備 CodeSignal GCA 首輪篩選? 我們提供當週高頻題型預測、完整解法拆解與 70 分鐘限時模擬,幫你把實力穩定打出來。
立即加入微信 Coding0201,取得 GCA 備考方案。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy