PL Perl  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Работа с базами через DBI

Практические задания по теме «Работа с базами через DBI» требуют сопоставить несколько решений, найти источник ошибки и оценить последствия выбранного подхода. В тесте 25 вопросов: код нужно не только читать, но и трассировать, проверять на отказ, сопоставлять несколько правдоподобных решений. Ровно 15 заданий содержат фрагменты Perl; остальные проверяют выбор подхода в реальной ситуации. Если в условии не сказано иначе, предполагаются современный Perl 5.40+, strict и warnings; внешние модули рассматриваются в указанном контексте.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 5 тематическим шкалам и подробный разбор.
Вопрос 1 из 25
Что в этом примере с `$dbh`, `$dsn` и `$user` происходит на самом деле?
PerlПодключение
my $dbh = DBI->connect($dsn,$user,$pass,{RaiseError=>1,PrintError=>0,AutoCommit=>1});
Вопрос 2 из 25
Какое описание не теряет важный побочный эффект участка с `$sth`, `$dbh` и `$id`?
PerlПодготовленные запросы
my $sth=$dbh->prepare('SELECT * FROM users WHERE id=?');
$sth->execute($id);
Вопрос 3 из 25
Какое описание не теряет важный побочный эффект участка с `$dbh`, `$err` и `debit`?
PerlТранзакции
$dbh->{AutoCommit} = 0;
eval { debit(); credit(); $dbh->commit; 1 };
if ($@) { my $err = $@; eval { $dbh->rollback }; die $err }
Вопрос 4 из 25
Какое утверждение точно описывает поведение фрагмента «Обработка ошибок» с `$rows`, `$sth` и `@bind`?
PerlОбработка ошибок
my $rows = $sth->execute(@bind);
while (my $row = $sth->fetchrow_hashref) {
    handle_row($row);
}
Вопрос 5 из 25
Как точнее всего описать действие фрагмента с `$dbh` и `connect`?
PerlТестовый сценарий
my $dbh=DBI->connect('dbi:SQLite:dbname=:memory:','','',{RaiseError=>1});
Вопрос 6 из 25
Какую границу автор фрагмента «Подключение» не учёл?
PerlПодключение
my $dbh = DBI->connect($dsn,$user,$pass);
$dbh->do('UPDATE t SET x=1');
Вопрос 7 из 25
Обычный случай проходит. Что в блоке «Подготовленные запросы» всё же сделано неверно?
PerlПодготовленные запросы
my $sql = "SELECT * FROM users ORDER BY $column";
Вопрос 8 из 25
Какой риск связан именно с операциями `debit` и `credit`?
PerlТранзакции
debit();
credit();
Вопрос 9 из 25
Какой диагноз точнее всего относится к участку с `$row`, `$sth` и `handle_row`?
PerlОбработка ошибок
while (my $row = $sth->fetchrow_hashref) {
    handle_row($row);
}
Вопрос 10 из 25
Какой диагноз точнее всего относится к участку с `$dbh`, `$ENV` и `$user`?
PerlТестовый сценарий
my $dbh = DBI->connect(
    $ENV{PROD_DSN}, $user, $password,
    { RaiseError => 1, AutoCommit => 1 },
);
Вопрос 11 из 25
Почему этот вариант пригоднее для рабочего кода?
PerlПодключение
my $dbh = DBI->connect($dsn,$user,$pass,{RaiseError=>1,PrintError=>0}) or die DBI->errstr;
Вопрос 12 из 25
Как правка с `%allowed`, `$col` и `$allowed` меняет поведение на неудобном входе?
PerlПодготовленные запросы
my %allowed=(name=>'name',created=>'created_at');
my $col=$allowed{$column}//die 'bad';
my $sth=$dbh->prepare("SELECT * FROM users ORDER BY $col");
Вопрос 13 из 25
Что изменилось в работе фрагмента «Транзакции»?
PerlТранзакции
eval { $dbh->begin_work; debit(); credit(); $dbh->commit; 1 } or do { my $e=$@; eval{$dbh->rollback}; die $e };
Вопрос 14 из 25
Как правка с `$row`, `$sth` и `handle_row` меняет поведение на неудобном входе?
PerlОбработка ошибок
while (my $row = $sth->fetchrow_hashref) {
    handle_row($row);
}
die $sth->errstr if $sth->err;
Вопрос 15 из 25
Какое свойство новой версии с `$dsn`, `$ENV` и `looks_production` важно закрепить тестом?
PerlТестовый сценарий
my $dsn=$ENV{TEST_DSN}//'dbi:SQLite:dbname=:memory:';
die 'production refused' if looks_production($dsn);
Вопрос 16 из 25
Какое положение темы «Подключение» помогает выбрать надёжную реализацию?
Вопрос 17 из 25
Какое правило связывает пять заданий блока «Подготовленные запросы»?
Вопрос 18 из 25
Какой принцип объясняет три кодовых примера блока «Транзакции»?
Вопрос 19 из 25
Какую закономерность проверяют задания темы «Обработка ошибок»?
Вопрос 20 из 25
Какое положение темы «Тестовый сценарий» помогает выбрать надёжную реализацию?
Вопрос 21 из 25
Что остаётся верным о теме «Подключение», если учитывать контекст, отказ и побочный эффект?
Вопрос 22 из 25
Какое утверждение о теме «Подготовленные запросы» не приписывает механизму лишних гарантий?
Вопрос 23 из 25
Что остаётся верным о теме «Транзакции», если учитывать контекст, отказ и побочный эффект?
Вопрос 24 из 25
Какое утверждение о теме «Обработка ошибок» не приписывает механизму лишних гарантий?
Вопрос 25 из 25
Что важно отдельно проверить при переносе приёма «Тестовый сценарий» в рабочий код?

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

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

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

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