Meta Production Engineer (PE) OA is stylistically unique — it's not LeetCode but "practical scripting + system debugging + network probing." This piece skips the "PE Playbook" content (already written) and instead, based on 17 candidate debriefs from 2026-Q1, breaks each question type apart with code templates and a study cadence.
1. Meta PE OA at a Glance
| Dimension | Detail |
|---|---|
| Platform | HackerRank / Meta Codepair |
| Duration | 75 minutes |
| Questions | 3 (script + system + debug) |
| Recommended langs | Python 3 / Bash (know both) |
| Scoring | Partial per Q + general code-quality bonus |
| Onsite cutoff | observed safe line: 2 full AC + 1 half AC |
Trend: PE OA is easier than SDE OA but pickier about style — a
cat | grep | awkone-liner can score full, but a verbose Python solution can drop points.
2. 3-Question Mix
Q1: Scripting (Bash or Python) → 20 min ~30%
Q2: System Q&A + small program → 25 min ~35%
Q3: Debugging / troubleshooting → 30 min ~35%
--------
75 min
3. Q1 Scripting Hot Topics
Q1 typically asks for "log parsing / file batch processing." Top recurring pattern in 2026:
Hot Problem: Top-N Error Source IPs from Nginx Logs
Given an access.log with lines
IP - - [timestamp] "METHOD path" status size. Count IPs whose status ≥ 400; output top N by frequency (alphabetical IP on tie).
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]
Time: O(L + k log k), L = lines, k = distinct IPs
Bash equivalent:
awk '$9 >= 400 {print $1}' access.log | sort | uniq -c | sort -k1 -rn -k2 | head -n "$1"
Scoring: a Bash one-liner impresses interviewers — PE culture prefers Unix-style elegance.
4. Q2 System Q&A + Small Program
Q2 contains 5-8 sub-questions, mixing conceptual answers + code. Common combinations:
Topic Breakdown
| Topic | Common probes | Code length |
|---|---|---|
| fork / exec | Zombie children, orphan processes | ~20 lines Python |
| signal | SIGTERM vs SIGKILL; trap | ~15 lines |
| permissions | chmod 4755 (setuid) meaning |
Mostly concept |
| File descriptors | stdin/stdout/stderr redirection | ~10 lines Bash |
| cron | "every Mon–Fri at 02:30" | One line |
Example: Supervise a Child Process with Graceful Restart
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)) # exponential backoff
else:
print("too many restarts, giving up")
Adding exponential backoff and graceful SIGTERM → SIGKILL turns a medium answer into a high-scoring one.
5. Q3 Debugging / Troubleshooting (the hardest)
Q3 gives you buggy code or a failure-scenario log and asks you to localize and fix. Common wrappers:
Hot Scenarios
- Deadlock: two threads waiting on each other
- Memory leak: Python global list never released
- Half-closed socket: server closed but client still writing
- Slow DNS:
getaddrinfoblocking main thread - Disk full: missing log rotation
Example: "Intermittent 504 in production"
The prompt shows 5 log snippets and asks:
- Root-cause component
- Diagnosis commands (
ss -s,dmesg,vmstat,iostat,tcpdump) - Fix plan
High-scoring template:
1. Triage (stop the bleed)
- Describe: shift traffic to standby
- Command: kubectl scale deployment app --replicas=N
2. Diagnose
- Metrics: QPS / latency / error rate / CPU / memory / IO
- Logs: grep ERROR + time window
- Traces: distributed trace by request ID
3. Root cause
- One sentence, falsifiable
4. Fix
- Short-term + long-term
5. Postmortem
- Did alerts fire in time? Add a health check?
Memorize this — it applies to most PE debugging questions.
6. Networking Cheat Sheet
| Topic | Must-know |
|---|---|
| TCP 3-way handshake | SYN → SYN-ACK → ACK; states LISTEN/SYN_SENT/SYN_RECV/ESTABLISHED |
| TCP 4-way close | 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 risk |
| iptables / firewall | INPUT/OUTPUT/FORWARD chains; NAT |
7. 4-Week Prep Plan
Week 1: Bash fundamentals (grep/awk/sed/cut) + 5 log-parsing problems
Week 2: Linux syscalls + signal + fork/exec
Week 3: Networking (TCP/DNS/HTTPS) + tcpdump drills
Week 4: 3 timed mocks + troubleshoot template recall
Strongly recommended resources:
- The Linux Programming Interface — chapters 24 / 26 / 53 (fork, signal, socket)
man 2 fork,man 7 signal- Brendan Gregg's
perf-toolsrepo (often cited in PE interviews)
8. Common Pitfalls
- Python too verbose: if Bash one-liner works, don't write 50 lines of Python
- Ignoring expected output: HackerRank compares strict — extra space = 0
- Confusing stderr vs stdout: Q1 awk/grep questions often test redirection
- Q3: editing code first: spend 1-2 min stating triage steps for method points
- No comments: PE values "the path of thought" — one-line comments on key decisions
9. FAQ
Q1: How does PE OA compare with SDE OA?
A: Algorithmically easier but broader — Linux, networking, Bash, debugging all required. SDE candidates often struggle most with Q3.
Q2: Do I need SQL?
A: Not really. PE OA rarely tests SQL, but the onsite may ask "how to debug a slow PostgreSQL query."
Q3: Bash or Python?
A: Q1 prefer Bash (concise), Q2/Q3 use Python (easier for state). Candidates fluent in both score ~30% higher.
Q4: How many PE onsite rounds?
A: 5 — one OA-style coding, two Linux/networking deep dives, one system design, one BQ.
Q5: H1B sponsorship?
A: Yes. Slightly tighter HC than SDE but still sponsor-standard at Meta.
10. Need Meta PE OA / VO Help?
PE OA spans a wide surface — grinding LeetCode barely helps. Bash fluency + Linux internals + troubleshooting templates are the real levers. If you're prepping:
- WeChat: Coding0201 · Contact
- Email: [email protected]
- Telegram: @OAVOProxy
We offer: this-week Meta PE problems, deep Linux / networking sessions, troubleshooting mocks, and PE onsite system-design coaching.
Contact
Email: [email protected]
Telegram: @OAVOProxy
WeChat: Coding0201
Last updated: 2026-05-18 | Author: oavoservice interview team