JV Java  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Блокировки и конкурентные коллекции

Профессиональный тест по теме «Блокировки и конкурентные коллекции»: сложные фрагменты кода, архитектурные компромиссы, диагностика и надёжность. Вопросы перемешаны: встречаются трассировка, ошибка компиляции, выбор правки, граничный сценарий и оценка инженерного компромисса. Базовая версия — Java 25 LTS; если версия не названа отдельно, используются устойчивые правила, совместимые с Java 21.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются стадией ошибки, порядком действий или границей контракта. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и объяснения.
Вопрос 1 из 30
Какое утверждение о механизме «Условия ожидания» верно в контексте раздела «Блокировки и конкурентные коллекции»?
Вопрос 2 из 30
Как поведёт себя фрагмент по теме «Атомарные операции» при разборе раздела «Блокировки и конкурентные коллекции»?
JavaАтомарные операции · фрагмент для анализа
var used = new java.util.concurrent.atomic.AtomicInteger();
var limit = new java.util.concurrent.atomic.AtomicInteger(10);
if (used.get() < limit.get()) used.incrementAndGet();
Вопрос 3 из 30
Что важно учитывать при применении механизма «Условия ожидания» из раздела «Блокировки и конкурентные коллекции» в рабочем проекте?
Вопрос 4 из 30
Как лучше исправить или прояснить поведение темы «Конкурентная карта ConcurrentHashMap» в разделе «Блокировки и конкурентные коллекции»?
JavaКонкурентная карта ConcurrentHashMap · фрагмент для анализа
// Фрагмент на ревью
if (!cache.containsKey(key)) {
    cache.put(key, loadExpensive(key));
}
return cache.get(key);
Вопрос 5 из 30
Какой инженерный компромисс характерен для темы «Конкурентная карта ConcurrentHashMap» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 6 из 30
Какое правило Java действует для темы «Производительность и эксплуатация» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 7 из 30
Как поведёт себя фрагмент по теме «Условия ожидания» при разборе раздела «Блокировки и конкурентные коллекции»?
JavaУсловия ожидания · фрагмент для анализа
lock.lock();
try {
    if (queue.isEmpty()) notEmpty.await();
    return queue.removeFirst();
} finally { lock.unlock(); }
Вопрос 8 из 30
Какое утверждение о механизме «Атомарные операции» верно в контексте раздела «Блокировки и конкурентные коллекции»?
Вопрос 9 из 30
Как поведёт себя фрагмент по теме «Производительность и эксплуатация» при разборе раздела «Блокировки и конкурентные коллекции»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
synchronized (globalLock) {
    cache.computeIfAbsent(userId, this::load);
}
Вопрос 10 из 30
Что важно учитывать при применении механизма «Тестирование и диагностика» из раздела «Блокировки и конкурентные коллекции» в рабочем проекте?
Вопрос 11 из 30
Что нужно отдельно проверить на границе контракта «Производительность и эксплуатация» в разделе «Блокировки и конкурентные коллекции»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
// Минимальный пример
synchronized (globalLock) {
    cache.computeIfAbsent(userId, this::load);
}
Вопрос 12 из 30
Какой граничный случай особенно важен для темы «Явные блокировки» в разделе «Блокировки и конкурентные коллекции»?
JavaЯвные блокировки · фрагмент для анализа
// Минимальный пример
var lock = new java.util.concurrent.locks.ReentrantLock();
lock.lock();
risky();
lock.unlock();
Вопрос 13 из 30
В каком дополнительном сценарии вывод о теме «Конкурентная карта ConcurrentHashMap» в разделе «Блокировки и конкурентные коллекции» может оказаться неверным?
JavaКонкурентная карта ConcurrentHashMap · фрагмент для анализа
// Минимальный пример
if (!cache.containsKey(key)) {
    cache.put(key, loadExpensive(key));
}
return cache.get(key);
Вопрос 14 из 30
Что следует изменить в разделе «Блокировки и конкурентные коллекции», чтобы сохранить замысел и соблюсти контракт «Условия ожидания»?
JavaУсловия ожидания · фрагмент для анализа
// Фрагмент на ревью
lock.lock();
try {
    if (queue.isEmpty()) notEmpty.await();
    return queue.removeFirst();
} finally { lock.unlock(); }
Вопрос 15 из 30
Что следует изменить в разделе «Блокировки и конкурентные коллекции», чтобы сохранить замысел и соблюсти контракт «Производительность и эксплуатация»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
// Фрагмент на ревью
synchronized (globalLock) {
    cache.computeIfAbsent(userId, this::load);
}
Вопрос 16 из 30
Какой контракт языка или библиотеки точнее всего описывает тему «Конкурентная карта ConcurrentHashMap» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 17 из 30
Какой диагноз для кода по теме «Тестирование и диагностика» в разделе «Блокировки и конкурентные коллекции» будет точным?
JavaТестирование и диагностика · фрагмент для анализа
lock.lock();
boolean completed = false;
try {
    balance -= debit(); // debit может бросить исключение
    completed = true;
} finally {
    if (completed) lock.unlock();
}
Вопрос 18 из 30
Какая правка точнее всего устраняет причину проблемы по теме «Явные блокировки» в разделе «Блокировки и конкурентные коллекции»?
JavaЯвные блокировки · фрагмент для анализа
// Фрагмент на ревью
var lock = new java.util.concurrent.locks.ReentrantLock();
lock.lock();
risky();
lock.unlock();
Вопрос 19 из 30
Какое правило Java действует для темы «Тестирование и диагностика» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 20 из 30
Какое изменение сделает код по теме «Атомарные операции» в разделе «Блокировки и конкурентные коллекции» надёжнее?
JavaАтомарные операции · фрагмент для анализа
// Фрагмент на ревью
var used = new java.util.concurrent.atomic.AtomicInteger();
var limit = new java.util.concurrent.atomic.AtomicInteger(10);
if (used.get() < limit.get()) used.incrementAndGet();
Вопрос 21 из 30
Какое замечание о сопровождении или производительности темы «Явные блокировки» в разделе «Блокировки и конкурентные коллекции» справедливо?
Вопрос 22 из 30
Что важно учитывать при применении механизма «Атомарные операции» из раздела «Блокировки и конкурентные коллекции» в рабочем проекте?
Вопрос 23 из 30
Что произойдёт с кодом по теме «Явные блокировки» в разделе «Блокировки и конкурентные коллекции»?
JavaЯвные блокировки · фрагмент для анализа
var lock = new java.util.concurrent.locks.ReentrantLock();
lock.lock();
risky();
lock.unlock();
Вопрос 24 из 30
Какое правило Java действует для темы «Явные блокировки» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 25 из 30
Какое изменение сделает код по теме «Тестирование и диагностика» в разделе «Блокировки и конкурентные коллекции» надёжнее?
JavaТестирование и диагностика · фрагмент для анализа
// Фрагмент на ревью
lock.lock();
boolean completed = false;
try {
    balance -= debit(); // debit может бросить исключение
    completed = true;
} finally {
    if (completed) lock.unlock();
}
Вопрос 26 из 30
Какое важное ограничение есть у такого снимка потоков при расследовании зависания?
ТекстТестирование и диагностика · выдержка из снимка потоков
"consumer-17" #84 WAITING
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(...)
  at Queue.take(Queue.java:47)

"producer-3" #19 RUNNABLE
  at Queue.publish(Queue.java:81)
Вопрос 27 из 30
Что произойдёт с кодом по теме «Конкурентная карта ConcurrentHashMap» в разделе «Блокировки и конкурентные коллекции»?
JavaКонкурентная карта ConcurrentHashMap · фрагмент для анализа
if (!cache.containsKey(key)) {
    cache.put(key, loadExpensive(key));
}
return cache.get(key);
Вопрос 28 из 30
Как точнее оценить пользу и цену решения по теме «Производительность и эксплуатация» в разделе «Блокировки и конкурентные коллекции»?
Вопрос 29 из 30
Что нужно отдельно проверить на границе контракта «Условия ожидания» в разделе «Блокировки и конкурентные коллекции»?
JavaУсловия ожидания · фрагмент для анализа
// ...
try {
    if (queue.isEmpty()) notEmpty.await();
    return queue.removeFirst();
} finally { lock.unlock(); }
Вопрос 30 из 30
Что нужно отдельно проверить на границе контракта «Атомарные операции» в разделе «Блокировки и конкурентные коллекции»?
JavaАтомарные операции · фрагмент для анализа
// Минимальный пример
var used = new java.util.concurrent.atomic.AtomicInteger();
var limit = new java.util.concurrent.atomic.AtomicInteger(10);
if (used.get() < limit.get()) used.incrementAndGet();

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу