Capstone: Full Mock Loop
Run the whole loop end-to-end and self-grade
Mock recruiter screen + readiness check
After this you can verify you're prepared before the real loop.
The recruiter screen rarely sinks a strong engineer, but it sets the frame for everything after. Treat it as a dry run of the one signal that haunts this whole loop: do you actually use Cursor and can you say why Cursor like only you could have said it.
Run this section as a 15-minute self-check before you book a single round. The bar isn't comfort. It's whether you can say your fit out loud, cold, without it sounding like a cover letter read aloud.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Each mock below rehearses one of these stages - step through what each one actually tests.
The five-minute open, said out loudDrill protocol
- 10–1 min · One-line fit. Who you are as a product engineer in one sentence: the surface you ship, the thing you're known for and why Cursor's automate coding mission is the work you'd choose. Record it. If it could be said about any AI startup, rewrite it.
- 21–3 min · Two product stories. Two things you shipped end-to-end, each with an ambiguous start, a decision you owned and a result. One should be user-facing product, one should touch an AI or systems problem. No team-credit fog - say I.
- 33–4 min · Daily Cursor proof. Name a real thing you built with Cursor this week. Which model, what you accepted, where you overrode it. Specifics here are the authenticity signal that the technical rounds will probe harder.
- 44–5 min · Pace honesty. Cursor's core product team runs fast, flat, sometimes six-day weeks, in-person in SF or NY. Say truthfully whether that's a fit. A confident yes, here's why beats a hedged maybe and a real no saves everyone the loop.
Recruiters are listening for specific recent usage, not enthusiasm. “I love AI tools” is noise. “I rebuilt our flaky webhook handler in Cursor yesterday - agent mode for the scaffolding, but I rewrote its retry logic because it dropped the idempotency key” is a candidate who clearly lives in the product. Bank one story like that.
The pre-loop readiness checklistCoverage map
Five capabilities carry this loop. Rate each honestly before you continue - the rest of this module is where you'll exercise them, but you need a baseline now.
- Capability
- TypeScript fluency
- Tested in
- No-AI coding screen
- You're ready if
- You can write correct editor-flavored TS at speed with only autocomplete
- Capability
- Editor primitives
- Tested in
- Coding screen, design round
- You're ready if
- You can reason about buffers, diffs and multi-file edits without notes
- Capability
- AI-systems design
- Tested in
- Design round
- You're ready if
- You can scope tab-prediction or context-retrieval with latency and eval baked in
- Capability
- Build playbook
- Tested in
- Mini build-on-a-codebase
- You're ready if
- You have a repeatable orient → scope → ship → demo loop for unfamiliar code
- Capability
- Values stories
- Tested in
- Recruiter + values round
- You're ready if
- Why-Cursor, a project and a failure all land in first person and sound true
| Capability | Tested in | You're ready if |
|---|---|---|
| TypeScript fluency | No-AI coding screen | You can write correct editor-flavored TS at speed with only autocomplete |
| Editor primitives | Coding screen, design round | You can reason about buffers, diffs and multi-file edits without notes |
| AI-systems design | Design round | You can scope tab-prediction or context-retrieval with latency and eval baked in |
| Build playbook | Mini build-on-a-codebase | You have a repeatable orient → scope → ship → demo loop for unfamiliar code |
| Values stories | Recruiter + values round | Why-Cursor, a project and a failure all land in first person and sound true |
Anything you can't honestly check is a section to over-invest in below.
The instinct is to prep your strongest stage hardest because it feels good. The loop is graded on your floor. Find your weakest of the five above and put the most reps there, even though it's the least pleasant work this week.
Takeaway. Before booking the loop, prove out loud that you can deliver your fit, two product stories and a specific recent Cursor usage in five minutes - then over-invest in your weakest of the five capabilities, not your strongest.
Self-check
QA recruiter asks how you use Cursor day to day. Which answer signals authentic daily use?
Mock coding screen (no AI)
After this you can simulate the autocomplete-only technical screen.
Cursor's first technical screens disallow AI beyond autocomplete. The point isn't nostalgia for whiteboards. They want to see the engineer underneath the tooling - whether you can actually reason about an editor primitive when the model can't reason for you.
Pick one editor-flavored problem, set a 45-minute clock and turn off everything but tab-complete. Narrate the whole way as if an interviewer is on the call. Then redo a variant with AI on, vetting every suggestion out loud, so you've rehearsed both modes the loop will put you in.
Pick one representative problemDrill scope
Given a list of edits (file, range, replacement), apply them to a set of buffers.
Handle overlapping ranges and apply right-to-left so offsets stay valid.
Tests: editor-primitive correctness under the case that actually bites.
Group files that share identical content via a content hash.
Stream large files; don't hash the whole tree into memory.
Tests: data-structure taste and complexity awareness on a Cursor-shaped problem.
Before writing a line, do the two things interviewers grade hardest: restate the problem and name your complexity target. For the edit applier, the trap is offset math - apply edits in descending position order so earlier offsets aren't invalidated by earlier insertions.
interface Edit {
start: number; // inclusive char offset
end: number; // exclusive char offset
text: string; // replacement
}
function applyEdits(source: string, edits: Edit[]): string {
// Reject overlaps up front; they make the result ambiguous.
const sorted = [...edits].sort((a, b) => a.start - b.start);
for (let i = 1; i < sorted.length; i++) {
if (sorted[i].start < sorted[i - 1].end) {
throw new Error("overlapping edits are not applicable");
}
}
// Apply from the end so each splice can't shift an earlier edit's offsets.
let out = source;
for (let i = sorted.length - 1; i >= 0; i--) {
const e = sorted[i];
out = out.slice(0, e.start) + e.text + out.slice(e.end);
}
return out;
}The reason to type it by hand is that the screen will ask the questions only the author can answer: why sort descending, why reject overlaps instead of merging them, what the complexity is and where it could be tightened on a million-line buffer.
Score yourself across four dimensions
- Dimension
- Correctness
- Pass looks like
- Handles the offset/overlap case, not just the happy path
- Red flag
- Works on the example, breaks on adjacent or overlapping edits
- Dimension
- Clarity
- Pass looks like
- Small named functions, obvious data flow, no clever one-liners
- Red flag
- One dense block you'd struggle to explain mid-interview
- Dimension
- Edge cases
- Pass looks like
- Empty input, single edit, end-of-buffer, overlap all considered
- Red flag
- Only the demo input ever runs
- Dimension
- Communication
- Pass looks like
- Narrated approach, complexity and tradeoffs out loud
- Red flag
- Silent heads-down typing until it compiles
| Dimension | Pass looks like | Red flag |
|---|---|---|
| Correctness | Handles the offset/overlap case, not just the happy path | Works on the example, breaks on adjacent or overlapping edits |
| Clarity | Small named functions, obvious data flow, no clever one-liners | One dense block you'd struggle to explain mid-interview |
| Edge cases | Empty input, single edit, end-of-buffer, overlap all considered | Only the demo input ever runs |
| Communication | Narrated approach, complexity and tradeoffs out loud | Silent heads-down typing until it compiles |
Record the no-AI run and grade from the tape. Silence is the most common quiet failure.
When you redo the variant with AI on, the grade flips from can you write it to can you vet it. Catch the model out loud: “It's merging overlapping edits silently - that's a data-loss bug, I'm making it throw instead.” In the no-AI screen, the equivalent move is naming the edge case before the interviewer does.
Write the test you'd be embarrassed to skip: two adjacent edits, two overlapping edits, an edit at the very end of the buffer. “How do you know it works” follows you through every round of this loop, so practice answering it with a test, not a shrug.
Takeaway. Solve one editor primitive in ~45 minutes with autocomplete only, narrating approach and complexity - then redo it AI-on and vet every suggestion. Silent typing fails the communication dimension as surely as a wrong answer fails correctness.
Self-check
QWhen applying a list of edits (start, end, replacement) to a buffer, why apply them in descending position order?
Mock AI-editor design problem
After this you can practice a Cursor-style system design round.
Cursor's design round isn't generic distributed-systems trivia. It's an AI-editor problem with a brutal latency budget, real inference cost and a quality bar that a senior engineer would notice if you got it wrong.
Treat the rubric as a gap finder, not a score to admire. Mark the weakest proof, turn it into one practice rep and keep the artifact you would show an interviewer.
Pick one prompt, set a 40-minute clock and run it end-to-end out loud. The three below each stress a different muscle the role needs.
Predict the next edit for millions of users under a tight latency budget.
Stresses: caching, speculative decoding, small-model tradeoffs, debounce.
Assemble the right code into a prompt within a token budget.
Stresses: ranking, recency, symbol graphs, what to cut when over budget.
Serve completions without persisting customer code.
Stresses: data boundaries, on-device vs server, audit and trust.
The 40-minute clockRun it like the round
- 10–6 min · Requirements & assumptions. State the latency target (e.g. p95 under 100ms for tab), the scale (millions of DAU) and what good means. Name your assumptions explicitly so you can defend them when pushed.
- 26–16 min · Data flow. Walk the request from keystroke to rendered suggestion: debounce, context gather, prompt build, inference, stream back, accept/reject telemetry. Draw the path in words; mark where the time goes.
- 316–28 min · Latency & cost tradeoffs. This is the heart of the round. Smaller model vs quality, cache hit rate vs freshness, speculative vs exact, on-device vs server cost. For each, state what you'd trade and why for this product.
- 428–34 min · Eval. How you'd know it works on real usage, not your demo: acceptance rate, characters-retained-after-N-seconds, A/B on a small traffic slice, guardrails against confidently-wrong suggestions.
- 534–40 min · Failure modes. Cold cache, model timeout, a suggestion that corrupts the buffer, a latency spike under load. Say what degrades gracefully and what must never break.
For tab prediction, a correct suggestion that lands in 300ms is worse than a slightly weaker one in 60ms, because the user has already typed past it. Frame tradeoffs around the user's typing speed and the round flips from textbook system design to product judgment - which is what they're actually grading.
Score against the rubric
- Dimension
- Scoping
- What a 5 looks like
- Pinned latency, scale and a definition of good in the first six minutes
- Red flag
- Started drawing boxes before stating the target
- Dimension
- Depth
- What a 5 looks like
- Real mechanisms: caching, speculative decode, retrieval ranking
- Red flag
- Hand-waved “we'd use a model” with no internals
- Dimension
- Tradeoffs
- What a 5 looks like
- Each choice has a stated cost and a reason tied to this product
- Red flag
- Listed options without committing or defending one
- Dimension
- Product awareness
- What a 5 looks like
- Eval, telemetry and failure modes framed around real users
- Red flag
- Designed for a benchmark, never mentioned acceptance or trust
| Dimension | What a 5 looks like | Red flag |
|---|---|---|
| Scoping | Pinned latency, scale and a definition of good in the first six minutes | Started drawing boxes before stating the target |
| Depth | Real mechanisms: caching, speculative decode, retrieval ranking | Hand-waved “we'd use a model” with no internals |
| Tradeoffs | Each choice has a stated cost and a reason tied to this product | Listed options without committing or defending one |
| Product awareness | Eval, telemetry and failure modes framed around real users | Designed for a benchmark, never mentioned acceptance or trust |
Grade the recording with this open. The tradeoffs row is where most candidates lose the round.
Designing for peak quality and ignoring cost is the senior-candidate trap. Serving a latest-generation model on every keystroke for millions of users is a non-starter economically and saying so unprompted is a stronger signal than a flawless architecture that would bankrupt the inference budget.
Takeaway. Scope the design round with a latency target, scale and definition of good before drawing anything, spend the core minutes defending latency and cost tradeoffs for this product and always close with eval and failure modes.
Self-check
Timed mini build-on-a-codebase
After this you can rehearse the decision round at smaller scale.
The real decision round is the famous 8-hour paid onsite: a frozen copy of Cursor's own codebase, a deliberately vague prompt and a question underneath it - can you go end-to-end and what would you invent in a vacuum.
You can't get the paycheck or the exact repo. You can replicate the shape. Clone an open-source editor or AI-dev project you've never touched, write yourself a fuzzy brief and box it to 3–4 hours. The constraint that matters is unfamiliar code plus an ambiguous ask under a hard clock.
The onsite grades the build and the presentation. A scrappier feature defended with sharp tradeoff and eval reasoning beats a polished feature presented as a shrug. Rehearse the five-minute talk as seriously as the code, because in the real round AI and Slack questions are allowed - they're watching how you scope and decide, not whether you can type.
The 3–4 hour protocolRun it like the real thing
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Verify is a hard gate - never present a slice you haven't run on a real input.
- 1First 30 min · Orient and write your vague brief. Build and run the repo. Read the entry point and data model. Then write yourself a deliberately vague prompt - “make reviewing AI-generated changes feel better” - the kind you'd get, not a spec. Note the questions you'd post in Slack instead of guessing silently.
- 2Scope to a demoable slice. Choose the thinnest path that proves the feature end-to-end across every layer it touches. Write down what you're deliberately cutting and why - naming the cuts is judgment, not a gap.
- 3Build end-to-end first, then deepen. Get the unglamorous full vertical working before polishing any single layer. A slice you can demo beats a gorgeous half that doesn't run.
- 4Verify it works on a real input. Run it for real, add at least one test or reproducible check and note the edge cases you didn't reach.
- 5Write a short note + a 5-minute demo. One page on what you built, what you cut and how you'd evaluate it. Demo it working in 60 seconds, then spend the rest defending decisions and naming the next slice.
The defense they're listening forPresentation
- Why this, in a vacuum
- What you chose to build from the vague brief and why it's the most impactful thing - your invented opinion is the point.
- What you cut
- The scope you dropped to ship the slice, named explicitly with the reason.
- With more time
- The next two slices in priority order, ranked by user value not polish.
- How you'd evaluate it
- The concrete metric or eval that proves it works on real usage, not just your demo input.
- How AI helped
- Where you drove the model, where you overrode it and why - the authenticity signal again.
Rehearse these out loud before presenting. A vague answer here erases a strong build.
The trap on an unfamiliar repo is rabbit-holing for two hours on one layer and arriving with nothing to demo. Protect the demoable slice above everything. A thin working vertical with honest gaps beats a deep, broken layer every single time.
“The brief was open, so I bet on inline review of AI edits because that's where I feel the friction daily. I shipped the accept/reject-per-hunk path end-to-end and stubbed the multi-file rollup. With more time that's next and I'd measure it by how many suggestions get reviewed instead of blanket-accepted.”
Takeaway. Simulate the onsite with unfamiliar code, a brief you leave vague and a hard clock - protect the demoable end-to-end slice, verify it and defend what you invented and what you cut as hard as you built it.
Self-check
Mock values / why-Cursor round
After this you can pressure-test authenticity and culture fit.
Cursor keeps the team small and exceptional, so the values round is a real gate, not a formality. It probes two things: whether your Cursor passion is authentic and whether you fit a flat, truth-seeking, high-intensity culture that ships fast and debates honestly.
Answer four questions on the clock, then have a peer probe the soft spots. Say each once unscripted and critique the recording - generic and rehearsed both fail here and they fail the same way.
- Why Cursor. Specific to you and to this product: the automate-coding mission, inventing AI-native interfaces, the intensity. Not “I love AI and fast startups.”
- A project story. One you owned end-to-end, told in first person, with a real decision and a measurable result.
- A failure story. What you got wrong, how you caught it, what you changed. Truth-seeking means naming your own mistake without flinching.
- Competitive positioning. A genuine opinion on Cursor versus Copilot, Windsurf or Claude Code - what's better, what isn't, where you'd push the product next.
A why-Cursor rooted in a real product opinion only you could hold.
First-person ownership, with a number attached to the result.
A competitive take that names a concrete strength and a real gap.
A failure you volunteer and analyze, not one dragged out of you.
“I love AI and want to work somewhere fast-growing.”
“We” credit-sharing that hides what you actually did.
“Cursor is just better” with no specifics or honest gap.
A humble-brag failure that isn't really a failure.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Every weak answer is interchangeable with any candidate; every strong one only you could give.
Authenticity cracks under follow-ups, not openers. Have a peer push: “What does Cursor get wrong today?” and “What did you personally get wrong on that project?” The first answer is easy to polish. The honest, specific second answer - including a real product critique - is what proves you actually use the thing and reason for yourself.
“What I got wrong is mine to name: I shipped the suggestion UI before I had an eval, so I couldn't tell good releases from regressions for two weeks. I now write the acceptance-rate metric before the feature, every time - that habit is exactly why I want to build at a place that measures agent quality on real users.”
Faking enthusiasm for the pace is a slow-motion mistake. Six-day weeks and an in-person SF/NY default are real. If that's a genuine no for you, the values round is the cheapest place to find out - over-promising on intensity just relocates the same conversation to your first month.
Takeaway. Make every values answer specific and first-person, volunteer a real failure and a real product critique and be honest about the pace - authenticity cracks under the second follow-up, so that's the answer to rehearse.
Self-check
Self-scorecard and final gaps
After this you can convert the mock into a focused final plan.
Run the whole loop on yourself before they do. A mock loop isn't there to make you feel ready - it's there to find the dimension that will sink you while there's still time to fix it.
Treat the rubric as a gap finder, not a score to admire. Mark the weakest proof, turn it into one practice rep and keep the artifact you would show an interviewer.
Rate yourself 1–5 on each dimension below, from the recordings of the four mocks you just ran, not from memory. Memory inflates. Anything under 3 is a blocker, not a soft spot to apologize for in the interview.
- Dimension
- Coding cold
- What a 5 looks like
- Correct, clear editor primitive in TS at speed with autocomplete only
- Source mock
- Section 2
- Dimension
- AI authenticity
- What a 5 looks like
- Drive AI hard, reject bad output, defend every kept line
- Source mock
- Sections 2 & 4
- Dimension
- AI-systems design
- What a 5 looks like
- Latency, cost, eval and failure modes scoped and defended
- Source mock
- Section 3
- Dimension
- End-to-end build
- What a 5 looks like
- Demoable vertical from a vague brief, with cuts named
- Source mock
- Section 4
- Dimension
- Product taste
- What a 5 looks like
- An invented opinion on what to build, defensible under pushback
- Source mock
- Sections 3 & 4
- Dimension
- Values & pace
- What a 5 looks like
- Specific why-Cursor, first-person stories, honest on intensity
- Source mock
- Sections 1 & 5
| Dimension | What a 5 looks like | Source mock |
|---|---|---|
| Coding cold | Correct, clear editor primitive in TS at speed with autocomplete only | Section 2 |
| AI authenticity | Drive AI hard, reject bad output, defend every kept line | Sections 2 & 4 |
| AI-systems design | Latency, cost, eval and failure modes scoped and defended | Section 3 |
| End-to-end build | Demoable vertical from a vague brief, with cuts named | Section 4 |
| Product taste | An invented opinion on what to build, defensible under pushback | Sections 3 & 4 |
| Values & pace | Specific why-Cursor, first-person stories, honest on intensity | Sections 1 & 5 |
Score from the tape. The loop is graded on your floor, so the lowest row is the one that matters.
Top three gaps, one action eachGap plan
- Gap 1 (weakest)
- Assign reps, not reading. A sub-3 in coding-cold means three more timed no-AI primitives, recorded and re-scored - not another article.
- Gap 2
- Target the exact failure from the tape. If design lost on tradeoffs, redo one prompt focused only on defending cost and latency under pushback.
- Gap 3
- Build the missing story or check. If a values answer sounded rehearsed, rewrite it around a real number from your past work before you re-record.
Front-load the weakest. A 5 elsewhere cannot rescue a 2 here.
Re-confirm the logisticsBefore you book
- 1Location & format. Confirm you're set for in-person SF or NY and a multi-day onsite, including the team-fit days that can run over meals for senior roles.
- 2Intensity. Re-confirm honestly that the fast, flat, sometimes-six-day-week pace is a real yes, not a yes you're talking yourself into.
- 3Availability. Block the calendar for the paid 8-hour build and a possible two-day onsite before you schedule, so the decision round gets your best work, not your leftover hours.
Don't schedule the loop until three things clear on the recordings: coding-cold (you can build a primitive with autocomplete only), design (latency, cost and eval defended under pushback) and authenticity (your Cursor usage and why-Cursor sound true, not prepped). If any of the three is faking a yes, that's exactly where this week's reps go.
Takeaway. Score every dimension from the tape, treat any sub-3 as a blocker and front-load your weakest with reps not reading - then hold a hard go/no-go bar: coding-cold, design and authenticity must all clear before you book.
Self-check
QYour mock scores are: coding-cold 5, AI-systems design 2, end-to-end build 4, values 4. How should you spend your prep week?