Этап 13 из 15 · ≈ 16 ч

Задачи на проектирование

Основа с Middle

Короткие ссылки, уникальные идентификаторы, счётчики, топ запросов, лента, мессенджер и rate limiter.

Что важно знать

  • Сначала требования и цифры, потом схема.
  • Каждое решение — компромисс, его называют вслух.
  • Точный подсчёт на миллиардах событий часто не нужен.

Критерии освоения

Middle ≈ 16 ч

  • Решает задачу на проектирование по шагам — требования, оценка нагрузки, API, данные, узкие места
  • Проектирует сервис коротких ссылок, генератор идентификаторов и счётчик просмотров

Практика. Решить три задачи письменно за 45 минут каждую и сравнить с разбором.

Senior ≈ 20 ч

  • Проектирует ленту, мессенджер и распределённый rate limiter, обосновывая компромиссы
  • Применяет приближённые алгоритмы — HyperLogLog, Count-Min — там, где точность не обязательна

Практика. Провести два пробных интервью по проектированию в роли кандидата и два — в роли интервьюера.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Спроектируйте сервис коротких ссылок.Middle

Чтений в 100 раз больше записей: редирект из кэша за миллисекунды, код — base62 от уникального числа (счётчик с выдачей диапазонов или Snowflake), хранилище key-value с шардированием по коду.

Полный разбор
Как генерировать уникальные идентификаторы в распределённой системе?Middle

Варианты: автоинкремент (просто, но одна точка и угадываемость), UUIDv4 (без координации, но случайный — плохо для B-дерева), UUIDv7 / Snowflake (время в старших битах — почти упорядочены, без координации).

Полный разбор
Спроектируйте счётчик просмотров для видео с миллионами просмотров в минуту.Middle

Не делать UPDATE views = views + 1 на каждый просмотр: одна строка вирусного видео станет узким местом. События — в очередь, счётчики — агрегировать пачками в памяти и сбрасывать раз в секунды; показывать приблизительное значение.

Полный разбор
Спроектируйте сервис «топ-100 популярных запросов» за последний час и за день.Senior

Две дорожки: быстрая приближённая — потоковые агрегаторы считают топ по минутным окнам (count-min sketch + куча или Space-Saving) и сливают в топ за час; медленная точная — пакетный подсчёт по сырым событиям для дня и отчётов.

Полный разбор
Как посчитать число уникальных посетителей за день при миллиардах событий?Senior

Точный подсчёт требует хранить все уникальные id. HyperLogLog оценивает их число с ошибкой ~0,8%, используя 12 КБ на любое количество — от тысячи до миллиардов.

Полный разбор
Спроектируйте ленту новостей социальной сети.Senior

Главный выбор — когда собирать ленту. Fan-out on write: при публикации положить id поста в ленты всех подписчиков — чтение мгновенное. Fan-out on read: собирать при открытии из постов подписок — дорогое чтение. На практике гибрид: обычные авторы — на записи…

Полный разбор
Спроектируйте мессенджер с личными и групповыми чатами.Senior

Клиенты держат постоянное соединение (WebSocket) с шлюзами; сообщение пишется в хранилище, шардированное по chat_id, получает порядковый номер в чате и доставляется онлайн-участникам через шлюзы, офлайн — пушем.

Полный разбор
Спроектируйте распределённый rate limiter для публичного API.Senior

Состояние лимита — в общем быстром хранилище (Redis), проверка и списание — атомарно одним скриптом (Lua) или командой. Лимитер — в шлюзе или сайдкаре, до бизнес-логики.

Полный разбор

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования