Меня зовут Максим Чеченёв, я фронтенд-разработчик уже почти девять лет. Работаю в компании MessageBird в Амстердаме и наставником на курсе «Веб-разработчик» в Яндекс.Практикуме. Ещё я веду канал в телеграме «Сеньор Разработчик».

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


Из чего состоит собеседование


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

Обычно собеседование можно разбить на три части:

  • знакомство,
  • технические вопросы и/или задание,
  • ваши вопросы.


Знакомство


Самая приятная часть. Здесь вы рассказываете о себе, а интервьюеры — о компании, продукте, позиции и должностных обязательствах. На этом этапе нет задачек и правильных ответов — беседа будет идти про ваш опыт, образование, увлечения.

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

Рассказ о себе


Представьте, вы пришли на собеседование в компанию, о которой мечтали. Рекрутер предложил вам чашечку кофе, спросил, как вы добрались, а после попросил рассказать немного о себе. Такой простой вопрос застал вас врасплох: «С чего начать, стоит ли рассказывать о своём образовании, хобби или рекрутеру важен только мой опыт?»

Здесь нет правильного ответа и чёткой схемы. Но есть несколько советов, на что стоит обратить внимание.

  • Подготовьте короткий рассказ о себе.
    Ответьте так, чтобы это не было длинной запутанной историей, но также и не: «Меня зовут Максим, я учился на программиста». Советую заранее потренировать рассказ на друзьях, семье или кошке.
  • Расскажите, чему вы обучались.
    Если обучение было непрофильное, поясните, как пришли в разработку.
  • Уделите время опыту в разработке.
    Если вы совсем начинающий разработчик — не страшно. В этом случае можно рассказать об учебных проектах.
  • Затроньте тему профильного хобби.
    Опишите проект, над которым вы работаете в свободное время. Даже если вам кажется, что проект простой, про него стоит рассказать. Это покажет вашу заинтересованность в разработке. Простой проект, который не решает грандиозных задач, куда лучше, чем пустой профиль на гитхабе.

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

«Почему вы хотите работать у нас?»


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

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

Будьте честны, но не наглейте. Недавно я собеседовал кандидата из Бразилии, который на вопрос: «Почему ты хочешь у нас работать?» ответил: «В Европе платят больше, чем в Бразилии». Несмотря на то, что это максимально честный ответ, это показывает, что ему всё равно, где работать и чем заниматься.

«Почему вам интересен фронтенд?»


Я лично люблю задавать такой вопрос: «Почему вам интересен фронтенд? Почему не бекенд, например?» — он отлично показывает заинтересованность и страсть кандидата.

Как не стоит отвечать: «Да я просто попробовал, вроде интересно».

Какой ответ понравится: «Мне нравится создавать удобные интерфейсы» или «Мне нравится дизайн и программирование, и фронтенд — это как раз то, что мне нужно».

«Сработаемся ли мы вместе?»


Компании обращают внимание на разные качества кандидата. Некоторым важно ваше умение работать в команде, другим — желание обучаться, а третьим — всё и сразу. Но обычно компании ищут такого человека, который будет с командой на одной волне. Чтобы это понять, я задаю уточняющие вопросы:

  • Чем вы увлекаетесь?
  • Чего вы ждёте от работы у нас?
  • Что хотелось бы прокачать в себе?
  • Какими достижениями вы гордитесь?

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



Такие вопросы помогают узнать вас лучше: о чём вы мечтаете и чем интересуетесь. Они могут показаться вам немного личными, это нормально. Но отвечая на эти вопросы честно, вы почувствуете, как обстановка разряжается, и вот вы уже готовы к следующему этапу — техническому интервью.

Техническое собеседование


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

Прежде всего внимательно изучите вакансию и требуемые технологии, которые в ней указаны. Если указан React — будьте готовы к вопросам об этой библиотеке. Если написано «Мы используем Vue», то React уже не так нужен.

Теоретические вопросы


Блок с теоретическими вопросами можно условно разделить на два: вопросы на знание основ JS, CSS и других инструментов и вопросы о том, как вы привыкли работать с кодом.

Вопросы на знание инструментов

Чтобы подготовиться к первому блоку, не лишним будет освежить в памяти базовую теорию JavaScript, к примеру:

  • Как работает наследование?
  • Что такое замыкание и зачем оно нужно?
  • Как искать элементы в DOM-дереве?
  • Как работает Event loop?
  • Что такое this-объект?
  • Что такое типы данных и как их сравнивать? Чем отличается == от ===? Что такое null и undefined?
  • Как работают методы .filter, .map, .reduce и зачем они нужны?
  • Что такое Promise, зачем нужен async/await?

Вопросов про HTML и CSS обычно меньше. Вас могут спросить: «Какой селектор сильнее — по ID или по классу?» или «Как выровнять элемент по центру?»

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

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

  • Зачем нужен React? Почему нельзя обойтись без него?
    Я ожидаю услышать, какие проблемы решает React, что такое Virtual DOM, об экономии времени и сил при написании приложения.
  • Зачем нужны различные методологии и подходы при работе с CSS?
    Мне не так важно, любит ли кандидат БЭМ, CSS Modules или css-in-js. Мне важно, что разработчик понимает, какие проблемы они решают.
  • На странице отображается больше тысячи позиций, и страница начинает тормозить. Как это лучше исправить?
    Здорово, если кандидат расскажет, например, о lazy loading или пагинации.

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

Вопросы о привычках в работе

Кроме вопросов на знание технологий вас могут спросить о том, как вы работаете, к примеру:

  • Когда код не работает, что вы предпринимаете сначала и как решаете проблему?
  • Как вы называете переменные и функции?
  • Как вы изучаете новые технологии и подходы? Что читаете?

Мой любимый вариант вопросов — вам рассказывают про проект или задачу, над которой команда уже работает или будет работать. Затем спрашивают, как бы вы сделали её и с чего бы начали. Здесь важно не просто рассказать, какие технологии вы бы использовали, но и активно задавать уточняющие вопросы: «Что уже готово? Какие сроки? Есть ли дизайн?»

Вас обязательно спросят: «Сколько бы времени у вас заняла эта задача?» Важно помнить, здесь нет правильного ответа. От вас не ждут точного ответа, но ждут адекватного. Ответ вроде «Сделаю за пару часов» покажет, что, возможно, вы переоцениваете себя.

Задание: что выполнит данный код?


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

Например:

let b = {};
let c;

b.b = 1;
c = b;
c.b = 2;

console.log('b.b =', b.b); // ?
console.log('c.b =', c.b); // ?

или

console.log(1)

const a = new Promise((resolve, reject) => resolve(console.log(2)))

a.then(res => console.log(3))

setTimeout(() => {
    console.log(4)
}, 0)

console.log(5)

// В каком порядке выведутся числа?

или


<style>
.green { color: green; }
.blue { color: blue; }
</style>
<div class="green blue">Раз</div>
<div class="blue green">Два</div>

//  Какого цвета оба элемента?

Такие задания проверяют, как вы понимаете основы JS или CSS. Например, как работают переменные и как они друг на друга ссылаются.

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

Задачи


Компании любят давать небольшую задачку (уровень “Easy” на LeetCode — например, вот такую), которую надо решить во время интервью. Чаще всего это небольшой алгоритм. Например, про работу со строками или с массивами.



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

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

Как готовиться к таким задачам?


Посмотрите задачи уровня “Easy” на leetcode.com, hackerrank.com или codewars.com. Не пытайтесь решить их все разом за один вечер. Делайте это по чуть-чуть — по одной-две задачи в день.

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

Ваши вопросы




Всегда, абсолютно всегда, готовьте вопросы. Помните, что не только вас собеседуют, но и вы собесeдуете компанию. Вам здесь работать и проводить минимум треть дня — спросите всё, что вам интересно.

Вас обязательно спросят: «Какие вопросы у вас есть к нам?»

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

Какой ответ понравится: «Над чем я буду работать, если вы меня наймёте?» Слушайте ответ и задавайте уточняющие вопросы. Узнайте про команду, как устроен процесс работы, есть ли код-ревью, будет ли кто-то обучать вас. Спросите про планы компании: какие проекты запускают? Какие сложности и вызовы есть сейчас?

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

Общие советы


  • Не опаздывайте. Звучит очевидно, но это может повлиять на всё дальнейшее общение. Даже если это удалённое собеседование, будьте на звонке за пару минут. Если опаздываете, то обязательно предупредите.
  • Внимательно изучите описание вакансии. Посмотрите на продукт компании, если он уже есть. Это поможет подготовиться к возможным вопросам и задачам по проектам компании.
  • Не молчите, даже если не знаете ответ на вопрос. Можно просто смело сказать: «Я не знаю, но я предполагаю вот так...» Даже если вы ошибётесь, это нормально. Вам нужно показать свой интерес и желание разобраться.
  • Не отвечайте слишком длинными фразами. В их середине можно легко потерять смысл того, что вы хотите сказать.
  • Освежите в памяти теорию.
  • Комментируете свои решения.
  • Задавайте вопросы.
  • Хорошо выспитесь накануне. Отдых куда полезнее выученной за ночь теории.


После собеседования


Вас пригласили на работу

В случае успеха всё просто: вы обсуждаете зарплату, дату начала работы и празднуете.

Вам отказали

В случае отказа нужно сохранять спокойствие. Да, это обидно, но примите отказ гордо и спокойно. Не стоит писать в ответ: «Это вы так себе компания, и вопросы у вас глупые, вообще я просто так зашёл к вам по пути в магазин». IT — слишком маленький мир, и вы никогда не знаете, с кем столкнётесь в будущем. Вместо этого попросите детальный отзыв, над чем вам следует поработать. Ведь всегда можно попробовать устроиться в эту компанию ещё раз через полгода–год.

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


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