У цій статті зібрано найважливіші питання, які можуть пролунати на співбесіді для Frontend розробника будь-якого рівня: від Junior до Senior. Також додано оновлені розділи про актуальні технології та підходи, що зараз актуальні в індустрії.
Основні теми, які покриватимуться на співбесіді:
- Тестування та практичні завдання, які часто дають на лайв-кодингу.
- Базові знання (HTML, CSS, JavaScript).
- Фреймворки (React, Angular).
- Доступність (Accessibility) та SEO.
HTML
HTML – фундамент веброзробки. Важливо розуміти семантичну розмітку, принципи рендерингу сторінки та вміти грамотно використовувати структуру.
Можливі запитання по HTML
- Що ви знаєте про Web Components і як HTML пов’язаний з їхньою розробкою? (Питання може бути розраховане на більш досвідчених розробників).
- Семантичні теги HTML5 (наприклад,
<section>,<article>,<aside>,<nav>,<main>) та коли їх краще застосовувати. - Чим відрізняється
<div>від<section>і за яких умов? - Поняття reflow та repaint: коли браузер проводить рендеринг сторінку і чому?
- Правильна робота з формами: атрибути
required,disabled,readonly, кращі практики побудови форм. - Як відобразити таблицю з підсумковим рядком, які теги краще використати?
- Використання метаданих (
<title>,<meta>, JSON-LD) та їх роль у SEO та доступності. - Що таке Progressive Enhancement і Graceful Degradation в контексті HTML?
- Які існують правила вкладення HTML-елементів? Наведіть приклади правильного та неправильного вкладення.
- Поясніть важливість використання правильної структури HTML-документа (
<!DOCTYPE html>,<html>,<head>,<body>). - Як правильно використовувати атрибути
idтаclass? Яка між ними різниця і коли який краще використовувати? - Що таке HTML-сутності (entities) і коли їх потрібно використовувати (наприклад, для відображення спеціальних символів)?
- Як правильно вставляти зображення на сторінку? Поясніть призначення атрибутів
src,alt,width,heightтаloading. Коли краще використовувати тег<picture>? - Як додати аудіо та відео на вебсторінку? Які атрибути використовуються для керування відтворенням?
- Для чого використовується тег
<iframe>? Які існують міркування щодо безпеки при його використанні? - Які існують типи посилань в HTML? Поясніть призначення атрибутів
href,target,rel. - Як створити навігаційне меню? Які теги для цього краще використовувати?
- Які існують типи списків в HTML? Коли краще використовувати
<ol>,<ul>чи<dl>? - Для чого використовуються data-атрибути (
data-*)? - Як забезпечити доступність вебсторінок за допомогою HTML (ARIA-атрибути, семантична структура)?
- Які існують підходи для оптимізації HTML для кращої продуктивності (наприклад, відкладене завантаження)?
- Розкажіть про використання тега
<template>. Для чого він може бути корисним?
CSS
CSS відповідає за стиль і візуальну частину проєкту. Потрібно розуміти специфічність, сучасні методи верстки та способи адаптивної розробки.
Можливі запитання по CSS
- Принципи специфічності та пріоритетів: id, клас, тег, !important.
- Як працює властивість
box-sizingі коли корисно ставитиborder-box? - Flexbox і Grid: коли що обрати для верстки, основні відмінності й приклади використання. Чи знайомі ви з такими концепціями як
gapу Flexbox та Grid,minmax()у Grid? - Псевдокласи (
:hover,:focus,:focus-within,:focus-visible) і псевдоелементи (::before,::after,::first-letter,::selection), їхній вплив на структуру. - Як правильно забезпечити однаковий вигляд сайту в різних браузерах без додаткових reset/normalize? Чи знаєте ви про використання
user-agentстилів та як їх враховувати? - Mobile-first чи desktop-first стратегія: як почати писати медіазапити (
@media) й за яким принципом? Чи використовували ви медіазапити для різних типів пристроїв (наприклад, друк)? - CSS-анімації, transitions,
@keyframes– як додати динамічності без використання JS? Які переваги та недоліки використання CSS-анімацій порівняно з JavaScript-анімаціями? - Застосування препроцесорів (Sass/SCSS), змінних і міксінів для зручності розробки. Чи знайомі ви з можливостями сучасного CSS, які частково перекривають функціонал препроцесорів (наприклад, CSS Custom Properties)?
- Методології верстки (BEM, OOCSS, SMACSS) та їх переваги. Чи використовували ви інші підходи або власні напрацювання для організації CSS?
- Що таке логічні властивості CSS (logical properties) та які переваги їх використання для інтернаціоналізації (наприклад,
inline-start,block-end)? - Поясніть концепцію
container queries. В яких випадках вони можуть бути корисні та чи використовували ви їх на практиці? - Як ви оптимізуєте CSS для покращення продуктивності вебсторінки? (Наприклад, мініфікація, стискання, Critical CSS).
- Які сучасні CSS-функції ви знаєте та використовуєте (наприклад,
calc(),min(),max(),clamp())? Наведіть приклади їх застосування. - Розкажіть про різні одиниці вимірювання в CSS (
px,%,em,rem,vw,vh,vmin,vmax,ch,ex). Коли яку краще використовувати? - Чи знайомі ви з властивістю
aspect-ratioі як вона може допомогти у верстці? - Як ви підходите до стилізації компонентів? Чи використовуєте ви якісь специфічні підходи або бібліотеки для цього (наприклад, CSS Modules, Styled Components – хоча останнє більше відноситься до React, але розуміння підходів важливе)?
- Що таке Shadow DOM у контексті CSS і як він впливає на стилізацію веб-компонентів?
- Чи використовували ви такі псевдокласи як
:where()та:is()? В чому їхня користь? - Як ви забезпечуєте доступність елементів за допомогою CSS (наприклад, стилізація фокусу, приховування елементів для візуального відображення, але не для скрінрідерів)?
Хочете перевірити, як добре ви орієнтуєтесь у темі? Спробуйте пройти тест з HTML та CSS.
JavaScript
JavaScript – основна мова програмування для динамічного контенту на стороні клієнта. Важливо розуміти як базові, так і просунуті концепції.
Можливі запитання по JavaScript
- Примітивні типи даних і об’єкти, різниця між
nullтаundefined. Які ще типи даних існують в JavaScript? - Оператори порівняння: чому
==і===поводяться по-різному? Коли який оператор краще використовувати? - Замикання (closures): що це і де застосовується? Наведіть практичні приклади використання замикань.
- Контекст виконання (
this), способи його зміни (call(),apply(),bind()). Що відбувається зthisу стрілкових функціях? - Поняття hoisting (підняття змінних і функцій). Яка різниця між підняттям
var,letтаconst? - Як працює Event Loop: черги callback’ів, microtasks (Promises) та macrotasks (setTimeout). Поясніть різницю між microtasks та macrotasks.
- Promise та async/await: основи асинхронного програмування в JS. Як обробляти помилки в асинхронному коді? Чи знайомі ви з
Promise.all(),Promise.race(),Promise.allSettled()? - ES6+ можливості:
let,const, стрілкові функції, spread та rest оператори, деструктуризація. Наведіть приклади використання цих можливостей. Які нові можливості з’явилися в пізніших версіях ECMAScript (наприклад, ES2019+)? - Прототипне наслідування, класичний синтаксис
class. Як працює прототипний ланцюжок? Яка різниця між класами в ES6 та прототипним наслідуванням? - Чим різняться function declaration та function expression? Коли яку краще використовувати?
- Чому
Number.MIN_VALUE > 0дає true? Поясніть особливості представлення чисел з плаваючою комою в JavaScript. - Сфера застосування WeakMap, WeakSet. В чому їхня відмінність від
MapтаSet? - Що таке Immediately Invoked Function Expression (IIFE)? Для чого вони використовувалися раніше і чи актуальні зараз?
- Розкажіть про поняття Higher-Order Functions. Наведіть приклади їх використання (наприклад,
map,filter,reduce). - Що таке Pure Functions і чому вони важливі?
- Поясніть концепцію Immutability в JavaScript. Які переваги її використання?
- Як працює збирання сміття (Garbage Collection) в JavaScript?
- Які ви знаєте Web API, які часто використовуєте у фронтенд розробці (наприклад, DOM API, Fetch API, Web Storage API)?
- Як ви оптимізуєте JavaScript код для покращення продуктивності вебсторінки? (Наприклад, уникнення глобальних змінних, делегування подій, throttle та debounce).
- Як ви обробляєте помилки в JavaScript коді? Чи використовуєте ви блоки
try...catch? - Розкажіть про модулі в JavaScript (ES Modules). Яка різниця між
importтаrequire? - Чи знайомі ви з процесами транспіляції та бандлінгу в JavaScript (наприклад, з використанням Babel та Webpack)? Для чого вони потрібні?
- Як ви пишете тестувальний JavaScript код? Чи використовуєте ви якісь фреймворки для тестування (наприклад, Jest, Mocha)? (Це питання може бути як перехід до розділу про тестування, так і для оцінки навичок написання якісного коду).
- Що таке Event delegation і які переваги вона дає?
- Розкажіть про поняття Memoization та як його можна реалізувати в JavaScript.
React
React – одна з найпопулярніших бібліотек для побудови інтерфейсів. Часто запитують про ключові концепції та best practices.
Можливі запитання на співбесіді по React
- JSX: синтаксис та відмінності від HTML, що відбувається під час компіляції? Які існують особливості написання JSX?
- Функціональні та класові компоненти: коли і що варто використовувати? Які переваги функціональних компонентів з хуками?
- Життєвий цикл (для класових компонентів):
componentDidMount(),componentDidUpdate(),componentWillUnmount()тощо. Поясніть призначення кожного методу. - React Hooks: як працюють
useState,useEffect,useContext,useMemo,useCallback,useRef,useReducer,useImperativeHandle,useLayoutEffect,useDebugValue? Наведіть приклади їх використання. Як створювати власні хуки? - Управління станом: Redux, Context API, MobX, Zustand, Recoil тощо. Порівняйте різні підходи до управління станом. Коли який підхід краще використовувати?
- Оптимізація продуктивності:
PureComponent,React.memo, мемоізація, віртуалізація списків. Які ще існують способи оптимізації React-додатків? - React Router: базові принципи, динамічні шляхи, захищені маршрути, навігація. Як працюють хуки
useParams,useLocation,useNavigate? - Controlled vs. Uncontrolled компоненти: різниця та застосування у формах. Коли краще використовувати
refдля доступу до DOM-елементів? - Code Splitting і Lazy Loading: підхід для оптимізації завантаження. Як реалізувати lazy loading компонентів та роутів?
- Server-Side Rendering (SSR) та Next.js: основні переваги та принципи роботи. Чи маєте досвід роботи з SSR у React?
- Тестування React-компонентів: які інструменти та підходи ви використовуєте (наприклад, Jest, React Testing Library, Enzyme)? Як писати юніт-тести та інтеграційні тести для React-компонентів?
- Як ви підходите до стилізації React-компонентів? Чи використовуєте ви CSS Modules, Styled Components, Tailwind CSS або інші підходи?
- Що таке Error Boundaries і як вони допомагають у обробці помилок в React-додатках?
- Як ви працюєте з формами в React, включаючи валідацію та обробку відправки?
- Розкажіть про концепцію Component Composition в React. Наведіть приклади її використання.
- Чи знайомі ви з React Context API для передачі даних між компонентами без пропсів?
Angular
Angular – фреймворк для побудови великих SPA з комплексною структурою. Ключові моменти – розуміння архітектури, DI, RxJS.
Можливі запитання на співбесіді по Angular
- Структура додатка: модулі (
NgModule), компоненти, сервіси. Розкажіть про призначення кожного елемента. Що такеFeature ModulesтаShared Modules? - Dependency Injection: як працює, рівні видимості (
root,platform,any,@Injectable()). Що такеprovidersв Angular? - Шаблони: одностороння та двостороння прив’язка,
*ngIf,*ngFor,*ngSwitch. Розкажіть про різні типи директив в Angular (компонентні, структурні, атрибутні). - Життєвий цикл компонентів:
ngOnInit,ngOnChanges,ngOnDestroy,ngAfterViewInit,ngAfterContentCheckedтощо. Поясніть призначення кожного хука. - RxJS: Observables, популярні оператори (
map,switchMap,mergeMap,takeUntil,filter,debounceTime,forkJoin). Поясніть, що такеSubject,BehaviorSubject,ReplaySubject,AsyncSubject. - Як очищати підписки (
Subscriptions) під час unmount компонента? Які існують найкращі практики для управління підписками в Angular? - Форми: Reactive Forms vs. Template-driven Forms, валідатори (синхронні та асинхронні). Коли який тип форм краще використовувати?
- Маршрутизація (Routing): lazy loading, guards (
CanActivate,CanDeactivate,CanActivateChild,CanLoad),ActivatedRoute,Router. Як передавати дані між роутами? - Change detection:
Defaultvs.OnPush, як це впливає на продуктивність. Коли варто використовувати стратегіюOnPush? - Принципи розподілу на smart і dumb компоненти (Presentational and Container Components). Які переваги такого підходу?
- Angular CLI: основні команди та їх використання для генерації коду, збірки та тестування.
- State Management в Angular: які підходи ви знаєте та використовували (наприклад, NgRx, Akita, NgXs, сервіси з RxJS)?
- Ahead-of-Time (AOT) Compilation: переваги та відмінності від Just-in-Time (JIT) компіляції.
- Interceptors: для чого вони використовуються та як їх реалізувати для обробки HTTP-запитів та відповідей?
- Resolvers: як використовувати
Resolveдля попереднього завантаження даних перед відображенням компонента? - Тестування Angular додатків: які інструменти та підходи ви використовуєте (наприклад, Jasmine, Karma, Spectator)? Як писати юніт-тести, інтеграційні тести та E2E-тести?
- Angular Universal (SSR): для чого використовується та які переваги надає?
- Як ви підходите до стилізації компонентів в Angular? Чи використовуєте ви Component Styles, Global Styles, або CSS-in-JS підходи?
- Що таке Angular Modules та для чого вони потрібні? Розкажіть про різні типи модулів.
- Як ви керуєте конфігурацією Angular-додатку в різних середовищах (development, production)?
Accessibility
Accessibility (доступність) важлива для забезпечення зручності користування для всіх, включно з людьми з обмеженими можливостями.
Можливі запитання на співбесіді по доступності:
- Як працюють screen readers, роль тегів та aria-* атрибутів у цьому процесі?
- Що таке
aria-hidden="true", відмінність відdisplay: noneчиvisibility: hidden? - Атрибут
altдля зображень: чому його важливо додавати? - Як забезпечити фокус і клавіатурну навігацію?
- Чому семантична розмітка важлива не тільки для SEO, а й для Accessibility?
SEO
SEO (оптимізація для пошукових систем) – це про видимість сайту в пошукових платформах. Розробник має знати основи, щоб код не заважав індексації.
Можливі запитання на співбесіді по SEO:
- Семантична структура сторінки та як вона впливає на індексацію.
- Метатеги (
<meta name="description">,<meta name="keywords">), їх роль у ранжуванні. - OpenGraph, Twitter Cards: як і навіщо використовувати?
- Schema.org, JSON-LD для розширених сніпетів у пошукових системах.
- Оптимізація швидкодії: мінімізація CSS/JS, правильне використання lazy loading.
- Динамічний контент (SPA) та його індексація пошуковими системами.
- Canonical URL і чому важливо уникати дубльованого контенту.
Тестування
Тестування забезпечує надійність та стабільність коду. Важливо знати, які є види тестів і коли кожен застосовується.
Можливі запитання на співбесіді по тестуванню:
- Unit-тести (Jest, Mocha, Jasmine): перевірка окремих функцій чи компонентів.
- Integration-тести: як перевірити взаємодію між модулями.
- E2E-тести (Cypress, Playwright): симуляція поведінки користувача в реальному браузері.
- TDD (Test-Driven Development) та BDD (Behavior-Driven Development): коли вони найефективніші?
- Застосування mock, spy, stub: у чому відмінності та коли що обрати?
- Налаштування CI/CD, щоб тести запускалися автоматично перед деплоєм.
- Перформанс-тестування (Lighthouse, DevTools): як оцінити швидкодію проєкту.
Задачі
Найкраще перевірити практичні навички на реальних або наближених до реальних завданнях. Завдання можуть бути як алгоритмічними, так і пов’язаними з маніпуляцією DOM.
Типові приклади завдань, які можуть задати на співбесіді Frontend розробника:
- Реалізація глибокого клонування об’єкта, щоб правильно копіювати вкладені структури.
- Порівняння двох об’єктів за ключами та значеннями.
- Унікальні значення в масиві без дублювання (наприклад,
[1,2,2,3,4,4] -> [1,2,3,4]). - Формування масиву без використання вбудованого
map(). - Сумування чисел у масиві з урахуванням наявності
null,undefinedчи рядків. - Розробка рекурсивної або ітеративної функції для розвороту рядка.
- Написання функції
isPrime(num)для перевірки простоти числа. - Рекурсивний підрахунок факторіала або чисел Фібоначчі.
- Реалізація базових методів
reduce,filter,reverseвласноруч. - Створення
debounceдля обмеження частоти виклику функції.
Отже
Співбесіда — ще один шанс перевірити свої знання, познайомитись із новими людьми, і лише опісля приймати рішення щодо нової роботи. Рекомендую разок на пів року так “тестувати” скіли, ну а перед цим “пройтись” по вказаних вище питаннях.