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

Фотография автора статьи

Юрий Мещеряков

Head of Recruitment Екома и Райдтеха

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

Из чего состоит отбор

  1. Предварительная секция (знакомство с HR).
  2. Очные технические встречи (решение задач).
  3. Финальное интервью с командой (знакомство с командой).
  4. Предложение о работе (победа).

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

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

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

После интервью мы свяжемся с вами в течение 2−3 дней.

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

Как успешно пройти интервью

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

1. Убедитесь, что вы правильно поняли задачу
Повторите интервьюеру условия задачи — но своими словами, как вы это видите.

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

3. Задавайте вопросы по задаче
Так вы лучше сможете понять, какое решение от вас ждут.

4. Не старайтесь сразу написать идеальное решение
Начните с базового, набросайте «скелет». Посмотрите, как оно будет работать на разных данных. Можете спросить совет у интервьюера.

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

Как подготовиться к очным интервью

1. Технический скайп (1 час)

  • Расскажите про свой опыт.
  • Ответьте на вопросы по знанию языка.
  • Решите 2-4 задачи на код.

2. Два технических интервью (1 час каждое)

  • Решите 2−4 задачи на код.

3. Архитектура (опционально, 1 час)

  • Опыт проектирования сервисов.
  • Технические подходы и технологии.

4. Финальная встреча с командами

  • Мы расскажем про сервис и ответим на ваши вопросы.

5. Предложение о работе

Как подготовиться к интервью

  • Тренируйтесь решать задачи самостоятельно, без подсказок, любым известным вам способом. Посмотрите разбор задач на YouTube: простые и посложнее.
  • Всегда анализируйте своё решение: почему именно так, можно ли сделать эффективнее? Если нет, то почему?
  • Подумайте о граничных условиях, в которых решения должны проходить тесты.
  • Тренируйтесь писать код без IDE, на интервью вы не сможете её использовать.
  • Посмотрите обсуждение задачи. Убедитесь, что решили её оптимально. Где смотреть решение: Geekforgeeks, Leetcode.

Дополнительные ресурсы для подготовки

Что нужно учесть при проектировании сервисов и систем

  • Проектируйте сервисы как систему, состоящую из гибких, независимых частей, которые мало влияют друг на друга. Например, выбор БД в качестве API должен быть серьёзно обоснован, поскольку пронизывает всю систему.
  • Обоснуйте выбор технологий. Не берите незнакомые или малознакомые технологии просто потому, что их кто-то уже использовал. Возможно, они не будут отвечать нашим требованиям.
  • Помните: то, что может сломаться, обязательно сломается. Нужно минимизировать ситуации, в которых систему придётся поднимать «руками».
  • Если сервис нужно масштабировать. Проектируйте с учетом того, что когда-нибудь мощностей одной машины нам перестанет хватать.
  • Система не должна иметь одну точку отказа. Например, одна БД, использующая Postgres Foreign Data Wrappers в качестве гейтвея для доступа к данным на других серверах.

Про что ещё могут спросить эксперты

  • Принципы работы систем очередей вроде RabbitMQ (нюансы их работы, основные отличия от реляционных СУБД, гарантии персистентности и средства обеспечения отказоустойчивости).
  • Механизмы синхронизации в условиях многопоточного доступа к одним и тем же данным в БД (например, в общем случае нельзя использовать уровни изоляции транзакций для установки блокировок в БД).
  • Гарантии персистентности для основных хранилищ (реляционные СУБД, например) и условия, при которых они предоставляются.
  • Насколько надёжно решаются типовые задачи, используемые в большом количестве систем (например, очереди в Redis или БД).
  • Как собирать метрики, чтобы определить проблему и место её возникновения.