Figma is the leading collaborative design platform, with a browser-based collaborative vector editor used by nearly every major design team in tech. Engineering at Figma is uniquely challenging: the core product is a real-time collaborative graphics engine running in the browser, which requires deep expertise in WebGL, CRDTs, operational transforms, and performance optimization. Figma was acquired by Adobe in 2022 but continues operating independently.
Figma Engineering Culture
- Performance obsession: The Figma editor handles complex vectors, images, and effects at 60fps in the browser — every frame budget matters
- Real-time collaboration at scale: Thousands of users can edit the same file simultaneously — CRDT/OT expertise is valued
- Web and C++ hybrid: The rendering engine is written in C++ compiled to WebAssembly; the UI layer is in TypeScript/React
- Small, impactful teams: Figma is relatively small for its market impact; ownership and initiative are expected
Figma Interview Process (2025–2026)
- Recruiter screen (30 min)
- Technical screen (60 min): Coding problem, often data structure heavy
- Full loop (4-5 rounds):
- 2× Coding (algorithms; may include product-coding with HTML/CSS/JS for frontend roles)
- 1× System design (collaborative real-time systems, graphics rendering)
- 1× Domain depth (graphics, web performance, collaborative editing)
- 1× Behavioral (ownership, cross-functional collaboration)
Collaborative Editing — Core Figma Technology
# CRDTs — how Figma handles concurrent edits
# Figma uses a custom CRDT called "multiplayer" for real-time collaboration
class Operation:
def __init__(self, op_type: str, position: int, value, client_id: str, timestamp: int):
self.type = op_type # 'insert' or 'delete'
self.position = position
self.value = value
self.client_id = client_id
self.timestamp = timestamp
class SimpleOT:
"""
Simplified Operational Transformation for text collaboration.
Real Figma uses a more complex CRDT for nested document structures.
"""
def __init__(self, initial: str = ""):
self.text = list(initial)
def apply(self, op: Operation) -> None:
if op.type == 'insert':
self.text.insert(op.position, op.value)
elif op.type == 'delete':
if 0 <= op.position Operation:
"""
Transform op1 against op2 (applied first).
Ensures convergence when ops are applied in different orders.
"""
if op1.type == 'insert' and op2.type == 'insert':
if op2.position <= op1.position:
op1 = Operation(op1.type, op1.position + 1, op1.value,
op1.client_id, op1.timestamp)
elif op1.type == 'delete' and op2.type == 'insert':
if op2.position <= op1.position:
op1 = Operation(op1.type, op1.position + 1, op1.value,
op1.client_id, op1.timestamp)
elif op1.type == 'insert' and op2.type == 'delete':
if op2.position "heXllo"
# User B: delete char at position 3 -> "helo"
# Without OT: applying both can give wrong result
# With OT: transform B's delete against A's insert first
Graphics and Rendering Questions
import math
# "Implement a function to check if a point is inside a polygon"
# Used in Figma for hit testing (did user click on a shape?)
def point_in_polygon(point: tuple, polygon: list) -> bool:
"""
Ray casting algorithm: cast a ray from point, count intersections.
Even intersections = outside; odd = inside.
O(n) where n = number of polygon vertices.
"""
x, y = point
n = len(polygon)
inside = False
j = n - 1
for i in range(n):
xi, yi = polygon[i]
xj, yj = polygon[j]
# Does the ray from (x,y) going right intersect edge (xi,yi)-(xj,yj)?
if ((yi > y) != (yj > y)) and (x tuple:
"""Get (min_x, min_y, max_x, max_y) of polygon."""
xs = [p[0] for p in polygon]
ys = [p[1] for p in polygon]
return (min(xs), min(ys), max(xs), max(ys))
def point_in_polygon_fast(point, polygon):
"""Two-step: bounding box check then exact ray casting."""
x, y = point
min_x, min_y, max_x, max_y = bounding_box(polygon)
if not (min_x <= x <= max_x and min_y <= y <= max_y):
return False
return point_in_polygon(point, polygon)
# Test: point inside a triangle
triangle = [(0,0), (10,0), (5,10)]
print(point_in_polygon((5, 5), triangle)) # True
print(point_in_polygon((0, 5), triangle)) # False
print(point_in_polygon((11, 0), triangle)) # False
# "Implement a function to compute bezier curve points"
def bezier_curve(p0, p1, p2, p3, num_points=100):
"""Cubic Bezier curve — used for vector paths in Figma."""
points = []
for i in range(num_points + 1):
t = i / num_points
# Bernstein polynomial form
x = ((1-t)**3 * p0[0] + 3*(1-t)**2*t * p1[0] +
3*(1-t)*t**2 * p2[0] + t**3 * p3[0])
y = ((1-t)**3 * p0[1] + 3*(1-t)**2*t * p1[1] +
3*(1-t)*t**2 * p2[1] + t**3 * p3[1])
points.append((x, y))
return points
System Design at Figma
- “Design the Figma real-time collaboration system” — WebSocket connections per document, CRDT operation broadcasting, presence (cursor positions), conflict resolution, reconnection with sync
- “Design Figma’s file storage and versioning” — version history, delta compression, collaborative branching, large file handling (binary assets)
- “How does Figma render complex vector graphics at 60fps in a browser?” — WebGL, dirty region tracking, layer compositing, GPU memory management, Web Workers for compute
Related Interview Guides
Related System Design Interview Questions
Practice these system design problems that appear in Figma interviews:
- Design Google Docs: Collaborative Editing and CRDTs
- System Design: Notification System (Push, Email, SMS)
Related Company Interview Guides
- Uber Interview Guide 2026: Dispatch Systems, Geospatial Algorithms, and Marketplace Engineering
- Cloudflare Interview Guide 2026: Networking, Edge Computing, and CDN Design
- Figma Interview Guide 2026: Collaborative Editing, Graphics, and Real-Time Systems
- Apple Interview Guide 2026: iOS Systems, Hardware-Software Integration, and iCloud Architecture
- DoorDash Interview Guide
- Stripe Interview Guide 2026: Process, Bug Bash Round, and Payment Systems
- System Design: Search Autocomplete / Typeahead
- System Design: Content Moderation System (Instagram / YouTube)
- System Design: Stock Exchange (NYSE / Nasdaq Order Book)
Explore all our company interview guides covering FAANG, startups, and high-growth tech companies.