Problem-solving: did candidate reach optimal independently?
Coding: clean, idiomatic, no bugs.
Communication: think-aloud, asks vs. assumes.
Verification: caught own bugs, tested edge cases.
Speed: completed in time without rushing.
AI in the Loop (2026)
AI-use policy is company-specific and must be confirmed per round. Don't assume — the spectrum is real:
Banned: any AI use is disqualifying (e.g. Amazon). Remote OAs are proctored.
Allowed / disclosed: AI permitted, sometimes with adjusted rubrics; disclose if asked.
AI-assisted round: using AI is the skill being tested (e.g. Meta's dedicated AI coding round, Shopify, Canva). You're given a larger codebase and asked to extend or debug it while prompting and verifying an AI assistant in the editor.
Varies by team / interviewer: Google, Apple, Netflix, Microsoft — confirm before the round.
Proctored remote OAs commonly flag AI via copy/paste and tab-switch monitoring, screen-share requirements, keystroke/behavioral analytics, and similarity checks against known solutions.
Show, don't tell: a full worked mock, per-level bars, and concrete comp handling.
Annotated coding round: the two-parallel-worlds view
A transcript only teaches if you can see the candidate's words and the interviewer's private scorecard side by side. Below is a real-shaped 45-minute Meta E5 coding round on "merge k sorted lists". The left column is what the room heard; the middle is the interviewer's internal note; the right is the running signal (+ helps, − hurts). The verdict maps to Meta's four-point scale: strong no-hire / no-hire / hire / strong hire.
Phase (min)
Candidate narration
Interviewer internal note
Signal
0–4 clarify
"Are the lists sorted ascending? Can k be 0? Are values 32-bit? Do I mutate inputs or build new?"
Asked the exact edge questions I'd have had to prompt for. Confirms empty-input handling before writing anything.
+ scoping
4–9 approach
"Naive: concat all n nodes and sort — O(n log n). Better: a min-heap of k heads — O(n log k) time, O(k) space. I'll do the heap."
Named both, stated complexity for each, chose with a reason. Didn't jump to code.
+ problem solving
9–28 code
Types a heapq solution, narrating: "I push tuples (val, idx, node); idx breaks ties so Python never compares nodes when val is equal."
The tie-breaker idx is the thing 60% of candidates miss — they get a TypeError on node < node. Unprompted here.
+ coding
28–34 test
"Dry-run k=2: [1,4],[2]. Heap starts {(1,0),(2,1)}, pop 1, push 4… output 1,2,4. Now k=0 → returns None. Good."
Self-tested empty case that many skip. Traced the heap by hand, caught nothing broken — because nothing was.
+ verification
34–40 follow-up
"If lists don't fit in memory, I'd do a k-way external merge, streaming one buffered page per list."
Extended to a scale variant crisply. This is the E5 (vs E4) differentiator: unprompted generalization.
+ scope
Verdict: Strong hire. Optimal solution, self-caught the tie-break trap, tested empties, generalized to external sort with ~5 min to spare.
Strong hire
import heapq
def merge_k(lists):
h = []
for i, node in enumerate(lists): # seed one head per list
if node:
heapq.heappush(h, (node.val, i, node)) # i = tie-break, never compares nodes
dummy = tail = ListNode(0)
while h:
val, i, node = heapq.heappop(h)
tail.next = node; tail = node
if node.next:
heapq.heappush(h, (node.next.val, i, node.next))
return dummy.next
# n = total nodes, k = lists. Time O(n log k), space O(k).
Annotated system-design round: signals live in the tradeoffs
Design rounds are scored on how you drive, not whether you "know the answer." Here is an annotated senior (L5) Google round: "design a URL shortener at 10k writes/s, 100k reads/s, 5-year retention." Google scores each interviewer 1–4 (1 = strong no-hire, 4 = strong hire) and the hiring committee reads the written feedback, not just the number.
Phase
Candidate narration
Interviewer internal note
Signal
Requirements
"Functional: create short→long, redirect. Non-functional: read-heavy 10:1, redirect p99 < 50ms, links immutable. Out of scope: analytics for now."
Quantified the read/write skew and set a latency SLO unprompted. Explicitly deferred scope.
+ requirements
Estimation
"10k w/s × 86400 × 365 × 5 ≈ 1.6T links. At ~500 bytes that's ~800 TB — needs sharding, not one box."
Back-of-envelope is right and drives the storage decision. Many hand-wave this.
+ numbers
Key design
"I'll use a base62 encoding of a distributed counter (range-allocated per host) instead of hashing long URLs — avoids collision checks on the write path."
Chose counter-with-ranges over hash+dedup and justified by the write-path cost. That's the crux tradeoff.
+ problem solving
Storage
"KV store keyed by short code, sharded by code prefix. Reads served from a cache in front — 100k r/s at 90% hit is 10k r/s to the DB."
Cache math is explicit and consistent with earlier estimate.
+ scope
Deep dive
Interviewer probes: "Two datacenters, counter collisions?" Candidate: "Partition the ID space per region so ranges never overlap; encode a region bit."
Handled the curveball without flailing. Named the failure and the fix in one breath.
+ communication
Miss
Didn't mention link expiry / TTL cleanup until asked; then recovered with a TTL index + background compaction.
One gap, self-corrected on prompt. Not disqualifying at L5.
− minor
Verdict: 3.5/4 → hire. Strong estimation and a defensible core tradeoff; single prompted gap on lifecycle. Clear L5, not yet L6 (no cost/ops or migration story).
Hire (3.5)
Leveling rubric: the L4 / L5 / L6 bar per axis
Interviewers don't grade "good/bad" — they grade against a level bar on fixed axes. The same transcript can be a strong hire at L4 and a no-hire at L6. Internalize the bars so you can pitch your narration at the target level: an L6 who only demonstrates L4 signals gets down-leveled or rejected.
Axis
L4 (mid) bar
L5 (senior) bar
L6 (staff) bar
Problem solving
Reaches a working solution with hints; recognizes the pattern once nudged.
Reaches optimal unaided; states & compares complexities before coding.
Reframes the problem, surfaces the constraint that makes it hard, weighs 2–3 approaches by cost.
Coding
Compiles with minor bugs; needs prompting to test.
Levels are not portable by number. Google L5 is senior; Meta E5 is senior; Amazon SDE III / L6 is senior. A recruiter quoting "we're leveling you at L5" means wildly different things at different companies, and it sets your comp band. Use this to translate before you negotiate.
Career stage
Google
Meta
Amazon
Microsoft
Entry
L3
E3
SDE I / L4
59–60
Mid
L4
E4
SDE II / L5
61–62
Senior
L5
E5
SDE III / L6
63–64
Staff
L6
E6
Principal / L7
65–66
Senior Staff
L7
E7
Sr Principal / L8
67
Per-company loop structure
The same skills are scored, but the ceremony differs. Knowing the loop lets you allocate prep: Amazon rewards behavioral depth far more than the others; Meta compresses design into one high-stakes round; Google adds a committee layer that decouples "your interviewers liked you" from "you got the offer."
Meta (E5) — Recruiter screen → 1 technical phone screen → onsite "loop" of 2 coding + 1 system design + 1 behavioral ("Jedi"). Design is a single 45-min round, so it's high-leverage. Feedback goes to a hiring manager, not a separate committee. Down-leveling to E4 is common rather than outright reject.
Amazon (SDE II/III) — Online assessment (OA) → phone screen → onsite of 4–5 rounds, each anchored to Leadership Principles with a "Bar Raiser" (a trained, cross-org interviewer with veto). Expect ~50% of every round to be LP behavioral in STAR format even in coding rounds. The Bar Raiser's job is to reject candidates who'd merely match the current team's average.
Google (L5) — Recruiter → phone screen → onsite of ~4 rounds (coding-heavy, 1 design at senior+). Interviewers write detailed feedback and score 1–4; a hiring committee that never met you decides, then team match, then a comp committee. This is why Google is slower and why "my interviewers loved me" doesn't guarantee an offer.
Platform & logistics mechanics
Tooling failures cost real signal — fumbling the editor reads as fumbling the problem. Know the surface before the round so your cognition goes to the algorithm, not the IDE.
CoderPad (Meta, many startups) — collaborative editor with a run button; you can execute code and see stdout. Pick your language early; it has autocomplete off by default. Write and run your own test cases — running code that passes is a strong signal.
HackerRank / CodeSignal (Amazon OA, screens) — auto-graded against hidden tests, often timed and proctored. Here correctness against edge cases is everything; there's no human to award partial credit for a clean approach. Read constraints for the intended complexity.
Google's tooling — historically a shared Google Doc or a basic editor with no execution. You must dry-run by hand, so practice tracing code on paper. Syntax perfection matters less than a correct, self-verified trace.
Physical board; more natural for system design boxes-and-arrows.
Read on interviewer
Hard — muted mics, no body language.
Easier to sense hints and pivot.
Failure modes
Network drops, screen-share lag; have a phone backup.
Travel fatigue; back-to-back rounds with a lunch "interview" that still counts socially.
Negotiation with 2026 comp anchors & scripts
Compensation is a range, and the recruiter's first number is the bottom of it. These are representative 2026 total-comp (TC) bands for US big-tech senior roles — treat them as anchors, not quotes, since bands shift with market and location. TC = base + annualized equity + bonus.
Level
Base
Equity/yr
Approx TC
Senior (L5/E5)
$180–210k
$180–280k
~$400–520k
Staff (L6/E6)
$210–240k
$350–550k
~$600–850k
Three levers move the number, in order of power: a competing offer (largest), your current/target comp, and the level itself (up-leveling beats any dollar haggle within a level).
Exploding offer — a deadline ("decide in 72 hours"). Deadlines are almost always soft. Script: "I'm genuinely excited and want to say yes to the right package. I have a final round elsewhere on the 14th — can we extend the deadline to the 16th so I can commit fully?"
Competing offer — the strongest lever. Script: "I have a written offer at $X TC. Your team is my first choice; if you can get to $Y I'll sign today and stop interviewing."
No competing offer — anchor on level and market. Script: "Based on my research the band for this level tops out higher than this. Given my scope, can we revisit the equity component specifically?"