Skip to main content

Guide: The Senior Coding Interview at Big Tech

The operational manual for running a big-tech coding round — one continuous interview workflow from understanding the problem to handling follow-ups, with the senior move at each step.

Who this is for

A backend or full-stack engineer interviewing for mid-to-senior roles at a FAANG-class company — Meta E4/E5, Google L4/L5, Amazon SDE II/III, or the equivalent at Apple, Netflix, and the big-tech-adjacent tier — in the next 1–8 weeks. You’ve been grinding LeetCode. What you’re not sure of is how to actually run the round — how to move from reading a problem to a clean, defended, tested solution, out loud, on the clock.

This is the operational manual for that. It’s not another article about solving LeetCode problems — it’s about performing during the interview.

Where this fits: the coding-prep system

Three articles do three different jobs. Read them in this order:

ArticleIts jobAnswers
This guideHow to perform in the round”How do I run the 45 minutes?”
Problem Recognition FrameworkHow to recognize the problem”What kind of problem is this?”
Curated Problem ListWhat to practice”Which ~60 problems?”
Senior Backend Prep PlanHow to sequence it all”What do I do for 12 weeks?”

They’re complementary, not overlapping. This guide assumes you can already recognize patterns (that’s the Framework’s job) and have problems to drill (the List’s job). Here, the bottleneck is execution under the clock.

If you’re targeting E4/L4, the workflow applies as-is; the senior-specific moves flagged throughout are stretch goals for your level.


Self-assessment: where are you stuck?

If this sounds like you…Your issue isThe workflow step to focus on
”I solve mediums but need 35+ minutes”Speed — pattern recall is too slowStep 2 (recognize) — drill it via the Framework
”I solve the problem but fail follow-ups”Adaptation — prepped solutions, not reasoningStep 7 (handle follow-ups)
“I know patterns but blank under pressure”Communication — can’t think and talk at onceSteps 1, 3, 5 — narration is built into each
”I solve and communicate but still get ‘not senior‘“Signal — mid-level moves at the senior bar”The senior move” in every step
”I pass coding but fail system design”Allocation — over-investing in codingSenior Backend Prep Plan

The core insight

A familiar medium solved cleanly, out loud, in under 20 minutes. Build that, and every loop variant becomes a styling question. Skip it, and no amount of company-specific tips will save the round.

Coding rounds at this tier are graded on a different shape than most candidates assume. The naive model is “solve the problem, ideally optimal” — and yes, if you don’t solve it you’re not landing the round. But the delta between mid-level and senior isn’t problem difficulty. It’s execution quality under the clock: clean code, clear communication, calibrated decisions about where to spend time. Senior candidates don’t merely solve problems — they make engineering decisions under time pressure, and let that thinking be audible.

That’s why this guide is a workflow, not a tip list. There is one procedure; every problem runs the same one; senior is a way of executing it, not a separate topic.

What the round actually grades

Most candidates who get a correct solution and still receive a no-hire are confused by the result. The issue is almost always one category staying at 0–1 while correctness is fine:

SignalWhat it meansMid barSenior bar
CorrectnessWorking solution that handles inputsWorking solutionWorking + edge cases without being prompted
SpeedTime from read to working codeMedium in 25 minFamiliar medium in 15–20; unfamiliar in 20–25 with clean approach
CommunicationHow you explain your thinkingApproach before codingTradeoffs — why this over alternatives
Code qualityReadability and structureClean, consistent styleProduction-quality: good names, small functions, no duplication
AdaptabilityResponse to follow-upsHandle hintsDrive follow-ups; extend your own solution
TestingVerificationWalk through happy pathName failure modes; test edge cases proactively

The workflow below is built to move each of these rows from the mid to the senior column. Here’s what an interviewer might write after a strong round: “Identified the sliding-window pattern quickly (1.5 min). Named the hash-map alternative before choosing. Clean code — good names, helper for the window validation. Missed the empty-string edge case but caught it self-testing. Handled the ‘doesn’t fit in memory’ follow-up cleanly — external sort with chunked processing. Strong hire.” Every sentence maps to one workflow step.


The round shape, by company

The generic round is 45 minutes: intro (5), coding (~35), questions (5). What happens inside the coding window varies — and the variation changes which workflow steps carry the most weight:

CompanyTypical shapeWhere the weight lands
MetaTwo problems in ~35 min (~17 each — switch regardless)Speed through steps 1–6; throughput beats one optimal solve
GoogleOne problem, then follow-ups that mutate itStep 7 — how your solution adapts when constraints change
AmazonOne problem + an LP question in the same hourStep 5 — clean, extensible code (see the logical & maintainable guide)
Apple / NetflixTeam-dependent; usually one problem, practicalSteps 5–6 — production instincts, edge-case care

Two things worth internalizing:

  • Speed through the early steps is the universal opener. At Meta it’s the whole game; at Google it buys time for follow-ups; at Amazon it leaves room for the LP question. A fast first solve opens every door.
  • Confirm your loop’s shape with the recruiter. “How many problems per round, are there follow-ups, and what environment (CoderPad, Google Docs)?” is a normal question, and the answer changes your pacing.

The interview workflow

Every problem runs the same seven steps, in order. This is the spine of the round: reading a problem, you’re never improvising what to do next — you’re executing a known procedure, which frees your attention for the actual work.

And the actual work, from step 3 onward, is engineering decisions. That’s the through-line: an interview is a chain of choices — which approach, which data structure, which tradeoff to accept, how to adapt when constraints change — each made out loud with a reason. Communication isn’t a separate skill layered on top; it’s how the decisions become visible. “Senior” isn’t a separate section; it’s making those decisions more deliberately. Each step below carries a senior move — one extra sentence of reasoning that moves it up a level.

flowchart TD
  S1[1 · Understand] --> S2[2 · Recognize] --> S3[3 · Evaluate options] --> S4[4 · Commit] --> S5[5 · Implement] --> S6[6 · Validate] --> S7[7 · Adapt]
  S1 -.senior signal.-> G1[Question selection]
  S2 -.-> G2[Pattern recognition]
  S3 -.-> G3[Tradeoff reasoning]
  S4 -.-> G4[Calibrated judgment]
  S5 -.-> G5[Production-quality code]
  S6 -.-> G6[Failure-mode testing]
  S7 -.-> G7[Constraint reasoning]

  classDef step fill:#fdf1e3,stroke:#b45309,stroke-width:2px,color:#1f2937;
  classDef sig fill:#f3ecfb,stroke:#8250df,stroke-width:1px,color:#1f2937;
  class S1,S2,S3,S4,S5,S6,S7 step
  class G1,G2,G3,G4,G5,G6,G7 sig
StepTime (of ~35 min)The moveThe decision
1. Understand60–90 secRestate the problem; ask the 1–2 questions that change the approachWhat am I actually solving?
2. Recognize30–90 secName the Recognition CategoryWhat kind of problem is this?
3. Evaluate options60–90 secName the viable approaches and their tradeoffsWhich approaches are on the table?
4. Commit30–60 secPick one, say why, name the complexityWhich one, and at what cost?
5. Implement~70% of remainingWrite it; narrate decisions, not actionsHow do I build it cleanly?
6. Validate1–2 minTrace concrete inputs; name the edge casesIs it correct, and where would it break?
7. AdaptrestExtend the solution to changed constraintsWhat changes when the constraints change?

Steps 1–4 are under 5 minutes total. The bulk goes to implementation, where it belongs. Two rules hold across all of them: don’t skip steps (skipping clarify saves 90 seconds and costs 6 minutes when you find out mid-code you misread the input), and don’t expand steps (a 4-minute clarify is stalling, not preparing).

Step 1 — Understand the problem

Restate the problem in your own words, then ask the 1–2 questions that would change your approach: is the input sorted? can values be negative? what’s the expected size? how are ties broken? This is where you communicate first — before any code, you and the interviewer agree on what you’re solving.

Note

The senior move: ask the questions that matter, and say why they matter — “if values can be negative, a sliding window won’t work, so I need to know that before I choose.” Clarification theater (asking questions whose answers don’t change anything) reads as junior; targeted questions read as someone who’s been burned by ambiguous requirements in production.

Step 2 — Recognize the pattern

Before choosing an algorithm, recognize what kind of problem this is — the Recognition Category sets up every decision that follows.

This guide doesn’t teach recognition — the Recognition Framework does. Run its recognition order, land on a category, and you arrive at this step’s output: “this is a Traversal problem,” or “this is State Maintenance with a sliding window.” If you can’t do this in about a minute on a familiar medium, that’s a Framework-and-drilling gap, not a round-mechanics gap — go close it there first.

Note

The senior move: name the category out loud and fast, then move on. “This is a top-K problem — heap or quickselect” in the first ninety seconds tells the interviewer you recognize structure, not just problems you’ve memorized.

Step 3 — Evaluate options

Recognition narrows the field; now the real work starts — the round becomes a chain of engineering decisions, and this is the first. Once you know the category, there’s usually more than one way to execute it. Name the viable approaches and their tradeoffs before committing — this is the algorithmic-reasoning credit, and it’s invisible if you go straight to code.

“Two options: a heap for O(n log k), which works for a stream, or sort-first for O(n log n) but simpler and no extra structure.”

Note

The senior move: surface the alternative you’re not going to pick, and why. Mid-level states one solution; senior states two and chooses. The interviewer can’t credit reasoning they didn’t hear.

Step 4 — Commit

Commit to one approach, tie the choice to this problem’s constraints, and state the complexity before you type:

“The hash map wins here because we need a single pass for the streaming follow-up — O(n) time, O(n) space.”

This is also where the bail-on-optimal judgment lives. If you have a working O(n log n) and see an O(n) but only 10 minutes left, don’t silently ship the slower one and don’t blindly rewrite — say it: “I have a working O(n log n). I see an O(n) with a hash map — should I rewrite, or move on?” The interviewer almost always says “move on, walk me through the refactor,” and you answer cleanly. Same end state as a silent suboptimal solve, much better score.

Note

The senior move: every choice comes with a named cost. “This uses O(n) extra space — the in-place version exists but is harder to get right under the clock” is the sentence that separates a calibrated decision from a lucky guess.

Step 5 — Implement

Now write it. Three things carry the grade here — the mechanics of how to write clean interview code are in Implementation principles below; in the moment, focus on:

  1. Narrate decisions, not actions. Don’t say “now I’m writing a for loop” — the interviewer can see the loop. Say “I’m using a loop instead of recursion because the input could be large and recursion risks stack overflow.” The decision is the signal.
  2. Write it clean the first time. Good names, small functions, no duplication — under the clock, not as a cleanup pass. It’s cheaper to write readable than to refactor.
  3. Handle edge cases as you reach them, out loud — an early return for empty input, named when you write it, not bolted on at the end.

Note

The senior move: narrate the tradeoff inside the implementation — “I’m using a list here for simplicity; in production I’d use a deque for O(1) popleft.” It shows you’re thinking in production code, not just passing tests.

Caution

Common mistake: narrating uncertainty instead of decisions — “um, maybe a hash map? actually let me go back to the loop…” Think silently until you have a decision, then narrate the decision.

Step 6 — Validate

Walk your actual code — line by line — with one concrete input, then a deliberate edge case (empty input, single element, duplicates, the boundary). Testing on real examples, out loud, is both verification and communication: the interviewer watches you catch your own bugs.

Note

The senior move: don’t just run the happy path — name the failure mode each test would catch. “I’ll run the empty-array case, because that’s where the early-return would be missing.” Naming which edge cases the interviewer is likely to probe, before they ask, is a strong signal.

Step 7 — Adapt to follow-ups

Follow-ups are not an appendix — at Google, Meta E5, and Amazon L6 they’re where the round is won or lost. The interviewer mutates the problem: “what if it doesn’t fit in memory?”, “what if updates arrive concurrently?”, “what if duplicates are allowed?” They’re often evaluating whether you can extend an existing solution and reason under new constraints — not whether you produced the first solution. A candidate who nails the initial solve and freezes on the mutation scores below one who solves adequately and adapts fluently.

Important

Almost every follow-up is one of four:

  • Larger scale — “what if n is a billion?” (bigger inputs)
  • Different constraints — “what if duplicates / negatives / order matters?”
  • Different API — “what if this is called millions of times?” (read vs. write shape)
  • Online / concurrent — “what if updates stream in / threads race?”

Recognize which of the four you’re being handed, and the adaptation follows.

Most candidates freeze here because they prepped solutions, not adaptation. Run this 5-step protocol, every time:

  1. Restate the new constraint. “So now the input doesn’t fit in memory — we need a streaming or external approach.”
  2. Explain why the old solution breaks. “My hash map needs O(n) memory, which won’t work past RAM.”
  3. Propose the new approach. “I’d switch to an external sort with chunked processing — sort chunks that fit, then merge.”
  4. Analyze the new complexity. “O(n log n) time, O(chunk-size) space; the merge is a k-way heap merge.”
  5. Name what it costs. “We lose random access — queries need a re-scan or an added index.”

Common follow-up families and what they probe:

Follow-upWhat it testsResponse direction
”Doesn’t fit in memory?”External/streaming thinkingExternal sort, map-reduce, streaming aggregation
”Updates arrive online?”Amortized vs. batchSwitch to an online structure (heap, balanced BST)
“Duplicates allowed?”Edge-case robustnessCounter instead of set; dedup logic
”Order matters?”Stability awarenessStable sort; insertion order via linked list
”Queries outnumber writes 1000:1?”Read optimizationPrecompute, cache, index — trade write cost for reads
”Called millions of times?”Amortization / precomputeOne-time preprocessing; O(1) lookup after
”Multiple threads call this?”Thread-safety awarenessLock, CAS, immutable snapshots, read-write separation

Note

The senior move: drive the follow-up before it’s asked. After your solve: “This assumes it fits in memory — if it didn’t, I’d go external-sort. Want me to walk that?” Structuring the mutation yourself is the Staff-adjacent signal: the interviewer becomes passive because you’re running the conversation.

When it goes sideways: the recovery protocol

The question every candidate actually worries about — what if I get stuck? The most common failure is a problem eating 18 minutes of a 12-minute budget: you misread the input or chased a wrong approach. Panic is natural and wrong.

  1. Reset the clock mentally. Whatever’s left is enough for a medium if you waste none of it.
  2. Compress steps 1–2. 30 seconds understand, name the pattern, move.
  3. Start with brute force. State it — “I’ll start here and optimize if there’s time” — and code it. A working brute-force beats an in-progress optimal, every time.
  4. Land the optimization verbally. “This is O(n²); the O(n log n) uses a heap, which I’d write next.”

If nothing comes at all, say the brute force out loud and code it — the pattern usually reveals itself once the nested loop makes the redundant work visible. A working brute-force that leads to a verbal optimization beats frozen silence, every time.

Worked example: Merge Intervals

The seven steps on 56. Merge Intervals, one line each — a ~12-minute solve:

  1. Understand: merge overlapping [start, end] intervals — sorted? can start equal end? (Not sorted; yes.)
  2. Recognize: an Ordering problem — correctness depends on sorted order.
  3. Evaluate: sort + linear sweep, or an interval tree (overkill for a one-shot merge).
  4. Commit: sort by start, sweep, extend the current interval on overlap — O(n log n) time, O(n) output.
  5. Implement: narrate the sweep as you track the current merged interval.
  6. Validate: trace [[1,3],[2,6],[8,10]], then the touching edge case [[1,4],[4,5]] → [1,5].
  7. Adapt: if the intervals streamed in and didn’t fit in memory → external-sort by start, same sweep.

Diagnose and drill

Failure diagnosis

Consistent mock feedback maps to a specific workflow step:

SymptomRoot causeFix (by step)
Time runs out consistentlyRecognition too slow (step 2)Drill the Framework until category-ID is <1 min
Stuck after clarifyingWeak examples before coding (step 1→3)Force 2 examples — one simple, one edge — before approach
Buggy implementationsWeak templates (step 5)Rewrite canonical patterns from scratch daily until clean
Fail follow-upsBrittle solutions (step 7)Run the 5-step ladder on every medium; invent your own “what if”s
Solve but no hireCommunication gap (steps 3, 5)Record yourself; narrate every decision until it’s natural
Code works but messyClean code not drilled (step 5)Practice to Amazon’s bar: good names, small functions

Readiness checklist

Concrete gates — not “do I feel ready?” but “can I demonstrably do this?”

  • Solve a familiar medium in ≤20 min with clean code and full narration
  • Solve an unfamiliar medium in ≤25 min (approach in 3, code in 15, test in 5)
  • Name the Recognition Category of a random medium in <1 minute
  • Write the sliding-window / BFS / heap-top-k templates from memory in <5 min each
  • Implement LRU Cache from a blank page in ≤25 min
  • Handle one follow-up mutation, end to end, in <5 minutes using the 5-step ladder
  • State your approach for any medium in ≤2 minutes and have a mock partner agree it’s clear
  • Explain a correct O(n log n) and name the O(n) alternative in one breath

7+ checked: approaching readiness. Fewer than 5: close the gaps before scheduling.

Debrief in 5 minutes

After every mock, before the editorial:

  1. Which workflow step took longest? That’s your bottleneck — drill it.
  2. Which signal row scored lowest? (Correctness, speed, communication, code quality, adaptability, testing.) That’s your next focus.
  3. What would you say differently? Write the one sentence that would make it “clearly senior,” and say it out loud next rep.

Coding interviews in the AI era

As of mid-2026, AI increasingly reduces the value of raw implementation speed — the step 5 mechanics it does well (syntax, boilerplate, standard patterns). The workflow stays the same; the weight shifts onto the reasoning steps — understanding (1), decisions (3–4), and adaptation (7) — which AI can’t do for you in a live conversation. If your loop includes an explicit AI-assisted round, read Guide: The AI-Native Coding Interview.


Implementation principles

Reference for step 5 — how to make the code you write in 30 minutes read like you write production code by instinct. Drill these in prep so they’re automatic in the round, not something you think about while the clock runs.

  • Good names. left, right, count over l, r, c — names are how the interviewer reads your code without asking.
  • Small helper functions. Extract repeated logic into a named 3-line helper; it shows decomposition instinct.
  • Single responsibility, no duplicated logic. Two identical blocks is a missed extraction, and interviewers notice.
  • Defensive edge cases, named as you write them — early returns for empty input, bounds checks.

On language: for most candidates Python is the right call — fewer keystrokes per algorithm, and Counter / heapq / deque / defaultdict land directly on the common patterns. The exception is a systems/infra role where the team’s C++/Go signals fit. Whatever you pick, write it like production code — at Amazon that’s the explicit rubric; everywhere else it’s a silent differentiator.


What to do next

Prep is: drill recognition (the Framework) → practice the problems (the List) → run full timed rounds on this workflow.

  • 4+ weeks: run the problem list in recognition order with a stopwatch; from week 3, two full timed mocks per week in your target company’s shape, running all seven steps.
  • 2 weeks: drop hards; drill steps 1–6 for speed on easies/mediums; two follow-up mutations per problem (step 7); two mocks per week.
  • 1 week: no new patterns — warm up recognition on problems you know; two solo mocks at full speed running the whole workflow.
  • 24 hours: one easy, one medium, full workflow with narration, then stop.