Figma interview, decoded.

Figma interviews for two things at once: whether you can build a real-time collaborative editor, and whether you engage with the product as a user. The loop is a recruiter call, a hiring manager conversation, an hour in CoderPad, and an onsite block of roughly four hours with coding, system design, a project deep dive and behavioural rounds, with a take-home for some frontend and infrastructure roles. The round that decides it for most candidates is the multiplayer system design, and the useful thing about preparing for it is that Figma has published how its own system works, including the part most candidates get wrong.

Free · 2 minutes · no account

The questions for your exact Figma role and level.

See the questions Figma asks ↓Run a free mock interview →

Interviewing at Figma? Below are the questions candidates report. For the ones your exact role and level will get, paste the posting. Your first mock is free.

01

Who Figma hires

The roles and the background

Figma hires product engineers, frontend engineers, infrastructure engineers and core-engine engineers, concentrated in San Francisco and New York with some remote roles. TypeScript dominates the frontend and product tracks, Python is accepted in most coding rounds, and Rust and C++ matter for the rendering and server teams. The bar that surprises people is that the frontend track is the deep one here rather than the easy one: the product is a custom canvas renderer and a real-time sync engine wearing a design tool's clothes, so browser rendering, memory and concurrency get pressed further than most loops press them.

02

What is the Figma interview process?

Round by round

Three to five weeks is the usual span, and candidate accounts agree on the sequence even where they differ on which onsite rounds appear for which track.

01
Recruiter screen
About 30 minutes

Background, why Figma, and whether you use the product. Accounts agree that a candidate who has never used Figma seriously struggles later, because the product-sense round will find it.

02
Hiring manager call
About 45 minutes

How you make decisions: trade-offs on past projects, how you work with designers, and what you would build first in the role. Short stories with the scope, your part and the outcome in numbers.

03
Technical phone screen
About an hour in CoderPad

One problem, usually medium to hard, in TypeScript, Python or Rust depending on the role, and often with an applied twist: a cache with specific eviction rules, a structured event stream to parse, a small state machine. Say the approach out loud and name the edge cases before you are asked.

04
Take-home
Three to five hours, asynchronous

Reported as variations on building a small collaborative editor or implementing undo and redo over a data model. What sinks people is polishing style while leaving the real cases unhandled: concurrent edits, a disconnect, an undo that crosses a sync. Write the notes as if a reviewer will read every line, because they do.

Some frontend and infrastructure roles
05
Coding, onsite
One or two rounds of about an hour

One conventional data-structures problem and one applied one: a piece of a text editor, a selection system, an event dispatch mechanism, a command-pattern undo. Interviewers collaborate, push on naming and ask for another edge case live.

06
System design, onsite
One or two rounds of about an hour

The multiplayer round, and for backend tracks a distributed-systems round with a real-time tilt: live cursors, conflict resolution for simultaneous edits, presence for a large concurrent population, WebSocket scaling, what happens when a client reconnects after an hour offline. The section below covers what a strong answer holds.

07
Frontend deep dive
About an hour

Browser rendering and the mental model behind it: what forces a synchronous layout, which properties stay on the compositor, canvas against DOM against WebGL and the failure mode that decides between them, bundle splitting with the metric you are cutting, and finding a leak in a long-running application with heap snapshots.

Frontend and core-engine roles
08
Craft and product sense
Part of the onsite

You are shown a part of the product and asked what you would change. Have opinions about five features, and know why this product won multiplayer design while others did not.

09
Behavioural and project deep dive
One or two rounds

Design and engineering partnership, ambiguity, performance work with before and after numbers, and one project you can defend until the follow-ups run out.

03

What Figma screens for

What every round is really testing

Figma's engineering culture is unusually tied to its design culture, and the loop keeps checking for the same handful of things.

  • Treating design as a partner rather than a ticket queue, with a story where you pushed back for an engineering reason and the outcome improved
  • Genuine use of the product, which the craft round exposes in about a minute
  • Depth on rendering and real-time systems rather than framework familiarity
  • Measured performance work: the profile, the fix, the before and after
  • Shipping under an unclear spec by narrowing scope and validating a small reversible bet
  • Clear communication to people outside your team, since most interviewers will not be from the team you join
04

Figma interview questions

Candidate-reported themes

The behavioural questions below are the ones candidates report most; the technical themes are the ground the coding, design and frontend rounds cover.

Behavioural & motivation

  • Why Figma, and what would you change about the product?
  • Tell me about working with a designer on a hard problem, and a time you pushed back.
  • Describe something you made measurably faster, with the numbers before and after.
  • How do you ship when the spec is not clear yet?
  • When do you pay down technical debt, and when did you decide not to?

Technical

  • Applied data structures: A range or interval structure for selection and formatting, a trie for autocomplete, a text buffer, a diff, a command-pattern undo stack
  • State machines: Undo and redo, selection state, focus state, modelled with explicit transitions rather than flags
  • Multiplayer sync: Conflict resolution, presence and awareness, WebSocket scaling and connection affinity, offline edits reapplied on reconnect, delta encoding
  • Rendering: Layout, paint and composite; what forces synchronous layout; canvas against DOM against WebGL; GPU memory; text shaping, for core-engine roles
  • Measurement: Heap snapshots and detached nodes, the performance panel, the metric a bundle change is meant to move

These are the reported themes — your loop is role-specific. Paste the actual posting and Calibrd predicts the questions for that exact role and level.

Predict my Figma questions →
05

The multiplayer round: what Figma's own engineers say about it

Reported problems and how to solve them

The prompt arrives in one of a few shapes: design the backend for live cursors, design conflict resolution for simultaneous edits, design presence for a very large number of concurrent users. Most candidates answer with the word CRDT and a generic pub/sub diagram, and the interviewer pushes until something specific arrives. The thing worth knowing is that Figma published how its own system works, and the post says plainly that Figma is not using true CRDTs: it is a centralized client-server system inspired by them. Being able to explain why a central server lets you delete most of the machinery is a better answer than naming three algorithms. The points below are from that post.

  • Why not operational transforms, and why not a real CRDT: Operational transforms define operations by their offsets in text and, in the post's judgement, are powerful, complicated and hard to implement correctly, which is overkill for a tool that is not a text editor. True CRDTs are built for decentralized systems with no central authority and carry performance and memory overhead to get there. Figma's server is that authority, so the system keeps the ideas and drops the cost. Say that trade-off out loud and the round changes character.
  • The document as a two-level map: Every document is a tree of objects, each with an ID and properties: think of it as a map from object ID to a map from property to value, or a table of object, property and value rows. The server keeps the latest value any client sent for a given property on a given object, so two clients editing different properties of the same object never conflict, and the conflict case is the same property on the same object, where the last value to reach the server wins. That is a last-writer-wins register without needing a timestamp, because the server defines the order.
  • Why simultaneous text editing does not merge: Changes are atomic at the property boundary, so the eventual value of a property is always one client's value. If one person changes B to AB while another changes it to BC, the result is AB or BC and never ABC. This is a deliberate choice for a design tool rather than a limitation to apologise for, and saying so shows you understand where the system's line is drawn.
  • Flicker, and why the client discards some server updates: The client applies local changes immediately so the tool feels instant, but then an older acknowledged value arriving from the server can briefly overwrite a newer unacknowledged local one, which shows as flicker. The fix is to discard incoming changes that conflict with unacknowledged local ones, because the local change is the best prediction of the eventually consistent value. Interviewers press on this class of problem: what the user sees while the system converges.
  • Trees, reparenting and cycles: The parent link is stored as a property on the child, so identity survives a move and an object cannot end up with two parents. That leaves the graph free to form a cycle when two clients each make the other's object their parent; the server rejects any parent update that would create one, and the client, which cannot reject the server, temporarily removes the pair from the tree until the rejection arrives. Ordering among children uses fractional indexing, a position between zero and one where inserting between two objects means averaging their positions, and the parent link and position are stored as one property so they update together.
  • Undo in a multiplayer document: Single-player undo means put back what I did, which in a shared document can overwrite what somebody else did afterwards. The principle Figma settled on is that undoing a lot, copying something and redoing back to the present should leave the document unchanged, which is why an undo modifies the redo history at the time of the undo and a redo modifies the undo history at the time of the redo. A candidate who raises this unprompted is answering a question most people do not know is there.
  • Offline, reconnection and deletion: A client may be offline for an arbitrary time; on return it downloads a fresh copy, reapplies its offline edits on top and resumes syncing, which keeps reconnection simple and puts the complexity in live updates. Deleting an object removes its properties from the server entirely, with the data kept in the deleting client's undo buffer, so documents do not grow forever. Clients generate their own object IDs with a client ID baked in, because creation has to work offline.

Read the post before the round and build a small collaborative editor once: a few hundred lines is enough to make the vocabulary yours. Then rehearse the parts that are not in the post, because the interviewer will go there: what a server does with a document nobody has opened in a month, how memory per document is bounded, what happens to one hundred cursors on one frame, and how you would test any of it.

06

Pay

What the offer looks like
L1, software engineer~$209K total, Bay Area
Software engineer, Bay Area median across levels~$451K total
L5, senior software engineer~$733K total median

Levels.fyi for Figma software engineers in the San Francisco Bay Area, the page last updated 11 March 2026 and read on 23 September 2026; the sample is modest, so read these as a band rather than a ladder. Figma has been public since 31 July 2025, when it listed on the New York Stock Exchange at $33 a share and closed its first day at $115.50, so the equity in an offer is listed stock you can price yourself, unlike at a private company. Ask what the grant is at today's price, the vesting schedule, and what refreshers have looked like since the listing.

07

How to prepare for a Figma interview

In order
  1. 01Read Figma's own post on how its multiplayer technology works, and be able to say why the system is inspired by CRDTs rather than being one.
  2. 02Build a small collaborative editor once, a few hundred lines, so the vocabulary is something you have used rather than something you have read.
  3. 03Use the product seriously before the loop, including dev mode, prototyping and variables, and have opinions about five features you would change.
  4. 04Practise the applied coding shapes in TypeScript: a text buffer, an interval structure for selection, an undo stack with explicit transitions, a structured event stream.
  5. 05For a frontend role, be able to name what forces a synchronous layout, which properties stay on the compositor, and how you found a leak in a long-running application.
  6. 06Bring one performance story with a profile, a fix and numbers on both sides, and expect to be asked how you measured it.

This guide covers Figma's engineering and research hiring. For management and leadership roles the loop is similar but the bar shifts to people, delivery and strategy, so pair it with the leadership interview prep hub. The bar for your exact role comes from the role-by-role guides, and the prep that actually transfers is spoken, so run a mock interview before the real one.

Knowing the questions isn’t the same as answering them out loud. Run a Figma mock: spoken answers, coached on the spot. Your first mock is free.

Run a Figma mock →
08

FAQ & sources

The short answers
What is Figma's interview process?

Three to five weeks is the usual span, and candidate accounts agree on the sequence even where they differ on which onsite rounds appear for which track. Recruiter screen: Background, why Figma, and whether you use the product. Accounts agree that a candidate who has never used Figma seriously struggles later, because the product-sense round will find it. Hiring manager call: How you make decisions: trade-offs on past projects, how you work with designers, and what you would build first in the role. Short stories with the scope, your part and the outcome in numbers. Technical phone screen: One problem, usually medium to hard, in TypeScript, Python or Rust depending on the role, and often with an applied twist: a cache with specific eviction rules, a structured event stream to parse, a small state machine. Say the approach out loud and name the edge cases before you are asked. Take-home: Reported as variations on building a small collaborative editor or implementing undo and redo over a data model. What sinks people is polishing style while leaving the real cases unhandled: concurrent edits, a disconnect, an undo that crosses a sync. Write the notes as if a reviewer will read every line, because they do. Coding, onsite: One conventional data-structures problem and one applied one: a piece of a text editor, a selection system, an event dispatch mechanism, a command-pattern undo. Interviewers collaborate, push on naming and ask for another edge case live. System design, onsite: The multiplayer round, and for backend tracks a distributed-systems round with a real-time tilt: live cursors, conflict resolution for simultaneous edits, presence for a large concurrent population, WebSocket scaling, what happens when a client reconnects after an hour offline. The section below covers what a strong answer holds. Frontend deep dive: Browser rendering and the mental model behind it: what forces a synchronous layout, which properties stay on the compositor, canvas against DOM against WebGL and the failure mode that decides between them, bundle splitting with the metric you are cutting, and finding a leak in a long-running application with heap snapshots. Craft and product sense: You are shown a part of the product and asked what you would change. Have opinions about five features, and know why this product won multiplayer design while others did not. Behavioural and project deep dive: Design and engineering partnership, ambiguity, performance work with before and after numbers, and one project you can defend until the follow-ups run out.

What does Figma look for in candidates?

Figma's engineering culture is unusually tied to its design culture, and the loop keeps checking for the same handful of things. Treating design as a partner rather than a ticket queue, with a story where you pushed back for an engineering reason and the outcome improved Genuine use of the product, which the craft round exposes in about a minute Depth on rendering and real-time systems rather than framework familiarity Measured performance work: the profile, the fix, the before and after Shipping under an unclear spec by narrowing scope and validating a small reversible bet Clear communication to people outside your team, since most interviewers will not be from the team you join

What questions does Figma ask in interviews?

The behavioural questions below are the ones candidates report most; the technical themes are the ground the coding, design and frontend rounds cover. Why Figma, and what would you change about the product? Tell me about working with a designer on a hard problem, and a time you pushed back. Describe something you made measurably faster, with the numbers before and after. How do you ship when the spec is not clear yet? When do you pay down technical debt, and when did you decide not to? Applied data structures State machines Multiplayer sync Rendering Measurement

What does Figma ask in the multiplayer system design round?

The prompt arrives in one of a few shapes: design the backend for live cursors, design conflict resolution for simultaneous edits, design presence for a very large number of concurrent users. Most candidates answer with the word CRDT and a generic pub/sub diagram, and the interviewer pushes until something specific arrives. The thing worth knowing is that Figma published how its own system works, and the post says plainly that Figma is not using true CRDTs: it is a centralized client-server system inspired by them. Being able to explain why a central server lets you delete most of the machinery is a better answer than naming three algorithms. The points below are from that post. Why not operational transforms, and why not a real CRDT: Operational transforms define operations by their offsets in text and, in the post's judgement, are powerful, complicated and hard to implement correctly, which is overkill for a tool that is not a text editor. True CRDTs are built for decentralized systems with no central authority and carry performance and memory overhead to get there. Figma's server is that authority, so the system keeps the ideas and drops the cost. Say that trade-off out loud and the round changes character. The document as a two-level map: Every document is a tree of objects, each with an ID and properties: think of it as a map from object ID to a map from property to value, or a table of object, property and value rows. The server keeps the latest value any client sent for a given property on a given object, so two clients editing different properties of the same object never conflict, and the conflict case is the same property on the same object, where the last value to reach the server wins. That is a last-writer-wins register without needing a timestamp, because the server defines the order. Why simultaneous text editing does not merge: Changes are atomic at the property boundary, so the eventual value of a property is always one client's value. If one person changes B to AB while another changes it to BC, the result is AB or BC and never ABC. This is a deliberate choice for a design tool rather than a limitation to apologise for, and saying so shows you understand where the system's line is drawn. Flicker, and why the client discards some server updates: The client applies local changes immediately so the tool feels instant, but then an older acknowledged value arriving from the server can briefly overwrite a newer unacknowledged local one, which shows as flicker. The fix is to discard incoming changes that conflict with unacknowledged local ones, because the local change is the best prediction of the eventually consistent value. Interviewers press on this class of problem: what the user sees while the system converges. Trees, reparenting and cycles: The parent link is stored as a property on the child, so identity survives a move and an object cannot end up with two parents. That leaves the graph free to form a cycle when two clients each make the other's object their parent; the server rejects any parent update that would create one, and the client, which cannot reject the server, temporarily removes the pair from the tree until the rejection arrives. Ordering among children uses fractional indexing, a position between zero and one where inserting between two objects means averaging their positions, and the parent link and position are stored as one property so they update together. Undo in a multiplayer document: Single-player undo means put back what I did, which in a shared document can overwrite what somebody else did afterwards. The principle Figma settled on is that undoing a lot, copying something and redoing back to the present should leave the document unchanged, which is why an undo modifies the redo history at the time of the undo and a redo modifies the undo history at the time of the redo. A candidate who raises this unprompted is answering a question most people do not know is there. Offline, reconnection and deletion: A client may be offline for an arbitrary time; on return it downloads a fresh copy, reapplies its offline edits on top and resumes syncing, which keeps reconnection simple and puts the complexity in live updates. Deleting an object removes its properties from the server entirely, with the data kept in the deleting client's undo buffer, so documents do not grow forever. Clients generate their own object IDs with a client ID baked in, because creation has to work offline.

How do I prepare for a Figma interview?

Read Figma's own post on how its multiplayer technology works, and be able to say why the system is inspired by CRDTs rather than being one. Build a small collaborative editor once, a few hundred lines, so the vocabulary is something you have used rather than something you have read. Use the product seriously before the loop, including dev mode, prototyping and variables, and have opinions about five features you would change. Practise the applied coding shapes in TypeScript: a text buffer, an interval structure for selection, an undo stack with explicit transitions, a structured event stream. For a frontend role, be able to name what forces a synchronous layout, which properties stay on the compositor, and how you found a leak in a long-running application. Bring one performance story with a profile, a fix and numbers on both sides, and expect to be asked how you measured it.

Prep for a real Figma role

Practise your Figma interview, out loud.

Paste a real Figma posting and Calibrd predicts the questions for that role and level, benchmarks the pay, and flags the gaps an interviewer will probe in your CV — then listens to your spoken answers and coaches them. Your first mock is free.

Free to start · No card · Encrypted at rest, never used to train AI, remove anytime

Two weeks out?

Email me the Figma prep checklist

The round that decides it, the questions they ask, and what to do before, in one email. Nothing else unless you sign up.

Figma Interview: Multiplayer Design Round, Pay — Calibrd