Встречается на собеседованиях • сегодня
Какие знаешь недостаточно изолированные транзакции при параллельной работе и проблеме с данными
**Грязное чтение (Dirty Read)** - чтение незафиксированных данных из параллельной транзакции. Пример:
```java
// Транзакция 1
@Transactional
void updateBalance() {
account.setBalance(100); // Не зафиксировано
// Транзакция 2 уже видит 100
}
// Транзакция 2
@Transactional(isolation = READ_UNCOMMITTED)
int getBalance() {
return account.getBalance(); // Может прочитать 100
}
```
**Неповторяемоеся чтение (Non-repeatable Read)** - разные значения при повторном чтении в одной транзакции:
```java
@Transactional
void process() {
int first = account.getBalance(); // 100
// Другая транзакция изменила баланс на 200
int second = account.getBalance(); // 200
}
```
**Фантомное чтение (Phantom Read)** - появление новых строк при повторном запросе:
```java
@Transactional
void process() {
List first = findAllAccounts(); // 10 записей
// Другая транзакция добавила новый аккаунт
List second = findAllAccounts(); // 11 записей
}
```
**Потерянное обновление (Lost Update)** - когда две транзакции перезаписывают изменения друг друга без учета предыдущих модификаций.

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