PL Perl  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Подпрограммы и аргументы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 4 тематическим шкалам и подробный разбор.
Вопрос 1 из 20
Какое утверждение точно описывает поведение фрагмента «Массив аргументов @_» с `$_`, `$x` и `bump`?
PerlМассив аргументов @_
sub bump { $_[0]++ }
my $x = 4;
bump($x);
say $x;
Вопрос 2 из 20
Как завершится этот код по правилам Perl 5.40?
PerlПрототипы
sub add :prototype($$) {
    return $_[0] + $_[1];
}
say add 2, 3 * 4;
Вопрос 3 из 20
Что непосредственно делает код из блока «Возврат значения»?
PerlВозврат значения
sub f { my ($x) = @_; return $x, $x + 1 }
my $v = f(5);
say $v;
Вопрос 4 из 20
Что в этом примере с `%arg`, `@_` и `$arg` происходит на самом деле?
PerlИменованные параметры
sub create { my %arg = @_; say $arg{name} }
create(name => 'Ada', active => 1);
Вопрос 5 из 20
Какой риск связан именно с операциями `@_`?
PerlМассив аргументов @_
sub normalize { for (@_) { s/^\s+|\s+$//g } }
Вопрос 6 из 20
Почему вариант с `@_`, `@items` и `prototype` нельзя считать безопасным для рабочих данных?
PerlПрототипы
sub takes_array :prototype(@) {
    return scalar @_;
}
my @items = (1, 2);
say takes_array(@items);
Вопрос 7 из 20
Где находится первопричина возможного сбоя в коде с `@x`, `$x` и `find`?
PerlВозврат значения
sub find { return; }
my @x = find();
my $x = find();
Вопрос 8 из 20
Какой дефект проявится в варианте «Именованные параметры» с `%arg`, `@_` и `create`?
PerlИменованные параметры
sub create { my %arg = @_; }
create(name => 'Ada', 1);
Вопрос 9 из 20
Почему новая версия с `$v`, `$_` и `@_` устраняет исходный дефект?
PerlМассив аргументов @_
sub normalize { return map { my $v = $_; $v =~ s/^\s+|\s+$//g; $v } @_ }
Вопрос 10 из 20
Какую гарантию добавляет правка «Прототипы» с `$a`, `$b` и `@_`?
PerlПрототипы
sub add { my ($a, $b) = @_; die 'arity' unless @_ == 2; return $a + $b }
Вопрос 11 из 20
Что именно стало надёжнее после изменения в блоке «Возврат значения»?
PerlВозврат значения
sub find_one {
    my ($rows, $wanted) = @_;
    for my $row (@$rows) {
        return $row if $row->{id} eq $wanted;
    }
    return undef;
}

sub find_all {
    my ($rows, $wanted) = @_;
    return grep { $_->{id} eq $wanted } @$rows;
}
Вопрос 12 из 20
Как правка с `%arg`, `@_` и `$arg` меняет поведение на неудобном входе?
PerlИменованные параметры
sub create { my %arg = @_; die 'name' unless exists $arg{name}; die 'unknown' if grep { $_ ne 'name' && $_ ne 'active' } keys %arg; }
Вопрос 13 из 20
Что является главным ориентиром при работе с «Массив аргументов @_»?
Вопрос 14 из 20
Какое правило отделяет семантику Perl от случайно удачного запуска?
Вопрос 15 из 20
На что следует опираться при ревью кода по теме «Возврат значения»?
Вопрос 16 из 20
Какую закономерность проверяют задания темы «Именованные параметры»?
Вопрос 17 из 20
Какое предостережение по теме «Массив аргументов @_» нельзя заменить включением strict и warnings?
Вопрос 18 из 20
Что остаётся верным о теме «Прототипы», если учитывать контекст, отказ и побочный эффект?
Вопрос 19 из 20
Какое утверждение о теме «Возврат значения» не приписывает механизму лишних гарантий?
Вопрос 20 из 20
Что важно отдельно проверить при переносе приёма «Именованные параметры» в рабочий код?

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

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

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

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