Frontend - Senior

0/18 preguntas respondidas 0%
Candidate information
Accepted formats: PDF, DOC, DOCX. Maximum 5MB

Knowledge questions

Question 1 of 18: Look at this form: `<form><input type="email" aria-label="Email"><input type="password" aria-describedby="pw-help"></form>`. What accessibility issues does it have?
Question 2 of 18: In a SPA with multiple dynamic sections, how should headings be structured for proper screen reader navigation?
Question 3 of 18: This grid layout breaks in Safari: `.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; } .grid > .item { display: subgrid; grid-template-rows: subgrid; }`. What is the problem?
Question 4 of 18: What is the correct order of CSS specificity cascade and how do `!important` and `@layer` affect it?
Question 5 of 18: This component has a memory leak: `class SearchComponent { constructor() { this.handler = (e) => this.onResize(e); window.addEventListener("resize", this.handler); } onResize(e) { /* updates UI */ } }`. What is the problem and solution?
Question 6 of 18: This debounce implementation has a bug: `function debounce(fn, delay) { let timer; return function(...args) { timer = setTimeout(() => fn(...args), delay); }; }`. What is missing?
Question 7 of 18: This TypeScript generic does not infer correctly: `function merge<T>(a: T, b: T): T { return { ...a, ...b }; }` called with `merge({ x: 1 }, { y: 2 })`. What is the problem?
Question 8 of 18: How do you correctly implement an accessible modal according to WCAG?
Question 9 of 18: This tabs component has accessibility errors: `<div class="tabs"><button class="active">Tab 1</button><button>Tab 2</button></div><div class="panel">Content 1</div>`. What is missing?
Question 10 of 18: How do you optimize SEO for a SPA with client-side rendering?
Question 11 of 18: This Angular component has performance issues: `@Component({ template: '<div *ngFor="let item of items">{{transform(item)}}</div>' }) class ListComponent { items$ = this.service.getItems(); ngOnInit() { this.items$.subscribe(i => this.items = i); } transform(item) { /* heavy calculation */ } }`. What are the problems?
Question 12 of 18: What is the difference between Signals and Observables in Angular 17+?
Question 13 of 18: This Vue computed does not update: `const user = reactive({ address: { city: "Madrid" } }); const city = computed(() => user.address.city);` then `user.address = { city: "Barcelona" }` works, but issues arise when replacing with non-reactive objects from API responses. Why?
Question 14 of 18: What is the difference between `ref`, `reactive`, and `computed` in Vue Composition API?
Question 15 of 18: What strategies reduce LCP (Largest Contentful Paint) with heavy hero images?
Question 16 of 18: This code causes CLS (Cumulative Layout Shift): `<img src="hero.jpg"><h1>Title</h1>` with CSS `@font-face { font-display: swap; }`. Why and how to fix it?
Question 17 of 18: What is tree-shaking and how does the `sideEffects` property in package.json affect it?
Question 18 of 18: Lighthouse reports TBT (Total Blocking Time) > 500ms. What tools and techniques would you use to diagnose and reduce it?

Coding challenge

Develop a dashboard with lazy-loaded modules, centralized state management, and a table with virtual pagination (row virtualization). The project must include unit tests and achieve a Lighthouse Performance score > 90.

Requirements

  1. Implement lazy-loading of at least 2 modules/routes with code-splitting
  2. Centralized state management (NgRx, Pinia, Zustand, or similar)
  3. Table with virtual pagination that efficiently renders 10,000+ rows
  4. Unit tests covering state logic and key components
  5. Lighthouse Performance score > 90 (document screenshot)

Examples

Input: { data: Array(10000).fill({ id, name, email, status }) }
Output: Virtualized table rendering only visible rows in the viewport (~20-30 rows), with smooth scrolling and pagination

Accepted technologies

  • Angular 17+
  • Vue 3 + Composition API
  • React 18+
  • Astro + framework islands
  • TypeScript required

Solution submission

Supported platforms: GitHub, GitLab, Bitbucket Enter a valid repository URL (https://github.com, gitlab.com, or bitbucket.org followed by owner/repository)