← Back to question bank
QuizFoundationEasy#1033 · 15m

Explain Accessibility interaction model

Explain focus, names, descriptions, landmarks, and live regions. Then apply it to a realistic product screen where a user action, browser behavior, and rendering timing all matter.

Answer Strategy

For accessibility interaction model, do not answer like a glossary entry. State the rule, show where it appears in product UI, then name the user-visible bug that happens when the rule is misunderstood.

A strong foundation answer has three layers: the browser or language model, a tiny code example, and a frontend consequence such as stale state, broken focus, blocked input, unsafe data, or flaky tests.

The reference example below is intentionally small but production-shaped: it names the boundary, protects the failure mode, and includes a test that proves the rule instead of relying on explanation alone.

Reference Example: Accessible Status Contract

Accessibility answers should turn roles, names, focus, and announcements into explicit component behavior.

type AsyncStatus =
  | { tag: 'idle' }
  | { tag: 'loading'; label: string }
  | { tag: 'error'; message: string }
  | { tag: 'success'; message: string };

function statusProps(status: AsyncStatus) {
  if (status.tag === 'loading') {
    return { role: 'status', 'aria-live': 'polite', text: status.label };
  }
  if (status.tag === 'error') {
    return { role: 'alert', 'aria-live': 'assertive', text: status.message };
  }
  if (status.tag === 'success') {
    return { role: 'status', 'aria-live': 'polite', text: status.message };
  }
  return { role: 'status', 'aria-live': 'polite', text: '' };
}

Testing Strategy

Convert the answer into observable behavior. In a mid-senior interview, say which behaviors are covered by unit tests, interaction tests, accessibility checks, and one browser smoke path.

Rule
State the browser, JavaScript, TypeScript, CSS, security, or accessibility rule in one sentence.
Product bug
Connect the rule to a concrete UI failure: stale data, blocked input, broken focus, layout shift, or unsafe trust boundary.
Proof
Use a tiny test, trace, or code review checklist item that would catch the misunderstanding.
test('statusProps chooses assertive announcements only for errors', () => {
  expect(statusProps({ tag: 'error', message: 'Save failed' })).toMatchObject({
    role: 'alert',
    'aria-live': 'assertive',
    text: 'Save failed',
  });
});

Interviewer Signal

Shows whether you understand accessibility interaction model as an operating model, not as memorized trivia.

Constraints

  • Use one concrete browser or React-facing example.
  • Name the failure mode a production user would notice.
  • Keep the first answer under two minutes before expanding.

Model Answer Shape

  • Start with the rule: focus, names, descriptions, landmarks, and live regions.
  • Tie the rule to ownership: what runs in render, what runs after paint, what is external state, and what must be cleaned up.
  • Close with the smallest test, trace, or code review check that would catch the bug.

Tradeoffs

  • A short interview answer is easier to follow, but a senior answer must still name the edge case.
  • Framework vocabulary helps only after the browser or language rule is clear.

Edge Cases

  • Slow devices where timing bugs become visible.
  • Repeated user actions before async work settles.
  • Browser defaults that differ from custom component behavior.

Testing And Proof

  • Unit-test the pure decision when possible.
  • Use an interaction test for focus, keyboard, timing, or cleanup behavior.

Follow-Ups

  • How would this change in a React component?
  • What would you log or profile if this broke in production?