💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 5 тематическим шкалам и подробный разбор.
Вопрос 10 из 25
Почему участок с `$json`, `$unbounded_body` и `decode` ненадёжен на пограничном входе?
Perl Выбор компромисса Копировать
eval { $json->decode($unbounded_body) };
Дефект объясняется базовым поведением фрагмента: Полная декодировка проста и надёжна для ограниченного размера, но расход памяти примерно кратен объёму входа.
Ограничение времени не защищает от чрезмерного тела, глубины вложенности и потребления памяти.
Дефект следует искать в другой оговорке: Универсальный формат не отменяет лимиты глубины, размера, количества элементов и времени обработки.
Источником дефекта становится само изменение: До разбора применяется жёсткий лимит, соответствующий договорённости API.
Показанный код уже соблюдает правило «Выбор JSON, XML, CSV или потокового формата определяется размером, схемой, совместимостью, возможностью частичного чтения и требованиями к типам», поэтому отдельного дефекта нет.
Вопрос 15 из 25
Что изменилось в работе фрагмента «Выбор компромисса»?
Perl Выбор компромисса Копировать
die 'too large' if length($payload)>$MAX;
my $data=$json->decode($payload);
Изменение формы записи само по себе обеспечивает правило «Выбор JSON, XML, CSV или потокового формата определяется размером, схемой, совместимостью, возможностью частичного чтения и требованиями к типам».
До разбора применяется жёсткий лимит, соответствующий договорённости API.
После изменения сохраняется прежний дефект: Ограничение времени не защищает от чрезмерного тела, глубины вложенности и потребления памяти.
Правка лишь воспроизводит исходное поведение: Полная декодировка проста и надёжна для ограниченного размера, но расход памяти примерно кратен объёму входа.
Правка решает задачу тем, что устраняет следующую границу: Универсальный формат не отменяет лимиты глубины, размера, количества элементов и времени обработки.
Вопрос 20 из 25
Какой принцип объясняет три кодовых примера блока «Выбор компромисса»?
Правило «Выбор JSON, XML, CSV или потокового формата определяется размером, схемой, совместимостью, возможностью частичного чтения и требованиями к типам» гарантирует, что ограничение «Универсальный формат не отменяет лимиты глубины, размера, количества элементов и времени обработки» больше не проявится.
Выбор JSON, XML, CSV или потокового формата определяется размером, схемой, совместимостью, возможностью частичного чтения и требованиями к типам.
Достаточно применить следующее исправление: До разбора применяется жёсткий лимит, соответствующий договорённости API.
Всю тему можно представить как защиту от одного отказа: Ограничение времени не защищает от чрезмерного тела, глубины вложенности и потребления памяти.
Общее правило темы «Выбор компромисса» сводится к частному результату: Полная декодировка проста и надёжна для ограниченного размера, но расход памяти примерно кратен объёму входа.
Вопрос 25 из 25
Какой вывод о механизме «Выбор компромисса» выдерживает проверку на пограничном входе?
Базовое правило «Выбор JSON, XML, CSV или потокового формата определяется размером, схемой, совместимостью, возможностью частичного чтения и требованиями к типам» автоматически снимает указанную границу.
Достаточно включить strict и warnings, чтобы пограничный случай стал невозможен.
Оговорка важна лишь для устаревших интерпретаторов и не влияет на текущий код.
Ограничение «Универсальный формат не отменяет лимиты глубины, размера, количества элементов и времени обработки» исчезает, если обычный пример один раз завершился успешно.
Универсальный формат не отменяет лимиты глубины, размера, количества элементов и времени обработки.