Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 8
Common Intermediate Language и системное программирование в Microsoft .NET - тест 8
Упражнение 1:
Номер 1
Код метода в сборке .NET представляет собой:
Ответ:
 (1) линейную последовательность CIL-инструкций 
 (2) массив описателей обработки исключений 
 (3) циклическую последовательность CIL-инструкций 
 (4) массив описателей блоков обработки исключений 
Номер 2
Представленный в теле метода алгоритм в общем случае:
Ответ:
 (1) линейный 
 (2) нелинейный 
 (3) произвольный 
Номер 3
Существуют следующие механизмы передачи управления между инструкциями:
Ответ:
 (1) явная передача управления с помощью инструкции перехода 
 (2) передача управления между событиями 
 (3) неявная передача управления на следующую инструкцию в последовательности 
 (4) передача управления на обработчик исключения при выходе из защищенного блока 
 (5) передача управления между методами 
Упражнение 2:
Номер 1
В каком примере метод find
выполняет поиск элемента k
в массиве X
:
Ответ:
 (1) find(int32[] k, int32 X)
 
 (2) find(int32 k)
 
 (3) find(int32[] X)
 
 (4) find(int32[] X, int32 k)
 
Номер 2
При использовании метода find
для поиска элемента в массиве, в случае если элемент не найден возвращается:
Ответ:
 (1) 1 
 (2) 0 
 (3) +1 
 (4) -1 
Номер 3
При использовании метода find
для поиска элемента в массиве, в случае если элемент найден возвращается:
Ответ:
 (1) -1 
 (2) его значение 
 (3) его индекс 
 (4) 0 
Упражнение 3:
Номер 1
Какая схема представления кода является наиболее компактной?
Ответ:
 (1) в виде нелинейной последовательности инструкций 
 (2) в виде линейной последовательности инструкций 
 (3) в виде произвольной последовательности инструкций 
 (4) в виде симметричной последовательности инструкций 
Номер 2
Какие метаинструменты, выполняющие только анализ CIL-кода, могут непосредственно работать с линейной последовательностью инструкций:
Ответ:
 (1) JIT-компиляторы 
 (2) интерпретаторы 
 (3) верификаторы 
 (4) отладчики 
Номер 3
Для метаинструментов, которые выполняют преобразование CIL-кода удобно использовать его представление:
Ответ:
 (1) в виде линейного графа 
 (2) в виде графа потока управления 
 (3) в виде нелинейного графа 
 (4) в виде графа потока 
Упражнение 4:
Номер 1
Дуги графа потока управления изображают:
Ответ:
 (1) передачу управления между узлами 
 (2) передачу управления между потоками 
 (3) передачу управления между метаинтсрументами 
 (4) передачу управления между инструкциями 
Номер 2
Количество дуг, исходящих из узла графа, зависит от:
Ответ:
 (1) потока управления 
 (2) записанной в нем инструкции 
 (3) специальных метаинструментов 
 (4) группировки секций 
Номер 3
Номер дуги должен задавать ее:
Ответ:
 (1) семантику 
 (2) синтаксис 
 (3) граф 
 (4) схему 
Упражнение 5:
Номер 1
Блоки обработки исключений в CIL реализованы в виде:
Ответ:
 (1) массива инструкций 
 (2) массива описателей 
 (3) массива стека 
 (4) массива пременных буфера 
Номер 2
Главный блок графа, в который непосредственно или транзитивно входят все остальные узлы графа - это:
Ответ:
 (1) защищенный блок 
 (2) блок фильтрации 
 (3) блок тела метода 
 (4) блок обработки исключений 
Номер 3
Какой блок прикреплен к защищенному блоку и может получить управление при выходе из этого защищенного блока:
Ответ:
 (1) блок фильтрации 
 (2) блок тела метода 
 (3) защищенный блок 
 (4) блок обработки исключений 
Упражнение 6:
Номер 1
Блок обработки исключений:
Ответ:
 (1) прикреплен к защищенному блоку 
 (2) соответствует try-блоку в программе 
 (3) главный блок графа 
Номер 2
Блок обработки исключений в графе потока управления имеет:
Ответ:
 (1) один вход 
 (2) два входа 
 (3) три входа 
 (4) четыре входа 
Номер 3
Выход из блока обработки исключений в графе потока управления может осуществляться через:
Ответ:
 (1) один выходной узел 
 (2) несколько выходных узлов 
 (3) линейные выходные узлы 
 (4) линейный выходной узел 
Упражнение 7:
Номер 1
Каждый защищенный блок имеет ссылки на соответствующие:
Ответ:
 (1) блоки обработки исключений 
 (2) блоки фильтрации 
 (3) защищенные блоки 
Номер 2
Обработка исключений требует введения в граф особых дуг, которые отражают:
Ответ:
 (1) последовательность обработчиков исключений, присоединенных к блоку фильтрации 
 (2) последовательность обработчиков исключений, присоединенных к защищенному блоку 
 (3) последовательность инструкций, присоединенных к защищенному блоку 
 (4) последовательность инструкций, присоединенных к блоку фильтрации 
Номер 3
Какой блок имеет более сложную структуру, чем другие блоки обработки исключений:
Ответ:
 (1) блок обработки исключений с фильтрацией по типу 
 (2) блок обработки исключений finally/fault-блок 
 (3) блок обработки исключений с пользовательской фильтрацией  
Упражнение 8:
Номер 1
Когда выполнение некоторой инструкции в линейной последовательности инструкций порождает исключение, всегда можно легко определить защищенный блок, которому:
Ответ:
 (1) эта инструкция соответствует 
 (2) эта инструкция эквивалентна 
 (3) эта инструкция принадлежит 
 (4) эта инструкция не принадлежит 
Номер 2
Чтобы определить, в какой блок входит некоторая инструкция графа, мы должны каким-то образом пройти от этой инструкции по дугам графа:
Ответ:
 (1) в обратном направлении до выхода из блока 
 (2) в обратном направлении до входа в блок 
 (3) продолжить путь до входа в блок 
 (4) продолжить путь до выхода из блока 
Номер 3
К чему сводится операция поиска блока, в который входит инструкция, на графе, включающем дерево блоков:
Ответ:
 (1) к переходу по одной дуге от блока к инструкции 
 (2) к переходу по одной дуге к другой 
 (3) к переходу по одной дуге от инструкции к блоку 
 (4) к переходу по одной дуге от блока к блоку 
Упражнение 9:
Номер 1
Дан массив инструкций P
размера N
и массив предложений обработки исключений EH
размера M
, какое поле задает тип обработчика исключений:
Ответ:
 (1) Flags
 
 (2) TryOffset
 
 (3) HandlerOffset
 
 (4) FilterOffset
 
Номер 2
Дан массив инструкций P
размера N
и массив предложений обработки исключений EH
размера M
, какое поле является количество инструкций, входящих в защищенную область:
Ответ:
 (1) TryLength
 
 (2) ClassToken
 
 (3) FilterOffset
 
 (4) TryOffset
 
Номер 3
В процессе преобразования линейной последовательности инструкций в граф потока управления, на первом этапе, для каждой инструкции, входящей в массив P
размера N
:
Ответ:
 (1) создается соответствующий ей блок 
 (2) создается соответствующий ей узел блока 
 (3) создается соответствующий ей узел графа 
 (4) создается соответствующий ей граф 
Упражнение 10:
Номер 1
В процессе преобразования линейной последовательности инструкций в граф потока управления, на первом этапе, для каждой инструкции, входящей в массив P
, мы создаем соответствующий ей узел графа, в который записываются все данные об инструкции, кроме информации о:
Ответ:
 (1) передачи состояний 
 (2) передаче управления 
 (3) принадлежности блокам 
 (4) принадлежности узлам 
Номер 2
Дан массив инструкций P
размера N
и массив предложений обработки исключений EH
размера M
. Этап создания узелов графа для каждой инструкции и формирования из созданных узлов массива на C#-подобном псевдоязыке можно записать так:
Ответ:
 (1) Nodes = новый массив узлов размера N;
for (int i = 0; i < N; i++)
{
Nodes[i] = новый узел, содержащий информацию об инструкции P[i];
} 
 (2) Nodes = новый массив узлов размера N;
{
Nodes[i] = новый узел, содержащий информацию об инструкции P[i];
} 
 (3) Nodes = новый массив узлов размера N;
for (int i = 0; i < N; i++) 
 (4) for (int i = 0; i < N; i++)
{
Nodes[i] = новый узел, содержащий информацию об инструкции P[i];
} 
Номер 3
Дан массив инструкций B
размера G
и массив предложений обработки исключений OP
размера Z
. На входе этапа создания дерева блоков мы имеем:
Ответ:
 (1) специальный массив T
 
 (2) вспомогательный массив T
 
 (3) массив OP
 
Упражнение 11:
Номер 1
Дан массив инструкций B
размера G
и массив предложений обработки исключений OP
размера Z
. На выходе этапа создания дерева блоков мы получаем:
Ответ:
 (1) дерево блоков 
 (2) вспомогательный массив T
 
 (3) специальный массив T
 
 (4) вспомогательный массив T
 
Номер 2
Дан массив инструкций B
размера G
и массив предложений обработки исключений OP
размера Z
. На выходе этапа создания дерева блоков мы получаем вспомогательный массив T
, каждый элемент которого состоит из следующих полей:
Ответ:
 (1) block
 
 (2) offset
 
 (3) set
 
 (4) length
 
Номер 3
Дан массив инструкций B
размера G
и массив предложений обработки исключений OP
размера Z
. На выходе этапа создания дерева блоков их минимальное количество в массиве T
равно:
Ответ:
 (1) Z+2
 
 (2) B+2
 
 (3) T+2
 
 (4) G+2
 
Упражнение 12:
Номер 1
Преобразование линейной последовательности инструкций в граф потока управления происходит в ходе следующих этапов:
Ответ:
 (1) создание массива узлов 
 (2) создание дерева блоков 
 (3) присвоение родительских блоков узлам графа 
 (4) формирование дуг 
Номер 2
В процессе преобразования линейной последовательности инструкций в граф потока управления, на третьем этапе, во время первой итерации цикла родителем всех узлов становится:
Ответ:
 (1) блок тела метода 
 (2) защищенный блок 
 (3) блок фильтрации 
Номер 3
На четвертом этапе процесса преобразования линейной последовательности инструкций в граф потока управления в последний добавляются:
Ответ:
 (1) дуги 
 (2) вершины 
 (3) циклы 
 (4) ветвления