Когда volatile недостаточно?
Что делать после ответа «почти верно»
Вы объяснили, что делает volatile. Разбор нашёл пробел: в ответе нет примера составной операции. С этого пробела и начинается подготовка.
После регистрации: 10 AI-разборов и 20 минут AI-интервьюера в месяц на Free.
- КоллекцииУстройство HashMap
- JVMСборка мусора
- SpringТранзакции
- СинхронизацияРазобрать заново
- volatile и видимостьОстался 1 ответ
- КоллекцииНе повторяли 3 недели
- Отправляю запись
- Распознаю речь
- Проверяю ответ
- Корректность
- Полнота
- Глубина
- Терминология
- Отличили видимость от взаимного исключения
- Назвали synchronized для составных операций
Нет примера гонки: counter++ под volatile теряет обновления
У пробела есть место в маршруте.
Видно, какие темы идут до него и какие уроки его закрывают.
Многопоточность
- happens-before и volatileУрок · 7 мин
- Атомарность и AtomicIntegerУрок · 6 мин
- Вопросы по темеТренажёр · 12 вопросов
Урок объясняет на коде.
Соберите ответ из трёх частей: какую гарантию даёт volatile, где возникает гонка и как её избежать.
Многопоточность
- 01Общие данные
- 02Видимость
- 03Атомарность
- 04Синхронизация
- 05Пулы потоков
Атомарность и counter++
volatile гарантирует, что запись увидят другие потоки. Но инкремент — не одно действие, а три.
volatile int counter = 0; void hit() { counter++; // прочитать → увеличить → записать}
counter = 1, а ожидали 2: одно обновление потеряно.
Как исправить
AtomicInteger counter = new AtomicInteger();counter.incrementAndGet(); // атомарноИнкремент атомарный
Уточняющий вопрос.
Интервьюер цепляется за ваш ответ и спрашивает дальше. Так видно, держится ли объяснение, когда условие меняется.
- Многопоточность7+1
- Коммуникация8как в прошлый раз
- Проектирование6+1
Схема System Design.
На секции System Design от вас ждут схему, а не определение. Разбор оценит её по семи осям и назовёт узкое место, а во второй ревизии видно, закрыла ли его правка.
Всё на месте. Разбор займёт меньше минуты и спишет одну попытку из лимита.
- На схеме 3 блокаУ каждого своё имя.
- 2 связиВсе подписаны.
- Заметки: заполнено 4 из 4 фазРазбор увидит и схему, и рассуждение.
- Требования: отмечено 10 из 10Всё, что в условии, вы проговорили.
Всё на месте. Разбор займёт меньше минуты и спишет одну попытку из лимита.
- На схеме 4 блокаУ каждого своё имя.
- 3 связиВсе подписаны.
- Заметки: заполнено 4 из 4 фазРазбор увидит и схему, и рассуждение.
- Требования: отмечено 10 из 10Всё, что в условии, вы проговорили.
Обычно это занимает меньше минуты. Страницу можно закрыть — разбор сохранится в ревизиях.
- В очереди
- Читаем схему и заметки
- Разбор готов
Переходов в сто раз больше, чем новых ссылок, и каждый читает базу. Под пиковой нагрузкой она станет узким местом первой.
Уверенность разборасредняя- Границы и требования3,0
- Оценки нагрузки3,0
- Состав системы3,0
- Потоки данных3,0
- Узкие места1,0
- Корректность3,0
- Компромиссы2,0
- 1Поставьте кэш перед базой на пути перехода
- 2Опишите, как кэш узнаёт о просроченной ссылке
Обычно это занимает меньше минуты. Страницу можно закрыть — разбор сохранится в ревизиях.
- В очереди
- Читаем схему и заметки
- Разбор готов
Узкое место прошлой ревизии закрыто. Осталось решить, что кэш делает со ссылкой, у которой истёк срок.
Уверенность разборавысокая- Границы и требования3,00
- Оценки нагрузки3,00
- Состав системы3,5+0,5
- Потоки данных3,5+0,5
- Узкие места3,5+2,5
- Корректность3,5+0,5
- Компромиссы2,5+0,5
- 1Опишите, как кэш узнаёт о просроченной ссылке
- 2Сравните редиректы 301 и 302
Отклик под вакансию.
По описанию вакансии соберутся вопросы, которые могут прозвучать на собеседовании, а резюме подстроится под её требования.
Java-разработчик, команда платежейРазработка сервисов на Spring Boot. Хранение в PostgreSQL, интеграции через Kafka. Нужен опыт с транзакциями и повторной доставкой сообщений.
- 1Где проходит граница транзакции в платёжном сервисе?Ориентиры для ответаНазовите операции внутри транзакции и что будет при сбое посередине.
- 2Как обработать повторно доставленное сообщение Kafka?
- 1Как вы находили причину медленного запроса в PostgreSQL?