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

Сталкивался ли с некорректным увеличением счетчика поля просмотров в таблице со статьями при одновременном открытии конкретной статьи двумя или более пользователями

Да, сталкивался. Проблема возникает из-за 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)

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

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

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

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