Guides › Notion
N

Notion Interview Guide (2026)

Notion looks like a generic FAANG loop and is not one. It is a product company that scores craft and user sense, so most people who fail here are good engineers who prepped for the wrong test. They write code that compiles, they know their data structures, they have shipped real things, and then they walk into a round that grades whether building a feature next to them for a day would be pleasant. This guide fixes that, line by line.

Software Engineer11 min readUpdated 2026-11

The complete Notion interview, start to finish. Work through these 9 sections (about 11 min) and you walk in knowing exactly what each round tests and how to prepare.

The loop at a glance

Five rounds, one bar. Everything below is how to clear each one without guessing.

  1. Recruiter then phone screen. A 30-minute fit call, then a 60-minute live coding problem where communication counts as much as the solution.
  2. Two coding rounds plus a practical build. LeetCode mediums with a tree and hash-map flavor, then a realistic, product-shaped build task that trips people who treat it like a whiteboard puzzle.
  3. Design (L5+) or fundamentals (junior). Seniors get system design, the house special is a collaborative editor. Juniors get a CS fundamentals deep-dive instead.
  4. Behavioral on real values. Ownership, craft, product curiosity, clear writing. Every story needs a number in the result.
  5. The bar is taste. Clean working code, calm clarifying, product sense. A talkative imperfect answer beats a silent perfect one, every time.

1Snapshot, read this first#

Thing Detail
Roles Product engineer (frontend-leaning full-stack), backend/infra, platform, mobile
Levels New grad (L3), mid (L4), senior (L5), staff (L6)
Process length Usually 3 to 5 weeks start to offer
Rounds Recruiter screen, technical phone screen, onsite loop (4 to 5 rounds)
What wins Clean working code, product sense, calm clarifying questions, real ownership stories
What fails Over-engineering, silence while coding, no product curiosity, weak "why this change" reasoning
US comp (L4/L5 total) ~$230k to ~$360k
India comp (SDE/senior) ~₹45L to ~₹1.1Cr for the levels they hire into
UK comp (London) ~£110k to ~£180k total

Where the offices are.

  • US is the center of gravity: San Francisco HQ, the most reqs, the highest bands.
  • India is growing (Hyderabad), with its own comp bands below.
  • London covers EMEA.
  • Canada candidates usually route through US or remote-eligible reqs.

The one thing to internalize.

  • Notion is a product company first, an engineering org second.
  • The tool millions open every morning was built by a tiny team that cared obsessively how it felt. That taste is the bar.
  • Code like a competitive programmer, optimal but soulless, and you will not clear it.
  • The real question in the room is "can I picture building a feature next to this person."

2Getting the call (the part most guides skip)#

Treat the public portal as a backup, not a plan. The response rate on cold applies is low single digits, and a referral carries unusual weight here because the eng org is still small enough that internal taste matters.

How people actually get shortlisted:

  • Referral from someone who has seen you build, ideally someone who can speak to your product judgment, not just that you are "smart." One engineer saying "I would ship with this person" is the single strongest path in.
  • Build something real with Notion's public API, or clone a slice of the product (a block editor, a nested-page tree). The honest writeup of the tradeoffs you hit matters as much as the code.
  • Show product impact, not tech output. Recruiters scan for the shape "built X, shipped it, measured the result." A list of frameworks you have touched does nothing.

A resume bullet that actually lands:

Rebuilt the document-sync layer for a collaborative editor, cutting p95 save latency from 820ms to 190ms and reducing conflict errors 60%, used daily by 40k active users.

Why that line works:

  • It names a system, a before-and-after number, and a user count.
  • It implies why it mattered (people were losing work) without stating it.
  • Three bullets like this beat fifteen vague ones.
From the interviewer's chair

I read resumes for verbs and numbers, not nouns. ATS keywords worth including when they are true: React, TypeScript, Node, PostgreSQL, real-time collaboration, CRDT or OT, caching, distributed systems, API design, performance, accessibility. Do not keyword-stuff. A human reads these, and a wall of nouns with no verbs or numbers reads as filler.

3The loop at a glance#

Round Length What it tests
Recruiter screen 30 min Motivation, level fit, comp expectations, basic background
Technical phone screen 60 min One coding problem, live, with communication
Onsite: coding 1 60 min Data structures, practical problem solving
Onsite: coding 2 / practical 60 min A realistic, product-flavored build task
Onsite: system design (L5+) or CS fundamentals (junior) 60 min Architecture or depth on fundamentals
Onsite: behavioral / values 45 to 60 min Ownership, collaboration, product sense, culture

What changes by level:

  • L5 and up lean into system design, the HLD round.
  • Junior and new-grad loops swap that for a second coding round plus a CS fundamentals deep-dive.
  • Everyone, at every level, gets the practical build round.

The round that makes Notion feel different is the practical build. A lot of otherwise strong candidates trip there because they treat it like a whiteboard puzzle instead of a shipping task.

flowchart LR A[Recruiter screen] --> B[Phone screen coding] B --> C[Onsite coding 1] C --> D[Practical build] D --> E[Design or fundamentals] E --> F[Behavioral values] F --> G[Offer]
The full loop. The practical build in the middle is the Notion-specific round, and the one most candidates underestimate.

4The coding or technical rounds#

Notion's coding problems are usually LeetCode medium, sometimes a medium-hard. They avoid obscure DP puzzles and math-olympiad traps, and you will almost never see a problem whose whole difficulty is one clever trick you either know or you do not. They want to watch you turn a real problem into clean working code while you talk through it.

Patterns they reuse, roughly in order of frequency:

  • Hash maps and frequency counting. Group these, dedupe these, count these, find the first unique. Reach for a map without thinking and half their problems get easy.
  • Trees and recursion, heavily, because documents are trees. Traversal, serialize/deserialize, flatten a nested structure, rebuild one from a flat list with parent pointers.
  • Intervals and scheduling. Merge overlapping ranges, find free slots, sort-then-sweep.
  • Two pointers and sliding window. Longest substring with a constraint, in-place partitioning.
  • Graph basics. BFS and DFS, plus topological sort for dependency ordering (which page loads before which, what blocks reference what).
  • String parsing that mirrors editor or markdown work. Tokenize, transform, render.
  • Design-flavored problems. Build an LRU cache, a rate limiter, an autocomplete over a prefix tree, a simple version-history structure.

The tree emphasis is not an accident.

  • Notion's entire data model is nested blocks: a page is a tree and every block can hold other blocks.
  • If a problem smells like "do something to a nested document," practice that shape until it is boring.

Here is the one everyone should be able to write cold, flattening a block tree while preserving order:

def flatten(root):
    out = []
    def walk(node, depth):
        out.append((node.id, depth))
        for child in node.children:
            walk(child, depth + 1)
    walk(root, 0)
    return out
  • Simple, yes. The point is that you write it without hesitating, name things clearly, and handle a null root without being told.

How to practice:

  • Do about 80 to 120 LeetCode mediums spread across those patterns. Quality over grind count.
  • After each problem, write one line: the pattern name and the signal in the prompt that should trigger it.
  • On the harder ones, redo them from a blank editor two days later. If you cannot, you did not learn it, you watched yourself solve it once.

How to actually win the round. This is worth more than ten extra problems:

  1. Communicate the whole time. Narrate your plan before you type and your reasoning while you type. Silence reads as "stuck" even when your head is fine. A candidate who talks through one bug outscores a silent candidate with perfect code, because I can only grade what I can hear.
  2. Clarify first. Ask about input size, duplicate handling, edge cases, and the actual goal before you touch the keyboard. Thirty seconds here saves ten minutes of solving the wrong problem.
  3. State complexity out loud. Give time and space, then say whether that is good enough. "This is O(n log n) for the sort, O(n) space, and for these inputs that is fine" tells me you think about cost.
  4. Test it yourself. Walk a concrete example through your own code line by line and catch your bug before I point at it. That single habit is the clearest signal of a hire versus a maybe.
The silent-coder trap

Write real, runnable code, not pseudocode that waves at the hard part. Name variables like an adult. Handle the empty input, the single element, the duplicate. The code you write in the room is the code you will ship into a product people trust with their work, so a perfect solution delivered in total silence still scores below a talkative imperfect one.

Pause before you read on: a problem asks you to rebuild a document tree from a flat list of blocks, each with a parent_id. What is your first move before writing any recursion?
Reveal the answer
Build a map from parent_id to its list of children in one pass, O(n). Then the tree falls out: find the root (null parent), and recurse by looking up children in the map. The signal Notion is watching for is that you reach for the hash map to avoid an O(n squared) scan-for-children, and that you ask what happens with a missing or cyclic parent before assuming the input is clean.

5System design (senior) and the practical build round#

For L5 and up you get a system design round (HLD). Juniors swap it for a CS fundamentals deep-dive. Everyone gets the practical build round.

System design framework#

Where this round is won

Notion is a data-model company. Get the entities and relationships right (workspace, page, block, permission, user) and most of the architecture falls out of them. Jump to boxes and arrows before defining the data model and you will get tangled, because the foundation was never laid.

Use the same spine every time so you never freeze in front of a blank board:

  1. Clarify scope and scale. Daily active users, read-to-write ratio, latency target, consistency needs, and the one or two features that actually matter. Ten million DAU with a p99 under 200ms is a very different design from ten thousand users who tolerate a second.
  2. Define the API and data model first. This is where you earn or lose the round. Entities right, relationships right, then move.
  3. Draw the high-level components. Client, API layer, primary storage, cache, queue, search index. Keep it legible.
  4. Go deep where it matters. Pick the genuinely hard part and solve it for real instead of spreading thin across every box.
  5. Talk tradeoffs. Consistency versus availability, read latency versus write cost, operational pain, and dollars. Name what you are giving up, not just what you are choosing.
flowchart TD C[Client] --> G[API gateway] G --> S[Sync service] G --> P[Page service] S --> Q[[Op queue]] P --> DB[(Block store)] P --> CA[(Cache)] P --> SI[(Search index)]
A legible starting sketch. The block store and the sync path are where the hard questions live, so draw the rest fast and spend your depth there.

Classic prompts they ask, or close variants:

  • Design a collaborative document editor. The house special, so expect it. Be ready on real-time sync, CRDT versus operational transform and why you would pick one, conflict resolution, offline edits that reconcile on reconnect, and live presence (who is typing where).
  • Design a block-based data model where any block can nest any other to arbitrary depth. Permission inheritance down the tree always comes up: if I share a page, what happens to its child blocks.
  • Design commenting, mentions, or notifications across a workspace, with fan-out and read state.
  • Design search over millions of documents with per-user permission filtering baked into the query, not bolted on after.
  • Design version history for a document, including diffs versus snapshots and how far back you keep them.

The line that makes this round easy:

  • Explain in plain terms why a deeply nested block model is both the thing that makes Notion powerful and a genuine performance headache (loading one page can mean walking a large tree).
  • Then say how you would page, cache, and lazily load it. Now you are speaking their language.

CS fundamentals (junior loops)#

Be solid on the mechanics, not the definitions. They follow up with "why" every time, so know the machinery under the term:

  • Hash maps. How collisions resolve (chaining versus open addressing) and what a bad load factor does.
  • Process versus thread, and what they share.
  • Database indexes. How a B-tree index works under the hood, and why that shape beats a plain sorted list for range queries.
  • ACID and isolation levels, with a concrete anomaly each level prevents.
  • TCP versus UDP, and the full HTTP request lifecycle from DNS to response.
  • OOP basics tied to a real example you have built.

The practical build round#

This is the Notion-specific one, and the one that surprises people.

  • The task is small but realistic. Parse and render a nested document structure, build a mini feature end to end, extend some starter code you are handed, or wire up a small frontend interaction that behaves correctly.
  • They grade working software, sensible structure, and honestly whether building next to you for a day would be pleasant.
  • Lean toward "make it work and keep it clean," not "make it clever."
  • The fastest way to fail is to spend your time on a flexible abstraction nobody asked for while the actual feature still does not run. Ship the simple correct version first, then improve it if time is left.

6Behavioral and culture fit#

Notion's values show up in the room as real scoring dimensions, not posters.

The ones that matter most for interviews:

  • Be an owner. Take the whole problem, including the parts that technically belong to someone else, and see it through to the result.
  • Keep a high bar for craft. They care about quality and taste, in code and in product.
  • Think like a user and a product person. Genuine curiosity about how and why the product works is a signal they actively look for.
  • Move with urgency but stay kind. Low ego, high care, fast.
  • Write and think clearly. Notion is a writing culture, so a rambling answer costs you more here than almost anywhere.

Prepare four to six STAR stories (Situation, Task, Action, Result) you can flex into different prompts:

  • A hard technical call you owned.
  • A conflict you worked through.
  • A time you raised the quality bar.
  • A failure you learned something real from.
  • Every single one needs a number in the result, because "it went well" is not a result.

One full worked example:

Situation: Our team's in-app editor was dropping user edits during flaky network conditions, and support tickets were climbing week over week. Task: I owned the fix end to end, even though the sync layer was not originally my code. Action: I reproduced the race by throttling the network in dev, found we were overwriting local state on reconnect, and switched to a merge-on-reconnect approach backed by a small operation queue. I wrote a short design doc first, got two reviewers to poke holes, then shipped behind a flag and watched the metrics for a week before rolling to everyone. Result: Edit-loss tickets dropped 92% over the next month, and p95 reconnect-sync time went from 2.1s to 400ms. I wrote up the pattern so the next team hitting a reconnect race did not have to rediscover it.

Why that answer lands:

  • Ownership of code that was not originally mine.
  • A written design step before coding.
  • A careful flagged rollout.
  • Two hard numbers. "We eventually fixed the bug and users were happier" is not this.

7Your prep plan#

4-week plan#

  • Week 1. Patterns review. 20 to 25 LeetCode mediums on hash maps, trees, two pointers. Write a one-line pattern note after each.
  • Week 2. Trees, graphs, intervals, plus two design-coding problems (LRU cache, rate limiter). Start one full system design walkthrough.
  • Week 3. System design deep (collaborative editor, block model, permissioned search). Draft all your STAR stories. Do two or three practical-build tasks against a timer.
  • Week 4. Full mock loops out loud, start to finish. Redo your weakest problems from a blank editor. Spend real time inside Notion so you can talk about it honestly.

2-week plan#

  • Days 1 to 5. 30 targeted mediums across their core patterns, narrating out loud the whole time.
  • Days 6 to 9. Two system design walkthroughs plus the collaborative editor. Build one small nested-document parser from scratch.
  • Days 10 to 14. Write your STAR stories, do two full mock interviews, and drill the communicate-clarify-complexity-test habit until it is automatic.

2-day crash plan#

  • Day 1 morning. Re-drill trees, hash maps, intervals, ten problems fast. Afternoon: read through the collaborative-editor design and the block data model until you could sketch both.
  • Day 2 morning. Write three STAR stories with real numbers. Afternoon: one timed mock coding problem, talking the entire time, then use Notion for an hour so the product is fresh when they ask.

8Why people get rejected at Notion#

  1. Coded in silence. Strong solution, zero narration. We cannot assess reasoning we never heard, so a silent perfect answer scores below a talkative imperfect one.
  2. Over-engineered the practical round. Built abstractions and config nobody asked for while the actual feature still did not run cleanly. The single most common practical-round failure.
  3. No product curiosity. Could not say one specific, thoughtful thing about the product. That reads as "will not care about the user," which is disqualifying here.
  4. Weak data modeling in system design. Jumped to boxes and arrows before defining the entities and the permission model, then got tangled.
  5. Vague behavioral stories. "We" instead of "I," no numbers, no evidence of real ownership. I cannot tell what you actually did.
  6. Did not test their own code. Left an obvious bug for the interviewer to catch. The cheapest point in the whole loop to lose.

9The offer, comp and negotiation#

Rough 2026 total comp (base plus equity, annualized):

  • US (L4): ~$230k to ~$290k. L5: ~$300k to ~$360k, higher in SF for strong candidates with leverage.
  • India: ~₹45L to ~₹70L for mid, up to ~₹1.1Cr for senior, with the base-to-equity split varying by level and req.
  • UK (London): ~£110k to ~£180k total depending on level.
  • Canada: usually mapped off the US bands or remote-US reqs, so expect a modest discount from the SF numbers.

On the equity.

  • Notion is private-company stock, so its real value depends on your read of the company, the strike price, and the current valuation.
  • Treat it as upside you believe in, not guaranteed cash you can spend.

Negotiation tips:

  • Get the recruiter to name a range first, then anchor on total comp rather than base alone. Private equity leaves real room to shape the mix in your favor.
  • Use a competing offer if you have one, even a verbal one. It is by far the strongest lever, and recruiters here tend to respond in good faith.
  • If cash is capped, push on equity grant size and start date. And ask directly how they value the equity, what price and valuation they use, so you negotiate against real numbers instead of vibes.
Follow-ups the interviewer will ask (and your answers)
"Is it heavy LeetCode?"
No. Mostly mediums, practical and clean, with a tree and hash-map flavor. They are not trying to trap you with a hard DP problem you either memorized or did not.
"Do I need to know CRDTs?"
For senior system design, be able to talk about real-time sync and conflict resolution at a concept level, and say why you would pick a CRDT over operational transform or the reverse. You do not need to implement one from scratch in the room.
"Do they care that I actually use Notion?"
Honestly, yes, a little. Genuine product curiosity is a real scoring signal. Spend a few hours working in the app before your loop so your interest is specific, not performed.
"Frontend or backend?"
Many roles are product-engineer full-stack with a frontend lean (React and TypeScript). Infra and platform roles go deeper on backend and systems. Read the exact req and prep toward it.
"How long until I hear back between stages?"
Usually a few days. If the recruiter goes quiet, a polite nudge after a week is normal and expected, not pushy.

What you can now explain in the room

  • Why Notion scores craft and product sense, not just a correct algorithm.
  • How to turn a coding round into a hire with communicate, clarify, complexity, test.
  • Why the practical build round rewards "make it work and keep it clean" over clever abstractions.
  • Why the data model, not the box diagram, wins the system design round.
  • How to talk about the nested block model as both the product's power and its performance headache.
  • How to structure a STAR story that proves ownership with real numbers.

If you want, turn this into a dated day-by-day plan around your real interview date and your weak spots, so prep stops feeling like a pile and starts feeling like a checklist you can finish.

Get a prep plan built around your Notion interview

Tell us the role and your interview date. We will send back a dated, day by day plan. Free.

Thanks. Check your inbox, your Notion prep plan is on the way.