В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.
Изменение заказа и outbox-запись фиксируются вместе; издатель передаёт событие брокеру, а потребитель сохраняет результат и отметку обработки одной транзакцией. Повторные события отсекаются по event_id.
При выделении сервиса локальные вызовы и транзакции превращаются в сетевые взаимодействия. Нужно определить владение данными, контракты, обработку отказов и план миграции.
Сценарий проходит через проверку запроса, создание заказа, резерв, оплату и подтверждение. Каждый шаг имеет явный результат; ошибки требуют отдельного состояния, а не молчаливого перехода к следующему шагу.
Разделите события, атрибуционные касания, подтверждённые связи идентичности и финансовые факты. Склейка должна опираться на вход или иной надёжный факт, а не на предположение по устройству.
Нужен сохранённый контекст перехода и поддерживаемый платформой механизм deferred deep link. После установки приложение получает контекст, проверяет его и открывает разрешённый экран; передача не гарантирована всегда.
Финальную конверсию отправляют только по подтверждённому серверному факту выдачи и проверенной связи с допустимым click_id. Клиентский запрос или статус анкеты не должны сами подтверждать оплату партнёру.
Клиент создаёт устойчивый ключ идемпотентности для попытки заказа и повторяет запрос с тем же ключом. Backend атомарно связывает ключ с одним заказом и возвращает сохранённый результат.
Сначала согласую сквозной сценарий и границы изменений, затем контракты, порядок релизов и совместимость. Нельзя планировать три сервиса как независимые задачи без проверки общего результата.
Сначала задайте профиль нагрузки, пиковую интенсивность, latency и требования к надёжности. Десятки тысяч операций в минуту сами по себе ещё не диктуют микросервисы или конкретную базу.
Клиент фиксирует просмотры и намерения, сервер — подтверждённые изменения кредитной заявки. Матрица связывает этап, источник, условие и безопасные идентификаторы, а не только имена событий.
Импортируйте CSV/XLSX порциями в фоновой задаче: проверка файла, разбор, нормализация, валидация, дедупликация и отчёт. Номер храните строкой, не числом.