Встречается на собеседованиях • сегодня
Сталкивался ли с некорректным увеличением счетчика поля просмотров в таблице со статьями при одновременном открытии конкретной статьи двумя или более пользователями
Да, сталкивался. Проблема возникает из-за race condition при конкурентном обновлении счетчика. Например:
java
// Проблемный код
public void incrementViews(long articleId) {
Article article = articleRepository.findById(articleId);
article.setViews(article.getViews() + 1);
articleRepository.save(article);
}Решение 1: Использовать оптимистичную блокировку (@Version в JPA)
Решение 2: Атомарное обновление в БД:
java
@Modifying
@Query("UPDATE Article a SET a.views = a.views + 1 WHERE a.id = :id")
void incrementViews(@Param("id") long articleId);Решение 3: Использовать Redis для счетчиков с INCR командой
Решение 4: Применить пессимистичную блокировку (SELECT FOR UPDATE)

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