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

В Django-сервисе два одновременных запроса списывают деньги с одного баланса, и иногда баланс уходит в минус или одно списание теряется. Почему так происходит и как вы это исправите?

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

Как подойти

Проверяют, понимает ли кандидат природу гонки read-modify-write (lost update) и почему transaction.atomic её не лечит, а также умеет ли выбрать подходящий механизм защиты — пессимистичную или оптимистичную блокировку, атомарный update, ограничения в базе — и учесть сопутствующие риски: дедлоки, ретраи и идемпотентность.

Встречал этот вопрос на настоящем собесе?
Ответов0
Средний балл—
Сильных—
Тренировали0
Темы
Похожие вопросыВозьмём перевод между двумя счетами, которые лежат в одной базе: списать с одного, зачислить на другой. Как вы это реализуете, чтобы при параллельных операциях деньги не потерялись и баланс не ушёл в минус? SeniorDjango-монолит перестаёт справляться с ростом трафика. Как вы спроектируете его запуск в продакшене: сервер приложений, модель воркеров, их количество, работа с базой данных? MiddleКак работает аннотация @Transactional в Spring? JuniorУ вас большой монолит на Django, и команда хочет переписать его на FastAPI ради асинхронности и производительности. Как вы будете принимать это решение и как проводили бы изменение? SeniorКакие аномалии возникают при конкурентных транзакциях и как уровни изоляции от них защищают? Приведите пример, где Read Committed вас подвёл бы. Senior

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

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

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

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