Питання співбесіди з JavaScript, яких варто очікувати
Автор: Aaron Cao · Оновлено

Очікуйте основ: closures, event loop, this binding, прототипів і scoping зі var, let і const. Потім завдань з кодування, як-от реалізація debounce, розгортання масиву в плоский вигляд або написання утиліти для promise, а також тем із браузера, як-от event delegation. На співбесідах для senior додаються асинхронні патерни та продуктивність.
Які основи JavaScript запитують найчастіше?
Список запитань про JavaScript здається нескінченним, а проходження випадкових запитань — найповільніший спосіб його опанувати. Цей розділ звужує його до концепцій, до яких інтерв'юери повертаються майже в кожному раунді, тож ваша практика влучає в реальний розподіл. П'ять тем охоплюють більшість раундів:
- Closures: що захоплює функція, класичний баг зі змінною циклу, і чому працюють патерни модулів.
- Event loop: call stack, task queue і microtask queue, і в якому порядку друкуються логи в змішаному прикладі.
- this binding: типове, неявне, явне через call і apply, і чим відрізняються arrow function.
- Прототипи: пошук властивості вздовж chain, і у що компілюється синтаксис class.
- Scoping: var проти let і const, hoisting, і temporal dead zone.
Приведення типів при рівності == проти ===, truthiness, і методи масивів на кшталт map, filter і reduce доповнюють рівень скринінгу. Якщо ви можете пояснити вголос кожен пункт вище менш ніж за хвилину, раунд з основ витримано.
Які завдання з кодування варто практикувати?
Окрім концептуальних запитань, більшість раундів JavaScript включають коротке завдання з реалізації, яке виконується наживо. Повторюваний набір невеликий, і варто практикувати його, доки кожне завдання не займатиме хвилини, а не кілька спроб:
- Реалізуйте
debounceіthrottle, і скажіть, коли підходить кожен. - Розгорніть вкладений масив у плоский вигляд з рекурсією і без неї.
- Напишіть спрощену версію
Promise.all, яка робить reject при першій же помилці. - Побудуйте невеликий event emitter з on, off і emit.
- Зробіть deep clone об'єкта і назвіть випадки, які ваша версія пропускає.
Наприклад, кандидат на front-end позицію, який проходить співбесіду на mid-level роль, може отримати debounce як розминку, а потім його попросять під'єднати це до поля пошуку і пояснити, що відбувається із запитами, які ще виконуються. Справжнім тестом є саме уточнювальне запитання; інтерв'юери розширюють завдання, щоб побачити, де закінчується ваша модель мови.
Практика цього вголос перед інтерв'юером, який тисне далі, — це те, що змушує це закарбуватися; сторінка mock interview описує, як проводити сесії на час із уточнювальними запитаннями.
Як виглядають запитання про браузер і async?
Ролі, орієнтовані на браузер, додають ще один шар поверх основ мови. Event delegation — це стрижень: чому один listener на parent кращий за тисячу на children, як bubbling робить це можливим, і коли має значення capture phase. Batching оновлень DOM, layout thrash, і що запускає reflow, з'являються в раундах із продуктивнісним ухилом.
Запитання про async зійшлися до стандартної форми: фрагмент коду, що змішує setTimeout, ланцюжки promise і функції async, де потрібно передбачити порядок виводу. Відповідь залежить від порядку microtask проти macrotask, і інтерв'юерам важливіше чому, ніж сама послідовність. Обробка помилок через межі await, promise chaining проти nesting, і перегони запитів через Promise.race завершують цей набір.
Про те, чим ці раунди відрізняються між форматами coding, behavioral і system design, розказано в хабі типів співбесід.
Як практикуватися, щоб це спрацювало на реальному раунді?
Читання відповідей відчувається продуктивним, але майже нічого не переноситься на практику. Раунд усний, обмежений часом та інтерактивний, тож і практика має бути такою ж. Проводьте тренувальні сесії, де ви розповідаєте вголос під час набору коду, вас перебивають уточнювальними запитаннями, і ви працюєте проти годинника; саме цей тиск робить пригадування автоматичним. Набори, специфічні для ролей, для інших мов і стеків, є в хабі банків запитань.
Чесне зауваження: реальні раунди з JavaScript зазвичай відбуваються в спільному редакторі з видимим екраном, і proctored-оцінювання це записує. Асистент призначений для підготовки та практики поза цим, а не для екрана, яким діляться наживо. Там, де жива допомога легітимна, під час нерозділених телефонних скринінгів або ваших власних сесій підготовки, оверлей SubcueAI залишається локальним на вашому пристрої, і жоден бот не приєднується до дзвінка.