680+ frontend interview questions

Practice frontend interviews in a real browser editor.

Pick a JavaScript or UI question. Write the code and run the tests in the same tab. React, Vue, Angular, and Vanilla starters are ready.

It opens in your browser. You can start without a credit card.

Get Premium for$99$0
JavaScriptReactVueAngular480+ free
questions / debounceJavaScript
DescriptionPROMPT

Build a debounce utility

Delay the callback until calls have stopped for the given wait time.

debounce(fn, 200)
debounce.jsLIVE EDITOR
// Implement debounce
function debounce(fn, wait) {
  let timer;
  return function (...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, wait);
  };
}
TestsAUTO RUN
returns a function
no sync invoke
invokes after wait
resets on call
uses latest args
All tests passed5 / 5
Description tabReal test runnerLive Sandpack editor

The practice loop

Less tab switching.
More problem solving.

Everything you need to work through a question, understand the edge cases, and make your next attempt better.

01 / Write and test

Write the answer and run the tests.

The prompt, editor, and test results stay in one workspace. Start from the provided files and see which case still fails before you submit.

  • Edit the real starter files
  • See every passing and failing test
Static preview · reduced motion
UIReady workspaceInteractive preview
Debounce / JavaScript
All tests passed
debounce.jsEDITABLE
function debounce(fn, wait) {  let timer;  return function (...args) {    clearTimeout(timer);    timer = setTimeout(() => {      fn.apply(this, args);    }, wait);  };}
Test results
waits before calling
resets on another call
keeps latest arguments
All tests passed3 / 3

A real test runner

A small edit. Instant feedback.

Delete clearTimeout in the live editor below. The reset test will fail, and it will pass again when you restore the line.

Editable code

Type directly into the example and reset it whenever you want.

Tests in the browser

The suite runs in an isolated worker after each edit.

debounce.js
Live editor loads as you scroll
debounce.js
function debounce(fn, wait) {
  let timer;

  return function (...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, wait);
  };
}
Tests
returns a function
waits before calling
resets after another call
uses the latest arguments
keeps the call context

One prompt, four implementations

One component. Four ways to build it.

Switch frameworks without leaving the question. The code on the left and the preview on the right are both live. Your answer stays separate in every variant.

ReactVueAngularVanilla
Live preview loads as you scroll
App.tsx
import { useState } from 'react';

export default function Accordion() {
  const [openId, setOpenId] = useState('html');

  return sections.map((section) => (
    <section key={section.id}>
      <button
        aria-expanded={openId === section.id}
        onClick={() => setOpenId(section.id)}
      >
        {section.title}
      </button>
      {openId === section.id && <p>{section.body}</p>}
    </section>
  ));
}
Preview

Frontend foundations

HTML−

HTML gives the page its structure and meaning.

CSS+
JavaScript+

Premium pricing

Unlock the full library.
Make every session count.

Everything in Free, plus the complete Premium question library, system design articles, and guided preparation.

  • 680+ practice questions

    The complete library, including every Premium challenge.

  • Worked solutions

    Implementations, edge cases, and complexity explained.

  • Premium system design

    Go deeper into architecture and engineering tradeoffs.

  • Guided preparation

    1-week, 1-month, and 3-month plans, plus curriculum tracks.

  • Four framework variants

    Practice in React, Vue, Angular, and Vanilla JavaScript.

  • Your complete workspace

    Live tests, saved code, and progress synced across devices.

Full access

UIReady Premium

One place for your entire interview prep.

$99
$0

Included with Premium

  • Every Premium question and solution
  • All study plans and curriculum tracks
  • Premium system design articles
  • New free and Premium questions
Compare monthly, annual, and Lifetime plans
7-day money-back guaranteeTax included

Your next question is ready

Try a full question before you create an account.

The free question includes the prompt, editor, and tests. Sign in when you want UIReady to save your code and progress.

FAQ

Answers before you start.

Everything you need to know before opening your first frontend interview question.

Can I try UIReady without paying?

480+ questions are free. The editor, tests, previews, and progress tracking all work on the free tier.

Which frameworks can I practice?

UI questions are available in React, Vue, Angular, and plain HTML, CSS, and JavaScript. Your work is saved separately for each variant.

Are the examples on this page real?

Yes. The Debounce example runs its test suite in an isolated browser worker, and the Accordion example compiles a real preview in the framework you pick.

What happens when I get stuck?

Open the worked solution after you have tried the problem. It covers the implementation, missed edge cases, complexity, and the reasoning an interviewer may ask you to explain.

Feedback

Found a bug or have an idea? Help us improve UIReady.

Screenshots, video or audio · Up to 3 files, 5 MiB each