Встречается на собеседованиях • сегодня
Как решить проблему, при которой с двух учетных записей одновременно обновляются данные
Для решения проблемы конкурентного обновления данных можно использовать:
- Оптимистичную блокировку (Optimistic Locking) - проверка версии записи перед обновлением:
java
@Entity
public class Account {
@Version
private int version;
// другие поля
}- Пессимистичную блокировку (Pessimistic Locking) - блокировка записи на время транзакции:
java
entityManager.find(Account.class, id, LockModeType.PESSIMISTIC_WRITE);- Механизм сравнения и замены (CAS):
java
AtomicInteger balance = new AtomicInteger(100);
int expected = balance.get();
balance.compareAndSet(expected, expected + 50);- Сериализация транзакций через изоляцию SERIALIZABLE в БД.
Оптимистичная блокировка лучше для read-heavy систем, пессимистичная - для write-heavy. В JPA/Hibernate удобнее всего использовать аннотацию @Version.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы