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

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

Для решения проблемы конкурентного обновления данных можно использовать:

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

Оптимистичная блокировка лучше для read-heavy систем, пессимистичная - для write-heavy. В JPA/Hibernate удобнее всего использовать аннотацию @Version.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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