Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Гайды/Python-разработчик/Собес в Яндекс · Разработчик на Python и Go в Яндекс ID

Собес в Яндекс · Разработчик на Python и Go в Яндекс ID

Материал Эйч · Опубликовано 27 октября 2026

Обзор

Бэкенд в команде идентификации: надёжные API, безопасность данных, Python/Go, прод и производительность

Python (язык и стандартная библиотека)
Параллелизм и GIL
Алгоритмы и сложность
Тестирование и профилирование
Go и распределённые системы
Безопасность и идентификация

Фишка: Сильный упор на доказательность ответа: пошаговый разбор алгоритма, бенчмарки для оптимизаций, опыт с метриками и продом — типичный стиль вопросов Яндекса по Python.

ЭтапДлительностьЧто проверяют
Скрининг / HR30–45 минМотивация, опыт бэкенда, готовность к офису (Москва/СПб), стек Python/Go, сроки выхода
Техническое интервью1,5–2 чВопросы по Python (типы, исключения, строки, pathlib), задача на код (часто merge/алгоритм), разбор асимптотики и краевых случаев
Углублённое тех. / продуктовое1–2 чПрод-отладка, метрики, CPU-bound оптимизация (пулы процессов), тесты и моки; возможны вопросы по БД и распределённости
Финал с командой45–60 минСофт-скиллы, работа в команде, ответственность за безопасность пользовательских данных

Стек и темы

Обязательный минимум

  • Python 3: типы, коллекции, исключения, строки, os/pathlib
  • Асимптотика и выбор структур данных
  • Многопоточность vs multiprocessing, GIL, ProcessPoolExecutor vs ThreadPoolExecutor
  • Юнит-тесты, unittest.mock / patch для глобальных функций
  • Реляционные БД (запросы, индексы, транзакции на уровне собеса)
  • Базовый Go: синтаксис, горутины, когда уместен второй язык в сервисе
  • HTTP/API, идентификация, безопасность данных на концептуальном уровне

Плюсом будет

  • Профилирование CPU (cProfile, py-spy), метрики в проде
  • Очереди и модуль queue
  • Опыт распределённых систем и деградации под нагрузкой
  • Канал Yandex for Backend — контекст культуры бэкенда в компании

Алгоритмы и O-нотация

Что ты знаешь про оптимизацию, асимптотику (O-нотацию)?

Различай верхнюю границу O, средний и худший случай; укажи память; для merge двух отсортированных массивов — O(n+m) время, O(1) доп. память при выводе в новый список.

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

Возьми малый вход, веди индексы i/j, после цикла — хвост одного массива; проговори инвариант: result всегда отсортирован.

А если условие «меньше» не выполняется, то как будете действовать?

Ветки elif/else для равенства и «больше»; явные границы; недопустимый вход — исключение или контракт API.

Ловушка: При merge отсортированных списков с дубликатами нельзя делать только i+=1 при равенстве — нужно добавить оба элемента или сдвинуть оба указателя по логике задачи.

Совет: Сначала назови сложность, потом код, потом прогон примера из вакансии Яндекса.

Python: коллекции и встроенные функции

Как работает функция tuple()?

Итерируемый → кортеж; одно значение — запятая (1,); копия tuple(x); для list — tuple(lst).

Зачем нужен модуль queue?

Потокобезопасные FIFO/LIFO/PriorityQueue для producer-consumer; блокирующие get/put с таймаутами.

Фишка: В задачах на потоки queue часто предпочтительнее самописных list+lock.

Строки и pathlib

Что делает метод casefold() у строк?

Агрессивная нормализация регистра для сравнения (unicode); для поиска без учёта регистра предпочтительнее lower/casefold в зависимости от языка.

Что делает метод istitle() у строк?

True, если каждое слово в title case; цифры/символы без букв — False.

Что делает метод isspace() у строк?

True, если все символы — пробельные (включая \t, \n, неразрывный пробел и т.д.).

Что делает метод expandtabs() у строк?

Заменяет \t на пробелы до следующей позиции табуляции (по умолчанию шаг 8).

Как проверить, является ли путь директорией?

pathlib.Path(path).is_dir() или os.path.isdir(path); для symlink — is_dir(follow_symlinks=...).

Ловушка: istitle() не то же самое, что «первая буква заглавная» для всей строки.

Исключения

Что такое LookupError?

Базовый класс для KeyError, IndexError — обращение к несуществующему ключу/индексу.

Что такое IOError?

В Python 3 алиас OSError; ошибки ввода-вывода при работе с файлами и сокетами.

Что такое BufferError?

Операции с buffer/memoryview при несовместимых размерах или неготовом буфере.

Совет: Группируй исключения по иерархии: ловить LookupError шире, чем KeyError, если подходит контракт.

Параллелизм и производительность

А про многозадачность, кооперативность, параллельность что-нибудь знаешь?

Потоки — preemptive в ОС; asyncio — кооперативная многозадачность; процессы — настоящий параллелизм на CPU.

Почему для разгрузки CPU-bound задачи лучше использовать именно ProcessPoolExecutor, а не ThreadPoolExecutor?

GIL в CPython; потоки не масштабируют CPU-bound; процессы — отдельные интерпретаторы, цена — IPC и память.

Код генерации миниатюр в микросервисе (функция process) работает медленно после роста нагрузки: одно ядро на 100%, остальные простаивают. Какую метрику проанализировать и как ускорить кодом без инфраструктуры?

CPU utilization per core, latency p95/p99, queue depth; вынести process в ProcessPoolExecutor/map, размер пула ≈ число ядер, избегать лишней сериализации больших объектов.

Фишка: Типичный кейс Яндекса: доказать ускорение бенчмарком, а не «на глаз».

Ловушка: ThreadPoolExecutor для CPU-bound часто не даёт выигрыша в чистом Python.

Тестирование и прод

Как в Python можно подменить (замокать) функцию в глобальной области видимости модуля для юнит-тестов?

unittest.mock.patch('mymodule.func') или patch.object; патчить там, где имя используется (import site).

Напишите тест/бенчмарк, который доказывает, что новая реализация process с ProcessPoolExecutor работает быстрее старой.

timeit или pytest-benchmark; фиксированный workload; warm-up; несколько прогонов; изолировать от шума.

У тебя был опыт отладки приложений в проде, смотреть на метрики, профилировать?

Логи+трейсы, Grafana/Prometheus, алерты по SLO; cProfile локально; гипотеза → метрика → фикс → проверка.

Совет: Для Яндекс ID уместно упомянуть безопасность логов (не писать секреты и PII).

Go и бэкенд-контекст

Готовность программировать на Python и Go — чем дополняют друг друга в одном продукте?

Python — быстрая разработка, богатая экосистема; Go — статическая типизация, горутины, низкая латентность сервисов; часто разные микросервисы или performance-critical куски на Go.

Фишка: Вакансия явно требует оба языка — подготовь 2–3 фразы про свой опыт или план изучения Go.

Задачи

Merge двух отсортированных списков

Есть два сортированных списка целых. Написать функцию union(arr1, arr2), возвращающую новый отсортированный список из всех элементов обоих (с учётом дубликатов). Пример: [1,2,2,5,7,14] и [2,2,2,4,6,6,7,9,14,15] → [1,2,2,2,2,4,5,6,6,7,7,9,14,14,15].

def union(arr1: list[int], arr2: list[int]) -> list[int]:
    result = []
    i = j = 0
    while i < len(arr1) and j < len(arr2):
        if arr1[i] < arr2[j]:
            result.append(arr1[i])
            i += 1
        elif arr1[i] > arr2[j]:
            result.append(arr2[j])
            j += 1
        else:
            result.append(arr1[i])
            i += 1
            result.append(arr2[j])
            j += 1
    result.extend(arr1[i:])
    result.extend(arr2[j:])
    return result

Сложность: O(n + m) по времени, O(n + m) по памяти на результат

Ускорение CPU-bound process в микросервисе

Функция process генерирует миниатюры; после роста нагрузки одно ядро загружено на 100%, латентность выросла. Предложите изменение кода и что измерить.

Обернуть вызовы process в concurrent.futures.ProcessPoolExecutor с пулом ~cpu_count(); батчировать задачи; измерить wall time и CPU per core до/после; метрики p95 latency и throughput; при необходимости ограничить max_workers и размер очереди.

Сложность: Амортизированно ближе к O(n/p) по wall time при p воркерах для независимых задач

Бенчмарк ProcessPoolExecutor

Написать минимальный бенчмарк, доказывающий, что версия с ProcessPoolExecutor быстрее последовательной для тяжёлой CPU-функции.

import timeit
from concurrent.futures import ProcessPoolExecutor

def heavy(x):
    return sum(i*i for i in range(x))

def sequential(xs):
    return [heavy(x) for x in xs]

def parallel(xs):
    with ProcessPoolExecutor() as ex:
        return list(ex.map(heavy, xs))

if __name__ == '__main__':
    data = [200_000] * 8
    print(timeit.timeit(lambda: sequential(data), number=3))
    print(timeit.timeit(lambda: parallel(data), number=3))

Сложность: Зависит от heavy; сравнение относительное

System Design

  • Спроектируйте высокодоступный сервис выдачи сессий/токенов для экосистемы (аналогично слою идентификации): rate limits, отказ одного ДЦ
  • Как хранить и ротировать секреты клиентов OAuth без простоя
  • Схема кэширования профиля пользователя при пиковых логинах в праздники
  • Разделение ответственности между Python-сервисом оркестрации и Go-сервисом низкой латентности

Каркас ответа

  1. Уточни требования: RPS, latency, консистентность, регуляторика (PII)
  2. Нарисуй клиент → API gateway → сервисы → БД/кэш
  3. Проговори отказоустойчивость: реплики, health checks, деградация
  4. Безопасность: шифрование, audit log, минимизация данных в логах
  5. Метрики и алерты: SLI/SLO, нагрузочное тестирование

Поведенческое

  • Расскажите о случае, когда вы оптимизировали сервис под нагрузкой — что измеряли и какой был результат
  • Пример, когда ошибка в проде затрагивала пользователей: как искали причину и что изменили в процессе
  • Как вы подходите к безопасности при работе с персональными данными
  • Почему хотите в Яндекс ID, а не в другую команду бэкенда
  • Конфликт в команде при выборе технического решения — как действовали

План подготовки

3 дня

  • Повторить merge двух массивов и прогнать 3 примера вслух с доказательством
  • Разобрать GIL, ProcessPoolExecutor vs ThreadPoolExecutor, написать мини-бенчмарк
  • Пройтись по исключениям LookupError/IOError/BufferError и строковым методам из списка Яндекса

7 дней

  • Решить 5–7 задач на LeetCode уровня Easy/Medium (arrays, two pointers, hash map)
  • Практика unittest.mock.patch на глобальной функции модуля
  • Читать описание Яндекс ID и вакансии: безопасность, API, распределённость
  • Освежить SQL: индексы, JOIN, транзакции; набросать схему users/sessions

14 дней

  • Написать маленький HTTP-сервис на Go (handlers + goroutines) и сравнить с FastAPI на Python
  • Разобрать один system design кейс про auth/ID с таймером 35 мин
  • Повторить модуль queue и типичные паттерны producer-consumer
  • Мок-интервью: 45 мин теория Python + 45 мин задача
БлокГотов, если...
Алгоритмыможешь написать merge с дубликатами и назвать O(n+m) без подсказки
Параллелизмобъясняешь GIL и когда ProcessPoolExecutor, плюс один способ измерить ускорение
Python stdlibотличаешь casefold/istitle/isspace и знаешь Path.is_dir
Тестыпоказываешь patch для функции в импортированном модуле
Продуктв двух предложениях объясняешь роль Яндекс ID и почему надёжность критична

В день собеседования

  • Повторить шпаргалку по O-нотации и merge
  • Проверить среду: IDE, Python, возможность шарить экран
  • Подготовить 2 вопроса команде про нагрузку и безопасность Яндекс ID

Профессия

Python-разработчик

Темы

Python (язык и стандартная библиотека)
Параллелизм и GIL
Алгоритмы и сложность
Тестирование и профилирование
Go и распределённые системы
Безопасность и идентификация

Компания

ЯндексЯндекс

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

🍪 Мы используем cookie и Яндекс Метрику, чтобы сайт работал и становился лучше. Подробнее в политике.

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта