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

Moose и современная модель объектов

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 6 тематическим шкалам и подробный разбор.
Вопрос 1 из 30
Какой вариант верно связывает операции с ключевыми операциями и наблюдаемое поведение?
PerlАтрибуты
package User;
use Moose;
has 'name' => (is => 'ro', isa => 'Str', required => 1);
Вопрос 2 из 30
Не запуская фрагмент «Типы», выберите точное описание его работы.
PerlТипы
package Listener;
use Moose;
has 'port' => (is => 'ro', isa => 'Int');
Вопрос 3 из 30
Какой вариант верно связывает операции с `$self`, `$message` и `@_` и наблюдаемое поведение?
PerlРоли
package Loggable;
use Moose::Role;
requires 'logger';
sub log_event {
    my ($self, $message) = @_;
    $self->logger->info($message);
}
Вопрос 4 из 30
Какое описание не теряет важный побочный эффект участка с ключевыми операциями?
PerlНеизменяемые объекты
package Record;
use Moose;
has 'id' => (is => 'ro', isa => 'Str', required => 1);
__PACKAGE__->meta->make_immutable;
Вопрос 5 из 30
Какой вывод следует непосредственно из операций примера «Риски безопасности»?
PerlРиски безопасности
package Job;
use Moose;
has 'command' => (is => 'ro', isa => 'ArrayRef[Str]', required => 1);
sub run {
    my ($self) = @_;
    return system @{ $self->command };
}
Вопрос 6 из 30
Какой прогноз для кода с ключевыми операциями выдержит пошаговую проверку?
PerlКонтроль производительности
__PACKAGE__->meta->make_immutable;
Вопрос 7 из 30
Обычный случай проходит. Что в блоке «Атрибуты» всё же сделано неверно?
PerlАтрибуты
package CacheOwner;
use Moose;
has 'cache' => (is => 'rw', default => {});
Вопрос 8 из 30
Обычный случай проходит. Что в блоке «Типы» всё же сделано неверно?
PerlТипы
package Source;
use Moose;
has 'path' => (is => 'ro', isa => 'Str', required => 1);
sub open_path {
    my ($self) = @_;
    open my $fh, '<', $self->path or die $!;
    return $fh;
}
Вопрос 9 из 30
Какую границу автор фрагмента «Роли» не учёл?
PerlРоли
package Worker;
use Moose;
with 'RoleA', 'RoleB';    # обе роли предоставляют run
Вопрос 10 из 30
Какой риск связан именно с операциями `$obj`?
PerlНеизменяемые объекты
$obj->{id}='other';
Вопрос 11 из 30
Какой риск связан именно с операциями `$self`, `@_` и `$module`?
PerlРиски безопасности
package PluginLoader;
use Moose;
has 'module' => (is => 'ro', isa => 'Str', required => 1);
sub load_module {
    my ($self) = @_;
    my $module = $self->module;
    eval "require $module; 1" or die $@;
}
Вопрос 12 из 30
Какое скрытое допущение ломает контракт примера «Контроль производительности»?
PerlКонтроль производительности
package Report;
use Moose;
has 'data' => (is => 'ro', default => sub { load_huge() });
Вопрос 13 из 30
Что отличает это исправление от маскировки симптома?
PerlАтрибуты
package CacheOwner;
use Moose;
has 'cache' => (is => 'rw', default => sub { {} });
Вопрос 14 из 30
Как показанная редакция «Типы» делает контракт проверяемым?
PerlТипы
use Moose::Util::TypeConstraints;
subtype 'Port',
    as 'Int',
    where { $_ >= 1 && $_ <= 65_535 };
Вопрос 15 из 30
Почему новая версия с ключевыми операциями устраняет исходный дефект?
PerlРоли
package Worker;
use Moose;
with 'RoleA' => {
    -alias    => { run => 'run_a' },
    -excludes => 'run',
};
Вопрос 16 из 30
Почему этот вариант пригоднее для рабочего кода?
PerlНеизменяемые объекты
package Basket;
use Moose;
has 'items' => (is => 'ro', isa => 'ArrayRef[Str]', required => 1);
around BUILDARGS => sub {
    my ($orig, $class, %args) = @_;
    die 'items must be an array' if ref($args{items}) ne 'ARRAY';
    $args{items} = [ @{ $args{items} } ];
    return $class->$orig(%args);
};
Вопрос 17 из 30
Что именно стало надёжнее после изменения в блоке «Риски безопасности»?
PerlРиски безопасности
use Moose::Util::TypeConstraints;
enum 'Plugin' => [qw(csv json xml)];
Вопрос 18 из 30
Что меняется по существу после правки в блоке «Контроль производительности»?
PerlКонтроль производительности
package Report;
use Moose;
has 'data' => (
    is      => 'ro',
    lazy    => 1,
    builder => '_build_data',
);
Вопрос 19 из 30
Какой вывод объединяет результат, дефект и исправление в теме «Атрибуты»?
Вопрос 20 из 30
Какое правило отделяет семантику Perl от случайно удачного запуска?
Вопрос 21 из 30
Какой общий принцип темы «Роли» переносится на другие программы?
Вопрос 22 из 30
Какой вывод стоит перенести из учебного примера «Неизменяемые объекты» в рабочий код?
Вопрос 23 из 30
Какое правило темы «Риски безопасности» объясняет результат, дефект и правку?
Вопрос 24 из 30
Какую закономерность проверяют задания темы «Контроль производительности»?
Вопрос 25 из 30
Как точнее всего обозначить границу безопасного использования приёма «Атрибуты»?
Вопрос 26 из 30
Какую оговорку нужно добавить к основному правилу темы «Типы»?
Вопрос 27 из 30
Какое различие в механизме «Роли» чаще всего теряют при обобщении?
Вопрос 28 из 30
Какое различие в механизме «Неизменяемые объекты» чаще всего теряют при обобщении?
Вопрос 29 из 30
Какую оговорку нужно добавить к основному правилу темы «Риски безопасности»?
Вопрос 30 из 30
Какое предостережение по теме «Контроль производительности» нельзя заменить включением strict и warnings?

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

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

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

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