Backend Senior — техническое интервью

75 минут, senior. Распределённые системы, производительность, надёжность, SQL. Стек-агностично.

Вопросов
15
Live-coding
2

Разогрев: опыт и контекст

  1. Техническое влияние

    ПоведенческийСредний

    Какое решение за последние 1–2 года дало наибольший эффект для продукта или команды? Что именно сделали вы?

    Рубрика оценки (0–10)
    3–5: «Улучшили производительность» без метрик и своей роли.
    6–8: Конкретное решение, контекст, результат (latency, cost, velocity).
    9–10: Trade-offs до/после; как убедили стейкхолдеров; что измеряли.
    Красный флаг: приписывает себе работу команды без деталей.
    Подсказки интервьюеру
    5 минут — ключевой вопрос для senior+.
  2. Мотивация смены

    ПоведенческийЛёгкий

    Почему сейчас рассматриваете новые возможности? Что ищете в следующей роли?

    Рубрика оценки (0–10)
    3–5: «Хочу роста / денег» без конкретики.
    6–8: Понятные критерии (стек, продукт, процессы); не toxic про текущего работодателя.
    9–10: Осознанный fit: что даст компания кандидату и наоборот.
    Красный флаг: только негатив про прошлые команды, обвиняет всех кроме себя.
    Подсказки интервьюеру
    Не давить — достаточно 2–3 минут.
  3. Масштаб систем

    ПоведенческийСредний

    С каким масштабом работали: RPS, объём данных, число сервисов? Где был bottleneck и как решали?

    Рубрика оценки (0–10)
    3–5: «Высокая нагрузка» без цифр.
    6–8: Порядок величин; конкретный bottleneck; своё участие.
    9–10: Метрики до/после; cost/latency trade-off; что бы сделали при 10× росте.
    Красный флаг: не может описать ни одной production-проблемы на senior.
    Подсказки интервьюеру
    5 минут.

Распределённые системы

  1. Идемпотентность

    ТеорияСложный

    Как обеспечиваете идемпотентность API и consumer'ов при retry и at-least-once delivery?

    Рубрика оценки (0–10)
    3–5: «Retry безопасен» без механизма.
    6–8: Idempotency key; dedup store; unique constraints; outbox pattern basics.
    9–10: TTL keys; race on concurrent retries; idempotent consumer design end-to-end.
    Красный флаг: double charge на payment без стратегии.
    Подсказки интервьюеру
    5 минут.
  2. Saga vs 2PC

    ТеорияСложный

    Нужно атомарно обновить заказ и списать баланс в двух сервисах. Какой подход выберете?

    Рубрика оценки (0–10)
    3–5: «Distributed transaction 2PC» без контекста.
    6–8: Saga orchestration/choreography; compensating transactions; eventual consistency.
    9–10: Outbox + inbox; poison message handling; observability per step.
    Красный флаг: синхронный 2PC между 20 микросервисами «по умолчанию».
    Подсказки интервьюеру
    5 минут.
  3. Инвалидация кэша

    ТеорияСложный

    Cache-aside для read-heavy каталога. Как инвалидируете при обновлении товара?

    Рубрика оценки (0–10)
    3–5: «Удаляем ключ при update» без race handling.
    6–8: TTL + explicit delete; versioned keys; write-through/invalidate on write path.
    9–10: Stampede protection; regional cache; consistency window acceptable to business.
    Красный флаг: бесконечный TTL «пока не упадёт Redis».
    Подсказки интервьюеру
    4 минуты.
  4. Observability

    ТеорияСложный

    Production incident: latency вырос в 3 раза. Как локализуете проблему?

    Рубрика оценки (0–10)
    3–5: «Смотрим логи» без структуры.
    6–8: Metrics → traces → logs; compare canary/baseline; dependency map.
    9–10: SLO burn rate; profiling; correlation IDs; runbook и escalation.
    Красный флаг: restart-all pods как единственная тактика.
    Подсказки интервьюеру
    5 минут.
  5. Эволюция API

    ТеорияСредний

    Как версионируете публичное API и выводите из эксплуатации старые контракты?

    Рубрика оценки (0–10)
    3–5: «v2 в URL» без migration path.
    6–8: Deprecation headers; sunset dates; dual-write/read period; consumer tracking.
    9–10: Contract tests; breaking change policy; feature flags for rollout.
    Красный флаг: breaking change без notice «клиентов мало».
    Подсказки интервьюеру
    4 минуты.

Практика: живой код

  1. LRU Cache

    Задача с кодомСложныйКод

    Реализуйте LRU cache с get/put за O(1). capacity задаётся при создании.

    Рубрика оценки (0–10)
    3–5: Map без порядка или O(n) eviction.
    6–8: HashMap + doubly linked list / OrderedDict; корректный eviction.
    9–10: Thread-safety обсуждает; edge cases; тесты; memory bounds.
    Красный флаг: не может объяснить структуру данных после решения.
    Подсказки интервьюеру
    20 минут.
  2. Sliding window rate limiter

    Задача с кодомСложныйКод

    Реализуйте isAllowed(userId, limit, windowMs): не более limit запросов за последние windowMs.

    Рубрика оценки (0–10)
    3–5: Counter без окна или fixed window с burst на границе.
    6–8: Sliding window log или counter buckets; cleanup старых меток.
    9–10: Memory per user bounds; distributed variant (Redis) обсуждает.
    Красный флаг: global counter без userId.
    Подсказки интервьюеру
    15 минут.

Данные и SQL

  1. Медленный запрос

    ТеорияСложный

    SELECT по таблице 100M строк стал медленным после роста данных. Ваш план диагностики и фикса?

    Рубрика оценки (0–10)
    3–5: «Добавить индекс» без EXPLAIN.
    6–8: EXPLAIN ANALYZE; selective index; pagination; archive cold data.
    9–10: Partial index; covering index; read replica; query rewrite; partition strategy.
    Красный флаг: SELECT * на prod без limit «для простоты».
    Подсказки интервьюеру
    5 минут.
  2. Миграция без даунтайма

    ТеорияСложный

    Нужно добавить NOT NULL колонку и backfill на live таблице. Как выкатите?

    Рубрика оценки (0–10)
    3–5: ALTER TABLE в peak hours.
    6–8: Add nullable → backfill batch → set default → NOT NULL constraint; lock awareness.
    9–10: Online schema tools; dual-write period; rollback plan; feature flag read path.
    Красный флаг: «остановим сервис на час» как норма.
    Подсказки интервьюеру
    5 минут.

Инженерная культура и вопросы

  1. Приоритизация техдолга

    ПоведенческийСредний

    Как решаете, когда платить техдолг, а когда откладывать ради фич? Пример из практики.

    Рубрика оценки (0–10)
    3–5: «Всегда сначала фичи» или «всегда сначала рефакторинг».
    6–8: Критерии (риск, частота изменений, cost of delay); пример компромисса.
    9–10: Связь с roadmap; % capacity на платформу; метрики (MTTR, lead time).
    Красный флаг: техдолг = «переписать всё с нуля».
    Подсказки интервьюеру
    4 минуты.
  2. Архитектурное решение

    ПоведенческийСложный

    Опишите спорное техническое решение в команде. Как пришли к итогу?

    Рубрика оценки (0–10)
    3–5: «Мы выбрали микросервисы» без альтернатив.
    6–8: Варианты, аргументы, критерии; роль кандидата; итог и последствия.
    9–10: RFC/ADR; dissenting opinion учтён; postmortem/ревизия решения через время.
    Красный флаг: «насильно навязал своё» без данных.
    Подсказки интервьюеру
    5 минут.
  3. Вопросы к нам

    ПоведенческийЛёгкий

    Какие вопросы у вас к нам про команду, продукт или процессы?

    Рубрика оценки (0–10)
    3–5: «Нет вопросов» или только про отпуск/ЗП.
    6–8: 2–3 содержательных вопроса про продукт, команду, релизы.
    9–10: Вопросы показывают, что изучил компанию; уточняет ожидания от роли.
    Красный флаг: нулевой интерес к продукту на middle+.
    Подсказки интервьюеру
    Оставить 3–5 минут в конце интервью.

Провести интервью по этому шаблону

Зарегистрируйтесь бесплатно: скопируйте шаблон в организацию, назначьте интервью и проведите его в комнате с live-coding.

Начать в FlashTalk