В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Создайте таблицу сотрудников и таблицу телефонных номеров с внешним ключом employee_id. Так один сотрудник имеет много номеров, а каждая строка номера — одного владельца.
Назначьте одному сервису владение read-моделью и договоритесь о публичном контракте её чтения. Общий Redis не должен превращаться в неформальную базу, куда каждый сервис пишет произвольные ключи.
Внешний трафик обычно проходит через ограниченное число точек входа: gateway, ingress или reverse proxy. Внутренние сервисы взаимодействуют по приватным адресам, но тоже требуют проверки доступа.
Добавьте сущность перевода с единым transfer_id и свяжите с ней все проводки. Возврат оформляйте отдельной операцией, ссылающейся на исходный перевод, а не удалением старых записей.
Хорошо масштабируются независимые задачи с малой долей общего состояния. Плохо — последовательные вычисления и сценарии, где все участники конкурируют за один ресурс или требуют частой синхронизации.
Синхронный вызов связывает завершение текущего запроса с доступностью и задержкой внешнего сервиса. Он может быть правильным, если ответ действительно необходим сразу.
Разделите временный сбой и неисправимое сообщение. После ограниченных retries с backoff отправьте проблемное событие в DLQ или quarantine с причиной и возможностью управляемого повтора.
MongoDB уместна, когда данные естественно образуют документы с вложенной структурой и часто читаются как единый агрегат. Выбор должен следовать модели и нагрузке, а не только желанию избежать схемы.
Оценка складывается из вычислений, хранилищ, сети, внешних API, резервирования и эксплуатации. Без архитектуры, нагрузки и региона нельзя честно назвать даже приблизительную сумму.
Касса запрашивает применимые условия лояльности до окончательного подтверждения расчёта, а начисление или списание фиксируется при согласованном статусе продажи. Чтение баланса и его изменение — разные операции.
Выполняйте независимые REST-вызовы конкурентно с ограничениями, отдельными таймаутами и единым бюджетом времени. Заранее определите, допускается ли частичный результат.