Встречается на собеседованиях • сегодня

При какой проблеме с двух учетных записей одновременно обновляются данные

Это классическая проблема lost update в многопользовательских системах. Возникает, когда две транзакции читают одни данные, затем пытаются их изменить и сохранить, перезаписывая изменения друг друга.

Пример:

java
// Транзакция 1 (пользователь A)
int balance = account.getBalance(); // Читает 100
balance += 50;
account.setBalance(balance); // Сохраняет 150 (но транзакция 2 уже сохранила 120)

// Транзакция 2 (пользователь B)
int balance = account.getBalance(); // Читает 100
balance += 20;
account.setBalance(balance); // Сохраняет 120 (перезаписывает 150)

text

**Решение:**  
- **Оптимистичная блокировка** (версионирование)  
- **Пессимистичная блокировка** (`SELECT FOR UPDATE`)  
- **Atomic операции** (например, `UPDATE accounts SET balance = balance + 50 WHERE id = 1`)  

Без синхронизации последняя транзакция "победит", потеряв изменения первой.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы