В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Разделите выбор на фильтрацию допустимых кампаний и ранжирование. Сначала учитывайте заданный таргетинг, бюджет и частоту показов, затем выбирайте по оценке полезности или прогнозу клика.
Храните записи ленты в БД, медиа и снимки внешних страниц — в объектном хранилище, а сниппеты загружайте фоновыми задачами. Чтение ленты не должно синхронно ждать сторонний сайт.
При входе одного события каждые 5 секунд обновление интерфейса раз в секунду не создаёт более свежих данных. Сначала измерьте время обработки и договоритесь, нужны ли все события или только последнее состояние.
Сначала измерьте профиль 1000 RPS и определите запас до 10 000: доли чтения и записи, latency, БД и внешние зависимости. Масштабируйте подтверждённые узкие места поэтапно, не начиная автоматически с шардинга.
Если запрос принят для асинхронной обработки, сервис может вернуть 202 Accepted с ID операции и ссылкой на статус. Это подтверждение приёма, а не успешного завершения бизнес-действия.
Сохраняйте состояние каждого этапа и его результат в устойчивом хранилище. При повторной доставке worker продолжает с незавершённого шага, а успешно выполненные этапы проверяет по сохранённому статусу.
Добавьте слой оркестрации: модель, поиск по базе знаний, безопасные инструменты для заказов и эскалацию оператору. Готовый чат остаётся интерфейсом, а агент получает только необходимые данные и разрешённые действия.
Сначала определите дедлайн и объём реально нужного пересчёта. Для N клиентов за T секунд минимальная средняя производительность — N/T; число workers оценивают по измеренной пропускной способности с запасом.
Penetration — промахи по отсутствующим данным, avalanche — массовое истечение или потеря кеша, warmup — его предварительное заполнение. Для распродажи нужны прогрев и защита БД от лавины промахов.
Разделите загрузку на ограниченные части и записывайте поток сразу в временное или объектное хранилище. Backend хранит метаданные upload-сессии и частей, а не весь файл в RAM.
Snowflake-подобный ID объединяет время, уникальный ID узла и локальную последовательность. Узлы генерируют значения без сетевого обращения на каждый ID, но уникальность зависит от строгого управления узлами и временем.
Начните с измерения: какие запросы и ресурсы ограничивают систему. Затем оптимизируйте запросы, индексы, объём данных и транзакции; реплики, разделение нагрузки и шардирование рассматривайте после простых мер.