Ctrl K
Backend · Senior · Теория

Клиент вызывает у вас эндпоинт создания платежа, ответ теряется по таймауту, и клиент повторяет запрос. Как вы спроектируете API, чтобы деньги не списались дважды?

~4 мин голосом

Как подойти

Проверяют, умеете ли вы сделать неидемпотентную операцию (POST создания платежа) безопасной для ретраев: ключ идемпотентности от клиента, атомарная фиксация на сервере, корректная обработка гонок и идемпотентность по всей цепочке, включая внешнего провайдера.

Встречал этот вопрос на настоящем собесе?
Ответов0
Средний балл—
Сильных—
Тренировали0
Темы
Похожие вопросыНапишите обработчик создания платежа, который принимает ключ идемпотентности и данные платежа и возвращает результат. Повторный запрос с тем же ключом не должен списать деньги второй раз, даже если два одинаковых запроса пришли одновременно на разные инстансы сервиса; у вас есть база данных и внешний платёжный провайдер. SeniorКак бы вы сделали пагинацию в API ленты, где миллионы записей и новые постоянно добавляются? Какие варианты знаете и чем они отличаются? MiddleСпроектируйте rate limiter для публичного API: например, не больше 100 запросов в минуту на один API-ключ. Сервис работает на нескольких инстансах. MiddleДопустим, нужно сделать REST API для простого сервиса заметок. Какие эндпоинты вы бы сделали и как бы они выглядели? JuniorКлиент отправляет POST-запрос на создание платежа, ответ не доходит из-за таймаута, и клиент повторяет запрос. Как сделать так, чтобы деньги не списались дважды? Middle

Ответь голосом

Интервьюер задаст этот вопрос и послушает. Думай вслух, проси подсказку, если нужно. Закончил — пауза или «Я ответил», через минуту здесь балл и какие пункты закрыты.

Войти, чтобы ответить

Лучше в наушниках · ~4 мин