Tie implementation or design choices to platform behavior, user feedback, lifecycle, accessibility, and the trade-off the team must maintain.
Question set
8 detailed answers
01What is visual hierarchy and how do you create it?
junior
Short answer: Visual hierarchy is the deliberate ordering of elements that guides the eye — what to see first, second, third. It maps the user's attention to the importance of the information.
In depth:
I build it with a set of compounding tools, not one big lever:
- Size and weight — larger, bolder reads as more important; a 32px semibold headline dominates 14px body.
- Color and contrast — a saturated primary button against muted neutrals pulls focus; low-contrast text recedes.
- Space and proximity — generous whitespace isolates and elevates an element; tight grouping signals relatedness.
- Position — top-left (in LTR) and the optical center carry weight; F- and Z-patterns describe natural scan paths.
- Type scale — a single ramp (12/14/16/20/24/32) keeps the levels distinct.
The test: squint or blur the screen — if the main action is still the most prominent thing, the hierarchy works.
Squint / blur the screen:
█████████████ ← headline (large, bold) 1
░░░░░░░░░░░░░ ← subhead 2
body-body-body ← body text 3
[ BUY ] ← bright CTA (focus)
⚠️ Common mistake: making everything bold and branded — when everything shouts, nothing is heard.
02Explain the Gestalt principles and give a concrete UI example of each.
middle
Short answer: Gestalt principles describe how the brain assembles separate objects into a whole. They let you imply structure without drawing extra borders and dividers.
In depth:
The practical payoff:
- Less visual noise — leaning on proximity and common region lets me drop borders and dividers.
- Grouping without lines — placement and alignment themselves say what belongs to what.
- Most "cluttered" interfaces — are Gestalt failures: uniform spacing everywhere, so the brain can't tell what goes where.
| Principle | What groups it | UI example |
|---|---|---|
| Proximity | distance | a label sits closer to its field than to the next one |
| Similarity | color/shape/size | all primary actions share one button style |
| Common region | background/border | a card unites title, image and CTA |
| Closure | completing a shape | a spinner or partial icon still reads as whole |
| Continuity | lines and alignment | a clean left-aligned column guides the eye |
| Figure/ground | separation from background | a modal with a dimmed scrim becomes the figure |
| Common fate | moving together | carousel slides animate in unison |
⚠️ Common mistake: uniform spacing everywhere — without a difference between "within a group" and "between groups", Gestalt can't work.
03How do you choose and pair typefaces, and how do you build a type scale?
middle
Short answer: I start from function, not taste. For product UI I default to a highly legible neutral sans (Inter, SF Pro, Roboto) — it has to survive small sizes, dense data and many weights.
In depth:
- Pairing — either one versatile superfamily across the whole product (simplest, most consistent), or a distinctive display face for headings plus a workhorse sans for body, with enough contrast that the pairing looks intentional.
- What I check — x-height, the weight set (at least regular/medium/semibold), figure style (tabular figures for tables).
- Scale — a modular ratio of 1.2–1.25 (major third) anchored on a 16px body → 12/14/16/20/24/30/36; no more than 5–7 sizes.
- Line-height — inversely proportional to size: ~1.5 for body, ~1.2 for large headings; measure 45–75 characters.
- Semantic roles — body, caption, label, h1–h3 instead of raw px; this later becomes tokens.
/* Type scale: 1.25 step from a 16px base */
--font-caption: 12px; --line-caption: 1.4;
--font-body: 16px; --line-body: 1.5;
--font-h3: 20px; --line-h3: 1.3;
--font-h2: 24px; --line-h2: 1.25;
--font-h1: 36px; --line-h1: 1.15;
⚠️ Common mistake: more than 7 sizes and arbitrary px — the system collapses into inconsistency.
04Walk me through how you'd build a color system for a product.
middle
Short answer: I split color into roles, not just hues, and build each hue as a tonal ramp (50–900) so there's always an accessible pairing. Accessibility is a hard constraint, not a final polish step.
In depth:
- Brand/primary — one or two colors carrying identity and the main CTA.
- Neutrals — a gray ramp (9–12 steps) does the heavy lifting: text, borders, surfaces; neutrals matter more than the brand color.
- Semantic — success/warning/error/info, each with a background, border and text.
- State and surface tokens — hover, pressed, disabled, selected.
- Accessibility — text ≥ WCAG AA 4.5:1, large text and UI components 3:1; never convey meaning by color alone (error = icon + text).
- Themes — I check light and dark and define semantic tokens (color.text.primary) so the component themes itself.
{
"color": {
"brand": { "primary": "#4F46E5" },
"neutral": { "50": "#F9FAFB", "500": "#6B7280", "900": "#111827" },
"semantic": {
"error": { "bg": "#FEF2F2", "border": "#FCA5A5", "text": "#B91C1C" },
"success": { "bg": "#F0FDF4", "border": "#86EFAC", "text": "#15803D" }
},
"text": { "primary": "{neutral.900}", "muted": "{neutral.500}" }
}
}
⚠️ Common mistake: six competing brand colors — a restrained neutral ramp plus one confident accent reads as more premium.
05Why are grids and spacing systems important, and what's an 8-point grid?
junior
Short answer: A grid and a spacing system replace arbitrary pixel decisions with a shared rhythm — that's what makes an interface feel calm and "designed" rather than improvised. An 8-point grid is when all spacing and sizing are multiples of 8 (8, 16, 24, 32…), with a 4px sub-step for fine tuning.
In depth:
- Why 8 — divides cleanly across common screen densities (1x/2x/3x), limits choices and scales predictably.
- Layout grid — usually 12 columns on web: 12 splits into halves, thirds, quarters and sixths; rational breakpoints.
- The value is constraint — when the only choices are 4/8/16/24/32, components align themselves and whitespace becomes intentional.
- Tokens — I expose the scale as tokens (space-1 = 4, space-2 = 8…) so design and engineering share one language.
- Hierarchy via proximity — more space between groups than within them (Gestalt's law of proximity).
/* 8-point spacing scale as tokens */
--space-1: 4px; /* sub-step: icons, fine tuning */
--space-2: 8px;
--space-3: 16px;
--space-4: 24px;
--space-5: 32px; /* between major sections */
⚠️ Common mistake: inconsistent spacing is the single most common tell of an amateur interface; a system fixes it by default.
06How do you balance aesthetics with usability when they seem to conflict?
senior
Short answer: Usability is the floor, aesthetics the ceiling: beauty can't cost a user a failed task. But the "conflict" framing is often false.
In depth:
- The aesthetic-usability effect (Kurosu & Kashimura) — attractive interfaces are perceived as easier to use and users forgive minor friction; polish has real usability value.
- Order — function first (legibility, contrast, target size, affordances, a clear flow), then beauty within those constraints.
- On a real conflict — e.g. an "elegant" light-gray label that fails WCAG — usability wins; I find the solution inside the constraint (change the hue or weight, not the contrast).
- Data breaks ties — if a "clean" minimal design hides a key action and an A/B test shows conversion drops, the prettier version is simply worse.
Aesthetics vs usability?
│
▼
Task still solvable? ──no──► USABILITY (floor: contrast, targets, flow)
│ yes
▼
Make it beautiful WITHIN the constraints (ceiling)
│
▼
Still disputed? ──► A/B test: numbers beat taste
⚠️ Common mistake: trend-driven aesthetics for the portfolio (mystery-meat icons, ultra-thin type) — great in a screenshot, a failure in real use.
07What is contrast in design, and what types matter beyond color?
junior
Short answer: Contrast is the perceptible difference between elements — the primary tool for directing attention and ensuring legibility. Color comes to mind first, but several kinds of contrast work together.
In depth:
- Principle — contrast creates focal points: I apply it deliberately to one or two important elements per screen and suppress it elsewhere.
- Balance — too little → everything blends into mush; too much → the screen feels chaotic and tiring.
- Accessibility — I verify it for low vision and varied lighting (bright sun on mobile); I never ship text below the threshold even if "softer" looks better.
| Type of contrast | How it works | Example |
|---|---|---|
| Size | large ↔ small | establishes hierarchy |
| Weight | bold ↔ regular | emphasizes a word or heading |
| Color/value | light ↔ dark | WCAG AA 4.5:1 for text |
| Shape | pill among rectangles | the button stands out |
| Space | dense ↔ whitespace | the eye goes to the open area |
| Direction | horizontal ↔ vertical | breaks up monotony |
⚠️ Common mistake: decorative contrast — high-contrast elements that aren't actually important — fights the real hierarchy.
08What is whitespace (negative space) and how do you use it effectively?
middle
Short answer: Whitespace (negative space) is the emptiness between and around elements. It isn't "wasted" space but an active design material; using it well is one of the clearest markers of maturity.
In depth:
- Macro whitespace — large gaps between sections and around the layout: breathing room, a premium feel (Apple's generous margins), lower cognitive load by chunking into regions.
- Micro whitespace — line-height, tracking, spacing between items and padding inside components: legibility and the feeling of polish; cramped reads as cheap.
- Functions — sets hierarchy (more space = higher importance), groups and separates via proximity (fewer borders), speeds reading, focuses on the key CTA.
- Management — through a single spacing scale (8-point) so space is rhythmic, not random.
// Padding and gaps come only from the scale, never "by eye"
type Space = 4 | 8 | 16 | 24 | 32;
interface StackProps {
gap: Space; // micro: between items inside a block
padding: Space; // a component's inner padding
sectionGap: Space; // macro: between major sections
}
⚠️ Common mistake: fear of emptiness — wanting to fill every pixel — produces a cluttered, exhausting interface.
Source notes
References and review policy
RecallDeck’s interview answers are editorial material, reviewed against maintained official documentation where a primary reference is available. Tool selections use direct provider links and contain no affiliate placements. Features can change after the review date.
From reading to recall
Practice the full interview loop.
RecallDeck schedules the concepts you miss and keeps coding, design, and behavioral fundamentals available when the interviewer changes direction.