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

Области видимости my, our и state

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 4 тематическим шкалам и подробный разбор.
Вопрос 1 из 20
Какой прогноз для кода с `$x` выдержит пошаговую проверку?
PerlЛексические имена
my $x = 1;
{ my $x = 2; say $x }
say $x;
Вопрос 2 из 20
Как ведёт себя участок «Пакетные переменные» при выполнении?
PerlПакетные переменные
package Config;
our $mode = 'prod';
package main;
say $Config::mode;
Вопрос 3 из 20
Какой вариант верно связывает операции с `$n` и `next_id` и наблюдаемое поведение?
PerlПостоянное состояние
use feature 'state';
sub next_id { state $n = 0; ++$n }
say next_id(); say next_id();
Вопрос 4 из 20
Как завершится этот код по правилам Perl 5.40?
PerlЗамыкания
sub make { my $n = 0; return sub { ++$n } }
my $a = make(); my $b = make();
say $a->(); say $a->(); say $b->();
Вопрос 5 из 20
Какую границу автор фрагмента «Лексические имена» не учёл?
PerlЛексические имена
for my $i (1..3) { push @subs, sub { $i } }
say $_->() for @subs;
Вопрос 6 из 20
Какой отказ объясняется показанным кодом, а не внешней системой?
PerlПакетные переменные
our $x = 1;
sub f { local $x = 2; g() }
Вопрос 7 из 20
Обычный случай проходит. Что в блоке «Постоянное состояние» всё же сделано неверно?
PerlПостоянное состояние
sub cache { state %h; return $h{$_[0]} ||= compute($_[0]) }
Вопрос 8 из 20
Что именно нарушает контракт в коде по теме «Замыкания»?
PerlЗамыкания
my $large = load_data();
my $cb = sub { return $large->{name} };
Вопрос 9 из 20
Какой вывод точнее всего объясняет пользу правки «Лексические имена»?
PerlЛексические имена
for my $i (1..3) { my $copy = $i; push @subs, sub { $copy } }
Вопрос 10 из 20
Как исправленный код с `$VERSION` сохраняет исходное назначение?
PerlПакетные переменные
package App; our $VERSION = '1.2.0';
Вопрос 11 из 20
Как показанная редакция «Постоянное состояние» делает контракт проверяемым?
PerlПостоянное состояние
sub cache { state %h; my ($k)=@_; return $h{$k} if exists $h{$k}; return $h{$k}=compute($k) }
Вопрос 12 из 20
Что изменилось в работе фрагмента «Замыкания»?
PerlЗамыкания
my $name = $large->{name};
undef $large;
my $cb = sub { $name };
Вопрос 13 из 20
Как сформулировать основное правило блока «Лексические имена» без лишних обещаний?
Вопрос 14 из 20
На что следует опираться при ревью кода по теме «Пакетные переменные»?
Вопрос 15 из 20
Какое правило отделяет семантику Perl от случайно удачного запуска?
Вопрос 16 из 20
Какой вывод стоит перенести из учебного примера «Замыкания» в рабочий код?
Вопрос 17 из 20
Что остаётся верным о теме «Лексические имена», если учитывать контекст, отказ и побочный эффект?
Вопрос 18 из 20
Что остаётся верным о теме «Пакетные переменные», если учитывать контекст, отказ и побочный эффект?
Вопрос 19 из 20
Какую оговорку нужно добавить к основному правилу темы «Постоянное состояние»?
Вопрос 20 из 20
Какой вывод о механизме «Замыкания» выдерживает проверку на пограничном входе?

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

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

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

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