50 вопросов, ответы на которые нужно знать, отправляясь на собеседование на должность JavaScript-разработчика

0
2530
views

Перевод статьи «50 Things You Should Know Before Going to a JavaScript Developer Job Interview».

Вопросы для собеседования JavaScript-разработчика

Собеседования с разработчиками напоминают ситуацию на Диком Западе: никто на самом деле не знает, что происходит. Большинство рекрутеров не отличают Java от JavaScript. Но в их задачи входит найм разработчиков.

Работа разработчика сложная и интересная. При этом пройти собеседование может быть столь же легко, как войти в открытую дверь. А может быть и очень сложно, если вам выпадут какие-то особенно заковыристые задачи для решения на белой доске. Тут никогда не угадаешь.

К счастью, к технической части собеседования мы можем подготовиться, чтобы быть уверенными хотя бы в ней. Да, нам могут задать всякие идиотские вопросы, но, подготовившись, мы можем быть уверены, что на технические точно ответим.

Я собрал полсотни вопросов, на которые, по моему мнению, лучше подготовить ответ до того, как отправитесь на собеседование на должность JavaScript-разработчика.

Общие вопросы

Интервьюер задает эти вопросы, чтобы получше с вами познакомиться, узнать, как вы реагируете, мыслите, насколько хорошо вы впишетесь в коллектив компании.

Ответы на эти вопросы должны быть относительно краткими, поскольку особого веса они все равно не имеют.

Не нужно сразу выпаливать ответ: делайте паузы, чтобы хорошо обдумать вопрос. Эти вопросы, по идее, должны заставить вас «раскрыться», чтобы интервьюер увидел вашу суть.

  1. Чем вам нравится программирование? Что именно интересует вас в этом процессе?
  2. Что вы изучили вчера (на этой неделе)?
  3. Расскажите о вашей любимой среде разработки. Какую операционную систему, IDE, терминал вы используете? Почему вы выбрали именно их?
  4. Если бы в этом году вы могли освоить только одну технологию, что бы вы выбрали? Как именно вы бы работали над приобретением этого навыка?
  5. Как вы уладили последний спор с вашим непосредственным начальником? Как разрешился конфликт? Не дадите ли мне номер телефона вашего бывшего босса, чтобы я мог услышать его версию событий? (Последний вопрос это блеф, так что не уклоняйтесь от ответа. Ни у кого нет времени обзванивать ваших бывших начальников).
  6. Какими ресурсами и инструментами вы пользуетесь, какие форумы посещаете, чтобы узнавать о последних трендах фронтенд-разработки и дизайна? Есть ли у вас фавориты среди ресурсов, чем они вам нравятся?
  7. Если вы присоединяетесь к проекту, где команда использует табы, в то время как вы предпочитаете пробелы, что вы будете делать? Попытаетесь убедить команду использовать пробелы или вольетесь в общий поток и будете использовать табы?

    [Вопрос с подвохом] Самым правильным вариантом будет использование инструмента форматирования, например, Prettier. Таким образом при помещении в репозиторий весь код будет выглядеть одинаково, хотя вы продолжите использовать пробелы, а остальная команда – табы.

    Навязывание своего мнения команде испортит ваш образ командного игрока, а если вам в работе вопреки вашей воле и без солидной аргументации придется пользоваться табами, ваша мотивация снизится, и вероятность вашего ухода из команды возрастет.
  8. Можете ли вы описать свой рабочий процесс при создании веб-страницы? Каковы ваши первые 5 шагов при создании нового проекта?
  9. С какими техническими сложностями вы сталкивались в последнее время и как решили эту задачу?
  10. Какие действия вы предпринимали в ваших последних проектах, чтобы повысить поддерживаемость кода? Есть ли какие-то определенные парадигмы программирования, которым вы отдаете предпочтение? Может, функциональное программирование или разработка через тестирование?
Технические вопросы для собеседования JavaScript-разработчика

Технические вопросы

После знакомства и общих вопросов идут технические. Эти вопросы будут больше нацелены на фронтенд-разработку, но могут также включать и вопросы, касающиеся бэкенда, devops и решения проблем.

  1. Какие системы контроля версий вы знаете? Как вы делитесь кодом между проектами?
  2. Назовите 4 способа уменьшить время загрузки страницы.
  3. Что означает аббревиатура CORS? Для решения каких проблем CORS применяется?
  4. Объясните, что такое ARIA и читатели экрана. Расскажите, как сделать сайт доступным.
  5. Что делает doctype?
  6. Что за строительные блоки есть в HTML5?
  7. Объясните разницу между localStorage, cookies и sessionStorage.
  8. Для чего хороши атрибуты data-?
  9. К чему следует относиться с осторожностью, проектируя или разрабатывая многоязычные сайты? Как обслуживать страницу с контентом на разных языках?
  10. Что такое прогрессивный рендеринг?
  11. Объясните, как в JavaScript работает this? Как this работает в классах, а как – в функциях?
  12. Опишите всплытие и перехват событий (event bubbling и event capturing).
  13. Объясните поднятие переменных (variable hoisting).
  14. Объясните разницу между:
    function Animal() {}
    var animal = Animal()
    var animal = new Animal()
  15. Чем отличаются собственные объекты (native objects) и объекты хоста (host objects)?
  16. Назовите типичный use case для анонимных функций.
  17. Поясните, как в JavaScript работает прототипное наследование (prototypal inheritance).
  18. Что такое замыкание (closure), зачем и как его использовать?
  19. В чем разница между null и undefined?
  20. В чем разница между == и ===?
  21. Что такое Webpack? Какие проблемы он решает?
  22. Случалось ли вам использовать фронтенд-фреймворк или библиотеку? Что это было?
  23. Что такое тернарный оператор (ternary operator)? На что указывает слово «тернарный»?
  24. Какие инструменты и приемы вы используете для отладки JavaScript-кода?
  25. Как вы выполняете отладку JavaScript-кода, который запускается на сервере, например, NodeJs?
  26. Каковы некоторые преимущества / недостатки написания кода JavaScript на языке, который компилируется в JavaScript?
  27. Как бы вы в таком коде реализовали функцию duplicate?
  28. Можете ли вы привести пример функции curry и пояснить, в чем преимущество этого синтаксиса?
  29. Можете ли вы привести пример деструктуризации объекта или массива?
  30. Кто изобрел JavaScript и почему язык назван именно так?
  31. В чем разница между этими двумя функциями?
// What's the difference? 
const sayHello = name => console.log(name) 
function sayHello(name) {
   console.log(`${name}`)
}
  1. Когда и зачем вам может понадобиться создать члены статических классов (static class members)?
  2. В чем разница между переменными, созданными при помощи let, var и const?
  3. Что происходит, когда вы заходите на какой-нибудь сайт? Что такое DNS?
  4. Что такое движок V8? Где он используется?
  5. Значение символа $ в JavaScript-коде.
  6. Объясните разницу между макетом (layout), прорисовкой (painting) и компоновкой (compositing).
  7. Какими способами можно улучить производительность прокрутки на сайте?
  8. Каким будет output следующего кода? (Интервьюер показывает код).
  9. Что представляет собой цикл событий (event loop) в JavaScript и что он делает?

Если вы знаете ответы на большинство этих вопросов, – прекрасно!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here