在北美找 SDE,CodeSignal 的 GCA(General Coding Assessment)幾乎是繞不開的一關。它不是普通的刷題網站,而是一套資料驅動的標準化能力測評——Databricks、Uber、Robinhood、Asana、Brex 等公司都直接用 GCA 分數決定要不要給你下一輪。很多人考完一臉疑惑:「我明明所有測資都過了,為什麼分數比同學低?」
答案就在評分模型裡。GCA 滿分約 850,但它遠不止看通過率。這篇文章專門講清楚 GCA 的評分邏輯:正確率、速度、程式碼簡潔度、穩定性這四個維度是怎麼合成最終分數的,以及針對每個維度該怎麼系統性地提高。姊妹篇《CodeSignal GCA 第一輪篩選生存指南》講的是整體流程與門檻,本文則是評分模型的深度拆解。
CodeSignal GCA 速查表
| 維度 | 詳情 |
|---|---|
| 平台 | CodeSignal(GCA 通用測評 / 公司專屬 OA) |
| 常見用家 | Databricks、Uber、Robinhood、Asana、Brex 等 |
| 滿分 | 約 850 分 |
| 題量 / 時長 | 4 題,約 70 分鐘,難度遞增 |
| 評分維度 | 正確率 + 速度 + 簡潔度 + 穩定性 |
| 語言 | Python / Java / JS / Go 等多種 |
| 重做 | 通常一次性,成績可複用給多家公司 |
一、為什麼「全部通過」分數還會不同
先破除一個最常見的誤解:GCA 不是「通過測資數 ÷ 總測資數 × 850」。如果只是這樣,那所有 AC 的人分數就該一樣。真實情況是,GCA 綜合評估你解決問題的整個過程,主要看四個維度:
- 正確率(Correctness):通過了多少測試資料,包括隱藏測資。這是基礎分。
- 速度(Speed):你多快提交出正確解。更早提交正確答案的分數更高——因為它衡量的是能力密度,不只是「最終能不能做出來」。
- 簡潔度(Cleanliness):程式碼是否精煉、可讀、符合語言慣例。冗餘、重複、繞遠路的實作會被扣分。
- 穩定性(Stability):解法是否在所有情況下都成立,包括邊界測資和大資料量的效能測資。一個能過範例但在極端輸入下逾時或崩潰的解法,穩定性分會掉。
所以兩個都「全部測資通過」的人,可能一個在第 20 分鐘就交出乾淨的 O(n) 解,另一個磨到第 65 分鐘才交出一個能過但很囉嗦的解——前者速度分和簡潔度分明顯更高,總分自然拉開。此外 Q4 存在部分給分(partial credit),即使沒全 AC,過的測資也計分。
二、評分維度拆解表
| 維度 | 對分數的影響 | 怎麼提高 |
|---|---|---|
| 正確率 | 基礎分,決定分數下限 | 主動列舉邊界(空輸入、單元素、重複值、越界);提交前用極端輸入自測 |
| 速度 | 同樣正確下,越早提交越高分 | 限時模擬練手速;高頻題型形成肌肉記憶,讀題即知套路 |
| 簡潔度 | 冗餘/繞路實作拉低上限 | 用慣用寫法(Counter、雙指標、切片);一個函式只做一件事,避免巢狀過深 |
| 穩定性 | 極端/效能測資決定能否拿滿 | 先想清最優複雜度再動手;避免 list.pop(0) 之類 O(n) 陷阱,用 deque |
關鍵認知:這四個維度不是相互獨立的加分項,而是互相咬合的。寫得乾淨往往也寫得快,想清複雜度往往穩定性也好。所以備考的核心不是「多刷題」,而是把常見題型練到又快又乾淨又穩。
三、GCA 與公司專屬 OA 的區別
CodeSignal 上有兩類測評,評分側重和題型都不同,備考前要分清:
| 對比項 | GCA(通用測評) | 公司專屬 OA(Custom) |
|---|---|---|
| 代表公司 | Databricks、Uber、Robinhood、Asana、Brex | Ramp、Two Sigma、Opendoor、Cruise、Square |
| 題型 | 標準演算法:陣列、字串、圖、DP | 複雜 JSON 解析、大量字串處理、業務建模、DP |
| 分數複用 | 一份成績可投多家 | 通常只對該公司有效 |
| 難度曲線 | Q1→Q4 穩定遞增 | 單題體量更大,題面更長 |
| 備考重點 | 高頻套路 + 手速 + 穩定性 | 讀題建模能力 + 邊界覆蓋 |
簡單說:GCA 比的是「標準題做得又快又穩」,公司專屬 OA 比的是「複雜題面能不能準確建模」。兩者都吃「簡潔 + 穩定」,但公司專屬 OA 更考驗讀長題和拆解需求的能力。
四、高頻題型
無論 GCA 還是公司專屬 OA,下面這幾類反覆出現,值得練到形成肌肉記憶:
| 題型 | 典型考點 | 推薦 LeetCode |
|---|---|---|
| 滑動視窗 | 陣列/字串區間統計 | 3, 76, 209 |
| 字串分割/處理 | split、解析、頻率統計 | 49, 819, 271 |
| 圖 | BFS/DFS、連通分量 | 200, 133, 994 |
| 排列/模擬 | 狀態推進、規則執行 | 46, 289, 54 |
| 動態規劃 | 計數、最優子結構 | 70, 322, 300 |
五、一道代表題:乾淨又快的滑動視窗解法
題目背景
給一個整數陣列 nums 和視窗大小 k,回傳每個長度為 k 的連續視窗中不同元素的個數。這是 GCA 裡滑動視窗 + 雜湊計數的典型組合,也最能體現「簡潔」與「穩定」如何影響分數。
思路
- 用一個雜湊表維護目前視窗裡每個值的出現次數,
len(count)就是不同元素個數。 - 視窗右移時:新元素計數 +1,滑出的舊元素計數 -1,減到 0 就從表裡刪除。
- 全程 O(n),不重複掃描——這就是拿到速度分和穩定性分的關鍵。
Python 解法
from collections import defaultdict
from typing import List
def distinct_in_windows(nums: List[int], k: int) -> List[int]:
"""回傳每個長度為 k 的視窗中不同元素的個數。"""
# 邊界:空陣列或 k 非法時直接回傳空,保證穩定性
if k <= 0 or k > len(nums):
return []
count = defaultdict(int)
result = []
for i, x in enumerate(nums):
count[x] += 1 # 新元素進入視窗
if i >= k: # 視窗已滿,移出最左元素
left = nums[i - k]
count[left] -= 1
if count[left] == 0: # 計數歸零就刪除,len 才準確
del count[left]
if i >= k - 1: # 視窗湊滿 k 個才開始記錄
result.append(len(count))
return result
if __name__ == "__main__":
print(distinct_in_windows([1, 2, 1, 3, 4, 2, 3], 3)) # [2, 3, 3, 3, 3]
print(distinct_in_windows([1, 1, 1], 2)) # [1, 1]
print(distinct_in_windows([], 3)) # []
時間複雜度:O(n),每個元素進出視窗各一次 空間複雜度:O(k)
為什麼這個版本分數更高:對比一下「每個視窗都重新
len(set(nums[i:i+k]))」的暴力寫法——那樣是 O(n·k),範例能過,但效能測資會逾時,穩定性分直接丟掉。而滑動視窗版本不僅 O(n) 穩過大資料,程式碼也更短、意圖更清晰(簡潔度分),寫熟了 5 分鐘就能交(速度分)。同一道題,同樣「全 AC」,這三點差異就足以拉開總分。
六、備考策略
把評分模型翻譯成可執行的訓練動作:
| 目標維度 | 訓練方式 |
|---|---|
| 正確率 | 每道題先手寫 3-4 個邊界測資,再寫主邏輯,提前把隱藏測資想到 |
| 速度 | 每週 2 次 70 分鐘 4 題限時模擬,讀題即認套路 |
| 簡潔度 | 刷題後回看,把能用 Counter/雙指標/切片簡化的地方重寫一遍 |
| 穩定性 | 每道題都問一句「最壞輸入是什麼」,先定複雜度再動手 |
我們的 OA輔助 / OA代面 服務正是圍繞這套評分模型設計的端到端陪練:評分體系講解(把 850 分怎麼算講透)、題型預測(按公司給當週高頻題型)、完整解法 + 複雜度分析(每題給出又快又乾淨的最優寫法)、以及 mock 與即時協作陪練——幫你在正式考試裡穩定發揮、把每個維度的分都拿滿。
FAQ
Q1:GCA 滿分多少? 滿分約 850。它不是簡單的「通過率 × 850」,而是綜合正確率、速度、程式碼簡潔度和穩定性四個維度合成的分數。約 70 分鐘做 4 題,難度遞增。
Q2:全部測資都通過了,為什麼分數還是不一樣? 因為 GCA 還看你多快提交、程式碼是否精煉、解法在極端和效能測資下是否穩定。兩個人都 AC,但一個 20 分鐘交出乾淨 O(n) 解、另一個 65 分鐘交出囉嗦解,速度分和簡潔度分會明顯拉開總分。
Q3:怎麼提高 GCA 分數? 四個方向同時練:主動覆蓋邊界測資提正確率、限時模擬練手速、用慣用寫法保持簡潔、先定複雜度避免逾時保穩定。核心是把高頻題型練到又快又乾淨又穩,而不是單純堆刷題量。
Q4:GCA 和公司專屬 OA 有什麼區別? GCA 是通用標準測評,題型偏標準演算法,一份成績可投多家公司;公司專屬 OA(如 Ramp、Two Sigma、Cruise)題面更長、更偏複雜 JSON 解析和業務建模,通常只對該公司有效。兩者都重視簡潔和穩定。
Q5:Q4 沒做完還有分嗎? 有。Q4 支援部分給分(partial credit),通過的每個測資都計分。所以策略是前三題穩拿滿分,第四題即使做不全,也要盡量多 AC 測資、覆蓋邊界,把能拿的分都拿到。
正在準備 CodeSignal GCA?
如果你擔心手速不夠、Q4 AC 不全,或者搞不清自己「全過卻分低」卡在哪個維度,可以聊聊完整的 OA輔助 / OA代面 方案——從評分體系講解到題型預測、限時 mock 與即時陪練,幫你帶著準備走進考場、穩定拿分。
立即加入微信 Coding0201,獲取真題與備戰計劃。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy