Skip to content
RED SAGSkills

Figma interview questions and answers

Figma questions check practical design skills: components, auto layout and handing work off to developers.

Below are 36 Figma questions with the correct answer and a short explanation, grouped from fresher to experienced level. Try each one before you open the answer.

What Figma interviews usually check

  • ✓Components and variants
  • ✓Auto layout
  • ✓Styles and variables
  • ✓Prototyping
  • ✓Developer handoff

Figma interview questions for freshers easy

1. What a ConfigMap is for

You want the same container image to run in dev, staging and production with a different API base URL in each. Which Kubernetes object is meant for this kind of non-secret setting?

  1. A.A PersistentVolume
  2. B.A ReplicaSet
  3. C.A ConfigMap
  4. D.A ServiceAccount
Show answer

Answer: C. A ConfigMap

A ConfigMap stores non-confidential key-value configuration that Pods read as environment variables or mounted files. This keeps config out of the image, so one image can move through every environment. Passwords and tokens belong in a Secret or an external secret store instead.

2. Component variants

You have buttons in primary and secondary styles, each in default, hover and disabled states. What is the best way to set them up in Figma?

  1. A.Draw each button by hand wherever it is needed
  2. B.Group them in one frame and copy and paste
  3. C.Create separate unrelated components with random names
  4. D.Create one button component set with variant properties such as type and state
Show answer

Answer: D. Create one button component set with variant properties such as type and state

Variants keep related versions in one component set with clear properties, so designers switch type or state in the properties panel. Changes to the main component update every instance.

3. What detaching an instance does

A designer right-clicks a Card instance and chooses "Detach instance" to move one icon. What is the main long-term cost of this?

  1. A.The card is deleted from the library for every other file
  2. B.The file can no longer be published as a library
  3. C.The card loses its auto layout and all its fills
  4. D.The card becomes a plain frame and stops receiving component updates
Show answer

Answer: D. The card becomes a plain frame and stops receiving component updates

Detaching turns the instance into an ordinary frame with no link to the main component. Future fixes, such as a new colour or spacing change, will not reach it, so the screen slowly drifts from the system. Library analytics count detaches because they often point at a missing option in the component.

4. Editable button label in the panel

Designers keep double-clicking deep into nested layers just to change a button label. What makes the label editable straight from the right-hand properties panel?

  1. A.Converting the label layer into a vector outline
  2. B.Locking all layers in the component except the label
  3. C.Adding a text component property linked to the label layer
  4. D.Creating a new text style named "Button label"
Show answer

Answer: C. Adding a text component property linked to the label layer

A text component property surfaces the chosen text layer as an input field on every instance. People change the label in the panel, and the override is kept when the main component is updated.

5. Choosing which icon a button shows

A Button has an icon slot and you have 300 icon components in the library. Which component property lets people pick a different icon from a list on the instance?

  1. A.A boolean property on the icon frame
  2. B.A variant property with one value per icon
  3. C.An instance swap property on the nested icon instance
  4. D.A number variable bound to the icon width
Show answer

Answer: C. An instance swap property on the nested icon instance

An instance swap property exposes a nested instance so it can be replaced with another component, optionally limited to a set of preferred values. Making 300 variants instead would be unmanageable.

6. Hug contents in auto layout

A button frame uses auto layout with horizontal padding of 16 and width set to "Hug contents". The label changes from "Save" to "Save and continue". What happens?

  1. A.The button grows wider so the padding around the label stays 16
  2. B.The label is cut off because the width is locked
  3. C.The text shrinks to fit the original width
  4. D.The button stretches to the full width of its parent
Show answer

Answer: A. The button grows wider so the padding around the label stays 16

Hug contents makes the frame size itself to its children plus padding, so longer text gives a wider button. Fixed would keep the width and let text overflow, and Fill container would stretch it to the parent.

7. Slashes in component names

You name components "Icon/Arrow/Left" and "Icon/Arrow/Right" in Figma. What does the slash naming do in the assets panel?

  1. A.It turns both into variants of one component set
  2. B.It groups them into nested folders: Icon, then Arrow
  3. C.It hides them from the published library
  4. D.It marks them as deprecated for consumers
Show answer

Answer: B. It groups them into nested folders: Icon, then Arrow

Figma reads slashes in component and style names as a folder path, so assets appear grouped as Icon > Arrow > Left. Variants are created by combining components into a component set, not by naming alone.

8. Hover built into a component

You want every Button instance in a prototype to show its hover look when the cursor is over it, without wiring each screen. What do you set up?

  1. A.A separate frame for every hovered button on each screen
  2. B.An interactive component: a hover interaction between the variants
  3. C.A text property that changes the label on hover
  4. D.A page-level overlay that appears on mouse enter
Show answer

Answer: B. An interactive component: a hover interaction between the variants

Interactive components let you add prototype interactions between variants of the main component, such as "While hovering, change to State=Hover". Every instance then behaves that way in prototypes automatically.

9. Showing a modal in a prototype

In a Figma prototype, tapping "Delete" should show a confirm dialog on top of the current screen with the screen dimmed behind it. Which action fits?

  1. A.Navigate to a new full-screen frame
  2. B.Scroll to a layer lower on the page
  3. C.Open link to an external web address
  4. D.Open overlay, with a background dim setting
Show answer

Answer: D. Open overlay, with a background dim setting

Open overlay shows a frame above the current screen, with options for position, closing when clicking outside and a dimmed background. Navigate to would replace the screen, which loses the sense of a dialog over the page.

10. A header that stays while scrolling

Your long mobile screen prototype scrolls, but the top app bar scrolls away with the content. How do you keep it in place in Figma?

  1. A.Set the header's scroll behaviour to Fixed (or Sticky)
  2. B.Lock the header layer in the layers panel
  3. C.Move the header into a different page
  4. D.Add a "While pressing" interaction to the header
Show answer

Answer: A. Set the header's scroll behaviour to Fixed (or Sticky)

Each layer inside a scrolling frame has a scroll behaviour. Fixed keeps it on screen while content scrolls underneath, and Sticky keeps it in flow until it reaches the top. Locking a layer only stops it being edited.

11. Updating every copy of a button

In Figma, a button is a main component used in 30 places. What happens when you change the main component's colour?

  1. A.Nothing; each instance must be changed by hand
  2. B.Every instance updates, apart from overridden properties
  3. C.Only the first instance updates
  4. D.All instances are detached from it
Show answer

Answer: B. Every instance updates, apart from overridden properties

Instances inherit changes from their main component. Properties you have overridden on an instance, like its label text, are kept. This is what makes design systems in Figma scale.

12. Getting client feedback in Figma

How can a client comment directly on a Figma design without installing any software?

  1. A.Share a link with view or comment access
  2. B.Send them the .fig file by email
  3. C.Export every frame as a JPEG first
  4. D.Print the frames as a PDF and scan it
Show answer

Answer: A. Share a link with view or comment access

Figma runs in the browser, so a shared link lets clients view, comment and even open prototypes. Comments are pinned to the exact spot, which keeps feedback clear.

Figma intermediate interview questions medium

13. Counting button variants

A Button component set has Type (primary, secondary, tertiary, danger), Size (small, medium, large), State (default, hover, pressed, focus, disabled) and Icon (yes, no) as variant properties. How many variants is that, and how many if Icon becomes a boolean property instead?

  1. A.14 variants, dropping to 12 with a boolean
  2. B.120 variants, dropping to 60 with a boolean
  3. C.60 variants, dropping to 30 with a boolean
  4. D.120 variants, dropping to 118 with a boolean
Show answer

Answer: B. 120 variants, dropping to 60 with a boolean

Variants multiply: 4 × 3 × 5 × 2 = 120. A boolean property toggles layer visibility inside each variant, so the Icon dimension no longer multiplies the set, leaving 4 × 3 × 5 = 60. Fewer variants make the component lighter and easier to maintain.

14. Lost text when switching variants

A designer changes a Button instance from Size=Medium to Size=Large and the custom label "Pay ₹499" resets to "Button". What is the most likely cause?

  1. A.Text overrides are never kept when switching variants
  2. B.The label layer has a different name in the Large variant
  3. C.The Large variant uses a different font family
  4. D.The library has not been published since last week
Show answer

Answer: B. The label layer has a different name in the Large variant

Figma keeps overrides when you swap variants by matching layers with the same name and hierarchy. If the label is called "Label" in one variant and "Text" in another, the match fails and the default text returns. Consistent layer names across variants fix it.

15. Placing a badge on an avatar

An Avatar uses auto layout. You want a small online-status dot fixed at the bottom-right corner without it pushing other children around. What do you use?

  1. A.Add a large negative gap to the auto layout
  2. B.Detach the avatar and group the dot with it
  3. C.Set the dot to absolute position in the frame
  4. D.Turn on "clip content" on the avatar frame
Show answer

Answer: C. Set the dot to absolute position in the frame

Absolute position takes a child out of the auto layout flow, so it can be placed freely and pinned with constraints while the other children stay in order. This is like position: absolute inside a relatively positioned parent in CSS.

16. Stopping a fill-width card growing forever

A card is set to Fill container so it stretches on wide screens, but on a 1920 px monitor the text lines become very long. Which Figma setting best mirrors the fix developers will use?

  1. A.Give the card a max width, like CSS max-width
  2. B.Switch the card to a Fixed width of 1920
  3. C.Lower the font size on the card text
  4. D.Remove the padding from the card
Show answer

Answer: A. Give the card a max width, like CSS max-width

Auto layout supports min and max width and height. A max width lets the card fill smaller containers but stop growing past a readable size, which matches max-width in CSS and keeps the design spec close to the real behaviour.

17. Spacing variables shown in the wrong place

Designers complain that the corner radius picker lists every number variable, including spacing and font sizes. What is the clean fix?

  1. A.Delete the spacing variables and type numbers by hand
  2. B.Set variable scopes so each variable shows only for its use
  3. C.Rename every variable with an emoji prefix
  4. D.Move all number variables into one large collection
Show answer

Answer: B. Set variable scopes so each variable shows only for its use

Variable scoping lets you say where a variable may be applied, for example only gap and padding, or only corner radius. Pickers then show just the relevant options, which reduces mistakes like using a spacing value as a radius.

18. Figma letter spacing in CSS

A display heading has letter spacing of -2% in Figma. Which CSS value matches it at any font size?

  1. A.letter-spacing: -2px
  2. B.letter-spacing: -2%
  3. C.letter-spacing: -0.02em
  4. D.letter-spacing: -0.2rem
Show answer

Answer: C. letter-spacing: -0.02em

Figma's percentage letter spacing is a share of the font size, which is exactly what em means in CSS. So -2% becomes -0.02em. A fixed px value would only match at one size, and percent is not valid for letter-spacing in CSS.

19. Finding the weak component

Library analytics show the Dropdown component has 2,000 inserts and 900 detaches in a quarter, far more than any other component. What is the best first step?

  1. A.Lock the component so it can no longer be detached
  2. B.Talk to the teams detaching it to learn what option is missing
  3. C.Delete Dropdown and ask teams to build their own
  4. D.Ignore it, because detaches do not affect consistency
Show answer

Answer: B. Talk to the teams detaching it to learn what option is missing

A 45% detach rate signals the component does not meet real needs, for example a missing search field or multi-select. Learning why from the people detaching it tells you which variant or property to add, which is better than forcing or ignoring them.

20. What a type token holds

Your heading-medium text style must stay identical in Figma and code. Which values should the typography token define together?

  1. A.Font family, size, weight, line height and letter spacing
  2. B.Only the font size, since the rest is inherited
  3. C.Only the colour, so text matches the theme
  4. D.Font size and the paragraph indent only
Show answer

Answer: A. Font family, size, weight, line height and letter spacing

A typography style is a composite: changing the size without its line height or weight breaks the look. Defining all these properties together, often as a composite token that references primitive values, keeps design and code text styles in step.

21. Splitting a huge library file

Your single library file has foundations, 120 components and icons, and it has become slow to open and publish. What is a common structure?

  1. A.Separate libraries for foundations, components and icons
  2. B.One page per designer inside the same file
  3. C.Duplicating the file every month as a backup
  4. D.Merging every product file into the library too
Show answer

Answer: A. Separate libraries for foundations, components and icons

Splitting into a foundations library (variables, styles), a components library that uses it, and an icon library keeps files smaller and lets teams enable only what they need. Updates to icons, for example, do not force a republish of every component.

22. Buttons that grow with their label

In Figma, a button label is changed from "Buy" to "Add to cart" and the text overflows the button. What prevents this?

  1. A.Constraints set to Left and Top
  2. B.A fixed-width frame of 80 px
  3. C.Auto layout set to hug contents
  4. D.Grouping the text and rectangle
Show answer

Answer: C. Auto layout set to hug contents

Auto layout frames resize based on their content with set padding and spacing. Set to hug contents, the button grows or shrinks with its label, and the spacing stays consistent.

23. Hover, pressed and disabled buttons

A design system needs a button in default, hover, pressed and disabled states, and small and large sizes. How should it be built in Figma?

  1. A.Eight unrelated components with long names
  2. B.One component set with variant properties
  3. C.One frame with all states as screenshots
  4. D.A separate file for each state
Show answer

Answer: B. One component set with variant properties

Variants group related versions into one component set with properties such as State and Size. Designers switch between them in the properties panel, and developers can map them to code props.

24. Light and dark themes in Figma

A product team wants to switch a whole screen between light and dark themes in Figma with one setting. What feature is designed for this?

  1. A.Duplicate every frame and recolour it
  2. B.A plugin that inverts every colour
  3. C.Separate files for each theme
  4. D.Colour variables with light and dark modes
Show answer

Answer: D. Colour variables with light and dark modes

Figma variables can hold different values per mode. Linking fills to colour variables with Light and Dark modes lets you switch a frame's theme instantly, which matches how code uses design tokens.

Figma interview questions for experienced candidates hard

25. FromISR call from a high priority ISR

An ISR set to NVIC priority 0 calls xQueueSendFromISR, and the system crashes randomly. configMAX_SYSCALL_INTERRUPT_PRIORITY is set to 5. What is wrong?

  1. A.xQueueSendFromISR cannot be used with queues longer than 1
  2. B.Priority 0 is reserved for SysTick
  3. C.Queues cannot be used from any ISR
  4. D.ISRs that call FreeRTOS APIs must have a priority numerically equal to or above 5, so the kernel can mask them
Show answer

Answer: D. ISRs that call FreeRTOS APIs must have a priority numerically equal to or above 5, so the kernel can mask them

FreeRTOS protects its data by masking interrupts at or below configMAX_SYSCALL_INTERRUPT_PRIORITY. An ISR at priority 0 is never masked, so it can interrupt the kernel mid-update and corrupt lists. Give such ISRs priority 5 or a numerically higher value; keep priority 0 for ISRs that never call the kernel. configASSERT catches this.

26. FromISR call trips an assert

On Cortex-M with FreeRTOS, an ISR at NVIC priority 2 calls xQueueSendFromISR() and hits configASSERT. configMAX_SYSCALL_INTERRUPT_PRIORITY is set to priority 5. What is wrong?

  1. A.Priority 2 is less urgent than the limit, so it runs too late
  2. B.FromISR functions may only be called from priority 0
  3. C.Priority 2 is more urgent than the limit, so it may not call RTOS APIs
  4. D.The queue must be created inside the ISR
Show answer

Answer: C. Priority 2 is more urgent than the limit, so it may not call RTOS APIs

On Cortex-M a lower number means a higher priority. FreeRTOS masks interrupts only up to the syscall limit; an ISR with a more urgent priority (numerically lower, like 2) can interrupt kernel critical sections, so it must not call any API. Set the ISR priority to 5 or a higher number.

27. Allowed NVIC priorities for FreeRTOS calls

An STM32 has 4 priority bits and configMAX_SYSCALL_INTERRUPT_PRIORITY maps to level 5. Which interrupt levels may call FromISR APIs?

  1. A.Levels 0 to 5
  2. B.Levels 0 to 4 only
  3. C.Levels 5 to 15
  4. D.Any level, if the call is FromISR
Show answer

Answer: C. Levels 5 to 15

On Cortex-M, lower numbers are more urgent. The kernel masks levels 5 and above (numerically) in critical sections, so only those can safely call the API. Levels 0 to 4 are never masked by the kernel and must not call it. The STM32 default of 0 for new interrupts breaks this.

28. Config change does not roll Pods

With Helm, you change a value that only affects a ConfigMap. `helm upgrade` succeeds, but the Pods keep running with the old env values. What common chart pattern fixes this?

  1. A.Set the immutable: true field on the ConfigMap
  2. B.Put a checksum of the ConfigMap in a Pod annotation
  3. C.Add a liveness probe that reads the ConfigMap file
  4. D.Use helm upgrade --force on every single release
Show answer

Answer: B. Put a checksum of the ConfigMap in a Pod annotation

The Deployment template did not change, so no rollout happened, and env vars only load at start. An annotation such as checksum/config with the sha256sum of the rendered ConfigMap changes whenever the config changes, which triggers a rolling update. Kustomize does the same by adding a hash to the ConfigMap name.

29. Inside stroke and CSS borders

A card is 320×200 in Figma with a 2 px inside stroke. The developer writes width: 320px; height: 200px; border: 2px solid. What else keeps the outer size at exactly 320×200?

  1. A.outline: 2px instead of border, since outlines add to width
  2. B.box-sizing: content-box, so the border is added outside
  3. C.box-sizing: border-box, so the border sits inside the 320×200 box
  4. D.Nothing, because CSS borders never change the size
Show answer

Answer: C. box-sizing: border-box, so the border sits inside the 320×200 box

With the default content-box, CSS adds the border outside the width, giving 324×204. border-box includes border and padding in the width, which matches Figma's inside stroke. A centre stroke would straddle the edge, which CSS borders cannot copy directly.

30. Safely trying a big library change

You want to rework the Input component, but other designers are publishing small fixes to the same library this week. What Figma feature isolates your work?

  1. A.A branch of the library file, reviewed and merged when ready
  2. B.Turning off the library for all consumers
  3. C.Editing a copy and pasting it back by hand
  4. D.Working in a private draft with detached copies
Show answer

Answer: A. A branch of the library file, reviewed and merged when ready

Branching (on Organization and Enterprise plans) lets you work on a copy, review changes and merge into the main file, while others keep publishing fixes. Manual copy-paste loses history and can overwrite others' work.

31. Tabs that switch in a prototype

A Tabs component has variants Selected=Tab1, Tab2 and Tab3. In a prototype you want clicking a tab to show it as selected, inside every instance. Which action belongs on the main component?

  1. A."Change to" the matching variant, on the tab click
  2. B."Navigate to" a frame for each selected tab
  3. C."Open overlay" with the selected tab on top
  4. D."Scroll to" the tab layer inside the frame
Show answer

Answer: A. "Change to" the matching variant, on the tab click

"Change to" swaps an instance to another variant of the same component set. Defined on the main component, it makes every instance switch tabs in prototypes without extra frames. Navigate and overlay operate on whole frames instead.

32. A slow, heavy component

Your Data table component set has 900 variants and files that use it have become slow. Which change helps most?

  1. A.Add more hidden layers for future table options
  2. B.Build it from small cell and row components
  3. C.Raise image export quality in the file
  4. D.Duplicate the component set in every page
Show answer

Answer: B. Build it from small cell and row components

Huge component sets load all their variants and multiply memory use. Building tables from small cell components, using boolean and instance swap properties rather than variants for every combination, keeps files light and the component easier to maintain.

33. Resolving an aliased variable in dark mode

A Primitives collection has blue-600 = #2563EB and blue-300 = #93C5FD. A Semantic collection has text-link with Light = alias to blue-600 and Dark = alias to blue-300. A link is bound to text-link inside a frame set to Semantic: Dark. What colour is the link?

  1. A.#2563EB, from blue-600
  2. B.Both colours blended evenly
  3. C.#93C5FD, from blue-300
  4. D.No colour, as aliases skip modes
Show answer

Answer: C. #93C5FD, from blue-300

The frame's mode picks the Dark value of text-link, which is an alias to blue-300, so Figma follows the alias to #93C5FD. Primitives usually have one mode, and semantic collections hold the mode-specific mapping.

34. The prototype breaks during a task

A Figma prototype freezes halfway through a key task. What is the best response?

  1. A.Count the task as a failure of the design
  2. B.End the session at once and reschedule it
  3. C.Ask the participant to try fixing the prototype
  4. D.Stay calm, reset to that point and log it as a tool issue
Show answer

Answer: D. Stay calm, reset to that point and log it as a tool issue

A tool failure is not a design finding. Reset to the point of failure if possible, continue the task and note it so it is excluded from task-success metrics. Having a backup prototype link ready helps.

35. Client asks for the layered files

After delivering final PNGs and PDFs, a client asks for all layered Figma and Illustrator source files. The contract only lists final exports. What is the best reply?

  1. A.Send everything free, since they paid for the design
  2. B.Refuse because source files are always the designer's
  3. C.Send the files with key layers deleted
  4. D.Offer the source files as an add-on with a clear price
Show answer

Answer: D. Offer the source files as an add-on with a clear price

Source files are a separate deliverable that lets the client edit or reuse work without you, so they have extra value. If the contract does not include them, quoting them as an add-on is fair. The best fix is to state in every contract whether source files are included.

36. Handing a design to developers

Developers need exact spacing, colours as tokens and exportable assets from a Figma file. What should the designer prepare?

  1. A.Use variables and components, and mark frames ready
  2. B.Send flattened PNG screenshots of each screen
  3. C.Write all measurements in a Word document
  4. D.Detach all components so nothing changes
Show answer

Answer: A. Use variables and components, and mark frames ready

Dev Mode shows measurements, code hints and variable names. When designs use variables and components and frames are marked ready for development, developers see consistent tokens instead of guessing raw values.

Ready to test yourself?

Take a 15-question Figma MCQ test with a score at the end, or practise the full Figma question bank and earn points on the leaderboard.