После успешного расчёта выдачи количество каждой выбранной купюры должно уменьшиться на выданное число. Если финальное выражение использует merge с Integer::sum и положительным count, оно ошибочно увеличивает запас.
Что происходит в последнем выражении алгоритма, где обновляется баланс купюр после выдачи?
После успешного расчёта выдачи количество каждой выбранной купюры должно уменьшиться на выданное число. Если финальное выражение использует merge с Integer::sum и положительным count, оно ошибочно увеличивает запас.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
После успешного расчёта выдачи количество каждой выбранной купюры должно уменьшиться на выданное число. Если финальное выражение использует merge с Integer::sum и положительным count, оно ошибочно увеличивает запас.
Списание выполняют только после проверки, что вся сумма набрана, и атомарно относительно других выдач. Иначе отказ посередине может оставить частично изменённый баланс, а параллельные запросы — выдать одни купюры дважды. Исходного выражения в вопросе нет, поэтому конкретную строку нужно сверить; смысл операции — уменьшение остатков, а не добавление результата в запас.