JavaScript

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

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

Skillbox

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

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

Большинство (современных) компаний осознают, что процесс собеседования с разработчиками работает не очень и нуждается в доработке. В этих компаниях мы и хотим работать. 

В этой статье я собрал 50 вопросов, к которым вам следует подготовиться, прежде чем идти на собеседование по JavaScript.

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

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

Не путайтесь в своих словах, делайте длинные паузы, чтобы тщательно обдумать ответы на вопросы. 

  1. Что вдохновляет или интересует вас в программировании?

2. Что нового вы узнали вчера/на этой неделе?

3. Расскажите о предпочитаемой среде разработки. Какуюоперационную систему, IDE и терминал вы используете и почему?

4. Если бы вы могли освоить одну технологию в этом году, что бы это было? Как бы вы осваивали новый навык?

5. Как на предыдущей работе вы решили последнее разногласие с вашим начальником? Чем все закончилось? Не могли бы вы дать номер вашего начальника, чтобы я мог проверить его версию? [Последний вопрос — блеф, ни у кого нет времени звонить вашему бывшему начальнику]

6. Какие ресурсы, форумы или инструменты вы используете, чтобы узнавать о последних тенденциях во фронтенд-разработке и дизайне? Есть ли среди них фавориты, какие и почему?

7. Если бы вы присоединились к проекту и команда разработчиков использовала табы, а вы пробелы, что бы вы сделали в таком случае? Вы попытаетесь убедить команду использовать пробелы или присоединитесь к толпе и будете использовать табы?

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

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

8. Можете ли вы описать свой рабочий процесс при создании веб-страницы? Какие первые пять шагов вы проделываете при создании нового проекта?

9. С какой технической проблемой вы столкнулись в последний раз и как вы ее решили?

10. Какие действия вы предприняли в отношении последних проектов, чтобы повысить удобство поддержки кода? Какие-либо конкретные парадигмы программирования, вроде функционального программирования или разработки через тестирование?

Теперь, когда мы закончили с общими вопросами, пришло время для финальной схватки. Это там, где на вас посыпятся технические вопросы.

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

11. С какими системами контроля версий вы знакомы? Как вы делитесь кодом между проектами без потерь?

12. Назовите четыре способа уменьшить время загрузки страницы.

13. Как расшифровывается CORS и к какой проблеме это относится?

14. Объясните, что такое ARIA и экранные считывающие устройства, а также как сделать веб-сайт доступным для людей с ограниченными возможностями.

15. Для чего используется doctype?

16. Перечислите структурные блоки в HTML5.

17. В чем разница между localStorage, файлами cookie и sessionStorage?

18. Для чего подходят атрибуты data-?

19. К каким вещам следует относиться с осторожностью при проектировании или разработке многоязычных сайтов? Как вы обслуживаете страницу с контентом на нескольких языках?

20. Что такое прогрессивный рендеринг?

21. Объясните, как работает this в JavaScript. Как работает this в классах и функциях?

22. Опишите, что такое всплытие и перехват событий (event bubbling и event capturing).

23. Объясните, что такое поднятие переменных.

24.Объясните разницу между:

  • function Animal() {}
  • var animal = Animal()
  • var animal = new Animal()

25.В чем разница между объектами хоста и нативными объектами?

26. Приведите типичный случай использования анонимных функций.

27. Объясните, как в JavaScript работает прототипное наследование.

28. Что такое замыкание и как/зачем вы его используете?

29. В чем разница между null и undefined?

30. В чем разница между == и ===?

31. Что такое Webpack? Какие проблемы он решает?

32. Вы когда-нибудь использовали фреймворк или библиотеку для фронтенд-разработки? Если да, то какие именно?

33. Почему условный (тернарный) оператор так называется? Что означает слово тернарный?

34. Какие инструменты и методы вы используете для отладки JavaScript кода?

35. Как вы отлаживаете JavaScript код, который выполняется на сервере, например Node.js?

36. Назовите преимущества/недостатки написания JavaScript кода на языке, который компилируется в JavaScript?

37. С учетом нижеприведенного кода, как бы вы выполнили функцию duplicate?

duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5]

38. Можете ли вы привести пример каррирования и рассказать, почему такой синтаксис дает преимущество? 

39. Можете ли вы привести пример деструктуризации объекта или массива?

40. Кто создал JavaScript и почему язык называется JavaScript?

41. В чем разница между этими двумя функциями?

const sayHello = name => console.log(name)

function sayHello(name) {
  console.log(`${name}`)
}

42. Для чего и когда создаются статические члены класса?

43. В чем разница между переменными, созданными с помощью let,varили const?

44. Что происходит, когда вы заходите на веб-сайт? Что такое DNS?

45. Что такое движок V8? Кто его использует?

46. Что означает$в JavaScript коде?

47. Объясните разницу между лейаутом, рисованием и композитингом. 

48. Как вы можете повысить FPS при прокрутке веб-сайта? 

49. Какой вывод у нижеприведенного кода?

let fs = require('fs');

console.log('1');

fs.readFile('test.txt', 'utf8', function(error, data) {
    if (error) {
         throw error;
    }

    console.log('2');
});

console.log('3');

50. Что такое цикл событий в JavaScript и для чего он нужен?

Спасибо за прочтение и удачи в программировании! ❤

Читайте также:


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