Работа

Подготовка к собеседованию
для фронтенд разработчика

!

Программирование. Вы должны свободно владеть хотя бы одним языком программирования, однако основной язык разработки фронтенда в Яндексе — JavaScript. Знание его основ необходимо, чтобы успешно пройти собеседование. Кандидат также должен уметь применять его хотя бы в одном окружении – на клиенте (в браузере, приложениях, расширениях и т.п.) или на сервере.

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

Алгоритмы и структуры данных. Мы рассчитываем на то, что вы знакомы со стандартными алгоритмами, включая разные методы сортировки и обхода графов. Нужно уметь давать оценку сложности и расходу памяти алгоритма в нотации big O. Вы должны быть знакомы с внутренним устройством стандартных структур данных JavaScript и знать вычислительную сложность основных операций над ними. Кроме того, нужно разбираться с особенностями асинхронного программирования. Дополнительным плюсом будет умение составлять бенчмарки и оценивать реальную производительность программных решений в зависимости от среды исполнения. Подготовиться вам поможет система Яндекс.Контест, где есть задачи, аналогичные тем, что мы используем на собеседованиях, а также видеоролики с нашими рекомендациями.

Как решать алгоритмические секции: помощь разработчикам, собеседующимся в Яндекс. Часть 1

Как решать алгоритмические секции: помощь разработчикам, собеседующимся в Яндекс. Часть 2

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

Фронтенд. У разработчиков интерфейсов широкий круг задач, поэтому необходимы знания в самых разных областях: JavaScript, HTML и CSS, протокол HTTP, механизмы работы браузера, способы и форматы передачи данных между клиентом и сервером, профилирование кода и оптимизации загрузки страниц, понимание механизмов обеспечения безопасности веб-приложений. Для подготовки и систематизации своих знаний можно использовать материалы, ссылки на которые приведены в конце страницы.

Архитектура. Вы должны уметь использовать хорошие практики проектирования в рамках создания или изменения текущих компонентов. Будет большим плюсом понимание таких концепций, как SOLID, KISS, DRY и т.п., а также знание их сильных и слабых сторон. Необходимо понимать, как создавать удобные программные интерфейсы и писать код, который легко использовать заново, изменять и тестировать.

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

1

Интервью по скайпу

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

2

Серия очных собеседований

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

3

Знакомство с командами

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

4

Приглашение на работу

После того как вы сообщите сотруднику службы найма о сделанном выборе, придётся ещё немного подождать — обычно от трёх до пяти дней, иногда чуть дольше. Когда всё будет готово, вам позвонит рекрутер, чтобы озвучить предложение Яндекса и подробно обсудить все условия. Если вас всё устроит, останется только согласовать дату первого рабочего дня.

!

Как повысить шансы на успех

Потренируйтесь писать код на бумаге

Во время собеседований часто приходится решать задачи без компьютера — на листочке или на доске. Стоит попрактиковаться заранее, чтобы не растеряться с непривычки.

Мыслите вслух

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

Не бойтесь спрашивать

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

Не стесняйтесь предлагать второе (третье, четвёртое…) решение

Первое решение не всегда самое удачное. Если вам пришло в голову, как его можно улучшить, — непременно скажите об этом, даже если задачу уже рассмотрели и отложили в сторону.

!

Полезные книги и ресурсы

Книги

  • Серия You Don't Know JS, Kyle Simpson
  • Speaking JavaScript, Axel Rauschmayer
  • «Секреты JavaScript ниндзя», Джон Резиг
  • JavaScript Enlightenment, Cody Lindley
  • «Чистый код: создание, анализ и рефакторинг», Роберт Мартин
  • «Секреты CSS», Леа Веру
  • Introduction to Algorithms, Thomas H. Cormen
  • Cracking the Coding Interview, Gayle Laakmann McDowell

Онлайн-материалы
http://shamansir.github.io/JavaScript-Garden/
https://academy.yandex.ru/events/frontend/
https://www.youtube.com/channel/UCMtlICYxr6Dz_PG9_SVqRYQ

Онлайн-задачи
https://www.codewars.com/
https://www.hackerrank.com
Яндекс.Контест