Cобеседование на позицию фронтенд-разработчика 13.11.2017

Итак, вы претендуете на позицию фронтенд-разработчика. Вы знакомы с современными фреймворками и что то даже применяли на практике, поэтому можете ответить на соответствующие вопросы.

Что же вообще могут спросить на собеседовании на позицию фронтенд-разработчика?

Верстка

Любой разработчик фронтэнд должен разбираться в вёрстке независимо от того придётся ли ему верстать самому или внедрять уже готовые шаблоны. Поэтому вы должны быть знакомы со стандартами HTML и CSS, как современными, так и их предшественниками. Ни один современный процесс разработки фронтэнд не обходится без использования препроцессоров CSS, поэтому вы должны быть знакомы по крайней мере с парой тройкой из них.

JavaScript

Если вы не разбираетесь в JavaScript, то скорее всего вы не фронтэнд-разработчик, а верстальщик. JavaScript нужно знать даже несмотря на то, что большую часть времени вы будете проводить внутри фронтэнд фрейморков. На данный момент, самым модным трендом является использование ES6, поэтому если вы работали только с ним, то вы должны уметь объяснить как ваш код запускается в браузерах, не поддерживающий этот стандарт. Соответственно, вы должны знать отличия стандартов ES6, ES5 и по-хорошему ES3. Знание JavaScript также подразумевает умение работать с наследованием на основе прототипов. Наряду с JavaScript, все большую популярность набирает TypeScript, поэтому так же неплохо было бы знать, что это такое.

Фреймворки и методологии

Большинство вакансий подразумевает умение кандидата разбираться в парe-тройке современных фронтэнд-фреймворках, библиотеках и методологиях, таких как React или Angular, Redux, BEM и т.д. Разбираться означает не только опыт использования, но и знание их ключевых идей, способов оптимизации их производительности и т.д. Для некоторых работодателей такие навыки являются ключевыми, так как будущему сотруднику дни и ночи напролет придется использовать именно эти знания.

Тестирование

Практика CI сейчас в моде, а CI практически бесполезно без автоматизированных тестов. Для кандидата станет большим плюсом, если он знаком с практиками unit-тестирования и применял их в реальных проектах. Если вы считаете, что разбираетесь в тестировании фронта, то вам должны быть знакомы такие инструменты как jest, jasmine, karma, chai и даже gemini и Selenium.

Системы сборки проекта

Ни один серьезный фронтенд проект никогда не попадает в бой непосредственно в том виде, в котором был написан. Его как минимум нужно упаковать и сжать. Поэтому вы должны уметь построить процесс сборки проекта и разбираться в таких утилитах как gulp/grunt, browserify/webpack/rollup, не путать их назначение и уметь объяснить различия между ними.

Системы контроля версий

Git, Mercurial, SVN. Куда же без них. Если вы претендуете на позицию в большой команде, то эти знания станут для вас полезными. По умению работать с системами контроля версий иногда достаточно просто оценить уровень кандидата.

Алгоритмы и структуры данных

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

Шаблоны проектирования

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

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

by 13.11.2017