Pure Storage 的題不像 FAANG 那麼「LeetCode 化」,它考的是寫真實程式碼的能力:系統底層、C/C++、並發、磁碟 / 快取、複雜資料結構。本篇按 OA → 技術 VO → System / Coding Onsite 的順序複盤高頻題方向,並附 VO代面 / VO輔助 的實戰路徑。
一、Pure Storage 招聘流程速覽
| 階段 | 形式 | 時長 |
|---|---|---|
| HackerRank OA | 演算法 + 系統短題 | 60–90 min |
| 技術 VO 1 | 演算法 + 資料結構 | 45 min |
| 技術 VO 2 | C/C++ / 系統 / 並發 | 45 min |
| Onsite Loop | 4–5 輪(含 HM) | 半天 |
| Bar Raiser / Final | 經理或資深工程師 | 45–60 min |
節奏特點:技術權重明顯高於行為題,Hiring Bar 在 Onsite 的 System 輪。OA 不是分水嶺,但出錯會直接被刷。
二、HackerRank OA 高頻題方向
| 類型 | 頻次 | 關鍵解法 |
|---|---|---|
| 陣列 / 字串 LC Med | 高 | 雙指標 / 雜湊 |
| 區間合併 / 排程 | 高 | 排序 + 貪心 |
| LRU / LFU 快取 | 中 | 雙鏈表 + 雜湊 |
| 簡單檔案系統模擬 | 中 | Trie / 樹 |
| 位元運算 / 大端小端 | 中 | 模板熟練 |
學員還原題:磁碟區塊合併
給定一組
(start, length)表示磁碟上分配的連續區塊,回傳合併後最大空閒區塊長度。區塊可能重疊或相鄰,須先合併。
def max_free_block(blocks, total_size):
if not blocks:
return total_size
blocks.sort()
merged = [blocks[0]]
for s, l in blocks[1:]:
ps, pl = merged[-1]
if s <= ps + pl:
merged[-1] = (ps, max(pl, s + l - ps))
else:
merged.append((s, l))
best = merged[0][0]
for i in range(1, len(merged)):
best = max(best, merged[i][0] - (merged[i-1][0] + merged[i-1][1]))
best = max(best, total_size - (merged[-1][0] + merged[-1][1]))
return best
複雜度:O(n log n)。坑點:左右兩側空閒段別漏;區間端點要細心處理。
三、技術 VO 高頻考點:C/C++ 系統題
Pure Storage 產品堆疊以 C/C++ 為主,VO 出現 C++ 題的機率比 Java / Python 候選人想像的更大。常見考點:
- 寫一個 thread-safe 的 LRU
- 用
std::atomic實作 spin lock,並討論 ABA 問題 - malloc / free 的分配策略(best fit / first fit)
- 大端小端轉換(network byte order)
學員還原題:thread-safe LRU 設計
容量 N,支援
get(key)與put(key, value)。多執行緒並發呼叫,要求執行緒安全且儘量降低鎖競爭。
設計要點:
- 分段鎖(shard):將 LRU 拆成 16 段,每段獨立鎖。
- 每段內部用 雙向鏈表 + 雜湊表。
get時只鎖所屬 segment,避免全域鎖。- 討論:讀多寫少時可用 RCU 或讀寫鎖進一步最佳化。
面試官真正想聽:你能否說清「為什麼不用一把大鎖」「shard 數怎麼定」「在 NUMA 機器上 cache line 對 false sharing 的影響」。
四、Onsite Coding 輪:複雜資料結構
學員還原題:稀疏矩陣相乘
實作稀疏矩陣
A (n×k)與B (k×m)的乘法,目標時間複雜度 O(nnz(A) × m / k)。
def sparse_multiply(A, B):
n, k = len(A), len(A[0])
m = len(B[0])
A_sparse = [[(j, A[i][j]) for j in range(k) if A[i][j]] for i in range(n)]
C = [[0] * m for _ in range(n)]
for i in range(n):
for j, av in A_sparse[i]:
for col in range(m):
if B[j][col]:
C[i][col] += av * B[j][col]
return C
追問:如果 B 也稀疏怎麼辦?答:把 B 轉成 column-major 稀疏表示,外層換序迴圈。
學員還原題:固定大小 LFU
設計
LFUCache(capacity),支援get/put,淘汰策略是「最少使用次數;若並列則最久未存取」。要求所有操作 O(1)。
設計要點:
- 三層結構:
key→node、freq→雙向鏈表、min_freq指標。 - 每次存取就把 node 從
freq鏈表挪到freq+1。 - 淘汰時彈出
min_freq鏈表的尾部。
五、Onsite System 輪:Hiring Bar 集中段
System 輪通常是 Pure Storage 的 deal-breaker。常見題:
| 系統題方向 | 真實出題表述 |
|---|---|
| Distributed KV | 設計支援 SSD 後端的 KV 存儲 |
| Snapshot | 檔案系統 snapshot 與 copy-on-write |
| Replication | 多副本一致性、quorum、Raft 簡述 |
| Cache 層 | 寫回 / 寫穿 / write-around 取捨 |
| 故障域 | 節點當機後資料如何復原 |
面試官的判分點:
- 是否能在 5 分鐘內輸出一個可工作的初版架構。
- 是否能在追問下識別瓶頸(吞吐 / 延遲 / 一致性)。
- 是否在 trade-off 時主動給出量化估算(QPS、磁碟頻寬、網路延遲)。
oavoservice 在 Pure Storage VO 階段提供 思路即時輔助 + 系統題模板 + HM mock + VO代面 / VO輔助 全鏈路服務。
六、備戰節奏(建議 4 週)
| 週次 | 任務 |
|---|---|
| W1 | HackerRank 限時 mock × 4 + LC 區間 / LRU 複習 |
| W2 | C/C++ 並發 + spin lock / atomic 專項 |
| W3 | 系統設計:KV、檔案系統、replication 模板 |
| W4 | 全 Loop 模擬 + HM mock |
FAQ
Pure Storage 必須會 C/C++ 嗎?
底層職位幾乎必須。如果是 Cloud / SaaS 團隊,Java / Python 也可以,但仍會考一道偏底層的題(mutex / 記憶體模型)。
Pure Storage 的題難度對標哪家?
演算法接近 Snowflake / Databricks;系統設計接近 NetApp / VMware。整體難度比一般 SaaS 高,但比 FAANG L5+ 略低。
Onsite Loop 能 remote 嗎?
近 18 個月幾乎都是 onsite,少量職位允許 remote loop,但 final 仍傾向到現場。
VO代面 / VO輔助 在 Pure Storage 流程裡能介入哪些環節?
OA 階段:題型預測 + 限時 mock + 全程即時輔助;技術 VO:思路即時同步 + C++ 模板預演;System 輪:架構提綱 + 量化估算輔助 + HM mock。從 OA 到 final HM 一站式打包。
正在準備 Pure Storage VO?
oavoservice 跟蹤 Pure Storage 真題已經超過 2 年,覆蓋 OA / 技術 VO / System Onsite 全流程。提供 題型預測、限時 mock、系統題模板、VO代面 / VO輔助 全鏈路服務。
👉 立即加微信:Coding0201,獲取 Pure Storage 當週 OA 真題與 VO輔助 方案。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy