Материалы для подготовки к интервью по бэкенду

Как мы будем общаться

После интервью с рекрутером мы пригласим вас на следующие этапы:

1
Основные
технические интервью
(2 встречи)
2
Архитектурное интервью
(Опционально)
3
Знакомство
с командами
(Финалы)
4
Презентация
офера

Среднее время прохождения всех этапов — 1–2 недели.

Каждое интервью — это часовая встреча с экспертами Яндекса.

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

Код пишем в онлайн-редакторе Яндекса.

Если вы ограничены по срокам или хотите больше времени на подготовку, пожалуйста, предупредите рекрутера, и мы постараемся подстроиться.
Когда мы даем фидбэк:
Промежуточный
Через 1–2 дня после каждой секции
Финальный
Через 2–3 дня после всех секций

Основные технические интервью

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

Понять требование
Предложить решение
Реализовать его
Задачи технические — на логику, базовые структуры данных, а также владение основными конструкциями вашего языка программирования. У нас нет задач на знания фреймворков и сложных алгоритмов, потому что для нас важно умение программировать и желание развиваться.
С чем вы можете столкнуться:
  • Строки, массивы
  • Хеш-таблицы, словари
  • Обход двоичного дерева
  • Реализация различных примитивов: счетчиков, кешей, и т.д.
С чем вы не столкнетесь во время интервью:
  • Динамическое программирование
  • Вращение деревьев
  • Реализации куч, сортировок и других низкоуровневых вещей
  • Реализация дерева поиска
  • Графы
  • Дейкстра, KMP и другие алгоритмы.
Архитектурное интервью
По результатам успешно пройденных технических интервью, мы можем предложить вам пройти архитектурное интервью.
Вам предложат спроектировать распределенную систему или ее часть, удовлетворяющую техническим и продуктовым требованиям.
Нам интересно как вы понимаете проблему хранения и обработки данных в распределенных системах, как оцениваете достоинства и недостатки различных подходов к решению предлагаемой задачи.
Также важно продемонстрировать аналитическое и критическое мышление, кругозор и умение корректно сформулировать свои мысли.
Как проходят архитектурные секции в Яндексе: практика дизайна распределенных систем.
Финальные встречи
Количество встреч в зависимости от результатов интервью может варьироваться — как правило, от одного до пяти.
На этом этапе вы подробнее узнаете о сервисе, задачах и проектах направления.
Вас ждет часовая встреча с руководителем команды, к которой могут присоединиться и другие потенциальные коллеги.
Не стесняйтесь уточнять все интересующие вас моменты, чтобы сделать осознанный выбор проекта.
По результатам всех финальных встреч мы расскажем, какие команды готовы пригласить вас к себе, и будем ждать вашего решения.
Презентация офера
По итогам выбора команды мы запускаем согласование офера.
Предложение о работе мы делаем в одну команду.
На презентации офера мы рассказываем об условиях работы и можем еще раз подробно обсудить проект и предлагаемую должность.
Что посмотреть для подготовки к основным
техническим интервью
Общие материалы:
Ресурсы для тренировки:
  • Контест для подготовки.
  • Geekforgeeks: задачи от уровня medium table, Depth-first Search, Breadth-first Search, Two Pointers, Stack, Backtracking; а также задачи с разными уровнями acceptance.
Задачи уровня easy и medium с тегами: Array, String, Tree, Binary Search, Hash table, Depth-first Search, Breadth-first Search, Two Pointers, Stack, Backtracking; а также задачи с разными уровнями acceptance.

Рекомендации по подготовке

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

После того как интервьюер озвучит задачу, обязательно перескажите ему задачу своими словами и убедитесь, что правильно поняли условие.
Проговаривайте вслух ход мыслей, подробно обосновывайте выводы. Эксперту важно не только получить правильное решение задачи, но и понять, каким путем вы к нему пришли.
Не бойтесь задавать вопросы по задаче: какие данные, какие допущения можно сделать и прочие вопросы, которые помогут понять, какое решение от вас ждут.
Не старайтесь сразу написать идеальное решение. Начните с базового — набросайте скелет, посмотрите, как решение будет работать на разных данных. Если нужно, уточните мнение интервьюера.
Не стесняйтесь просить подсказку у интервьюера.
Перед тем как сдать код, обязательно проверьте его.
Старайтесь предлагать разные решения: первое решение не всегда самое удачное. Если вам пришло в голову, как его можно улучшить, — непременно скажите об этом, даже если задачу уже рассмотрели и отложили в сторону.
  • Потренируйтесь самостоятельно решать задачи на одном из ресурсов, без подсказок любым известным вам способом.
  • При решении задачи всегда объясняйте себе свое решение: почему оно именно такое, можно ли найти более эффективное, и если нет, то почему.
  • Подумайте обо всех граничных условиях, где каждое из решений должно проходить тесты.
  • После того как вы решите задачу, посмотрите ее обсуждение (например, в Discuss на LeetCode), чтобы убедиться, что ваше решение оптимально.
  • Потренируйтесь писать код без IDE, так как на интервью у вас не будет возможности ее использовать.
Fri Feb 16 2024 11:12:15 GMT+0300 (Moscow Standard Time)