Figma Coding Interview Questions
25 Figma coding interview problems with full optimal solutions — 15 easy, 7 medium, 3 hard. Every problem ships with multiple approaches (brute-force first, then the optimal), complexity tables for each, company-specific tips on what an Figma interviewer values, and a FAQ section.
- #1easyfrequently asked
1. Two Sum
Given an array of integers and a target, return the indices of the two numbers that add up to the target. Figma uses this as the warm-up where they watch how cleanly you translate 'looking up the complement' into a hash-map insight, a habit that recurs constantly in their scene-graph node lookups.
- #2easyfrequently asked
2. Valid Parentheses
Given a string of brackets, decide whether the sequence is properly nested and matched. Figma asks this because their canvas group/ungroup operations are nested in exactly the same shape — a mismatched open/close in the scene graph corrupts the file.
- #3easyfrequently asked
3. Merge Two Sorted Lists
Merge two sorted linked lists into one sorted list by splicing pointers. Figma uses this to probe pointer manipulation — the same fundamentals their CRDT operation log needs when merging two streams of edits.
- #4easysometimes asked
4. Remove Duplicates from Sorted Array
Given a sorted array, remove duplicates in place and return the new length. Figma frames this as 'compact the operation log after dedup,' a near-daily concern when CRDT clients send overlapping ops during reconnect.
- #5easysometimes asked
5. Remove Element
Given an array and a value, remove all instances of that value in place. Figma uses this as a quick check on in-place pointer manipulation — relevant when their renderer prunes deleted nodes from a flat batch before re-sending to the GPU.
- #6easyfrequently asked
6. Search Insert Position
Given a sorted array and a target, return the index where target is, or where it would be inserted. Figma uses this as the canonical binary-search invariant test — the same logic that powers their CRDT position-finder when inserting a new operation into a sorted op-log.
- #7easyrarely asked
7. Plus One
Given a non-empty array representing a non-negative integer, increment the number by one. Figma uses this as a 5-minute warm-up to gauge whether candidates handle carry propagation cleanly, the same pattern as their CRDT version-vector increments.
- #8easyfrequently asked
8. Merge Sorted Array
Given two sorted arrays nums1 (with extra space) and nums2, merge them into nums1 in sorted order. Figma asks this to test the 'merge from the back' trick, which mirrors how their CRDT log appends two reconciled histories without an auxiliary buffer.
- #9easysometimes asked
9. Binary Tree Inorder Traversal
Return the inorder traversal of a binary tree's nodes' values. Figma uses this as a tree-traversal warm-up because their scene-graph walk-order (top-down, then siblings in z-order) follows the same recursive structure.
- #10easysometimes asked
10. Same Tree
Given the roots of two binary trees, determine whether they are structurally identical and have the same values. Figma uses this to check tree-diffing fluency, the foundation of their multiplayer scene-graph reconciliation step.
- #11easyfoundational
11. Climbing Stairs
Count the number of distinct ways to climb a staircase taking 1 or 2 steps at a time. A warm-up at Figma to gauge whether you spot the Fibonacci recurrence before brute-forcing it.
- #12easyfoundational
12. Single Number
Find the element that appears once in an array where every other element appears twice. Figma probes whether you reach for XOR or default to a hash map.
- #13easyfoundational
13. Linked List Cycle
Detect whether a singly linked list contains a cycle. Figma uses this to gauge whether you reach for the two-pointer trick or burn memory on a visited set.
- #14easyfoundational
14. Best Time to Buy and Sell Stock
Find the maximum profit from a single buy-and-sell on a price array. Figma uses it as a tempo-setter to check whether you collapse two nested loops into a running minimum.
- #15easyfoundational
15. Contains Duplicate
Determine whether an integer array contains any duplicates. Figma frames this as a sanity gate before moving to scene-graph dedup problems.
- #16mediumfoundational
16. Group Anagrams
Cluster a list of strings so that every group contains the same multiset of characters. Figma uses this as a warm-up before scene-graph hash-bucketing questions.
- #17mediumfoundational
17. Number of Islands
Count connected components of land in a 2D grid. Figma uses this to probe how you'd flood-fill a selection or count grouped layers on the canvas.
- #19mediumfoundational
19. Insert Interval
Insert a new interval into a sorted, non-overlapping list and merge overlaps. Figma uses this to probe how you'd merge bounding-box dirty regions during incremental render.
- #20mediumfoundational
20. Clone Graph
Deep-copy a connected undirected graph including all cycles. Figma frames this as a duplicate-component operation where the scene graph contains symbol references and cycles must be preserved without infinite recursion.
- #21mediumfoundational
21. Rectangle Overlap
Determine whether two axis-aligned rectangles overlap. Figma uses this as the building block for viewport culling and marquee-selection hit-testing.
- #22mediumfoundational
22. Find All Anagrams in a String
Return all start indices where an anagram of pattern p occurs in string s. Figma uses this as a sliding-window probe before pivoting to CRDT operation-window questions.
- #23hardfoundational
23. Median of Two Sorted Arrays
Find the median of the union of two sorted arrays in O(log(min(m,n))). Figma uses this to push hard-bar candidates into binary-search-on-answer territory, the same shape used for partition lookups in multiplayer cursor state.
- #24hardfoundational
24. Trapping Rain Water
Compute how much water is trapped between bars of varying height. Figma poses this as a stress-test of two-pointer thinking and disciplined invariant tracking.
- #25hardfoundational
25. Word Ladder
Find the shortest transformation sequence from beginWord to endWord, changing one letter at a time. Figma uses this to probe graph-shortest-path intuition that maps onto state transitions in their multiplayer CRDT replay engine.
- #26mediumfrequently asked
26. LRU Cache
Design a data structure that follows the Least Recently Used (LRU) cache eviction policy, supporting O(1) get and put operations. Figma asks this to probe how candidates reason about spatial-data caching — the same mechanism that keeps recently-rendered canvas tiles hot in memory.
Related interview-prep guides
Replit for Tech Interviews in 2026: The Full-IDE Take-Home Guide
Replit-for-hiring is the full-IDE take-home format. The candidate gets a forked Repl, hours or days to ship a working project, and a commit history the reviewer will scrutinize line-by-line. This guide breaks down what Replit captures, what it doesn't, and how a desktop AI setup pairs with the multi-day window.