Ctrl K
Backend · Senior · Код

Напишите обработчик создания платежа, который принимает ключ идемпотентности и данные платежа и возвращает результат. Повторный запрос с тем же ключом не должен списать деньги второй раз, даже если два одинаковых запроса пришли одновременно на разные инстансы сервиса; у вас есть база данных и внешний платёжный провайдер.

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

Как подойти

Проверяют, умеете ли вы сделать операцию со стороны эффектов ровно-один-раз в распределённой системе: атомарно захватить ключ через БД до вызова провайдера, корректно обработать параллельные повторы и неизвестный исход внешнего вызова и не допустить двойного списания.

Встречал этот вопрос на настоящем собесе?
Ответов0
Средний балл—
Сильных—
Тренировали0
Темы
Похожие вопросыСпроектируйте сервис переводов по номеру телефона между клиентами банка: от нажатия кнопки «Перевести» до зачисления денег получателю. SeniorКак бы вы построили тест-стратегию для нового платёжного сервиса с нуля? SeniorКлиент отправляет POST-запрос на создание платежа, ответ не доходит из-за таймаута, и клиент повторяет запрос. Как сделать так, чтобы деньги не списались дважды? MiddleКлиент вызывает у вас эндпоинт создания платежа, ответ теряется по таймауту, и клиент повторяет запрос. Как вы спроектируете API, чтобы деньги не списались дважды? SeniorЧем отличаются HTTP-методы GET, POST, PUT, PATCH и DELETE? И что значит, что метод идемпотентный? Junior

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

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

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

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