Notion Software Engineer interview questions

25 Software Engineers have shared notes from their Notion interviews, with the questions they were asked in each round. That is 86% of the 29 Notion interview notes on Screna AI.

25 Software Engineer interview notes

Notion·Software Engineer·Technical Phone Screen

Jul 2026
Notion SWE interview with a coding problem centered on building a text document class with undo/redo support. The skeleton was provided upfront which was nice, but the real pressure came from the follow-up discussion about data structures and complexity.
  • Implement a TextDocument class in Python that supports inserting characters at the end, deleting characters from the end, and undo/redo functionality. A skeleton with the class structure is provided. After any new operation is applied, the redo history should be cleared. Operations should run in time proportional to the size of the change, not the full document size.

“The skeleton made it feel approachable at first but I got tripped up on the undo storage.”

View Post

Notion·Software Engineer·Hiring Manager Screen

Jul 2026
Two-part interview for a Data Engineer role at Notion: a hiring manager screen and a cross-functional partner conversation. Pretty behavioral-heavy, lots of digging into specific projects and how you work with others. Nothing too surprising but you need real stories ready.
  • Why do you want to join Notion specifically?
  • What is driving you to leave your current role?
  • Walk me through a project you're proud of, from how you framed the problem through to how you measured whether it worked.
  • Tell me about a time you worked closely with a data scientist or another cross-functional partner. How did you split the work and handle disagreements?
  • If you could redo that project, what would you change?
  • What constructive feedback have you received from your manager, and what did you do with it?

“Prepared this one but still fumbled a bit trying to sound genuine rather than rehearsed.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jul 2026
Notion Data Engineer interview with a coding question that was more interesting than I expected. The problem sounds like a warmup but the complexity discussion is where they actually wanted to see your thinking.
  • Given a string and an integer k, write a function that counts the number of distinct substrings of length exactly k in the string. Walk through your approach, complexity, and edge cases.

“Sliding window plus a hash set, pretty mechanical to implement.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jul 2026
Notion SWE interview with a frontend-heavy coding problem. Pretty focused on product thinking through code, which makes sense given what Notion actually is.
  • Build a Todo List that supports nested items and toggling items between done and undone states.

“The nesting part is where things get interesting and also where I spent too long overthinking the data structure.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jun 2026
Notion Data Engineer interview with a coding round focused on a classic grouping problem. Nothing too wild but they did want you to think through the tradeoffs between two different approaches, not just get to a working solution.
  • Given an array of strings, group all the anagrams together and return the grouped lists.

“Jumped straight to sorting each string and using that as a hash map key, which works fine.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jun 2026
SQL-heavy technical screen for a Data Engineer role at Notion. The main problem was a multi-part query that built on itself, and the trick was figuring out why you can't just collapse everything into one GROUP BY.
  • Given a multi-part SQL problem where each stage filters on the result of the previous one, how would you use boolean aggregation (like BOOL_OR) to flag groups, then chain those flags across sub-queries to arrive at a final metric? Also, why doesn't a single GROUP BY pass work here?

“This took me longer than I'd like to admit to structure properly.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jun 2026
Notion data engineer interview, SQL-focused technical screen. One question but they dug into it pretty thoroughly, including schema assumptions and how you'd handle edge cases.
  • Given an events table, write a SQL query to find the country with the highest total number of events. If there's a tie, return all tied countries.

“I went straight for GROUP BY country, COUNT(*), ORDER BY count DESC LIMIT 1, which works fine until they asked about ties.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jun 2026
SQL technical screen for a Data Engineer role at Notion. Just the one question but they went pretty deep on edge cases, which I wasn't fully ready for.
  • Given an events table with columns like event_id, event_type, user_id, and event_time, write a SQL query to find the event_type that occurs most frequently.

“Started with the obvious GROUP BY event_type plus a COUNT and ORDER BY count DESC with LIMIT 1, which is fine.”

View Post

Notion·Software Engineer·Technical Phone Screen

Jun 2026
SQL-heavy technical screen for a Data Engineer role at Notion. One question, but they pushed on edge cases and made sure you actually understood what was happening under the hood.
  • Given a blocks table and an edit_events table, write a SQL query to find the percentage of blocks that have never been edited.

“I went with a LEFT JOIN approach, grouped by block_id, counted edits per block, then wrapped it in an outer query with a CASE WHEN to flag zero-edit blocks.”

View Post

Notion·Software Engineer·Technical Phone Screen

May 2026
SQL-heavy technical screen for a data engineering role at Notion. Just one question but they really wanted to dig into it, kept pushing with follow-ups.
  • Given a parent table and a related child/transactional table, write a SQL query that returns all parent rows along with any matching child rows, including parents with no matching children. The interviewer expected proper LEFT JOIN syntax, NULL handling on the unmatched side, aliasing, and asked you to extend it to multiple joined tables.

“Felt fine at first, wrote the basic LEFT JOIN no problem.”

View Post