Meta Production Engineer(PE)崗位的 OA 風格獨特——不是 LeetCode 而是「實戰腳本 + 系統偵錯 + 網路追問」。本文不重複「PE Playbook」已經講過的流程,而是把 2026-Q1 起 17 位學員複盤的 OA 題型逐類拆開,給出程式範本和備考節奏。
一、Meta PE OA 概覽
| 維度 | 詳情 |
|---|---|
| 平台 | HackerRank / Meta Codepair |
| 時長 | 75 分鐘 |
| 題量 | 3 題(腳本 + 系統 + 偵錯) |
| 推薦語言 | Python 3 / Bash(建議兩個都會) |
| 評分 | 單題部分用例 + 通用程式品質分 |
| onsite cutoff | 學員觀察 2 全 AC + 1 半 AC 為安全線 |
關鍵觀察:PE OA 比 SDE OA簡單但更挑剔風格——一個
cat | grep | awk風格的腳本能拿滿分,但寫得囉嗦的 Python 反而扣分。
二、3 題分布
Q1: 腳本類(Bash 或 Python) → 20 分鐘 約 30%
Q2: 系統問答 + 小程式 → 25 分鐘 約 35%
Q3: 偵錯 / 故障排查 → 30 分鐘 約 35%
--------
75 分鐘
三、Q1 腳本類高頻考點
PE OA 的 Q1 通常考察「日誌解析 / 檔案批處理」。下面是 2026 出現 5 次以上的題型:
高頻真題:從 Nginx 日誌統計 Top N 錯誤源 IP
給定一個 access.log 檔案,每行格式:
IP - - [timestamp] "METHOD path" status size。統計 status >= 400 的 IP,按出現次數降序輸出前 N 個,同 count 時按 IP 字典序。
import re
from collections import Counter
LOG_LINE = re.compile(r'^(\S+) .*? "\S+ \S+" (\d{3}) ')
def top_error_ips(log_path, n):
counter = Counter()
with open(log_path, encoding="utf-8") as f:
for line in f:
m = LOG_LINE.match(line)
if not m:
continue
ip, status = m.group(1), int(m.group(2))
if status >= 400:
counter[ip] += 1
return sorted(counter.items(), key=lambda kv: (-kv[1], kv[0]))[:n]
時間複雜度:O(L + k log k),L 是日誌行數,k 是 distinct IP
Bash 等價版本:
awk '$9 >= 400 {print $1}' access.log | sort | uniq -c | sort -k1 -rn -k2 | head -n "$1"
評分關鍵:能寫出 Bash 一行版本會讓面試官印象很深——PE 文化偏好 Unix 哲學。
四、Q2 系統問答 + 小程式
Q2 題面有 5-8 個小問題,混合概念問答 + 程式實作。常見組合:
高頻考點拆解
| 主題 | 常見追問 | 程式長度 |
|---|---|---|
| fork / exec | 子程序殭屍態、孤兒程序 | 20 行 Python |
| signal | SIGTERM vs SIGKILL;trap | 15 行 Bash/Python |
| permission | chmod 4755 (setuid) 含義 | 概念為主 |
| 檔案描述子 | stdin/stdout/stderr 重導向 | 10 行 Bash |
| cron | 每週 1-5 凌晨 2:30 跑 | 單行 |
範例:監督子程序並優雅重啟
import os
import signal
import time
def run_with_supervisor(child_cmd, max_restart=3):
restarts = 0
while restarts <= max_restart:
pid = os.fork()
if pid == 0:
os.execvp(child_cmd[0], child_cmd)
os._exit(127)
try:
_, status = os.waitpid(pid, 0)
except KeyboardInterrupt:
os.kill(pid, signal.SIGTERM)
time.sleep(2)
os.kill(pid, signal.SIGKILL)
break
if os.WIFEXITED(status) and os.WEXITSTATUS(status) == 0:
print("clean exit"); break
restarts += 1
print(f"restart #{restarts} after exit {status}")
time.sleep(min(2 ** restarts, 60))
else:
print("too many restarts, giving up")
關鍵:寫出指數退避和優雅 SIGTERM → SIGKILL 兩個細節,會從中等分跳到高分。
五、Q3 偵錯 / 故障排查(最難)
Q3 給你一段已經有 bug 的程式或一個故障場景日誌,要求定位問題並修復。常見包裝:
高頻場景
- 死鎖:兩個執行緒互相 wait
- 記憶體洩漏:Python global list 沒釋放
- socket 半關閉:服務端 close 後客戶端仍在寫
- DNS 解析慢:getaddrinfo 阻塞主執行緒
- 磁碟滿:日誌沒輪轉
範例:定位線上服務「間歇 504」
題面給你 5 段日誌,讓你找出:
- 哪個元件是 root cause
- 用什麼指令定位(
ss -s,dmesg,vmstat,iostat,tcpdump) - 修復方案
學員高分範本:
1. Triage(先穩止血)
- 描述:流量切換到 standby,確保業務可用
- 指令:kubectl scale deployment app --replicas=N
2. Diagnose(定位)
- 看 metric:QPS / latency / error rate / CPU / memory / IO
- 看 log:grep ERROR + 時間視窗
- 看 trace:分散式追蹤關聯 request ID
3. Root cause
- 一句話總結,可證偽
4. Fix
- 短期修復 + 長期優化
5. Postmortem
- 監控告警是否提前;可不可以加 health check
這套範本適用於 絕大多數 PE 偵錯題——背下來。
六、網路考點速查
| 知識點 | 必背 |
|---|---|
| TCP 三次握手 | SYN → SYN-ACK → ACK;狀態 LISTEN/SYN_SENT/SYN_RECV/ESTABLISHED |
| TCP 四次揮手 | FIN → ACK → FIN → ACK;TIME_WAIT 2MSL |
| DNS | recursive vs iterative;TTL;A / AAAA / CNAME / MX |
| HTTP/2 vs HTTP/3 | multiplexing;HoL blocking;QUIC over UDP |
| TLS 1.3 | 1-RTT handshake;0-RTT replay 風險 |
| 防火牆 / iptables | INPUT/OUTPUT/FORWARD chain;NAT |
七、4 週備考路線
Week 1: Bash 基礎(grep/awk/sed/cut)+ 日誌解析 5 題
Week 2: Linux 系統呼叫 + signal + fork/exec
Week 3: 網路(TCP/DNS/HTTPS)+ tcpdump 實戰
Week 4: 限時模擬 3 套 + 故障排查範本背誦
強烈推薦資源:
- 《The Linux Programming Interface》第 24 / 26 / 53 章(fork、signal、socket)
man 2 fork、man 7 signal- Brendan Gregg 的
perf-toolsrepo(PE 面試常被 cite)
八、Pitfalls(學員高頻踩坑)
- Python 寫得太長:PE 題用 Bash 一行能寫就別用 50 行 Python
- 不讀 expected output:HackerRank 嚴格比對,多空格直接 0 分
- 忽視 stderr vs stdout 區分:Q1 的 awk/grep 題常考重導向
- Q3 上來就改程式:先用 1-2 分鐘描述 triage 步驟拿滿方法分
- 不寫 comments:PE 看重「思考路徑」——關鍵決策寫一行註解
九、常見問題 FAQ
Q1:PE OA 難度和 SDE OA 比怎麼樣?
A:演算法難度更低,但廣度更寬——Linux、網路、Bash、debugging 都要會。SDE 選手切換過來通常 Q3 卡得最厲害。
Q2:要會 SQL 嗎?
A:不必。PE OA 基本不出 SQL,但 onsite 偶爾會問「PostgreSQL slow query 怎麼排查」。
Q3:用 Bash 還是 Python?
A:Q1 優先 Bash(短小有力),Q2/Q3 用 Python(更容易寫狀態)。學員資料:能兩種切換的得分高 30%。
Q4:PE onsite 多少輪?
A:5 輪——1 OA-style coding、2 Linux/網路深挖、1 system design、1 BQ。
Q5:H1B sponsor 嗎?
A:給。Meta PE 對 H1B 友好度比 SDE 略低(HC 緊),但仍是 sponsor 標配公司。
十、需要 Meta PE OA / VO 輔助?
PE OA 的考察面非常寬,刷 LeetCode 幾乎沒用——Bash 熟練度 + Linux 核心認知 + 故障排查範本才是關鍵。如果你正在準備:
- 微信:Coding0201 · 立即聯絡
- Email:[email protected]
- Telegram:@OAVOProxy
我們提供:Meta PE 當週題、Linux / 網路深度講解、故障排查 mock、PE onsite 系統設計輔導。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy
微信: Coding0201
最後更新:2026-05-18 | 作者:oavoservice 面試組