Prep path

Curated shortlist

FrontendAtlas Essential 60

A curated shortlist of high-signal frontend interview prompts selected from the shipped FrontendAtlas question bank.

Reviewed May 21, 2026FrontendAtlas Editor60 ranked frontend interview prompts across JavaScript utilities, UI coding, system design, and concepts

Essential 60 is a compact ranked practice list, not the full question bank. It prioritizes prompts by interview leverage, repeated patterns, coverage balance, useful variants, and shipped FrontendAtlas practice routes.

60total
41must know
35premium
Guided warm-up Open Question Library

Selection rationale

Why these 60?

The list is intentionally smaller than the full library so each prompt earns its place as a practice priority.

Ranked by interview leverage

Each prompt gets an importance score based on how often the pattern appears, how many follow-ups it unlocks, and how much signal it gives in a short round.

Balanced by round format

The shortlist mixes JavaScript utilities, UI coding, system design, and core concepts so practice does not overfit to one interview style.

Framework variants where useful

React, Angular, and Vue variants appear when the same UI pattern changes meaningfully across frameworks, instead of duplicating every prompt mechanically.

Mapped to practice routes with progress

Items point to shipped FrontendAtlas routes, so you can open a prompt, solve it, and keep progress attached to the ranked list.

Practice path

How to use Essential 60

Pick a time horizon, filter the list, and repeat missed prompts until your explanations are predictable.

Use Must know filters first

7-day refresh

Start with must-know JavaScript utilities and one UI coding prompt per day. The goal is to restore speed on common patterns before broad review.

Rotate every section

14-day practice loop

Alternate JavaScript, UI coding, system design, and concepts. Revisit misses after two days so the loop builds repeatable recall, not one-pass familiarity.

Finish all 60 prompts

30-day baseline

Complete the full list, repeat high-leverage misses, and add at least two system design sessions. The outcome is a mock-ready frontend interview baseline.

Coverage benchmark

Coverage benchmark

Benchmarked against common frontend interview surfaces: JavaScript utilities, UI coding, frontend system design, browser concepts, and framework variants.

5reference surfaces checked

Shortlist FAQ

Essential 60 FAQ

What is FrontendAtlas Essential 60?

FrontendAtlas Essential 60 is a ranked shortlist of must-know frontend interview prompts. It is designed for focused practice across JavaScript utilities, UI coding, frontend system design, and core concepts rather than browsing a full question bank.

How were the Essential 60 questions selected?

Questions were selected by interview leverage, repeated frontend interview patterns, coverage balance, useful framework variants, and availability as shipped FrontendAtlas practice routes. The ranking favors prompts that expose trade-offs, edge cases, or implementation skill quickly.

How should I use Essential 60 in 7, 14, or 30 days?

For 7 days, filter to must-know prompts and focus on speed. For 14 days, rotate through every section and repeat missed prompts. For 30 days, finish all 60 and use the high-leverage misses as your mock interview checklist.

Is Essential 60 different from the full frontend interview questions hub?

Yes. The full hub gives broader answers, topic clusters, and paths into each technology. Essential 60 is a compact practice shortlist for deciding what to solve first.

Does Essential 60 include UI coding, JavaScript utilities, concepts, and system design?

Yes. The collection is intentionally split across JavaScript utilities, UI coding prompts, frontend concepts, and system design problems so it reflects the main frontend interview round formats.

Sections
Tiers
#1
Debounce Function
Implement debounce(fn, wait) that delays execution until the user stops triggering events. Clear the previous timer on each call, preserve this/args, and make the timing predictable for search/resize use cases.
93/100Intermediate Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#2
Implement Promise.all
Implement a function `promiseAll(promises)` that behaves like `Promise.all`. It should take an array of values or promises and return a single promise that resolves to an array of results, preserving order, or rejects a…
92/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#3
Throttle Function
Implement a function `throttle(fn, interval)` that ensures `fn` is executed at most once during every `interval` milliseconds, no matter how many times it's triggered. In this exercise we use a leading-only throttle: th…
91/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#4
Deep Clone
Create a deep clone of an object/array so nested structures are copied by value. Discuss limits (functions, dates, cycles) and choose a strategy that matches constraints, such as recursion with a map to handle circular…
90/100HardPremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#5
Concurrency-Limited Map (order-preserving)
Implement a concurrency-limited async map that preserves order. Run at most N promises at a time, resolve results in input order, and reject early on errors to avoid hanging work.
88/100HardPremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#6
Deep Equal
Implement a function `deepEqual(a, b)` that returns `true` when two values are deeply equal — primitives by value and objects/arrays by recursively comparing their properties. Handle Dates, RegExps, and `NaN`.
86/100HardPremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#7
Memoization
Implement memoize(fn) that caches results for repeated calls. Choose a cache key strategy, discuss memory growth/eviction, and clarify that memoization is safe mainly for pure functions with stable outputs.
86/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#8
Fetch JSON with Timeout + Abort
Implement fetchJson(url, options) that fetches JSON with built-in timeout and abort support. It should abort on timeout, respect an external AbortSignal, and throw on non-2xx HTTP responses. This mirrors real-world clie…
86/100Intermediate Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#9
Take Latest (Abort Previous Requests)
Implement takeLatest(fn) that wraps an async function and guarantees only the most recent call can resolve. Each new call aborts the previous one via AbortController, and stale results must not update state. This preven…
84/100Intermediate Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#10
Implement Array.prototype.map
Recreate the native `.map()` method **without using it**. Your `myMap` must call `callbackFn(value, index, array)` for each **existing** index, bind `thisArg`, and return a new array with the **same length** where holes…
84/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#11
Implement Array.prototype.reduce
Recreate the native `.reduce()` method **without using it**. Your `myReduce` must call the reducer with `(accumulator, currentValue, index, array)` only for existing indices, handle an optional `initialValue`, and retur…
84/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#12
Implement lodash.get
Implement `get(obj, path, defaultValue)` where `path` is a string like `user.profile.name` or `a[0].b`. Return `defaultValue` when the path does not exist.
83/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#13
Implement Function.prototype.bind
Implement `myBind(fn, thisArg, ...boundArgs)` that behaves like `Function.prototype.bind`. It must: 1) Bind `this` to `thisArg` for normal calls. 2) Support partial application (pre-filling arguments). 3) Work with `new…
83/100Hard Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#14
Group By
Group an array of items by a key (function or property). Build an object or Map where each key maps to an array of items, and preserve input order inside each group. Concepts: arrays, grouping, objects.
82/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#15
Implement the `new` Operator
Implement a myNew helper that mimics the new operator. Create an object linked to the constructor prototype, call the constructor with this, and return the constructor’s object result if provided. This tests prototype l…
82/100Hard Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#16
Event Emitter (Mini Implementation)
Build a tiny event emitter with on, off, and emit. Store listeners per event, allow multiple listeners, and ensure off removes only the specified handler without breaking others. This tests data structures and event flo…
81/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#17
Data Helper 1: Get Value by Path
Implement `getByPath(obj, path, fallback?)` that safely reads a nested value from an object. This is extremely common in frontend screens (reading deep API responses, feature flags, form state) and shows up often in int…
81/100Intermediate Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#18
Data Helper 2: Set Value by Path
Implement setByPath(obj, path, value) that returns a new object/array tree with the value written at the nested path. Normalize dot or segment paths, create missing containers based on numeric segments, and never mutate…
80/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#19
Implement Array.prototype.filter
Recreate the native `Array.prototype.filter()` method as `myFilter`. It should call a provided callback once for each existing element in the array, include the element in the new array if the callback returns a truthy…
80/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#20
Sanitize href URL (Block javascript: XSS)
Implement sanitizeHrefUrl(input) to safely use user-provided URLs in an <a href="...">. Use an allowlist for safe schemes (http/https/mailto/tel) and safe relative URLs, and block dangerous schemes like javascript: or d…
80/100Intermediate Additional metadata: Section: JavaScript functions, Tier: Must know, Technology: JavaScript
#21
Promise.any (First Fulfilled)
Implement promiseAny(promises) that behaves like Promise.any. It should resolve with the first fulfilled value, ignoring rejections until all inputs reject. If everything rejects (or the input is empty), it should rejec…
78/100Intermediate Additional metadata: Section: JavaScript functions, Tier: High leverage, Technology: JavaScript
#22
Curry Function
Implement curry(fn) to transform a multi-argument function into chained calls. Collect arguments across invocations, allow partial application, and invoke the original function once enough args have been provided. Conce…
74/100IntermediatePremium Additional metadata: Section: JavaScript functions, Tier: High leverage, Technology: JavaScript
#23
Debounced Search with Fake API
Build a React debounced search input with fake API calls. Use useEffect + setTimeout cleanup to cancel stale requests, and manage loading, error, and empty states for realistic UX. Concepts: react, state, effects. React…
92/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#24
Contact Form (Component + HTTP)
Build a contact form using a React component with controlled inputs and basic validation. You will only work in `src/App.tsx` – the HTML shell and CSS are already set up. On submit, validate the input and send the form…
88/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#25
Autocomplete Search Bar (Hooks)
Build an **autocomplete search bar** in React. As the user types, show a dropdown of suggestions filtered from a dataset. Add debounced searching, mouse selection, keyboard navigation (↑/↓/Enter/Escape), and close-on-ou…
86/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#26
Multi-step Signup Form
Build a 3-step signup flow in React that collects basic info, address info, and then shows a read-only summary before submitting. Each step should only advance when its inputs are valid.
84/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#27
Nested Checkbox Tree (Parent–Child Sync)
Build a small React UI that renders a parent checkbox and multiple child checkboxes. The parent controls all children, and the children keep the parent in sync (checked, unchecked, or indeterminate). React focus: comput…
82/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#28
Paginated Data Table
Build a simple paginated data table in React that shows a static list of users. Display 5 rows per page, with Previous / Next controls and a "Page X of Y" indicator. Disable the navigation buttons appropriately on the f…
80/100IntermediatePremium Additional metadata: Section: UI coding, Tier: Must know, Technology: React, Angular, Vue
#29
Shopping Cart Mini
Build a small shopping cart UI in React. Show a list of products, let the user add them to the cart, adjust quantities, remove items, and display derived totals for item count and price. React focus: use immutable updat…
79/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#30
Nested Comments (Infinite Replies, Single Active Reply Input)
Build a React nested comments panel with infinite replies. Users can add top-level comments and reply to any comment, creating an infinitely deep tree. Clicking Reply should open an input ONLY under that comment (single…
78/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#31
Invite Chips Input (Tags + Autocomplete)
Build a Material-like invite field in React. As users type, show autocomplete suggestions, convert selections into removable chips, and support keyboard shortcuts (Enter/comma/backspace).
77/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#32
Todo List (Component with Local State)
Create a local-state todo list: add, toggle, and remove items. Keep input state controlled, generate stable ids, and update the todos array immutably so React can detect changes and re-render correctly. Framework focus:…
75/100Easy Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#33
Filterable / Searchable User List
Filter a React user list by search text and role. Derive filtered results without mutating the source array, and show an empty state when no matches exist. Add performance notes (memoization or debouncing), accessibilit…
74/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#34
Transfer List (Select + Move Between Two Lists)
Build a React transfer list UI with two panels and checkbox selection. Users select items in one list and move them to the other with arrow buttons. Preserve item order, clear selection after transfer, and disable butto…
74/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#35
Accordion / FAQ Component
Build a simple FAQ (accordion) UI in React using component state. Clicking a question should toggle its answer. By default, only one item can be open at a time, but the user can enable a mode where multiple items can st…
72/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#36
Tabs / Multi-View Switcher
Implement React tabs with a single activeTab state. Buttons update the value and conditional rendering shows only the active panel, with clear active styles and accessible button semantics. Include keyboard navigation a…
71/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#37
Theme Toggle with Persisted Light/Dark Mode
Add a global light/dark theme toggle using React Context. The selected theme should be stored in localStorage and restored when the page reloads. React focus: use Context to persist theme in localStorage and sync the DO…
70/100IntermediatePremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#38
Progress Bar (0–100 with Threshold Colors)
Build a React progress bar for values 0–100 with +10%/−10% controls. Clamp progress to the valid range and change the bar color by thresholds (e.g., red &lt;34, orange 34–66, green &gt;66). Show the numeric percentage a…
68/100EasyPremium Additional metadata: Section: UI coding, Tier: High leverage, Technology: React, Angular, Vue
#39
Notification Toast System
Design a global toast/alert system that can be triggered from anywhere in the app (e.g. `toast.success()`, `toast.error()`). Focus on global state, rendering through a portal, stacking multiple toasts, auto-dismiss timers, and accessible behavior. Key considerations include: how to expose a simple global API, how to manage timers and cleanup safely, how to handle z-index and stacking order, and how to support responsive placements (top-right, bottom-left, mobile full-width) with good ARIA roles and focus handling.
88/100Intermediate Additional metadata: Section: System design, Tier: Must know, Technology: Frontend
#40
Infinite Scroll List System Design
Design an infinite-scroll list with paginated loading, error recovery, and virtualization strategy so scrolling stays fast while DOM size remains bounded.
86/100Intermediate Additional metadata: Section: System design, Tier: Must know, Technology: Frontend
#41
Real-time Search with Debounce & Caching
Design a real-time search module where results update as the user types, focusing only on the frontend side: state management, debouncing, and caching. Assume there is some abstract async search function in the background, but your job is to design how the input, debounced calls, cache, and UI states work. Key considerations include: choosing debounce (and explaining why) vs throttle, maintaining a client-side cache of query → results so repeated queries are instant, simulating cancellation of outdated requests (ignoring late responses), handling slow typing vs fast typing without flicker or stale results, and designing UX states for empty query, loading, no results, and error.
84/100IntermediatePremium Additional metadata: Section: System design, Tier: Must know, Technology: Frontend
#42
News Feed / Timeline Front-End System Design
Design a social news feed/timeline UI with pagination, virtualization, media lazy-loading, realtime updates, and smooth interactions.
82/100HardPremium Additional metadata: Section: System design, Tier: Must know, Technology: Frontend
#43
Multi-step Form with Autosave
Design a 4-step form with validation, step transitions, a progress bar, and automatic autosave to localStorage. Users should be able to refresh or leave the page and continue where they left off. Key considerations include form architecture, throttled/debounced autosave, inline vs submit validation, dirty-state tracking, and restoring from saved drafts.
80/100IntermediatePremium Additional metadata: Section: System design, Tier: Must know, Technology: Frontend
#44
Component-driven Design System Architecture
Design a component-based design system for a mid-to-large scale product: buttons, inputs, tabs, banners, dialogs, and more. Focus on how the system is structured, how teams consume it, and how it evolves safely over time. Key considerations include: token-driven theming (semantic tokens, color scales, dark/high-contrast variants), CSS architecture decisions (CSS variables, utility classes, BEM, or Tailwind-style tokens), accessibility-first component APIs (keyboard behavior, ARIA attributes, focus management), and support for dark mode, high contrast, and RTL from day one. You should be prepared to talk about: consistent component APIs (props, events, slots), how to ensure long-term maintainability, versioning and breaking-change strategy, tree-shaking-friendly structure, and bundle-size optimizations like dynamic imports and granular code splitting.
79/100HardPremium Additional metadata: Section: System design, Tier: High leverage, Technology: Frontend
#45
AI Chat Text Area (ChatGPT-Style)
Design a minimal ChatGPT-like experience in a text area: the user submits a prompt, the assistant streams a response, and the conversation is persisted for resume. Include frontend architecture plus database considerations for storing chat history.
78/100IntermediatePremium Additional metadata: Section: System design, Tier: High leverage, Technology: Frontend
#46
UI Component & State Design From a Mock (Frontend System Design)
Given a UI mock, describe the component tree, state ownership, and data flow while keeping the UI scalable and maintainable.
76/100IntermediatePremium Additional metadata: Section: System design, Tier: High leverage, Technology: Frontend
#47
Explain the JavaScript Event Loop
JavaScript runs on a single thread, but the real production pitfall is queue ordering: synchronous work runs first, then microtasks drain before the next macrotask, which is why long Promise chains can starve rendering…
94/100Hard Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#48
Explain Closures in JavaScript
Closures keep outer variables alive after the outer function returns. The real frontend debug value is explaining stale async callbacks, loop-capture bugs, and long-lived listeners that keep old objects alive in memory.
92/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#49
Promises and async/await
Promises and async/await use the same async model, but production decisions are really about concurrency, stale-request cancellation, request identity, and error boundaries rather than syntax alone.
91/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#50
Explain Event Delegation in JavaScript
Event delegation uses one ancestor listener instead of many child listeners. The production value is handling dynamic DOM, nested targets, stopPropagation surprises, and list performance without attaching handlers every…
88/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#51
prototype vs __proto__ in JavaScript (Prototype Chain, new, and Object.getPrototypeOf)
prototype is a property on constructor functions that becomes the [[Prototype]] of instances created with new. __proto__ is the (legacy) accessor for an object's [[Prototype]] link used for property lookup. Mastering th…
86/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#52
Mutability vs Immutability in JavaScript (State, References, and Side Effects)
Mutable data can be changed in place, while immutable data is never modified — instead, new copies are created. Understanding this difference is critical for predictable state management in React, Angular, Redux/NgRx, a…
85/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#53
How do you optimize a web page’s response or load time?
Web performance optimization is a prioritization problem across network transfer, render-blocking work, images, JavaScript, and caching. Strong answers tie improvements to critical-path debugging, first-visit vs repeat-…
84/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#54
DOM XSS Prevention in JavaScript: Dangerous Sinks, Safe APIs, and Trusted Types
Security-focused frontend interview guide to DOM XSS: attacker-controlled sources like location.hash or postMessage, dangerous DOM sinks, safe rendering patterns, URL validation, and defense in depth with CSP and Truste…
83/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: JavaScript
#55
useEffect() in React: syncing with the outside world (timing, dependencies, cleanup)
Explain useEffect as React’s external sync point through cleanup, dependency discipline, stale-closure debugging, and the common mistake of putting pure derived logic into effects.
82/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: React
#56
What is the significance of keys in lists in React?
Keys are React's identity contract for list items. Use stable keys to prevent reordered rows, lost input state, random remounts, and production bugs where React preserves the wrong component.
80/100Intermediate Additional metadata: Section: Concepts, Tier: Must know, Technology: React
#57
What are change detection strategies in Angular, and how do they work?
Angular change detection strategy is a production performance and debugging choice, not just a framework definition. The useful answer compares Default versus OnPush through stale-UI bugs, trigger rules, immutable updat…
79/100Intermediate Additional metadata: Section: Concepts, Tier: High leverage, Technology: Angular
#58
ref vs reactive in Vue: what’s the real difference, when should you use each, and what are the common reactivity traps?
Explain the real difference between ref() and reactive() in Vue 3’s Composition API, when each is the better choice (primitives vs objects, replacement vs mutation, destructuring, template unwrapping), and the most comm…
78/100Intermediate Additional metadata: Section: Concepts, Tier: High leverage, Technology: Vue
#59
How would you make a page accessible?
Use a production accessibility review workflow: semantics first, then keyboard and focus, labels and errors, contrast, manual assistive-tech checks, and automated tooling. The real mistake is treating Lighthouse or axe…
77/100Intermediate Additional metadata: Section: Concepts, Tier: High leverage, Technology: HTML
#60
What is the difference between Grid and Flexbox, and when should each be used?
CSS Grid and Flexbox are both powerful layout systems designed to help developers create complex, responsive layouts with ease. While Flexbox excels in one-dimensional layouts (either rows or columns), Grid is built for…
76/100Intermediate Additional metadata: Section: Concepts, Tier: High leverage, Technology: CSS