Дано: JavaScript-разработчик middle уровня с упором на Angular ищет работу в Москве.
За две недели отправлено: 40 откликов на вакансии. Получено:
10 отказов, 3 тестовых задания, 2 скайп-собеседования, 7 очных собеседований, 4 оффера.


— У вас есть 10 лет опыта работы с AngularJS?
— Расскажите что-нибудь про ООП.
— В резюме вы называете себя JavaScript-разработчиком, вам не стыдно?
— Какой у вас MMR?
… и другие вопросы с собеседований — в этом рассказе.

Кто будет собеседовать


Скорее всего это будет HR и программист из мира классический языков, типа Java и C++. В лучшем случае у него анальная боль от этого вашего JavaScript'а, в худшем — он просто ненавидит JS и одинаково презирает PHP и JS-программистов. Как вариант, собеседование будет проводить руководитель отдела вместе с фронт-енд разработчиком, который знает JS на уровне jQuery. «Чистые» JS-разработчики меня собеседование только в двух фирмах.

Вопросы по JS


Если не учитывать разговоры «за жизнь», то собеседование начинается с вопросов по JS. Спрашивают про прототипное наследование, замыкания, область видимости переменных, контекст выполнения функции и т.п. стандартные вещи. Если понимаете, что происходит в этих двух статьях, то можете не беспокоиться.
После вопросов обычно идут бумажные тесты, которые можно найти в первой десятке Гугла по соответствующим запросам. Тесты с этих двух сайтов попадались почти в каждом собеседовании.

Вопросы по AngularJS


Дальше идут вопросы конкретно про Angular. Мне чаще всего задавали примерно следующие вопросы:
— Что такое AngularJS? Почему его так назвали? Кто и в каком году его разработал? Какие браузеры поддерживает Angular.
— Объясните, как вы понимаете data binding, scope, контроллер, сервис.
— Как создать собственную директиву, фильтр, шаблон, задать роутинг в AngularJS?
— Что такое фабрика? Разница между сервисом и фабрикой.
— Что такое dependency injection и как работает angular.module?
— Расскажите про все способы передачи данных из одного контроллера в другой.
— Что такое $apply и $digest?
— Какие инструменты применяются для тестирования AngularJS.

Тестовые задания


Всего было получено 3 тестовых задания, но все они были от наиболее интересных вакансий.
1. Необходимо разработать директиву — инпут для ввода MAC-адреса. В инпуте при вводе с клавиатуры: — не позволять вводить недопустимые символы, — буквы из нижнего регистра переводить в верхний, — расставлять двоеточия в нужных местах, — русские буквы заменять на аналогичные латинские (А, В, С, Е).
2. Две области на экране: в первой лежат шарики, вторая — пустая. Мышкой можно перетаскивать произвольное количество шариков из одной области в другую. После перетаскивания во вторую область шарик начинает летать, отскакивая от стен (границ области). Список дополнительного (необязательного) функционала:
— При обновлении странички текущее состояние (расположение всех шариков в областях) должно сохраняться и восстанавливаться. — Обработка столкновений шариков во второй области.
3. Необходимо реализовать дерево файлов. Базовый принцип работы идентичен навигации по каталогам в проводнике Windows. Источником данных выступает json-структура.

Что еще?


Кроме непосредственно JS, естественно требуются отличные знания HTML (с шаблонизаторами) и CSS (с препроцессорами). ES6 и CoffeeScript/TypeScript. Понимание принципов клиент-серверной архитектуры (REST, AJAX). Знание современного инструментария: Git; Require, Underscore, JSDoc, Karma (или чем вы там тестируете).

Комментарии (0)