Співбесіда з Front-еnd розробником. 400+ запитань для Junior, Middle i Senior

За даними DOU, Front-еnd — одна з найпопулярніших категорій вакансій для фахівців з досвідом від 3 років. Медіанні зарплати у фронтендерів, за результатами цьогорічного опитування, становили $2900.

Ми зібрали список запитань для проходження співбесіди на позицію Front-еnd Developer рівня Junior, Middle та Senior. Для підготовки матеріалу ми поспілкувалися зі спеціалістами компаній, що працюють на українському ринку. Тож цей список містить різні погляди на проведення інтерв’ю. Вважайте його певним орієнтиром у підготовці, але пам’ятайте, що у кожній компанії відштовхуються від власних потреб і специфіки роботи. Попередні статті з рубрики шукайте за тегом 100 техпитань.

🎓 Junior Front-еnd Developer

Загальні питання

  1. Чи стежите ви за новинами у світі фронтенду? Як саме?
  2. Що відрізняє хороший код від поганого?
  3. Які HTTP-методи та статуси знаєте?
  4. У чому небезпека виконання коду, що надходить від користувача?
  5. Що таке ООП?
  6. Яка різниця між класом і абстрактним класом?

Основи HTML/CSS

  1. Що таке DOCTYPE і навіщо його використовують?
  2. Які основні теги структури HTML-сторінки?
  3. Що таке семантичні теги та навіщо вони потрібні? Наведіть приклади таких тегів.
  4. Що можете сказати про тег <br>?
  5. Які теги з найсвіжіших оновлень ви знаєте?
  6. У чому різниця між <div> і <span>.
  7. Що таке data-атрибути, в яких випадках їх використовуєте?
  8. Як використовують атрибути class та id? Яка різниця між класами та ідентифікаторами?
  9. Що таке внутрішні та зовнішні гіперпосилання і які вони мають атрибути?
  10. Що ви знаєте про SVG? Які є варіанти додавання SVG на сторінки сайту? Чим вони відрізняються?
  11. Як створити форму в HTML і забезпечити її валідацію?
  12. Які є типи списків у HTML? Що таке ul / ol / dl?
  13. Що таке iframe і для чого його використовують?
  14. Які методи відправки даних форми ви знаєте?
  15. Які основні відмінності між блоковими та вбудованими елементами в HTML? Як вони впливають на структуру сторінки?
  16. Які CSS-методології ви знаєте та які використовуєте самі? Обґрунтуйте вибір нинішньої методології.
  17. Що таке CSS-селектори? Наведіть приклади.
  18. Як працює наслідування в CSS?
  19. Що таке «модель коробки» в CSS і як її можна змінити?
  20. У чому різниця між margin і padding?
  21. Що таке Flexbox? Як реалізувати верстку за допомогою Flexbox чи Grid і який підхід найбільш доречний в якому випадку?
  22. Що таке медіазапити та як їх використовувати?
  23. Як можна приховати елемент за допомогою CSS? Чи однаково будуть працювати opacity: 0; display: none; visibility:hidden?
  24. Як можна зробити лого посередині екрана?
  25. Як розмістити хрестик для закриття справа зверху елемента?
  26. Як зробити останній елемент списку червоним, незалежно від довжини списку без JS?
  27. Які є можливості задати колір?
  28. Що таке z-index? Чи кожен елемент його має?
  29. Які переваги і недоліки використання CSS-препроцесорів?
  30. Які методи центрування елемента в CSS?
  31. Які методи вертикального центрування в CSS ви знаєте?
  32. Для чого існують різні рівні заголовків, якщо розмір можна встановити стилями?
  33. Які є варіанти позиціонування елемента на сторінці?
  34. Які бувають види display? Який використовуєте найчастіше? У чому особливість inline-block?
  35. У чому відмінність між position: relative та position: absolute ?
  36. Які одиниці розмірів є в CSS?
  37. Які ризики використання відʼємних значень для відступів?
  38. Що таке псевдокласи та псевдоелементи? В чому між ними різниця? Як ви використовуєте псевдокласи та псевдоелементи в CSS?
  39. Що таке адаптивний дизайн?
  40. Яка різниця між картинками, доданими через HTML-тег <img>, і CSS-властивістю background-image?
  41. Як ви вирішуєте проблеми з кросбраузерною сумісністю в розробці вебсайтів, зокрема в контексті різних версій браузерів?
  42. Як із врахуванням HTML і CSS забезпечити доступність сайту?
  43. Як реалізувати responsive design, використовуючи CSS?
  44. Поясніть концепцію CSS-змінних.
  45. Які властивості CSS впливають на швидкодію?
  46. Що зазвичай найбільше знижує показники швидкодії сайту?
  47. Як зробити дві колонки на CSS так, щоб одна розтягувалася, а інша — ні?
  48. Які плюси та мінуси CSS-анімацій порівняно з JS-анімаціями?
  49. Як можна перебити important або досягти схожого ефекту без important?
  50. Чи валідний цей HMTL? Виправте всі помилки. Розкажіть про валідність HMTL загалом.
  51. <ul>
    <a href="/some-url"><li>Some Link in Menu</a></li>
    <a href="/some-url"><li>Some Link in Menu</li></a>
    <ul>
  52. Що таке mobile-first підхід, які його переваги та недоліки?
  53. Поясніть, як обчислюється специфічність у CSS-селекторах.
  54. Для чого використовують пре-/постпроцесори?
  55. Назвіть типи інпутів у формах. Як відправити форму на сервер (без JS)?

Web Performance

  1. Що ви знаєте про Core Web Vitals?
  2. Чим відрізняються лабораторні та польові заміри перформансу?
  3. Які формати картинок знаєте, чим вони відрізняються?
  4. Ваш сайт довго завантажується на мобільному пристрої. Розкажіть крок за кроком, як будете шукати причину.
  5. Які інструменти використовуєте для оптимізації швидкості завантаження вебсторінки у роботі з HTML і CSS?
  6. Як ви оптимізуєте роботу зображень на вебсторінці для покращення продуктивності?
  7. Які методи оптимізації вебсторінок ви знаєте?

Основи JavaScript

  1. Перерахуйте типи даних у JS.
  2. Чим відрізняється масив та обʼєкт? У яких випадках що використовуєте?
  3. Events в JS. Розкажіть про event propagation, bubbling, delegation, preventing тощо.
  4. У чому різниця між var, let і const. У яких випадках що потрібно використовувати?
  5. Чи можливо перевизначити const?
  6. Чи відомі принципи DRY, KISS, YAGNI ?
  7. У чому відмінності LocalStorage від SessionStorage? Як ви використовуєте LocalStorage та SessionStorage в JavaScript? У яких випадках вважаєте їхнє використання доцільним?
  8. Що таке замикання (closure) в JavaScript і як воно працює?
  9. Що таке область видимості змінної?
  10. Що таке анонімна функція?
  11. Що таке стрілкова функція і як вона відрізняється від звичайної функції?
  12. Які методи перебору масивів ви знаєте?
  13. Що таке JSON і як працювати з ним у JavaScript?
  14. Як виконується асинхронний код у JavaScript?
  15. Як ви працюєте з асинхронним кодом у JavaScript без використання async/await? Які інші підходи ви розглядаєте для роботи з асинхронністю?
  16. Різниця між == і ===.
  17. Що таке прототип у JavaScript?
  18. У чому різниця між null та undefined?
  19. Що таке контекст? Як можна змінювати контекст виконання функції?
  20. Що таке Promise? У яких випадках ви ним користуєтеся?
  21. Які особливості об’єктноорієнтованого програмування у JavaScript?
  22. Як з JS-коду звернутись до HTML-елемента та змінити його текст?
  23. Що таке деструктуризація?
  24. Що буде, якщо звернутись до елемента, якого немає за індексом (const arr = [’a’, ’b’]; console.log(arr[20])?
  25. У чому різниця між for..of та for...in?

TypeScript

  1. Які основні відмінності між TypeScript і JavaScript?
  2. Які переваги та недоліки використання TypeScript?
  3. Що таке типи даних у TypeScript і як їх використовують?
  4. Розкажіть про інтерфейси в TypeScript і наведіть приклади їх використання.
  5. Як працюють Generics у TypeScript і чому вони корисні?
  6. Як можна використовувати Enums у TypeScript і які їхні переваги?
  7. Як TypeScript покращує безпеку типів проти JavaScript?
  8. Які можливості для рефакторингу та підтримки коду надає TypeScript?
  9. Що таке Decorators у TypeScript і в яких випадках їх використовують?
  10. Як у TypeScript використовують простори імен і модулі?
  11. Які стратегії міграції з JavaScript на TypeScript ви знаєте?

API браузера

  1. Що таке DOM?
  2. Як JavaScript взаємодіє з DOM?
  3. Що таке AJAX?
  4. Як виконати HTTP-запит за допомогою JavaScript?
  5. Що таке JSONP і як його використовують?
  6. Які є способи зберігання даних у браузері?
  7. Що таке обробка подій у JavaScript?
  8. Що таке event bubbling та event capturing у контексті обробки подій у DOM? Як використовуєте ці концепції для ефективної обробки подій?
  9. Що таке делегування подій у DOM, як ви використовуєте цей підхід для оптимізації обробки подій, особливо на великих сторінках?

Фреймворки та бібліотеки

  1. Навіщо використовують фреймворки, які їхні переваги та недоліки?
  2. Чим варто керуватися у виборі фреймворку?
  3. Що таке компонентно-орієнтований підхід?
  4. У чому проблема керування станом і які є підходи до її вирішення?
  5. Що таке віртуальний DOM?
  6. Які методи життєвого циклу компонентів ви знаєте?
  7. Як оптимізувати продуктивність рішень з використанням фреймворків?
  8. Що таке рендеринг на стороні сервера? Навіщо він потрібен, які бувають варіанти реалізації?
  9. Як взаємодіяти з API в межах бібліотек/фреймворків?
  10. Які особливості управління даними та маршрутизації?
  11. Які основні відмінності між Angular і React?
  12. Як ви розрізняєте класові та функціональні компоненти в React? В яких випадках вважаєте за доцільне використовувати той або інший тип компонента?
  13. Як можна оптимізувати продуктивність у React-застосунках? Які підходи використовуєте для уникнення надмірного рендерингу та для оптимізації часу завантаження компонентів?
  14. Як реалізуєте управління станом у React-застосунках? Які підходи використовуєте для підтримки читабельності та ефективного управління більш складним/глобальним станом?
  15. Як вирішуєте питання управління формами в React? Які підходи використовуєте для валідації та обробки форм?
  16. Як виконати код функції лише при першому рендері компонента?
  17. Як обробляєте події у React?
  18. Що таке React-хуки, які вбудовані хуки використовуєте?
  19. Яким умовам має відповідати функція, щоб бути хуком?
  20. Як ви робите серверний рендеринг у Next.js? Які переваги цього підходу бачите, у яких випадках вважаєте його найбільш доцільним?
  21. Що таке компоненти у Vue.js?
  22. Як працює директива ngIf в Angular?
  23. Є завдання порахувати коефіцієнт, який буде потрібен у компоненті і який залежить тільки від декількох констант у проєкті. Де його найкраще порахувати?

Основи мережі та протоколи

  1. Що таке HTTP і HTTPS, яка між ними різниця?
  2. Які основні методи HTTP-запитів (GET, POST, PUT, DELETE) і їхні відмінності?
  3. Що таке статус-коди HTTP, наведіть приклади найбільш поширених.
  4. Що таке REST API і які його основні принципи?
  5. Які засоби безпеки використовують під час роботи з вебзапитами?
  6. Що таке JSON і XML і чим вони відрізняються у використанні?
  7. Як працює механізм CORS (Cross-Origin Resource Sharing)?
  8. Що таке WebSocket і в чому його особливості порівняно з традиційними HTTP-запитами?
  9. Як функціонує кешування вебресурсів?
  10. Що таке SSL/TLS і як це використовують для реалізації безпеки?

Робота з бекендом

  1. Що таке API і як фронтенд взаємодіє з ним?
  2. Які є формати обміну даними між фронтендом і бекендом?
  3. Що таке CRUD-операції і як вони реалізуються на практиці?
  4. Як використовувати вебсокети для реалізації реального часу комунікацій?
  5. Які засоби аутентифікації та авторизації використовують у сучасних вебзастосунках?
  6. Які основні принципи безпечного зберігання та передачі користувацьких даних?
  7. Що таке GraphQL і в чому його переваги та недоліки порівняно з REST?
  8. Які стратегії кешування даних можуть бути використані у фронтенді?
  9. Як можна обробляти великі обсяги даних без негативного впливу на продуктивність фронтенду?
  10. Які інструменти і підходи використовують для моніторингу та відлагодження запитів до сервера?

Алгоритми та структури даних

  1. Що таке алгоритмічна складність і як її оцінювати?
  2. Розкажіть про основні структури даних, такі як масиви, списки, стеки та черги.
  3. Які алгоритми сортування ви знаєте і як вони працюють?
  4. Як реалізувати пошук у ширину та пошук у глибину на графі й де це потрібно на фронтенді?
  5. Що таке рекурсія, наведіть приклади її використання.
  6. Як можна оптимізувати алгоритми за допомогою мемоізації?
  7. Які алгоритми пошуку ви знаєте і як вони відрізняються один від одного?
  8. Як працює хеш-таблиця та які її переваги та недоліки?
  9. Розкажіть про алгоритми роботи з деревами, такі як двійкове дерево пошуку.
  10. Які алгоритми можна використовувати для пошуку найкоротшого шляху в графі?

Git і системи контролю версій

  1. Що таке система контролю версій і навіщо її використовують?
  2. Які основні команди Git ви знаєте і для чого їх використовують?
  3. Яка різниця між git merge та git rebase?
  4. Що таке commit у Git і як його правильно формувати?
  5. Як виправити помилки в попередніх комітах?
  6. Що таке гілки в Git і як їх ефективно використовувати?
  7. Як створити нову гілку в Git?
  8. Які стратегії вибору віток використовують у різних розробницьких процесах (наприклад, Git Flow)?
  9. Як використовувати теги в Git?
  10. Що таке конфлікт злиття і як його вирішити?
  11. Які найкращі практики роботи з віддаленими репозиторіями?
  12. Як використовувати .gitignore файл?

Тестування

  1. Чиєю відповідальністю є баг на продакшні — розробника чи тестувальника?
  2. Як ви тестуєте свій код? Чи писали код, який не можна було перевірити до деплою?
  3. Що таке ААА в тестуванні?

Accessibility

  1. Що таке вебдоступність?
  2. Як тестувати вебдоступність?
  3. Назвіть базові техніки створення доступних вебінтерфейсів.
  4. В яких випадках треба використовувати посилання, а в яких — кнопки?
  5. Який текст має міститися в атрибуті alt?

🎩 Middle Front-еnd Developer

Загальні запитання

  1. Назвіть принципи ООП.
  2. Поясніть кожну складову SOLID.
  3. Чому треба звертати увагу на складність алгоритму?
  4. На які сутності ви розділяєте файлову структуру на початку проєктування?
  5. Як ви розумієте, що настав час відокремити певну сутність у проєкті?
  6. Поверхово опишіть, як відбувається білд проєкту?
  7. Яка ваша улюблена технологія/інструмент/тег у розробці?
  8. Що ви робите, щоб код було легше підтримувати?
  9. Що таке рефакторинг і як ви його проводите?

HTML/CSS

  1. Що таке мікророзмітка?
  2. Що таке SEO? На що має звертати увагу розробник для забезпечення гарних SEO-показників у майбутньому?
  3. Які техніки організації іконок на сайті ви знаєте? Назвіть плюси та мінуси кожної.
  4. Як можна оптимізувати CSS для кращої продуктивності?
  5. Що таке «сучасний CSS», на вашу думку? Що із сучасного CSS ви використовуєте в щоденній роботі?
  6. Чим відрізняються змінні в SCSS і CSS Custom Properties? У чому перевага тих чи інших?
  7. Як ви вирішуєте конфлікти стилів при роботі з декількома фронтендерами на проєкті чи запобігаєте цьому?
  8. У чому різниця між transition і animation? В яких випадках що використовуєте?
  9. Потрібно додати кастомні стилі для скролбару. Як би ви це зробили?
  10. Які методи ізоляції стилів ви знаєте?
  11. Навіщо потрібні CSS Logical Properties? Чи використовуєте їх?
  12. Розкажіть про свій досвід використання CSS Grid Layout.
  13. Як працює CSS-функція clamp()? Назвіть корисні приклади її використання.
  14. Як оптимізувати стилі для друку на принтері?
  15. Які CSS-фреймворки ви знаєте? З якими з них працювали на проєктах? Які плюси та мінуси вони мали?
  16. Як ви працюєте з адаптивними та резиновими макетами? Як розглядаєте проблеми, пов’язані з різними роздільними здатностями екранів і пристроями?
  17. Як організовуєте CSS-стилі у великих проєктах? Чи використовуєте які-небудь методології?
  18. Як обираєте між використанням і не використанням препроцесорів CSS, таких як Sass чи Less, у своїх проєктах? Які переваги ви бачите у цьому?
  19. Як впроваджуєте концепцію «компонентного» підходу у вашому CSS-коді? Які стратегії використовуєте для створення повторно використовуваних і легко модифікованих компонентів у ваших стилях?
  20. Як семантична верстка впливає на доступність сторінки?
  21. На що впливає doctype?
  22. Які препроцесори CSS ви знаєте і які їхні переваги?
  23. Як зробити посилання, з якого можна завантажити прикріплений файл?
  24. Чому іноді translate краще за position:absolute під час написання стилів?
  25. Назвіть особливості та відмінності flex і grid? Чому віддаєте перевагу?
  26. Дублювання HTML/CSS для responsive design: плюси, мінуси, підводні камені.

Performance

  1. Які основні метрики вимірюють продуктивність сайту?
  2. Що таке Cumulative Layout Shift і як покращити його значення?
  3. Що таке Critical CSS?
  4. Як ви розробляєте анімації з погляду продуктивності, зокрема при використанні CSS або JavaScript?
  5. Які формати зображень краще використовувати у вебі? Які методи оптимізації зображень для вебу?
  6. Як управляєте інтеграцією сторонніх бібліотек або плагінів для зменшення впливу на продуктивність?
  7. Як реалізуєте lazy loading для зображень та інших ресурсів для оптимізації часу завантаження?
  8. Як використовуєте prefetching і preloading ресурсів для підвищення швидкості переходу між сторінками?
  9. У вас є сторінка галереї, на якій потрібно показати велику кількість відео з YouTube. Як би ви це реалізували так, щоб сторінка швидко завантажувалась?
  10. Вам потрібно відобразити таблицю на кілька тисяч рядків. Як би ви це втілили, щоб сторінка швидко завантажувалась і швидко реагувала на дії користувача?
  11. Як ви б організували завантаження великої кількості CSS-стилів на сторінці так, щоб користувач міг якнайшвидше взаємодіяти з нею, при цьому уникнувши зсуву макета?

JavaScript

  1. У чому різниця між LocalStorage, SessionStorage та cookies?
  2. Коли використовуєте Map та Set?
  3. Які знаєте способи, щоб виявити, чи перебуває елемент у viewport користувача?
  4. Що таке Service Workers, у яких випадках їх використовуєте?
  5. Що таке Websockets? Для чого вони потрібні?
  6. Як обробляєте помилки в застосунку?
  7. Що таке event loop? Як воно працює?
  8. У чому різниця між типами та інтерфейсами?
  9. Що таке модифікатори доступу?
  10. Що таке type guard?
  11. Яка мета створення abstract class?
  12. Які види обʼєктних моделей ви знаєте?
  13. Що таке поліфіли й для чого вони потрібні?
  14. Для чого використовують анонімні функції?
  15. Що таке ES6-модулі?
  16. Як використовуєте модульність у JavaScript для організації вашого коду?
  17. Які підходи використовуєте для уникнення конфліктів та забезпечення читабельності та масштабованості коду?
  18. Як ви оптимізуєте та працюєте з анімаціями в браузері? Які підходи використовуєте для досягнення високої продуктивності та плавності анімацій?
  19. Як реалізовуєте lazy loading великих ресурсів, таких як зображення або скрипти, для оптимізації завантаження сторінок? Як це взаємодіє з асинхронним кодом?
  20. Як використовуєте інструменти забезпечення якості коду, такі як ESLint? Як визначаєте та дотримуєтеся кодового стилю в проєкті?
  21. Як ви працюєте з архітектурою та патернами проєктування в JavaScript? Які конкретні патерни використовуєте для структурування коду та полегшення його розширення?
  22. Як би ви реалізовували відсотковий прелоадер на сайті, де треба завантажувати картинки, 3D-об’єкти та додаткові JSON-файли?
  23. Чи є у вас досвід з PWA?
  24. Що таке функції-генератори і яке їх практичне застосування?
  25. Розкажіть про всі способи використання оператора ’...’.

Фреймворки та бібліотеки

  1. Розкажіть про управління станом у Vue.js.
  2. Як реалізувати маршрутизацію (routing) в React?
  3. Як оптимізувати рендеринг компонентів у React?
  4. Як оптимізувати продуктивність у великих React-застосунках?
  5. З якими проблемами в React-компонентах часто стикались?
  6. Як ви управляєте станами в React APP? Як передавати стани між кількома компонентами?
  7. Які підходи використовуєте для lazy loading компонентів, управління станом і кешування даних?
  8. Що таке side effects? З якими інструментами є досвід?
  9. Як вирішуєте проблеми маршрутизації в складних React-застосунках? Які підходи використовуєте для організації маршрутів та управління структурою застосунку?
  10. Як обробляєте анімації в React? Як використовуєте CSS-анімації та бібліотеки для створення плавних і високопродуктивних анімацій?
  11. Як використовуєте архітектурні патерни (наприклад, Flux або Redux) для ефективного управління станом у React-застосунку? Які переваги та обмеження бачите в застосуванні цих патернів?
  12. Як оптимізуєте та масштабуєте Next.js застосунки для високого трафіку? Як вирішуєте питання кешування, CDN, інших аспектів продуктивності?
  13. Що таке ре-рендер компонента, коли він відбувається чи можна вплинути на цей процес?
  14. Що таке React Context, коли його використовуєте?
  15. Що таке мемоїзація в React та коли вона потрібна?
  16. Як виконати код перед видаленням компонента з дерева?
  17. У яких випадках використовуєте useReducer?
  18. Які UI-бібліотеки знаєте, у чому їхні переваги та недоліки?

Тести

  1. Для чого впроваджують тестування?
  2. Чи є випадки, коли тестування не є доцільним?
  3. Які види тестування знаєте?
  4. У чому різниця між е2е та unit-тестами?
  5. Які інструменти для автоматизації тестування знаєте?
  6. Як тестувати RESTful API?
  7. Що таке TDD?
  8. Як обираєте, чи покривати функціонал тестами?
  9. Як виявляєте та ізолюєте помилки в коді? Які інструменти для відладки використовуєте?

Accessibility

  1. Які рівні доступності знаєте? Чим вони відрізняються?
  2. Опишіть особливості імплементації навігації по сайту з клавіатури.
  3. Для чого використовують HTML5 Landmarks?
  4. Які проблеми з вебдоступністю трапляються в SPA-застосунках найчастіше?
  5. Дизайнер консультується з вами щодо дизайну майбутнього проєкту. Які поради в контексті доступності ви йому дасте?

👑 Senior Front-еnd Developer

Загальні запитання

  1. Якими необхідними знаннями та навичками потрібно володіти Senior-розробнику?
  2. Якою має бути робота та комунікації в команді розробників?
  3. Які методи оцінки та планування проєктів використовуєте?
  4. На що звертаєте увагу під час вибору технологій на проєкті?
  5. Як підходите до менторства та розвитку менш досвідчених розробників?
  6. Як впроваджуєте нові технології або практики в команду?
  7. Як вирішуєте конфлікти та проблеми в команді?
  8. Як буде виглядати фронтенд-розробка за два-три роки?
  9. Які з нових фреймворків ви пробували використовувати?
  10. Які маєте пет-проєкти, можливо, займаєтеся опенсорсом?
  11. Чи виступаєте на конференціях/мітапах?
  12. Чи ділитеся десь регулярно професійними думками, в яких спільнотах берете участь?
  13. Які порекомендуєте подкасти/канали/авторів?
  14. Які нові інструменти ви почали використовувати і можете порекомендувати?

HTML/CSS

  1. Які ви знаєте системи іменування класів? Чи взагалі використовуєте якісь?
  2. Як збираєте CSS?
  3. Чи доводилось працювати з Web Components? Що таке Shadow DOM?
  4. Чому деякі теги не мають псевдоелементів, наприклад img?
  5. Чи є місце для CSS-властивості float у сучасному вебі?
  6. Що таке адаптивна типографіка? Які техніки ви знаєте та використовуєте на своїх проєктах?
  7. Розкажіть про ваше бачення сучасного адаптивного вебдизайну: які існують альтернативи для media queries. Обґрунтуйте вибір одиниць виміру для брейкпоінтів та їх значення.
  8. У чому відмінність Node Sass від Dart Sass та які особливості міграції?
  9. Назвіть відмінності між @import, @use та @forward в Sass.
  10. Чи створюєте ви стайлгайди для своїх проєктів? Які техніки або інструменти використовуєте для цього?
  11. Які є альтернативи для overflow: hidden?
  12. Дизайнер наполягає на кастомізації стилів для всіх елементів складної форми. Які ваші дії?
  13. Які є кейси використання @media в CSS, окрім screen?
  14. Як вирішуєте проблеми з високим обсягом стилів і підтримкою великих кодових баз у великих проєктах? Які підходи та методології використовуєте для організації CSS-коду на рівні архітектури?
  15. Як оптимізуєте завантаження сторінок, зокрема використання Critical CSS та інших стратегій для зменшення часу до першого байту та часу до відображення?
  16. Розкажіть про ваш досвід використання препроцесорів CSS (наприклад, Sass або Less) та інших інструментів для автоматизації завдань під час розробки великих проєктів.
  17. Як вирішуєте завдання кросбраузерної сумісності на етапі розробки та як уникнути непорозумінь між розробниками та QA-командою під час тестування на різних браузерах?
  18. Як реалізуєте server-side rendering (SSR) або static site generation (SSG) із CSS-in-JS, перед якими викликами ви можете постати в цьому контексті?
  19. Яку нову фічу в CSS (з тих, що зараз перебувають на стадії розробки або імплементації в деяких браузерах) ви очікуєте найбільше? Чому саме цю?
  20. Уявіть, що ви дізналися про свій майбутній проєкт. Це великий публічний мультимовний сайт з арабською та японською мовами включно. На проєкті вам будуть допомагати два джуніор-фронтендери. Опишіть, як ви сплануєте CSS-архітектуру та підготуєте своїх джунів для такого проєкту.
  21. Вам потрібно зробити галерею картинок, які мають плавно гортатись при скролі вбік усередині галереї. Як би ви це реалізували? Чи можливо це зробити без JS?

Performance

  1. На умовному сайті є кастомний декоративний шрифт, який негативно впливає на продуктивність. Назвіть усі можливі варіанти його оптимізації.
  2. Уявіть, що є старий проєкт на підтримці (не JS-стек, бек на PHP-фреймворку), який перекинули на вас з іншої команди. Завдання: максимально оптимізувати фронтенд-проєкту, вклавшись у бюджет і 16 годин. Опишіть вашу стратегію оптимізації та кроки в межах означених обмежень.
  3. У чому особливість підготовки та під’єднання фронтенд-асетів залежно від використання HTTP1 або HTTP2 на сервері?
  4. Чи ознайомлені ви зі складанням бюджету продуктивності (Performance Budget)? Як ви розумієте це поняття?
  5. Що таке DOM Reflow, Repaint, Composite? Як це працює?

JavaScript

  1. Як паралельно пройтись по масиву Promises? А послідовно?
  2. Що таке Symbol? Яке його практичне застосування?
  3. Наведіть приклади реалізації патерну Observer у браузері.
  4. Наведіть приклади сценаріїв, які можуть призвести до витоку пам’яті у клієнтському коді.
  5. У чому різниця між Websockets і Server Send Event?
  6. Розкажіть про Service Workers.
  7. Як працювати з WebSockets для реалізації двостороннього зв’язку?
  8. Якщо якась анімація на сайті повільна (низький FPS), як дізнатися причину? Які причини бувають?
  9. Які способи організації коду/патерни використовуєте і чому?
  10. Які є варіанти зберігання даних на клієнті?
  11. Як би ви реалізували кешування на клієнті? Коли це доречно?
  12. Як ви реалізуєте аутентифікацію та авторизацію (якщо є) у вашому застосунку? Як ви дбаєте про безпеку та управління правами доступу на клієнтській та серверній стороні?
  13. Як ви використовуєте code splitting та lazy loading у коді для оптимізації завантаження сторінок та ресурсів? Як це впливає на продуктивність застосунку?
  14. Як ви реалізуєте автоматичне тестування під час розробки? Які інструменти використовуєте для unit-тестування, інтеграційного тестування та тестування взаємодії?
  15. Є завдання передавати дані між двома різними вебсайтами. Які є способи це робити? А якщо тільки client side? Якщо ми маємо доступ до коду обох сайтів? Якщо один показується на іншому через iframe? Якщо ж ми не маємо доступу до одного з них?

Фреймворки та бібліотеки

  1. Що нового зʼявилось у 18-й версії React?
  2. Як тримати посилання на функцію з актуальними параметрами, але не викликати useEffect зайвий раз?
  3. У чому різниця між useLayoutEffect та useEffect, у яких випадках що використовуєте?
  4. Розкажіть про хук useTransition.
  5. Які патерни з React ви знаєте?
  6. Наведіть приклад React-патерну Compound components.
  7. Чи потрібні бібліотеки для state management, якщо є бібліотеки для кешування (React Query/SWR) і React Context?
  8. Як обробляєте помилки у React-компонентах?
  9. Поясніть, що відбувається в цьому коді та в яких сценаріях він може бути корисним:
  10. const useHandler = (f) => {
      const ref = React.useRef(f);
      ref.current = f;
      return React.useCallback((...args) => ref.current(...args), []);
    };
  11. Як управляти глобальним станом у застосунках на Angular через ngrx/store?
  12. Як ви підтримуєте консистентність дизайну та стилізації великих кодових баз React-проєктів? Які підходи або інструменти використовуєте для підтримання єдності інтерфейсу користувача?
  13. Як ви структуруєте та організовуєте компоненти великих React-застосунків? Які підходи використовуєте для логічного розділення компонентів, повторного використання та підтримки коду?
  14. Як управляєте формами в React, зокрема використовуючи бібліотеки для форм, такі як Formik чи React Hook Form? Як обробляєте валідацію, маскування та інші аспекти форм?
  15. У вас є завдання відрендерити великий список (100к + items). Як би виконали це завдання?
  16. Оптимізація React-компонентів: що варто робити, а що ні? Чи варто і коли варто використовувати useMemo та useCallback?
  17. Як збираєте React-застосунок?
  18. Які інструменти використовували для state management і чому обирали саме їх?
  19. Чи використовуєте інкрементальну перевірку (incremental static regeneration) в Next.js для оновлення статичних сторінок на основі часових інтервалів або змін у даних? Як це впливає на продуктивність і кешування?

Тестування

  1. Чи є у вас досвід покриття великих систем тестами?
  2. Чи є у вас досвід кастомізації тестових утиліт під потреби проєкту.
  3. Як організовувати тестові дані та робити їх відповідними до різних сценаріїв тестування?
  4. Як інтегрувати процеси тестування в системи неперервної інтеграції та розгортання?
  5. Як варто автоматизовувати тестування? Які інструменти та мови скриптів використовуєте?
  6. Як забезпечити консистентність результатів тестування в різних середовищах (розробка, тестування, продакшн)?
  7. Як визначаєте, коли програмний продукт готовий до випуску? Які критерії «зеленого світла» для релізу використовуєте?
  8. Чи знаєте підхід chaos engineering, якщо так, то як його можна застосувати на фронтенді?

Алгоритми і структури даних

  1. З якими нетривіальними структурами даних ви працювали або які знаєте?
  2. Розкажіть про CRDT.
  3. Які алгоритми оптимізації використовували для підвищення продуктивності великих застосунків?
  4. Які алгоритми сортування вважаєте найбільш ефективними для обробки великих наборів даних?
  5. Як використовуєте динамічне програмування в реальних проєктах? Наведіть приклад.
  6. Розкажіть про практичне використання структур даних, таких як AVL-дерева або червоно-чорні дерева.
  7. Як можна реалізувати «глибоку заморозку об’єкта у JavaScript»?
  8. Як можна реалізувати серіалізацію об’єкта, який містить циклічні посилання?
  9. Як можна реалізувати Virtual DOM аналогічно реалізації в React?

Архітектура

  1. За якими характеристиками оберете фреймворк для нового проєкту?
  2. За якими характеристиками оберете UI-бібліотеку для нового проєкту?
  3. Що таке сигнали, як вони реалізовані у різних фреймворках?
  4. Які переваги та недоліки монорепозиторіїв проти використання різних репозиторіїв?
  5. Опишіть CI/CD-процес у нинішньому проєкті.
  6. Що таке мікросервісна архітектура і її переваги порівняно з монолітною?
  7. Як ви б дизайнили систему для високої доступності та масштабування?
  8. Які патерни проєктування ви знаєте і де їх застосовувати?
  9. Які є стратегії масштабування вебзастосунків?
  10. Розкажіть про Single Page Application, його переваги та недоліки.
  11. Які архітектурні патерни вебзастосунків використовували та які їхні переваги?
  12. Як варто розробляти масштабовані та високопродуктивні фронтенд-системи?
  13. Чи ознайомлені ви з архітектурою мікрофронтендів? Можливо, знаєте конкретні реалізації?
  14. Як підтримувати баланс між готовими рішеннями та розробкою власних рішень у проєктах? Як варто ухвалювати рішення щодо вибору?

Безпека

  1. Як подбати про безпеку вебзастосунків?
  2. Поясніть принципи Cross-Site Scripting (XSS) і Cross-Site Request Forgery (CSRF) атаки та способи захисту від них.
  3. Які найкращі практики для забезпечення безпеки API?
  4. Розкажіть про захист від SQL-ін’єкцій.
  5. Що таке CORS і як його правильно налаштувати?
  6. Як керувати секретами у проєктах?
  7. Якби вас попросили скласти чекліст з безпеки для проєкту, то як би він був?

Accessibility

  1. Що таке ARIA, які її основні ролі, стани та властивості?
  2. Опишіть створення доступного модального вікна з нуля. Які є варіанти і на що треба звернути увагу?
  3. Чи знаєте ви особливості законодавства щодо вебдоступності в країнах основних клієнтів (Штати, ЄС, UK, Канада, Україна)?
  4. Уявіть, що я — клієнт, який нічого не знає про доступність і ніколи про це не замислювався. Переконайте мене, чому доступність — це важливо і чому я маю витрачати на це додаткові гроші.

Дякуємо за технічну рецензію і запитання В’ячеславу Колдовському (Competence Manager y SoftServe, автор проєкту Programming Mentor) і Вадиму Олійнику (Front-end Tech Lead), а також за надані запитання Юрію Артюху (CTO у фронтенд-агенціі Coderiver), Вадиму Олійнику (Front-end Tech Lead), Олександру Микуличу (Front-end Guild Master в SKELAR), Сергію Коржу (Technical Lead у Namecheap, Inc), Олександру Смолянінову (Front-end Director в Digital Silk), Лілії Карпенко (Soft Skills Trainer, SSE, Engineering Manager, Team Lead), Тетяні Мельник (Front-end/Tech Lead в Projector Institute), Віктору Галочці (Front-end Lead у Lift (Genesis Tech)), Олександру Гуленку (Front End Team Lead, Coro).

Читайте також: Front-end Developer: хто він та скільки заробляє. Аналітика DOU

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось22
До обраногоВ обраному27
LinkedIn



20 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Дякую доу за розстрільний список у кінці статті.

Очевидно питання не для однієї позиції, бо універсальних солдатів не існує. Хоча я і зустрічався з тими, хто такими себе вважає, але на практиці дуже швидко сиплеться.
М’яко кажучи, не вистачає питань по Angular, який типу топ 2 по популярності та номер 1 по можливостях.
Проте я собі статтю збережу на випадок, якщо треба буде терміново провести інтерв’ю, а під рукою нема питань. Просто буду черіпікати ті, що мені здаються кориснішими для актуальної позиції.

Розкажіть про CRDT.

Я таких питань навіть на співбесідах з бекенду не чув

Насправді дуже модна тема і вже кілька років як youtu.be/iEFcmfmdh2w

Цій так званій модній темі сто років в обід як виконалося... ;)

Є завдання передавати дані між двома різними вебсайтами. Які є способи це робити?

На дискетах фізично пересилати. Яке ТЗ — таке й рішення!

Яку нову фічу в CSS (з тих, що зараз перебувають на стадії розробки або імплементації в деяких браузерах) ви очікуєте найбільше? Чому саме цю?

Я не очікую нові фічі, я ще старі не зносив...

Як би ви реалізували кешування на клієнті? Коли це доречно?

Кешування чого саме? Це не доречно взагалі на клієнті.

Як ви реалізуєте аутентифікацію та авторизацію (якщо є) у вашому застосунку? Як ви дбаєте про безпеку та управління правами доступу на клієнтській та серверній стороні?

Ніяк. Авторизація й автентифікація на клієнті та безпека — ортогональні речі.

Які є альтернативи для overflow: hidden?

Немає альтернатив. Є схожі реакції, але альтернатив немає.

У чому різниця між <div> і <span>.

В буквах та їх кількості у назві.

Як можна зробити лого посередині екрана?

Стікер наліпити

У чому різниця між var, let і const. У яких випадках що потрібно використовувати?

99% дасть неправильну відповідь. Навіть ті, хто проводить опитування.

Як JavaScript взаємодіє з DOM?

Лілщо? Рукаобличчя...

За якими характеристиками оберете фреймворк для нового проєкту?

За умовами ТЗ.

Як працювати з WebSockets для реалізації двостороннього зв’язку?

Мовчки. Вебсокети люблять тишу.

Як можна реалізувати «глибоку заморозку об’єкта у JavaScript»?

Це принципово неможливо. ;)

Розкажіть про захист від SQL-ін’єкцій.

Через CSS?

Як варто розробляти масштабовані та високопродуктивні фронтенд-системи?

Пф-ф-ф... Не використовувати популярні JS фреймворки!

Розкажіть про Single Page Application, його переваги та недоліки.

Це треба годин 40 витратити, щоб все розповісти...

Як можна реалізувати Virtual DOM аналогічно реалізації в React?

Та як завгодно, головне запитання — навіщо?!

Гарні питання по HTML/CSS.
Не «не завалити питанням», а дати можливість порозмірковувати, показати знання/досвід.

Вопросы по Angular мощные :)

Event в JS... це не в джс а в Web API. Далі я не знаю React, то я типу не можу бути Senior? Загалом ці питання не щоб виявити знання кандидата, а показати наскільки людина яка представляє компанію, що наймає, не знає JS

Розкажіть про CRDT.
Як використовуєте динамічне програмування в реальних проєктах? Наведіть приклад.
Розкажіть про практичне використання структур даних, таких як AVL-дерева або червоно-чорні дерева.

Цікаві питання на інтерв’ю... Це типу познущатися над кандидатом якщо він ніколи не стикався з проблемами які потребують цих структур та алгоритмів?

Автори цих запитань, скоріш за все теж ніколи не використовували ці знання на практиці...

Автори запитань працюють на різних стеках і типах проектів і в зовсім різному контексті. І якщо мені алгоритми жодного разу не знадобилися, то я про них і не питаю на співбесідах, але по тому ж accessibility можу поганяти добряче, бо на наших проектах це важливо, плюс це все ж таки ще фронтенд. Просто формат статті такий, що намішано різного

Правильно, це все ще фронтенд. Але той, хто запитує такі запитання, мусить дати чітку відповідь в першу чергу собі, навіщо задавати такі запитання взагалі. Що вони показують? Рівень знань та вмінь? А от зузьки!

Інтерв’юеру не треба задавати всі можливі питання. Він мав би вибрати що конкретно треба для проєкту і як він бачить профіль кандидата в майбутньому. Перекваліфікований кандидат теж не ок, бо може бути задорогий.
Але загалом в інтересах кандидата знати/вміти більше, бо продати себе можна дорожче.
Конкретно по CRDT — це не нова тема, коллаборативні проєкти їх використовують вже не один рік, і якщо умовний сеньйор станом на сьогодні про це нічого не чув, то у мене для нього погані новини :)

коллаборативні проєкти

це доволі специфічна тема як на мене, то ж якщо не доводилось ніколи працювали в цій області, то звідки візьметься експертиза?

Тут я не згідний, бо є величезна кількість проєктів, на яких клієнти одночасно можуть модифікувати дані і CRDT — досить ефективний/модний спосіб вирішувати проблему. Це особливо для мобільного веб деву актуально, коли можлива робота в офлайні.
В ідеальному світі має бути так, що кандидат спочатку щось вивчає, а потім його допускають використовувати це на проєкті. Тому немає нічого поганого в тому, щоб сказати, що умовно з CRDT (чи будь-чимось іншим модним) мав справу сугубо теоретично та бавився з ним на умовному пет-проджекті.
Звичайно, що якщо воно не потрібне для проєкта і не передбачається, то інтерв’юер не маб би про це питати.
Але особисто для мене є ще такий показник — чи слідкує взагалі людина за якимись новинами/трендами, хоча б умовно про щось чула і готова пояснити навіщо воно треба? Не обов’язково знати в деталях все, просто коли зустрінеш проблему, то будеш знати про варіант її вирішення.
Ну і для бізнесу (особливо сервісного) важливо мати людей, що здатні працювати з новим/модним, бо ніщо так не рухає продажі, як переконання клієента що ми працюємо з cutting edge technologies :)

Ви спочатку кажете, що сіньор не сіньор якщо не знає про якусь специфічну спеціалізовану фігню, якій сто років вже як виконалося, її успішно забули те реанімували сучасні девелопери, та ще й хайпанули на цьому, а потім кажете, що це важливо більше для галерного бізнесу...

P.S. Я проект з розподіленим оновленням робив ще років 15 тому. Це не рокет сайнс.

Підписатись на коментарі