Top 30 UI Design & Figma Interview Questions and Answers
30 multiple-choice questions on UI Design & Figma, of the kind that come up in a technical interview, drawn from 30 bites in the UI Design & Figma library. Answer them here or read straight down. Every question carries the correct option, why it is correct, and a link to the bite it came from.
Visual design, Figma, prototyping, design tools
30 questions. Pick an answer, or open “Show the answer” to read it.
Answers are graded in your browser. Nothing is saved, and no XP or streak is earned here. The app keeps score.
Question 1 of 30
Which of the following best describes how a design system enforces consistency at scale?
Show the answer
Answer: b · It integrates reusable coded components, design tokens, and documentation across both design tools and code repositories
A design system enforces consistency by uniting coded components, tokens, and documentation across design and engineering, not just through design assets. Calling it merely a shared Figma file is a common misconception because it misses the engineering adoption and version-controlled code that actually standardizes implementation.
Read the full bite: What is a design system's purpose and how does it enforce consistency?
Question 2 of 30
Which approach best follows Nielsen's visibility of system status heuristic when handling a button-triggered API call?
Show the answer
Answer: a · Disable the button with a spinner, then transition to success or error states based on the API result
The card describes proper feedback as immediate local changes like a disabled button with a spinner, followed by resolution to success or error states. Waiting until the API responds leaves the user staring at a frozen screen, which violates the visibility of system status heuristic.
Read the full bite: Explain UI feedback and implement immediate feedback for API calls
Question 3 of 30
During a 10 MB video upload that requires server processing after transfer, which frontend approach most effectively prevents abandoned sessions and duplicate submissions?
Show the answer
Answer: a · A determinate progress bar with percentage and bytes transferred, explicit phase labels for uploading and processing, dynamic time estimates, and chunked error recovery offering retry or resume
Option A is correct because it combines granular progress, distinct phase labels, dynamic time estimates, and resilient error handling to close the gulf of evaluation. Option D is tempting because it shows a progress bar and prevents duplicate clicks, but it wrongly conflates the network transfer with overall completion and hides server-side processing from the user.
Read the full bite: How would you show system status during a multi-megabyte file upload?
Question 4 of 30
Which implementation best applies progressive disclosure and hierarchy in a complex data table with thousands of rows?
Show the answer
Answer: c · Default to essential columns with horizontal dividers at 48px, reveal sorting and filtering on hover or behind triggers, and reserve color cues for large datasets or status indicators.
Option C reflects the recommended layered strategy: a calm default view with essential columns and horizontal dividers at 48px, controls disclosed on interaction, and color used sparingly. Option A is tempting because it includes progressive disclosure patterns like a column picker and hover-revealed filters, but it incorrectly applies 56px to every dataset regardless of density and wrongly left-aligns numeric counts that should be right-aligned for scannability.
Read the full bite: How do you apply progressive disclosure and hierarchy in complex data tables?
Question 5 of 30
Which factor does the concept of affordance prioritize when selecting a native button over a styled div?
Show the answer
Answer: b · Built-in keyboard support, focus handling, and screen reader semantics
Affordance centers on the built-in behavioral contracts of native elements, such as keyboard activation and screen reader announcements, rather than just appearance. Option D is tempting because developers often assume role='button' is sufficient, but that ignores the manual keyboard and focus management a div still requires.
Read the full bite: How does affordance guide choosing a native button over a styled div?
Question 6 of 30
Which implementation pattern best preserves a wizard's low cognitive load while keeping branching logic and back-button behavior maintainable?
Show the answer
Answer: b · Isolated step components that each own their validation, orchestrated by a state machine that syncs the current step to the URL and commits valid drafts to a central store.
C is correct because it pairs progressive disclosure with isolated validation, URL-synced navigation, and explicit state management exactly as the card recommends. A is the most tempting distractor because consolidating state feels simpler, but it collapses under branching logic and creates messy validation boundaries.
Read the full bite: How do you design a low-cognitive-load wizard and implement it technically?
Question 7 of 30
A product manager insists on a custom component that violates the design system. Which response best articulates the long-term debt cost?
Show the answer
Answer: d · Model the 3-5x post-launch refactor multiplier, attach a risk matrix, and propose a time-boxed experiment with hard deprecation
Modeling the 3-5x refactor multiplier, attaching a risk matrix, and proposing a time-boxed experiment reflects the card's four-layer framework for stakeholder translation. Distractor A is tempting because it enforces the design system, but the card flags demanding an immediate full refactor without acknowledging delivery pressure as a red flag.
Read the full bite: How do you model and articulate long-term design debt cost to stakeholders?
Question 8 of 30
In a mobile checkout flow, why might a designer place a destructive Cancel button at the top-left screen edge rather than near the primary Pay Now button at the bottom center?
Show the answer
Answer: a · Because edge placement provides infinite effective width in one dimension, enabling fast acquisition while separating it from the primary action to prevent accidental taps.
Screen edges provide infinite effective width in one dimension, making them fast to reach despite distance, and anchoring destructive actions there avoids accidental taps near primary buttons. Distractor A misrepresents Fitts's logarithmic relationship as linear, which is a common misconception.
Read the full bite: Use Fitts's Law to size and place primary vs secondary mobile actions
Question 9 of 30
When styling a news article, how should line-height and letter-spacing differ between body text and headings?
Show the answer
Answer: b · Give body text at least 1.5 line-height with minimal letter-spacing, and use tighter line-height with slight negative letter-spacing for headings.
Body text needs generous vertical rhythm (at least 1.5x) and minimal letter-spacing for comfortable reading, while headings can tolerate tighter values because they are scanned quickly. Option D is a tempting red flag because treating both elements identically confuses vertical rhythm with horizontal spacing and harms readability.
Question 10 of 30
When building a modular type scale for a dense B2B dashboard, which approach best balances mathematical consistency with real-world UI constraints?
Show the answer
Answer: d · Start with a low ratio like 1.125, round to even pixels, and manually add smaller steps for metadata tags if needed
For a dense dashboard, a low ratio like 1.125 prevents extreme jumps, while rounding and manually adding small steps addresses real UI needs that strict modular math often misses. Defaulting to the marketing site's ratio prioritizes brand consistency over content density, which leads to awkwardly large sizes in data-heavy interfaces.
Read the full bite: How would you establish a modular typographic scale for a design system?
Question 11 of 30
You calculate a 4.499:1 contrast ratio for normal-sized body text. Which action best follows WCAG 2.1 rules and collaborative design practice?
Show the answer
Answer: d · Flag the failure since WCAG thresholds are strict, then propose a darker tint that preserves the original hue.
WCAG 2.1 treats 4.5:1 as a strict threshold with no rounding, so 4.499:1 fails; the best practice is to preserve the designer's intent by darkening the tint while keeping hue rather than defaulting to pure black. Option B is a tempting distractor because the value is close, but rounding up is explicitly non-compliant.
Read the full bite: Assess WCAG AA contrast for light grey text on off-white
Question 12 of 30
When building a full-bleed landing page hero, which combination of techniques best prevents layout shift while optimizing image delivery across devices?
Show the answer
Answer: c · Use an img tag with HTML width/height attributes, srcset with AVIF/WebP variants, CSS object-fit: cover, and fetchpriority="high".
This approach reserves space to eliminate CLS, lets the browser choose the optimal resolution and modern format, and prioritizes the likely LCP element. Option A is a common mistake because background-image sacrifices native responsive selection, accessible alt text, and browser optimizations while a single 4K JPEG wastes mobile bandwidth.
Read the full bite: How would you optimize and implement a full-bleed responsive hero image?
Question 13 of 30
Why should icons in a developer-facing Figma system use a single flattened path without hardcoded fills?
Show the answer
Answer: c · It lets the icon inherit color in code via currentColor, supporting theming
A single color-agnostic path lets the icon inherit its color through currentColor, so one icon serves multiple themes. Hardcoded fills can be exported but block recoloring; flattening is not required for publishing.
Read the full bite: Building a scalable icon system in Figma
Question 14 of 30
Which CSS strategy best mirrors a Figma two-tier token system with Light, Dark, and High-Contrast modes?
Show the answer
Answer: d · Semantic custom properties reference primitive variables and are redefined under theme attribute selectors like [data-theme="dark"].
Redefining semantic custom properties under theme selectors preserves the abstraction where components use only semantic tokens, matching Figma's mode behavior. Option A breaks this architecture by letting components bind directly to primitives, creating maintenance debt when brand values change.
Read the full bite: How would you structure a multi-theme color system in Figma and CSS?
Question 15 of 30
Which workflow best shows a systemic approach to making a Figma component responsive across breakpoints?
Show the answer
Answer: a · Apply auto layout to the parent frame, set children to hug or fill, use variants for breakpoints, and resize to test
The correct approach leverages Figma's native auto layout, hug/fill constraints, and variants to create self-adjusting components, then stress-tests them by resizing. The tempting distractor using only vertical auto layout is wrong because vertical stacks do not automatically reflow into columns without enabling wrap or switching to a horizontal or grid flow.
Read the full bite: How do you build a responsive Figma component across breakpoints?
Question 16 of 30
Which method best operationalizes Gestalt proximity using Figma Auto Layout and spacing variables for a scalable design system?
Show the answer
Answer: d · Bind a shared t-shirt spacing scale to Auto Layout gap and padding variables, giving related elements smaller gaps and unrelated groups larger ones.
This is correct because it maps a shared token scale to Auto Layout gap and padding variables to enforce relational spacing that survives content changes. Option B is tempting because custom values feel tailored to each component, but they prevent systematic consistency and break the ability to propagate token updates across the design system.
Read the full bite: How do you enforce proximity with Figma Auto Layout and spacing variables?
Question 17 of 30
How should you document an asymmetrical layout for engineering handoff to keep it predictable and systematic?
Show the answer
Answer: c · Specify macro ratios, flex basis, and spacing tokens while preserving an underlying grid reference
The correct approach documents relationship rules such as flex ratios and spacing tokens rather than absolute pixels, preserving a shared grid reference for engineers. Option D is tempting because redlined mockups feel precise, but absolute pixel values prevent responsive scaling and force engineers to reverse-engineer relationships from a static image.
Read the full bite: How do you apply systematic rules to asymmetrical layouts predictably?
Question 18 of 30
When optimizing a Figma product card with an image, title, price row, and multi-line tags, which approach best reduces nesting depth while preserving responsiveness?
Show the answer
Answer: d · Replace the tag container with horizontal auto layout using Wrap, and remove redundant intermediate grouping frames
The card states that enabling Wrap avoids separate row containers and that removing redundant grouping frames cuts layer depth and constraint recalculation in half. Option A sacrifices responsiveness, option C increases layer count with spacers, and option B bloats the file with duplicate layers.
Read the full bite: How do you optimize nested Auto Layout for performance?
Question 19 of 30
You are building a mobile prototype where a list of cards must scroll vertically and be clipped at the viewport edges. What should wrap the list?
Show the answer
Answer: c · A Frame, because it lets you clip content and enable scroll overflow
A Frame is correct because it has independent bounds that support Clip content and scroll overflow when child layers exceed its edges. Option A is tempting because both Groups and Frames organize layers, but Groups do not provide bounds-based clipping or scroll overflow.
Read the full bite: When would you wrap layers in a Frame versus a Group?
Question 20 of 30
What is the most reliable first step to extract exact CSS typography values from a Figma text element?
Show the answer
Answer: c · Select the text layer, then check the Properties tab or Dev Mode for exact values
You must select the specific text layer because the Properties tab and Dev Mode display exact typography values only for the selected object. Selecting a parent frame is a tempting but wrong first step because it hides the precise font properties and leads to approximations.
Read the full bite: How would you inspect a Figma text element for CSS properties?
Question 21 of 30
You are building a responsive Figma card with Auto Layout that must fill its container width and expand vertically when the description text grows. Which setup achieves this?
Show the answer
Answer: c · Nest the headline and description in a vertical Auto Layout frame with hug height, set the parent card to hug contents vertically and fill container horizontally, and set the image to fill width
Nesting the text in a hug-height frame allows the parent to expand vertically as copy grows, while fill-width on the image and fill-container on the parent handle horizontal responsiveness. Option D is tempting because fixed height seems to help grid alignment, but it prevents the card from growing and will clip content when the text expands.
Read the full bite: How do you build a responsive card with Auto Layout?
Question 22 of 30
In Figma, a 24×24 Close icon must stay pinned 16px from the top and right edges of a modal Frame when resized. Which approach achieves this?
Show the answer
Answer: c · Set horizontal to Right and vertical to Top on the icon inside the modal Frame
Setting the icon to horizontal Right and vertical Top inside the modal Frame pins it to the corner while keeping its size fixed. Option A is tempting because it names the correct constraint values, but constraints do not work inside Groups, so the icon must be a direct child of the Frame.
Read the full bite: How do you pin a Close icon to a modal's top-right corner?
Question 23 of 30
When architecting a scalable light/dark theme system in Figma using variables and styles, where should the mode-switching logic primarily reside?
Show the answer
Answer: b · In semantic color variables, by aliasing different primitive values per mode and applying those variables to styles.
Semantic variables act as the raw engine for mode switching by aliasing different primitives per context, while styles should consume those variables rather than own the logic. A is a common misconception because Figma styles cannot directly switch modes, and D mirrors the inefficient practice of manually swapping libraries.
Read the full bite: How would you structure Figma colors for light and dark themes?
Question 24 of 30
Which configuration lets a Figma button with an icon and text automatically resize when the label changes?
Show the answer
Answer: b · Apply horizontal auto layout, set text and frame to hug contents, and use fixed padding
Horizontal auto layout with hug contents on the text and parent frame lets the button expand or shrink dynamically as the label changes, while fixed padding keeps spacing consistent. Grouping layers and manually nudging them is wrong because the layout breaks as soon as the text is edited, defeating the purpose of a responsive component.
Read the full bite: How would you use Auto Layout for a button with optional icon?
Question 25 of 30
How does a 16px fixed spacing behave compared with Space between when an Auto Layout toolbar stretches wider?
Show the answer
Answer: c · Fixed spacing keeps the 16px gap identical and clusters icons, while Space between pushes the first icon to the left edge and the last to the right edge
Fixed spacing is an absolute value that never changes, so icons remain clustered when the frame grows, while Space between dynamically divides leftover space to push the first and last items flush to the edges. The reversed option is wrong because it swaps the two behaviors—fixed spacing does not distribute items evenly, and Space between does not enforce a rigid pixel gap.
Read the full bite: Difference between 'Space between' and fixed spacing in Auto Layout
Question 26 of 30
Which same-axis parent-child combination creates a layout conflict because the parent cannot determine available space for the child?
Show the answer
Answer: b · Hug parent containing a Fill child
A Hug parent shrink-wraps to its content and has no definite available space, so a Fill child cannot resolve its size, creating a circular dependency. This differs from a Hug parent with a Fixed child, which works because the child declares a concrete dimension that the parent can wrap around.
Read the full bite: How do Hug, Fill, and Fixed resizing behaviors interact?
Question 27 of 30
To make the profile card grow taller with a longer bio while keeping width fixed, how should the outer vertical Auto Layout frame be set?
Show the answer
Answer: d · Fixed width and hug contents height, with the bio set to fill width and auto height
Fixed width locks the card's horizontal size while hug height lets it grow as the auto-height bio wraps. Fixed height clips text, and hug width would let the card widen with content.
Read the full bite: Profile card with nested Auto Layout sizing
Question 28 of 30
A notification badge must overlap an avatar inside an Auto Layout frame. What is the best approach?
Show the answer
Answer: c · Set the badge to absolute position so it ignores flow but stays inside the frame
Absolute positioning removes the badge from the directional flow, letting it overlap the avatar without pushing sibling elements while the parent still resizes responsively. Moving the badge outside the frame is a tempting but wrong choice because it severs the responsive relationship and makes the component harder to maintain.
Read the full bite: When would you use absolute position in an Auto Layout frame?
Question 29 of 30
You are configuring a filter tag container in Figma that must push overflowing tags to the next line and automatically adjust when individual tag labels change length. Which setup achieves this?
Show the answer
Answer: a · Use horizontal auto layout with wrap on the parent, set container spacing and padding, and configure each tag to hug its contents
Horizontal auto layout with wrap pushes overflowing tags to the next line and adjusts container height automatically, while hugging contents lets each tag resize when its label changes. Grid organizes items into distinct columns and rows rather than wrapping a continuous flow, so it will not produce the desired dynamic wrapping behavior.
Read the full bite: How would you configure a wrapping filter tag container and its properties?
Question 30 of 30
Which method correctly architects a responsive Figma nav bar to preserve component links and handle breakpoint-specific layouts without detaching instances?
Show the answer
Answer: c · Create one component set with variants, horizontal Auto Layout with wrap for links, and a nested vertical overlay for mobile.
A single variant-driven component set with Auto Layout preserves maintainability and link propagation across states, whereas creating separate components breaks those links and creates maintenance debt.
Read the full bite: Structure a responsive nav bar using variants and Auto Layout
Could you explain these out loud?
That is what an interview actually tests. Tezvyn gives you questions like these with what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.