A frontend engineer interview in 2026 tests four things: deep JavaScript fundamentals, the ability to implement utilities and UI components from scratch, frontend system design, and usually one algorithm round. To pass, you need to explain closures, the event loop, and promises precisely, write debounce or Promise.all without looking anything up, build a working accessible component in about 45 minutes, and design the client side of a product like a news feed or autocomplete.
This guide walks through each round, the questions that keep showing up, and how the loops at Meta, Google, Airbnb, and Stripe differ.
Key Takeaways
- Frontend loops are broader than general SWE loops: JavaScript trivia, utility implementation, UI builds, system design, and often LeetCode all appear.
- The highest-frequency coding prompts are debounce, throttle, Promise.all, deep clone, event emitter, and array flatten. Memorize the shapes, then practice the edge cases.
- React 19 knowledge (Actions, useActionState, useOptimistic, use, ref as a prop) now signals currency, especially at product companies.
- Frontend system design is judged on API contracts, state shape, rendering strategy, pagination, and performance, not on backend scaling.
- Core Web Vitals (LCP, INP, CLS) and accessibility are no longer bonus topics. Senior candidates are expected to raise them unprompted.
What Does a Frontend Engineer Interview Loop Look Like in 2026?
Most frontend loops follow the same skeleton, with company-specific weighting:
- Recruiter screen (30 minutes): Level, team interest, and which stack you work in.
- Technical phone screen (45-60 minutes): JavaScript questions plus one implementation task, or one algorithm problem.
- Onsite or virtual onsite (4-5 rounds):
- JavaScript and coding: implement a utility or solve a problem in JS.
- UI build: construct a working component in the browser or in a shared editor.
- Frontend system design: design the architecture of a client application.
- Algorithms: a standard data structures round at some companies.
- Behavioral: past projects, conflict, ownership. See our behavioral interview guide for structure.
The key difference from a backend loop is that you can be asked about the platform itself: how the browser parses HTML, what triggers layout, how the microtask queue drains. Breadth matters.
Which JavaScript Fundamentals Do Interviewers Test?
Closures
A closure is a function bundled with references to the variables in the scope where it was created. That function keeps access to those variables even after the outer function returns. Interviewers test closures through counters, memoization, private state, and the classic loop bug:
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0);
}
// logs 3, 3, 3 because var is function-scoped
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0);
}
// logs 0, 1, 2 because let creates a new binding per iteration
The event loop
The event loop is the mechanism that lets single-threaded JavaScript handle asynchronous work. After the current call stack empties, the engine drains the entire microtask queue (promise callbacks, queueMicrotask, MutationObserver) before taking the next macrotask (setTimeout, I/O, UI events). Rendering opportunities typically occur between macrotasks. Expect an ordering question:
console.log("A");
setTimeout(() => console.log("B"), 0);
Promise.resolve().then(() => console.log("C"));
queueMicrotask(() => console.log("D"));
console.log("E");
// A, E, C, D, B
Be ready to explain why a long synchronous loop freezes the page and how breaking work into chunks (or yielding with scheduler APIs) improves responsiveness. This links directly to INP, covered below.
Promises and async/await
A promise is an object representing the eventual result of an asynchronous operation, in one of three states: pending, fulfilled, or rejected. Know the differences between Promise.all (rejects on the first rejection), Promise.allSettled (never rejects, returns every outcome), Promise.race (settles with the first settlement), and Promise.any (fulfills with the first fulfillment, rejects with an AggregateError only if all reject).
The rest of the checklist
thisbinding rules: default, implicit, explicit (call, apply, bind),new, and arrow functions inheriting lexicalthis.- Prototypal inheritance and what
classcompiles down to. - Hoisting and the temporal dead zone for
letandconst. ==versus===, and type coercion edge cases.- Event delegation, bubbling versus capturing,
stopPropagationversuspreventDefault. - DOM and browser APIs:
IntersectionObserver,requestAnimationFrame,AbortController,fetch, Web Storage, and the difference betweenlocalStorage,sessionStorage, and cookies.
How Do You Answer "Implement Debounce, Throttle, or Promise.all"?
These are the most common frontend coding prompts in 2026. Interviewers want correct this and argument forwarding, cleanup, and edge-case handling.
Debounce delays invoking a function until a set time has passed since the last call. Use it for search input and resize handlers.
function debounce(fn, wait) {
let timerId = null;
function debounced(...args) {
clearTimeout(timerId);
timerId = setTimeout(() => {
timerId = null;
fn.apply(this, args);
}, wait);
}
debounced.cancel = () => {
clearTimeout(timerId);
timerId = null;
};
return debounced;
}
Throttle guarantees a function runs at most once per interval. Use it for scroll and pointer-move handlers.
function throttle(fn, wait) {
let lastCall = 0;
let timerId = null;
let pendingArgs = null;
let pendingThis = null;
return function throttled(...args) {
const now = Date.now();
const remaining = wait - (now - lastCall);
if (remaining <= 0) {
clearTimeout(timerId);
timerId = null;
lastCall = now;
fn.apply(this, args);
} else {
pendingArgs = args;
pendingThis = this;
if (!timerId) {
timerId = setTimeout(() => {
lastCall = Date.now();
timerId = null;
fn.apply(pendingThis, pendingArgs);
}, remaining);
}
}
};
}
Promise.all resolves with an array of results in input order, or rejects with the first rejection.
function promiseAll(iterable) {
return new Promise((resolve, reject) => {
const items = Array.from(iterable);
const results = new Array(items.length);
let remaining = items.length;
if (remaining === 0) {
resolve(results);
return;
}
items.forEach((item, index) => {
Promise.resolve(item).then((value) => {
results[index] = value;
remaining -= 1;
if (remaining === 0) resolve(results);
}, reject);
});
});
}
The details interviewers probe: wrapping non-promise values with Promise.resolve, preserving order by index rather than push, and handling the empty input. Follow-ups include Promise.allSettled, a concurrency-limited task runner (run at most N promises at once), retry with exponential backoff, and cancellation with AbortController.
Other high-frequency utilities: deep clone (with circular references via a WeakMap), deep equal, Array.prototype.flat, curry, memoize, an event emitter with on, off, and once, getElementsByClassName, and a tiny template or classnames function.
What React Questions Come Up, Including React 19?
React remains the dominant framework in frontend interviews. Expect conceptual questions before any build.
Fundamentals interviewers always ask:
- Reconciliation and why keys matter in lists. Using array indexes as keys breaks state when items reorder.
- When a component re-renders: state change, parent re-render, or context change.
React.memoonly skips re-renders caused by a parent when props are shallowly equal. useEffectdependencies, cleanup functions, and why effects run twice in Strict Mode during development.- Stale closures in effects and event handlers, and how functional state updates (
setCount(c => c + 1)) avoid them. - Controlled versus uncontrolled inputs.
- Lifting state up versus context versus an external store, and when context causes too many re-renders.
React 19 features worth knowing. React 19 shipped as stable in December 2024, and 19.2 followed in October 2025. The features most likely to come up:
| Feature | What it does | Interview angle |
|---|---|---|
| Actions | Async functions passed to transitions or form action props; React manages pending state and errors | Replacing manual isLoading state |
useActionState | Returns state, a wrapped action, and an isPending flag for a form action | Form submission flows |
useFormStatus | Reads the pending state of the parent <form> from a child | Disabling a submit button |
useOptimistic | Shows an optimistic value while an async action runs, then reverts or commits | Like buttons, chat messages |
use | Reads a promise (with Suspense) or context during render, and can be called conditionally | Data loading patterns |
ref as a prop | Function components accept ref directly, so forwardRef is no longer required | Component library APIs |
| Document metadata | <title>, <meta>, and <link> rendered in components are hoisted to <head> | SEO in SPAs |
<Activity> (19.2) | Hides a subtree while preserving its state and deferring its updates | Tab switching, pre-rendering |
useEffectEvent (19.2) | Extracts non-reactive logic from effects so they do not re-run on unrelated changes | Fixing over-firing effects |
React Compiler reached 1.0 in 2025 and automatically memoizes components and values. A good interview answer acknowledges that useMemo and useCallback still exist and still matter in codebases that do not use the compiler, and that the compiler relies on code following the Rules of React.
How Do You Pass the UI Component Build Round?
The UI build round asks you to build a working component in 45 to 60 minutes, sometimes in vanilla JavaScript and sometimes in React. Common prompts:
- Autocomplete or typeahead with debounced fetching
- Modal or dialog with focus trapping
- Tabs, accordion, or star rating
- Infinite scroll list or paginated table with sorting
- Image carousel
- Nested comments or a file tree
- Tic-tac-toe, a progress bar queue, or a countdown timer
- A data table with filtering
A reliable approach:
- Clarify for two to three minutes. Ask about required features, browser support, whether a library is allowed, and what "done" means.
- Define state first. Write down the state shape before markup. For autocomplete:
query,results,status,highlightedIndex,isOpen. - Get the happy path working. A rendered, interactive component beats a perfect half-component.
- Handle edge cases explicitly. Race conditions (ignore stale responses with a request id or
AbortController), empty states, errors, and loading. - Add accessibility and keyboard support. Arrow keys, Enter, Escape, and the correct ARIA roles.
- Narrate trade-offs. Caching results, virtualization for long lists, and how you would test it.
The race condition in autocomplete is the single most common place candidates lose points. If a slow response for "re" arrives after the fast response for "react," the UI shows stale results unless you guard against it.
Building an autocomplete with an interviewer watching is stressful, and edge cases are easy to forget mid-build. TechScreen runs invisibly during your screen share on Zoom, Google Meet, Teams, and CoderPad, surfacing reminders and code in real time. New users get 3 free tokens, no credit card required.
How Do You Approach Frontend System Design?
Frontend system design asks you to architect the client side of a product. Unlike a backend system design interview, you are not sharding databases. You are designing components, data flow, and the client-server contract. A useful framework is RADIO: Requirements, Architecture, Data model, Interface (API), and Optimizations.
Example: design a news feed
- Requirements: Infinite scroll, posts with text and media, likes and comments, new posts appearing at the top.
- Architecture: A feed container, a post component, a composer, and a client-side store that normalizes posts by id.
- Data model: Normalized entities (
posts,users,comments) keyed by id, plus an ordered list of post ids for the feed. - API: Cursor-based pagination (
GET /feed?cursor=abc&limit=20) rather than offset pagination, because offsets break when new posts are inserted at the top. - Optimizations: List virtualization for long feeds, lazy-loading images with explicit dimensions to prevent layout shift, optimistic likes, prefetching the next page when the user nears the bottom with
IntersectionObserver, and code splitting the composer.
Example: design autocomplete
Cover debouncing input, caching results per query (an in-memory map with an LRU eviction policy), cancelling or ignoring stale requests, minimum query length, keyboard navigation, highlighting matched substrings, and the WAI-ARIA combobox pattern. A strong candidate also discusses whether to filter client-side for small datasets versus querying the server, and how to handle offline or slow networks.
Other popular prompts: chat application (WebSockets, message ordering, optimistic send, reconnect), photo gallery or Pinterest-style masonry grid, collaborative editor, video player, and e-commerce product page with server-side rendering for SEO.
What Performance and Core Web Vitals Questions Should You Expect?
Core Web Vitals are Google's three user-centric performance metrics, and they are now standard interview vocabulary.
| Metric | Measures | Good threshold | Common fixes |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Loading | 2.5 s or less | Preload the hero image, server-side render, use a CDN, compress images, avoid render-blocking CSS |
| INP (Interaction to Next Paint) | Responsiveness | 200 ms or less | Break up long tasks, defer non-critical JavaScript, reduce hydration cost, debounce handlers |
| CLS (Cumulative Layout Shift) | Visual stability | 0.1 or less | Set width and height on media, reserve space for ads and embeds, avoid inserting content above existing content |
INP replaced First Input Delay as a Core Web Vital in March 2024, and interviewers sometimes use that as a check on whether your knowledge is current. Beyond the vitals, be ready to discuss the critical rendering path, what triggers layout versus paint versus composite, bundle splitting and tree shaking, image formats (AVIF, WebP), HTTP caching headers, and when server-side rendering or streaming beats client rendering.
Which Accessibility Topics Matter?
Accessibility is evaluated in nearly every UI build and system design round at large companies. The checklist:
- Use semantic elements (
button,nav,main,label) before reaching for ARIA. Adivwith anonClickis not a button. - Every interactive element must be reachable and operable by keyboard, with a visible focus indicator.
- Modals must trap focus, close on Escape, and return focus to the trigger on close.
- Form inputs need associated labels, and errors need to be announced.
- Dynamic updates such as toast notifications or search result counts use
aria-liveregions. - Color contrast meets WCAG AA, which requires 4.5:1 for normal text.
Mentioning these without being asked is one of the clearest seniority signals in a frontend loop.
How Do Meta, Google, Airbnb, and Stripe Frontend Loops Differ?
| Company | Algorithm weight | JS and UI weight | System design | Distinctive trait |
|---|---|---|---|---|
| Meta | High | Medium | Yes, frontend-specific for E5+ | Frontend candidates often face standard coding rounds plus a product architecture round |
| High | Medium | Yes for senior roles | Algorithm rounds are similar to general SWE; frontend depth is probed in domain rounds | |
| Airbnb | Medium | High | Yes | Practical JavaScript and UI builds, plus a strong values-based cross-functional round |
| Stripe | Low | High | Yes | Realistic product work over puzzles, with emphasis on correctness and API integration |
Meta. Frontend engineers at Meta typically go through a loop that looks close to the general SWE loop, with coding rounds that may be done in JavaScript, a frontend-flavored design round, and behavioral. Practice medium LeetCode problems in JavaScript and expect DOM or JS questions mixed in. Full details are in our Meta technical interview breakdown.
Google. Google's frontend roles still lean on algorithms, and the bar for algorithm rounds is not lowered for frontend candidates. Domain rounds test JavaScript and web platform knowledge. See the Google interview process guide.
Airbnb. Airbnb emphasizes practical JavaScript, component builds, and code quality, with a dedicated core values round. Our Airbnb interview guide covers the cross-functional format.
Stripe. Stripe avoids puzzle-style questions and favors realistic tasks, such as building against an API or debugging an existing codebase. The Stripe interview guide explains the Integration and Bug Squash rounds, which frontend candidates also encounter.
How Should You Structure Your Preparation?
A practical eight-week plan for a working frontend engineer:
- Weeks 1-2: JavaScript fundamentals. Write debounce, throttle, Promise.all, deep clone, event emitter, and curry from memory. Drill event loop ordering questions.
- Weeks 3-4: UI builds. Build one component every other day under a 45-minute timer: autocomplete, modal, tabs, infinite scroll, data table.
- Weeks 5-6: Frontend system design. Do one full design per session using RADIO and record yourself explaining it.
- Weeks 7-8: Mock loops, React 19 review, performance and accessibility checklists.
- Throughout: Two or three algorithm problems per week organized by pattern. The coding interview patterns cheat sheet covers the sliding window, two pointers, BFS, and DFS templates that frontend algorithm rounds lean on most.
Do every exercise in the language you will interview in. For frontend candidates that should almost always be JavaScript or TypeScript, since interviewers will expect you to be fluent in the platform you are applying to build for.
Frontend loops throw JavaScript trivia, UI builds, and system design at you in a single day. TechScreen gives you an invisible real-time AI assistant across every round, hidden from screen share on all major platforms. Start with 3 free tokens and try it on a mock UI build first.
Frequently Asked Questions
What is asked in a frontend engineer interview in 2026?
A typical frontend loop in 2026 covers four areas: JavaScript fundamentals (closures, the event loop, promises, this binding), practical coding such as implementing debounce, throttle, or Promise.all from scratch, a UI build round where you construct a working component like an autocomplete or modal, and a frontend system design round on something like a news feed. Most companies also include one behavioral round, and some large companies still add a standard data structures and algorithms round.
Do frontend engineers need to do LeetCode?
Usually yes, but less than backend engineers. Meta and Google frontend loops still include at least one algorithm-style round, typically at easy to medium difficulty with an emphasis on arrays, strings, hash maps, trees, and BFS or DFS. Companies like Airbnb and Stripe lean much more heavily on practical JavaScript and UI rounds. A reasonable target for a frontend candidate is 60 to 100 well-understood problems across the core patterns, plus deep JavaScript practice.
Which React 19 features should I know for interviews?
Know Actions and the hooks built around them: useActionState for form submission state, useFormStatus for reading a parent form's pending state, and useOptimistic for optimistic UI. Know the use API for reading promises and context during render, that ref can now be passed as a regular prop to function components, native document metadata support, and stable Server Components. React 19.2 added the Activity component and useEffectEvent, and React Compiler 1.0 reduces the need for manual memoization.
What is frontend system design?
Frontend system design is an interview round where you design the client side of a product, such as a news feed, autocomplete, chat app, or photo gallery. Instead of databases and sharding, you discuss component architecture, state management, the API contract between client and server, data fetching and caching, pagination strategies, rendering approach (client, server, or streaming), performance, accessibility, and internationalization. It is usually 45 to 60 minutes and is weighted heavily for senior roles.
What are the Core Web Vitals in 2026?
The three Core Web Vitals are Largest Contentful Paint (LCP), which measures loading and should be 2.5 seconds or less; Interaction to Next Paint (INP), which measures responsiveness and should be 200 milliseconds or less; and Cumulative Layout Shift (CLS), which measures visual stability and should be 0.1 or less. INP replaced First Input Delay as a Core Web Vital in March 2024. Thresholds are assessed at the 75th percentile of page loads.
How long does it take to prepare for a frontend engineer interview?
Most working frontend engineers need six to ten weeks of focused preparation at roughly eight to ten hours per week. Spend the first two weeks on JavaScript fundamentals and utility implementations, the next two on UI build rounds, then two weeks on frontend system design, while running algorithm practice in parallel throughout. Candidates targeting Meta or Google should allocate more algorithm time; candidates targeting Airbnb or Stripe should allocate more time to practical builds.
What accessibility topics come up in frontend interviews?
Interviewers expect you to use semantic HTML first, manage keyboard focus correctly (focus trapping in modals, returning focus on close, visible focus states), apply ARIA roles and attributes only where native elements fall short, label form controls, and announce dynamic changes with live regions. For components like autocomplete, knowing the WAI-ARIA combobox pattern, including aria-expanded, aria-controls, and aria-activedescendant, is a strong differentiator in UI build rounds.
Ready to use AI assistance in your next interview?
TechScreen is the invisible AI assistant trusted by engineers interviewing at Google, Meta, Amazon, and hundreds of other companies. Start with 3 free tokens — no credit card required.
Ace your next interview →