Dev Skill Programme
Developer D — Web

Assess Developer D

Web. Everything recorded here becomes a permanent entry in their history.

verified Cself Btarget C

Ask the prepared questions and mark each answer. The score sets the grade.

Assess understanding, not recall. Ask Developer to explain in their own words, and mark an answer Partial when it is right but they cannot say why.

Web fundamentals

  1. Why does semantic HTML matter? Give examples of semantic elements.

    Basic · 1pt
    Expected answer

    It gives meaning to structure for screen readers, search engines and other developers: <header>, <nav>, <main>, <article>, <button>, <label>. A clickable <div> has no keyboard support or role; a <button> does.

    Result for: Why does semantic HTML matter? Give examples of semantic elements.
  2. Explain the CSS box model.

    Basic · 1pt
    Expected answer

    Every element is content + padding + border + margin. box-sizing: border-box makes width include padding and border, which is easier to reason about.

    Result for: Explain the CSS box model.
  3. When would you use flexbox and when grid?

    Basic · 1pt
    Expected answer

    Flexbox lays items out in one dimension (a row or a column), good for toolbars and aligning items. Grid handles two dimensions (rows and columns together), good for page layouts and card grids.

    Result for: When would you use flexbox and when grid?
  4. What is the difference between `let`, `const` and `var`?

    Basic · 1pt
    Expected answer

    let and const are block-scoped; const cannot be reassigned (the object it points to can still change). var is function-scoped and hoisted, which causes bugs — avoid it.

    Result for: What is the difference between `let`, `const` and `var`?
  5. Explain the event loop, and in what order `setTimeout(…, 0)` and a resolved Promise callback run.

    Intermediate · 2pt
    Expected answer

    JavaScript runs one call stack. When it is empty, the event loop runs all microtasks (Promise callbacks) first, then the next macrotask (timers, events). So the Promise .then runs before the setTimeout(…, 0) callback.

    Result for: Explain the event loop, and in what order `setTimeout(…, 0)` and a resolved Promise callback run.
  6. How does `async`/`await` relate to Promises, and how do you handle errors with it?

    Intermediate · 2pt
    Expected answer

    async functions always return a Promise; await pauses until a Promise settles. Handle errors with try/catch (or .catch on the returned Promise). Use Promise.all to run independent requests in parallel instead of awaiting them one by one.

    Result for: How does `async`/`await` relate to Promises, and how do you handle errors with it?

Application development

  1. What are props and state in a component, and how do they differ?

    Basic · 1pt
    Expected answer

    Props are inputs passed from a parent and are read-only in the child. State is data a component owns and changes over time; changing it re-renders the component.

    Result for: What are props and state in a component, and how do they differ?
  2. When should state be lifted up, and when do you need shared or global state?

    Intermediate · 2pt
    Expected answer

    Lift state to the nearest common parent when siblings need the same data. Use context or a store only for truly app-wide data (current user, theme) or when prop drilling gets deep. Keep server data in a data-fetching cache rather than global state, and derive values instead of duplicating them.

    Result for: When should state be lifted up, and when do you need shared or global state?
  3. When calling an API from a screen, which states must the UI handle?

    Intermediate · 2pt
    Expected answer

    Loading, success, empty, and error (with a way to retry). Also cancel or ignore stale responses when the input changes, and avoid double-submits on mutations.

    Result for: When calling an API from a screen, which states must the UI handle?
  4. Why do list items need a stable `key`, and why is the array index a bad key?

    Intermediate · 2pt
    Expected answer

    The key lets the framework match items between renders. With the index, inserting or reordering items attaches state and DOM to the wrong item. Use a stable id from the data.

    Result for: Why do list items need a stable `key`, and why is the array index a bad key?
  5. Compare client-side rendering, server-side rendering and static generation. How do you choose?

    Advanced · 3pt
    Expected answer

    CSR renders in the browser: simple hosting, slow first paint, weaker SEO. SSR renders per request: fast first content and SEO, needs a server. Static generation renders at build time: fastest and cheapest, but data can be stale (revalidation helps). Choose by how dynamic and personalised the data is and SEO needs.

    Result for: Compare client-side rendering, server-side rendering and static generation. How do you choose?

Quality

  1. How do you make a form accessible?

    Intermediate · 2pt
    Expected answer

    Every input has a <label>; errors are announced and linked to the field; everything works by keyboard with a visible focus; enough colour contrast; do not rely on colour alone; use native elements before ARIA.

    Result for: How do you make a form accessible?
  2. What are Core Web Vitals, and how would you improve a poor LCP?

    Advanced · 3pt
    Expected answer

    LCP (loading of the largest element), INP (responsiveness to input), CLS (layout shift). Improve LCP by optimising and preloading the hero image, reducing render-blocking CSS/JS, server-rendering the content, using a CDN and caching.

    Result for: What are Core Web Vitals, and how would you improve a poor LCP?
  3. Explain XSS and how to prevent it.

    Advanced · 3pt
    Expected answer

    Cross-site scripting: attacker-controlled input is rendered as script in another user’s page. Prevent it by escaping output (frameworks do this by default — avoid dangerouslySetInnerHTML/innerHTML with user data), sanitising any HTML you must render, a Content Security Policy, and HttpOnly cookies.

    Result for: Explain XSS and how to prevent it.
  4. What is CORS and why does the browser enforce it?

    Advanced · 3pt
    Expected answer

    The same-origin policy stops a page reading responses from another origin. CORS lets a server opt in with headers such as Access-Control-Allow-Origin; non-simple requests are preceded by a preflight OPTIONS. It protects users’ data in the browser — it is not server-side security.

    Result for: What is CORS and why does the browser enforce it?
  5. A page feels slow when typing in a search box. How do you find and fix the cause?

    Advanced · 3pt
    Expected answer

    Profile with the browser Performance tab / framework profiler to see what re-renders and how long it takes. Typical fixes: debounce the input, memoise expensive children, virtualise long lists, move heavy work off the main thread, and avoid state updates that re-render the whole page.

    Result for: A page feels slow when typing in a search box. How do you find and fix the cause?
Asked 0 of 16Score —Grade –Score at least 5 questions to record a grade.

A 90–100B 80–89C 70–79D 60–69E below 60· Basic 1pt, Intermediate 2pt, Advanced 3pt

Currently verified C · they self-assessed B

Step 1 of 5