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

JDBC и транзакции

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант; близкие ответы различаются стадией ошибки, порядком действий или границей контракта. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и объяснения.
Вопрос 1 из 30
Какой инженерный компромисс характерен для темы «Тестирование и диагностика» в разделе «JDBC и транзакции»?
Вопрос 2 из 30
Какая правка точнее всего устраняет причину проблемы по теме «Пул соединений» в разделе «JDBC и транзакции»?
JavaПул соединений · фрагмент для анализа
// Фрагмент на ревью
try (var c = dataSource.getConnection();
     var ps = c.prepareStatement("select pg_sleep(60)")) {
    ps.execute();
}
Вопрос 3 из 30
Как лучше исправить или прояснить поведение темы «Соединения» в разделе «JDBC и транзакции»?
JavaСоединения · фрагмент для анализа
// Фрагмент на ревью
Connection c = dataSource.getConnection();
PreparedStatement ps = c.prepareStatement(SQL);
return ps.executeQuery();
Вопрос 4 из 30
Какое замечание о сопровождении или производительности темы «Параметризованные запросы» в разделе «JDBC и транзакции» справедливо?
Вопрос 5 из 30
Какое изменение сделает код по теме «Транзакции» в разделе «JDBC и транзакции» надёжнее?
JavaТранзакции · фрагмент для анализа
// Фрагмент на ревью
c.setAutoCommit(false);
withdraw(c, from, amount);
deposit(c, to, amount);
c.commit();
Вопрос 6 из 30
Как поведёт себя фрагмент по теме «Соединения» при разборе раздела «JDBC и транзакции»?
JavaСоединения · фрагмент для анализа
Connection c = dataSource.getConnection();
PreparedStatement ps = c.prepareStatement(SQL);
return ps.executeQuery();
Вопрос 7 из 30
Какая правка точнее всего устраняет причину проблемы по теме «Параметризованные запросы» в разделе «JDBC и транзакции»?
JavaПараметризованные запросы · фрагмент для анализа
// Фрагмент на ревью
String sql = "select * from users order by ?";
try (var ps = c.prepareStatement(sql)) {
    ps.setString(1, userSort);
    return ps.executeQuery();
}
Вопрос 8 из 30
Какое замечание о сопровождении или производительности темы «Соединения» в разделе «JDBC и транзакции» справедливо?
Вопрос 9 из 30
Что следует изменить в разделе «JDBC и транзакции», чтобы сохранить замысел и соблюсти контракт «Производительность и эксплуатация»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
// Фрагмент на ревью
for (Order o : orders) {
    try (var ps = c.prepareStatement(INSERT)) {
        bind(ps, o);
        ps.executeUpdate();
    }
}
Вопрос 10 из 30
Какое ограничение есть у такого модульного теста преобразования ResultSet?
JavaТестирование и диагностика · фрагмент для анализа
var rs = org.mockito.Mockito.mock(java.sql.ResultSet.class);
org.mockito.Mockito.when(rs.getBigDecimal("balance"))
    .thenReturn(new java.math.BigDecimal("10.00"));

assertEquals(new java.math.BigDecimal("10.00"), mapper.balance(rs));
Вопрос 11 из 30
В каком дополнительном сценарии вывод о теме «Соединения» в разделе «JDBC и транзакции» может оказаться неверным?
JavaСоединения · фрагмент для анализа
// Минимальный пример
Connection c = dataSource.getConnection();
PreparedStatement ps = c.prepareStatement(SQL);
return ps.executeQuery();
Вопрос 12 из 30
На какое правило следует опираться при разборе темы «Параметризованные запросы» в разделе «JDBC и транзакции»?
Вопрос 13 из 30
Как точнее оценить пользу и цену решения по теме «Транзакции» в разделе «JDBC и транзакции»?
Вопрос 14 из 30
В каком дополнительном сценарии вывод о теме «Параметризованные запросы» в разделе «JDBC и транзакции» может оказаться неверным?
JavaПараметризованные запросы · фрагмент для анализа
// ...
try (var ps = c.prepareStatement(sql)) {
    ps.setString(1, userSort);
    return ps.executeQuery();
}
Вопрос 15 из 30
Что произойдёт с кодом по теме «Производительность и эксплуатация» в разделе «JDBC и транзакции»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
for (Order o : orders) {
    try (var ps = c.prepareStatement(INSERT)) {
        bind(ps, o);
        ps.executeUpdate();
    }
}
Вопрос 16 из 30
Какой диагноз для кода по теме «Тестирование и диагностика» в разделе «JDBC и транзакции» будет точным?
JavaТестирование и диагностика · фрагмент для анализа
@JdbcTest // встроенная H2 вместо рабочей PostgreSQL
class TransferRepositoryTest {
    @Test void transferRollsBack() {
        service.transfer(a, b, 100);
        assertEquals(expected, repository.balance(a));
    }
}
Вопрос 17 из 30
Какой инженерный компромисс характерен для темы «Производительность и эксплуатация» в разделе «JDBC и транзакции»?
Вопрос 18 из 30
Что произойдёт с кодом по теме «Параметризованные запросы» в разделе «JDBC и транзакции»?
JavaПараметризованные запросы · фрагмент для анализа
String sql = "select * from users order by ?";
try (var ps = c.prepareStatement(sql)) {
    ps.setString(1, userSort);
    return ps.executeQuery();
}
Вопрос 19 из 30
Как точнее оценить пользу и цену решения по теме «Пул соединений» в разделе «JDBC и транзакции»?
Вопрос 20 из 30
На какое правило следует опираться при разборе темы «Пул соединений» в разделе «JDBC и транзакции»?
Вопрос 21 из 30
Что следует изменить в разделе «JDBC и транзакции», чтобы сохранить замысел и соблюсти контракт «Тестирование и диагностика»?
JavaТестирование и диагностика · фрагмент для анализа
// Фрагмент на ревью
@JdbcTest // встроенная H2 вместо рабочей PostgreSQL
class TransferRepositoryTest {
    @Test void transferRollsBack() {
        service.transfer(a, b, 100);
        assertEquals(expected, repository.balance(a));
    }
}
Вопрос 22 из 30
На какое правило следует опираться при разборе темы «Транзакции» в разделе «JDBC и транзакции»?
Вопрос 23 из 30
В каком дополнительном сценарии вывод о теме «Транзакции» в разделе «JDBC и транзакции» может оказаться неверным?
JavaТранзакции · фрагмент для анализа
// Минимальный пример
c.setAutoCommit(false);
withdraw(c, from, amount);
deposit(c, to, amount);
c.commit();
Вопрос 24 из 30
Какой диагноз для кода по теме «Пул соединений» в разделе «JDBC и транзакции» будет точным?
JavaПул соединений · фрагмент для анализа
try (var c = dataSource.getConnection();
     var ps = c.prepareStatement("select pg_sleep(60)")) {
    ps.execute();
}
Вопрос 25 из 30
На какое правило следует опираться при разборе темы «Тестирование и диагностика» в разделе «JDBC и транзакции»?
Вопрос 26 из 30
Какой граничный случай особенно важен для темы «Производительность и эксплуатация» в разделе «JDBC и транзакции»?
JavaПроизводительность и эксплуатация · фрагмент для анализа
for (Order o : orders) {
    try (var ps = c.prepareStatement(INSERT)) {
        bind(ps, o);
        ps.executeUpdate();
// ...
Вопрос 27 из 30
Какое утверждение о механизме «Производительность и эксплуатация» верно в контексте раздела «JDBC и транзакции»?
Вопрос 28 из 30
Как поведёт себя фрагмент по теме «Транзакции» при разборе раздела «JDBC и транзакции»?
JavaТранзакции · фрагмент для анализа
c.setAutoCommit(false);
withdraw(c, from, amount);
deposit(c, to, amount);
c.commit();
Вопрос 29 из 30
Какой контракт языка или библиотеки точнее всего описывает тему «Соединения» в разделе «JDBC и транзакции»?
Вопрос 30 из 30
Какой граничный случай особенно важен для темы «Пул соединений» в разделе «JDBC и транзакции»?
JavaПул соединений · фрагмент для анализа
// Минимальный пример
try (var c = dataSource.getConnection();
     var ps = c.prepareStatement("select pg_sleep(60)")) {
    ps.execute();
}

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

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

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

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