Корисне запитання з JavaScript має розкривати розуміння механізму, а не винагороджувати завчену фразу. Використовуйте ці групи, щоб тренувати пояснення того, що відбувається, чому це відбувається та як ви це перевірите.
Поведінка мови
- Як лексична область видимості та ланцюжок областей видимості впливають на замикання?
- Коли `this` залежить від місця виклику, а коли ні?
- Які помилки може викликати неявне приведення типів?
- Як прототипи підтримують делегування?
- Якими змінами, коли модуль оцінюється більше одного разу?
- Як дескриптори властивостей впливають на API?
- Коли буде корисний символ?
- Чим відрізняються поверхневі та глибокі копії?
- Що робить два значення, рівні під різними операціями рівності?
- Як пояснити часові мертві зони?
Асинхронний JavaScript і браузер
- Опишіть одну ітерацію циклу подій із завданням і мікрозавданнями в черзі.
- Як інтерфейс має скасовувати запит, що втратив актуальність?
- Що викликає необроблене відхилення Promise?
- Як обмежити кількість одночасних запитів у групі?
- Як два виклики можуть використовувати один запит, що вже виконується?
- Коли `Promise.allSettled` корисніший за `Promise.all`?
- Як запобігти заміні актуальних даних застарілими відповідями?
- Що має статися із записом у кеші, якщо функція завантаження відхиляє Promise?
- Як поводяться таймери в неактивній вкладці?
- Де у фронтенд-системі може знадобитися керування навантаженням через зворотний тиск?
Реалізація та перевірка
- Реалізуйте debounce з підтримкою скасування.
- Реалізуйте throttle та поясніть поведінку викликів на початку й наприкінці інтервалу.
- Створіть емітер подій із підтримкою відписки.
- Створіть кеш запитів із TTL та об’єднанням однакових запитів, що вже виконуються.
- Перетворіть вкладені дані на плоску структуру, не змінюючи вхідні дані.
- Напишіть допоміжну функцію повторних спроб із явно заданими умовами зупинки.
- Реалізуйте невеликий планувальник завдань з обмеженням кількості одночасних виконань.
- Нормалізація даних сервера на карту суб’єкта.
- Створіть допоміжну функцію мемоізації та опишіть обмеження скидання її кешу.
- Спроєктуйте тести для функції, що залежить від часу.
Обговорення на рівні Senior
- Де слід перевіряти дані під час виконання у типізованому фронтенді?
- Як розвивати спільний клієнтський API, не порушуючи сумісність із кодом, що його використовує?
- Що має бути доступним для спостереження на рівні запитів?
- Як дослідити тривале завдання в робочому застосунку?
- Коли виправдано використання Web Worker?
- Як межі збірок впливають на поведінку під час виконання?
- Як би ви спроєктували поступове зниження функціональності під час збоїв?
- Які припущення щодо безпеки ніколи не повинні існувати лише в клієнтському коді?
- Як забезпечити узгоджену обробку помилок, не приховуючи контекст?
- Якими обмеженнями веб-переглядача змінять вашу архітектуру?
Як практикувати питання
- Відповідайте в три кроки: механізм, конкретний приклад і компроміс.
- Пишіть код лише після опису контракту та важливих граничних випадків.
- Перевірити один випадок успіху, один крайовий випадок і один шлях провалу.
- Запис слабких пояснень як теми практики, а не запам'ятовування більш довгих сценаріїв.
- На завершення назвіть результати, які змінили б ваше рішення.
Основні джерела
Редакційна перевірка
Опис продукту звірено з його поточними можливостями. Знайшли помилку? Повідомте про помилку.