Собеседование в Яндекс: полный гайд по этапам, вопросам и подготовке

Яндекс — одна из самых желанных IT-компаний в России. Высокие зарплаты, интересные проекты, сильная инженерная культура. Но и отбор соответствующий: по разным оценкам, проходят только 2-5% кандидатов.
В этом гайде — всё, что нужно знать о процессе найма в Яндекс: этапы, типы вопросов, конкретные примеры задач и стратегия подготовки.
Структура найма в Яндекс
Процесс занимает от 2 до 6 недель и включает 5 этапов:
Этап 1: Скрининг резюме
HR-специалисты и рекрутеры оценивают:
- Релевантный опыт работы
- Технологический стек
- Образование (не критично, но учитывается)
- Участие в open source, pet-проекты
Совет: адаптируйте резюме под конкретную вакансию. Если позиция на Python — выносите Python-опыт на первый план.
Этап 2: HR-скрининг (20-30 минут)
Телефонный или видео-звонок с рекрутером:
- Мотивация: почему Яндекс?
- Ожидания по зарплате
- Готовность к релокации (если нужно)
- Общее понимание вашего опыта
На этом этапе не задают технических вопросов, но могут уточнить про технологии из резюме.
Этап 3: Техническое интервью — Алгоритмы (1-1.5 часа)
Это главный фильтр. Вас ждут 2-3 алгоритмические задачи разной сложности.
Формат:
- Созвон в Zoom/Телемост
- Кодинг в Яндекс.Контест или shared IDE
- Интервьюер видит ваш экран
- Нужно не только решить, но и объяснить подход
Типичные темы:
- Массивы и строки
- Хеш-таблицы
- Двоичный поиск
- Два указателя / скользящее окно
- Деревья и графы (BFS, DFS)
- Динамическое программирование
- Жадные алгоритмы
Этап 4: Техническое интервью — System Design (1-1.5 часа)
Для Middle+ позиций. Нужно спроектировать систему:
Примеры задач:
- Спроектируйте URL shortener (типа ya.cc)
- Спроектируйте систему уведомлений
- Спроектируйте ленту новостей
- Спроектируйте распределённый кеш
Что оценивают:
- Умение задавать уточняющие вопросы
- Понимание trade-offs
- Знание паттернов масштабирования
- Способность оценивать нагрузку
Этап 5: Финальное интервью (1 час)
Разговор с будущим руководителем или тимлидом:
- Глубокое обсуждение опыта
- Культурный fit
- Вопросы про конкретные проекты из резюме
- Ваши вопросы о команде и проекте
Алгоритмические задачи: примеры и разбор
Задача 1: Два числа с заданной суммой (Easy)
Условие: Дан массив чисел и целевая сумма. Найти индексы двух чисел, которые в сумме дают target.
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
Сложность: O(n) по времени, O(n) по памяти
Что про��еряют: умение использовать хеш-таблицу для оптимизации.
Задача 2: Максимальная подстрока без повторов (Medium)
Условие: Найти длину самой длинной подстроки без повторяющихся символов.
def length_of_longest_substring(s):
char_index = {}
max_length = 0
start = 0
for i, char in enumerate(s):
if char in char_index and char_index[char] >= start:
start = char_index[char] + 1
char_index[char] = i
max_length = max(max_length, i - start + 1)
return max_length
Сложность: O(n) по времени, O(min(n, alphabet)) по памяти
Что проверяют: скользящее окно, работа с хеш-таблицей.
Задача 3: Количество островов (Medium)
Условие: Дана матрица из 0 и 1. Посчитать количество островов (связных областей из 1).
def num_islands(grid):
if not grid:
return 0
rows, cols = len(grid), len(grid[0])
count = 0
def dfs(r, c):
if r < 0 or r >= rows or c < 0 or c >= cols or grid[r][c] == '0':
return
grid[r][c] = '0' # отмечаем как посещённую
dfs(r + 1, c)
dfs(r - 1, c)
dfs(r, c + 1)
dfs(r, c - 1)
for r in range(rows):
for c in range(cols):
if grid[r][c] == '1':
count += 1
dfs(r, c)
return count
Сложность: O(m × n) по времени и памяти
Что проверяют: обход графа (DFS/BFS), работа с матрицами.
Задача 4: LRU Cache (Hard)
Условие: Реализовать кеш с политикой вытеснения LRU (Least Recently Used).
from collections import OrderedDict
class LRUCache:
def __init__(self, capacity):
self.cache = OrderedDict()
self.capacity = capacity
def get(self, key):
if key not in self.cache:
return -1
self.cache.move_to_end(key)
return self.cache[key]
def put(self, key, value):
if key in self.cache:
self.cache.move_to_end(key)
self.cache[key] = value
if len(self.cache) > self.capacity:
self.cache.popitem(last=False)
Что проверяют: знание структур данных, понимание сложности операций.
System Design: как отвечать
Структура ответа (используйте как чеклист):
Уточните требования (2-3 минуты)
- Сколько пользователей?
- Какая нагрузка (RPS)?
- Какие SLA по latency?
- Что важнее: консистентность или доступность?
High-level design (10-15 минут)
- Нарисуйте основные компоненты
- Покажите потоки данных
- Определите API endpoints
Deep dive (15-20 минут)
- Выбор базы данных и схема
- Кеширование
- Шардирование и репликация
- Обработка отказов
Масштабирование (5-10 минут)
- Узкие места
- Горизонтальное масштабирование
- CDN, очереди, асинхронность
Пример: Проектирование URL Shortener
Требования (уточняем):
- 100M новых URL в месяц
- Соотношение чтение/запись 100:1
- URL хранятся 5 лет
- Минимальная latency на чтение
Расчёт нагрузки:
- Записи: 100M / 30 / 24 / 3600 ≈ 40 RPS
- Чтения: 40 × 100 = 4000 RPS
- Хранилище: 100M × 12 × 5 × 500 bytes ≈ 3 TB
Компоненты:
- Load Balancer → API Servers → Database
- Cache (Redis) перед базой
- База: NoSQL (Cassandra) для масштабирования
Генерация коротких URL:
- Base62 encoding (a-z, A-Z, 0-9)
- 7 символов = 62^7 ≈ 3.5 триллиона комбинаций
- Можно использовать counter + hash или заранее сгенерированные ID
Стратегия подготовки
За 2-3 месяца до собеседования
Алгоритмы:
- Решайте по 1-2 задачи в день на LeetCode
- Фокус на Medium, иногда Hard
- Начните с топ-100 задач для интервью
- Разбирайте решения, которые не смогли сделать сами
Рекомендуемые темы по приоритету:
- Arrays, Strings, Hash Tables
- Two Pointers, Sliding Window
- Binary Search
- Trees, Graphs (BFS, DFS)
- Dynamic Programming
- Backtracking
System Design (для Middle+):
- Прочитайте «Designing Data-Intensive Applications»
- Изучите кейсы: YouTube, Twitter, WhatsApp
- Практикуйтесь рисовать диаграммы
За 2 недели до собеседования
- Проведите 3-5 мок-интервью с друзьями
- Повторите типовые задачи
- Подготовьте рассказ о своих проектах по STAR
Накануне
- Отдохните, выспитесь
- Подготовьте рабочее место (тихо, хороший интернет)
- Проверьте камеру и микрофон
Частые ошибки кандидатов
Сразу кодить без обсуждения
- Всегда сначала проговорите подход
- Убедитесь, что интервьюер согласен с направлением
Молчать во время решения
- Думайте вслух
- Это показывает ход мыслей и позволяет получить подсказки
Игнорировать edge cases
- Пустой массив, один элемент
- Отрицательные числа
- Очень большие входные данные
Не тестировать код
- Прогоните решение на примере вручную
- Проверьте граничные случаи
Сдаваться слишком рано
- Если застряли — попросите подсказку
- Это лучше, чем молчать 10 минут
Что делать после собеседования
- Сразу после: запишите вопросы и свои ответы
- В тот же день: разберите задачи, которые не решили
- Через неделю: если нет ответа — напишите рекрутеру
Как ENIGMA AI помогает на собеседовании в Яндекс
Даже с отличной подготовкой легко забыть формулу или запутаться в синтаксисе под давлением. ENIGMA AI работает как страховка:
- Мгновенные подсказки по алгоритмам — если забыли реализацию BFS или бинарного поиска
- Помощь с оптимизацией — подскажет, как улучшить сложность решения
- Работает в stealth-режиме — невидим при шаринге экрана в Zoom и Телемосте
Это не замена подготовке, но отличная страховка от «завис и не знаю, что делать».
Попробовать ENIGMA AI бесплатно →
FAQ
Сколько времени занимает процесс найма в Яндекс?
Обычно 3-6 недель от первого контакта до оффера. Может затянуться, если много кандидатов или праздники.
Можно ли пересдать, если не прошёл?
Да, обычно через 6 месяцев можно попробовать снова. Используйте это время для подготовки.
Какой уровень английского нужен?
Для большинства позиций достаточно уровня чтения документации. Но для международных проектов может потребоваться разговорный.
Что важнее: опыт или алгоритмы?
Для прохождения собеседования — алгоритмы. Но без релевантного опыта вас могут не позвать на интервью.
Отличается ли процесс для разных грейдов?
Для Junior меньше акцент на System Design, проще алгоритмические задачи. Для Senior — глубокий System Design и больше поведенческих вопросов.
Собеседование в Яндекс — это марафон, а не спринт. Начните готовиться заранее, решайте задачи каждый день, и шансы значительно вырастут.
Похожие статьи

Собеседование в Ozon Tech: этапы, вопросы и как подготовиться

Собеседование в VK: этапы, вопросы и как подготовиться

Собеседование в Авито: этапы, вопросы и как подготовиться
