Собеседование в яндекс: Работа в Яндексе – Как проходят алгоритмические секции на собеседованиях в Яндекс

Содержание

Как проходят алгоритмические секции на собеседованиях в Яндекс

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

Так что мы подготовили для вас следующие материалы:


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



Как мы собеседуем разработчиков

Собеседование любого разработчика состоит из нескольких этапов:


  • предварительная секция с рекрутером;
  • техническое скайп-интервью;
  • несколько очных секций;
  • финальные интервью с нанимающими менеджерами.

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

Очные секции — основной этап. Именно очные секции дают ответ на вопрос о том, что умеет кандидат. Алгоритмическая секция — одна из очных технических секций. Помимо алгоритмических, бывают и другие очные испытания: скажем, кандидаты в старшие разработчики обязательно проходят секцию по архитектуре, а будущие руководители ещё и отвечают на вопросы по управлению командами и проектами. Вообще, если у кандидата есть какая-то сильная сторона в специфической области (машинном обучении, низкоуровневой оптимизации, разработке высоконагруженных систем, мобильной разработке или любой другой) — мы обязательно организуем секцию с профильным специалистом.

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


Зачем писать код на доске или бумаге

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

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

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

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


Алгоритмические секции и спортивное программирование

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

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


Контест для подготовки к собеседованию

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

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


Разбор задач контеста

Задача A. Камни и украшения


Даны две строки строчных латинских символов: строка J и строка S. Символы, входящие в строку J, — «драгоценности», входящие в строку S — «камни». Нужно определить, какое количество символов из S одновременно являются «драгоценностями». Проще говоря, нужно проверить, какое количество символов из S входит в J.

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

Алгоритм достаточно простой: из строки с «драгоценностями» необходимо построить множество, затем пройтись по строке с «камнями» и каждый символ проверить на вхождение в это множество. Используйте такую реализацию множества, чтобы гарантировать линейную сложность полученного решения, несмотря на то, что входные строки очень короткие и поэтому возможно сдать даже квадратичный по сложности алгоритм.

Задача B. Последовательно идущие единицы


Требуется найти в бинарном векторе самую длинную последовательность единиц и вывести её длину.

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

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

Постарайтесь использовать лишь константный объём дополнительной памяти.

Задача C. Удаление дубликатов


Дан упорядоченный по неубыванию массив целых 32-разрядных чисел. Требуется удалить из него все повторения.

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

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

Задача D. Генерация скобочных последовательностей


Дано целое число . Требуется вывести все правильные скобочные последовательности длины , упорядоченные лексикографически (см. https://ru.wikipedia.org/wiki/Лексикографический_порядок). В задаче используются только круглые скобки.

Это пример относительно сложной алгоритмической задачи. Будем генерировать последовательность по одному символу; в каждый момент мы можем к текущей последовательности приписать либо открывающую скобку, либо закрывающую. Открывающую скобку можно дописать, если до этого было добавлено менее n открывающих скобок, а закрывающую — если в текущей последовательности количество открывающих скобок превосходит количество закрывающих. Такой алгоритм при аккуратной реализации автоматически гарантирует лексикографический порядок в ответе; работает за время, пропорциональное произведению количества элементов в ответе на n; при этом требует линейное количество дополнительной памяти.

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

Задача E. Анаграммы

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

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

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

Задача F. Слияние сортированных списков


Даны отсортированных в порядке неубывания массивов неотрицательных целых чисел, каждое из которых не превосходит 100. Требуется построить результат их слияния: отсортированный в порядке неубывания массив, содержащий все элементы исходных массивов. Длина каждого массива не превосходит .

Для каждого массива создадим по указателю; изначально каждый указатель расположен в начале соответствующего массива. Элементы, соответствующие позициям указателей, поместим в любую структуру данных, которая поддерживает извлечение минимума — это может быть мультимножество или, например, куча. Далее будем извлекать из этой структуры минимальный элемент, помещать его в ответ, сдвигать позицию указателя в соответствующем массиве и помещать в структуру данных очередной элемент из этого массива.

В этой задаче многие испытывают сложности с форматом ввода. Обратите внимание на то, что первые элементы строк не описывают элементы массивов, они описывают длины массивов!


FAQ по контесту

A: Я точно написал правильный код, но тесты не проходят; наверное, в них ошибка?
Q: Нет, все тесты правильные. Подумайте: вероятно, вы не предусмотрели какую-нибудь необычную ситуацию.

A: Я пишу на языке X, ему точно требуется больше памяти в задаче Y. Поднимите лимиты!
Q: Все лимиты выставлены таким образом, что решение возможно с использованием любого из доступных языков. Попробуйте проверить, не зачитываете ли вы случайно входной файл целиком в задачах со строгими лимитами по используемой памяти.

A: Некоторые задачи можно решить намного проще из-за указанных ограничений. Зачем вы так?
Q: Мы специально упростили ввод в некоторых задачах, чтобы участникам было проще сосредоточиться на реализации алгоритма и не думать, например, о скорости загрузки данных или каких-то других вещах, важных в спортивном программировании. Постарайтесь реализовать именно те алгоритмы, которые мы рекомендуем — только в такой ситуации вы получите от контеста максимальную пользу.

A: Не хочу проходить контест. Можно я не буду?
Q: Конечно! Контест не является обязательным к решению всеми кандидатами. Впрочем, я всё равно рекомендую его порешать: это в любом случае будет полезно.

A: Что ещё посоветуете для подготовки?
Q: Прочитайте наши советы на официальной странице про собеседования в Яндекс: https://yandex.ru/jobs/ya-interview. От себя добавлю, что решение задачек на leetcode.com является крайне полезным для любого практикующего разработчика, независимо от того, планирует ли он в ближайшее время проходить интервью или участвовать в соревнованиях по программированию. Даже небольшое количество практики позволяет почувствовать себя увереннее при решении рабочих задач.


Заключение

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

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

Такие секции отдают несправедливое преимущество спортивным программистам?
Спортивное программирование развивает в разработчиках некоторые очень полезные навыки, поэтому участники олимпиад по программированию, действительно, хорошо справляются с алгоритмическими секциями. Так что преимущество имеется, но оно является справедливым. Алгоритмическая секция является лишь одной из многих, поэтому у каждого кандидата будет достаточно возможностей для того, чтобы показать свои самые сильные стороны!

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

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

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

Работа в Яндексе

Программирование. Вы должны свободно владеть хотя бы одним языком программирования. Чаще всего разработчики Яндекса имеют дело с C++, Java и Python, но кандидат может попробовать пройти собеседование и не зная ни одного из них. Главное — быть хорошим программистом и хотеть учиться новому. Ошибок в вашем коде быть не должно, лучше написать неэлегантный код, но без ошибок, чем наоборот. Имейте в виду, что задачи, которые вам предложат, потребуют знания не только самого языка, но и его стандартных библиотек.

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

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

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

Структуры данных. Вы должны быть знакомы с внутренним устройством стандартных структур данных и знать вычислительную сложность основных операций над ними. На собеседовании вам точно пригодится знание хеш-таблиц, деревьев поиска, очередей с приоритетом. Во время подготовки стоит повторить способы представления графов в памяти и менее распространённые структуры данных, такие как фильтры Блума, префиксные деревья, k-d деревья.

Многопоточность. Без многопоточности невозможно представить себе ни один бекенд-сервис Яндекса, поэтому знания в этой области особенно важны. Мы рассчитываем, что вы знакомы с основными примитивами синхронизации, с моделью работы памяти современных архитектур и lock-free-операциями, умеете справляться с типичными проблемами, возникающими в многопоточном контексте.

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

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

Работа в Яндексе

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

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

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

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

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

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

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

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

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

Что спрашивают на собеседовании в Яндекс? — Хабр Q&A

Юзер без аккаунта попросил меня запостить его ответ:

«Я не так давно был на собеседовании в Яндексе, поэтому, если сочтете нужным выложить это в коммент, вот некоторые пункты собеседования:

сначала просто общие вопросы, чтобы узнать, откуда человек узнал о вакансии. Очень кривят лица, если сказать, что ты в то время просто массово рассылал резюме и тебе ответили из нескольких контор, включая Яндекс. Видимо, надо дать понять, что ты сразу шёл именно к ним. Иначе сразу -5 к успеху.
спрашивают о предыдущих местах работы. Если у тебя иная специальность (я — юрист по диплому, последние несколько лет занимаюсь сайтоделаньем, а пригласили меня на менеджера Яндекс. Почты после прохождения тестового задания), то будут спрашивать, почему вдруг решили сменить специализацию и поработать у них.
спросят, знаете ли Вы о существовании таск-менеджеров и умеете ли ими пользоваться;
если Вы приглашены на вакансию менеджера какого-либо сервиса (Почта-Карты и тп), будут подробно и долго спрашивать, что бы Вы изменили в этом сервисе (если приглашают на программиста общего профиля, будут задавать тестовые задания по специфике с привязкой к какому-нибудь своему сервису). Тут будет ошибкой активно восхвалять конкурентов (я надеялся на объективность и при вопросе „Какой почтой пользуетесь? И почему?“ я честно сказал „Гугловской“. И почему). Предложенные правки к сервису выслушали, кое-где поспорили, кое-что они потом поправили, судя по всему.
если Вы предложите свою идею для сервиса, нужно будет конкретно с нуля описать, как Вы её воплотите. В качестве правильно ответа процитирую менеджера (за точность не ручаюсь) „Вам надо было ответить так: во-первых, я нарисую примерный макет этой новой кнопки для интерфейса, потом пойду к проектировщику и поговорю с ним, чтобы решить, в какую часть страницы лучше вставить эту кнопку и какая это будет кнопка (чекбокс, ниспадалка, просто кнопка), после этого уже идти к программистам и как менеджер проекта объяснить им свои идеи с учетом ответа проектировщика.“
очень большое внимание уделяется а) насколько лично Вы понравитесь тому, кто проводит собеседование (Марина — это человек из отдела HR, она просто организует интервьб и присутствует на нём, но непосредственно проводить собеседование будет Ваш будущий коллега), б) насколько хорошо Вы чувствуете себя в команде.»

Как подготовиться к собеседованию на менеджера продукта — Академия Яндекса

Собеседование на новую работу — это всегда стресс. Но если вы понимаете, о чем вас, скорее всего, спросят, то волнение отходит на задний план. Менеджер Яндекс.Почты Илья Воробьев рассказал, из каких этапов состоит отбор кандидатов на позицию менеджера продукта, что нужно знать, чтобы успешно их пройти, и чем отличаются собеседования в Booking.com, в Google и в Яндекс.  

Изучите продукт, над которым вы собираетесь работать

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

Прокачайте свои знания о технической составляющей продукта

Не все компании ищут менеджера продукта, который одновременно мог бы стать и разработчиком, но базовые вещи лучше все-таки знать. Например, в Booking.com вы не увидите ни одного вопроса о технологиях, а в Google вам придется самостоятельно писать код вместе с программистами. В Яндексе всё зависит от команды, к которой вы попадете на собеседование. Мы, например, во время интервью не даем секцию с кодом, но обязательно говорим об архитектуре сервиса и ждем от кандидата, что он знает хотя бы SQL. Также на одном из этапов вам придется составить формулу для оценки идеи продукта — ведь прежде чем пару недель мучить вопросами аналитика, у которого наверняка полно своих задач, вы можете самостоятельно прикинуть, стоит ли оно того.

Проведите собеседование с самим собой по шаблонам интервью из открытых источников

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

Подать заявку в Школу менеджеров Яндекса

alt

Задавайте вопросы

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

Не бойтесь ошибиться

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

Подготовьте несколько историй о вашем прошлом опыте работы

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

Не стесняйтесь рассказывать, чему вас научил неудачный опыт

Не бойтесь рассказывать о провалах, от них никто не застрахован. 90% экспериментов либо не дают никакого эффекта, либо заканчиваются неудачно, поэтому умение учиться на собственных ошибках — практически самый важный скилл менеджера продукта. Более того, если вы правильно подадите историю, она наверняка сыграет вам на руку. Например, вы неверно провели A/B-тестирование — объясните, как и когда вы поняли, что ошиблись, какие действия предприняли, чтобы исправить ситуацию, а также чему вас это в принципе научило и что вы делаете, чтобы избежать подобного в будущем. 

Не думайте, что легче — значит лучше

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

Что еще почитать о прохождении собеседований (на английском языке):

Работа в Яндексе

Посмотрите ролик о том, как устроен процесс интервью в Яндексе.

1

Как на него попасть

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

Резюме

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

Сколько будет встреч

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

2

Как оно проходит

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

Подробности для технических вакансий

Подробности для дизайнеров

Кто будет на собеседовании

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

Чего ожидать

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

3

Что будет после

Между встречами и особенно после финального собеседования иногда наступает длинная пауза. Пожалуйста, наберитесь терпения. Если рекрутер не ответил на звонок или письмо — это не значит, что вы не справились. В это время служба найма может общаться с другими кандидатами, а итоговое тестовое задание часто проверяют много людей.

В случае успеха

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

Если отказали

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

Работа в Яндексе

Антон Ригин прошел стажировку в Яндекс.Музыке, а теперь работает младшим разработчиком в Яндекс.Маркете. Мы поймали его в коридоре офиса и расспросили про то, как студенту начать работать в IT.

После второго курса я понял, что настало время искать работу. Заглянул на сайты ведущих IT-компаний, посмотрел вакансии для стажеров. На факультете компьютерных наук ВШЭ, где я учусь, нам в течение года преподавали Java. Поэтому вакансия стажера-разработчика в Яндекс.Музыке сразу привлекла мое внимание. Я решил задания в анкете, прошел скайп-собеседование и получил приглашение уже на очную встречу в офисе. Я удивился, но самым сложным для меня оказались не алгоритмы или задачки на «подумать», а секция по Java (было много задач на многопоточность).

В начале стажировки я вообще мало что понимал: было сложно разобраться с имеющейся инфраструктурой, с какими-то внутренними разработками сервиса. Но я справился. Моя стажировка длилась 4 месяца, где-то к середине я уже полностью разобрался и делал многие задачи. Когда я только пришел, я знал язык Java, умел работать с Git, но ничего не знал про бэкенд. Этому я учился на ходу. Моим руководителям было важно, чтобы я знал базу, все остальное можно было понять и сделать самому.

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *