Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 9
Common Intermediate Language и системное программирование в Microsoft .NET - тест 9
Упражнение 1:
Номер 1
Код программ не разрушает память, если эти программы, будучи запущенными в одном адресном пространстве:
Ответ:
 (1) корректно объединены друг с другом 
 (2) корректно изолированы друг от друга 
 (3) корректно распараллелены друг с другом 
 (4) корректно зависимы друг от друга 
Номер 2
Процесс автоматического доказательства того, что этот код не разрушает память - это:
Ответ:
 (1) интерпретация кода 
 (2) компиляция кода 
 (3) трансляция кода 
 (4) верификация кода 
Номер 3
Алгоритмы верификации являются:
Ответ:
 (1) интерпретируемыми алгоритмами 
 (2) емкими алгоритмами 
 (3) метавычислительными алгоритмами 
 (4) произвольными алгоритмами 
Упражнение 2:
Номер 1
Алгоритмы верификации в общем случае имеют следующие проблемы:
Ответ:
 (1) потенциальная детерминируемость 
 (2) экспоненциальная сложность 
 (3) сложная дискретизация 
 (4) потенциальная нетерминируемость 
Номер 2
Алгоритмы, работающие неизвестно сколько времени и потребляющие неизвестно какое количество ресурсов, представляют скорее:
Ответ:
 (1) практический интерес 
 (2) научный интерес 
 (3) теоретический интерес 
Номер 3
Сколько известно подходов для алгоритмов верификации кода, позволяющие снизить их сложность и добиться терминируемости:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
 (5) 4 
 (6) 5 
Упражнение 3:
Номер 1
Сколько существует подходов для ограничения задачи для верификаторов?
Ответ:
 (1) 2 
 (2) 1 
 (3) 5 
 (4) 3 
Номер 2
Верификаторы, предназначенные для выявления определенного класса ошибок в программах, используются при разработке программ на этапе:
Ответ:
 (1) тестирования 
 (2) разработки 
 (3) кодирования 
 (4) отладки 
Номер 3
Верификаторы, способные доказать, что программа, принадлежащая некоторому классу программ, не разрушает память, служат:
Ответ:
 (1) для подготовки отладки 
 (2) для обеспечения безопасности 
 (3) для обеспечения терминируемости 
 (4) для обеспечения дискретизации 
Упражнение 4:
Номер 1
Верификатор кода .NET может доказать, что сборки, генерируемые компиляторами C#, J# и Visual Basic .NET:
Ответ:
 (1) разрушают память 
 (2) не разрушают буфер 
 (3) не разрушают память 
 (4) разрушают буфер 
Номер 2
Отметьте верные утверждения, касающиеся разрушающего память кода:
Ответ:
 (1) существуют компиляторы, которые в общем случае могут порождать такой код 
 (2) любой CIL-код можно непосредственно компилировать с помощью ILASM 
 (3) всем перечисленным может воспользоваться злоумышленник 
 (4) в языке C# предусмотрены unsafe-блоки и unsafe-методы, внутри которых может находиться такой код 
Номер 3
Верификатор .NET предназначен:
Ответ:
 (1) для процесса отладки 
 (2) для поиска ошибок в программах 
 (3) для проверки интерпретируемости кода 
 (4) для обеспечения безопасности системы 
Упражнение 5:
Номер 1
Код, для которого верификатор может доказать, что он не разрушает память:
Ответ:
 (1) верифицированный код 
 (2) верифицируемый код 
 (3) интерпретируемый код 
 (4) транслируемый код 
Номер 2
Код, для которого верификатор доказал, что он не разрушает память:
Ответ:
 (1) верифицированный код 
 (2) компилируемый код 
 (3) верифицируемый код 
 (4) транслируемый код 
Номер 3
Алгоритм верификации представляет собой вариант:
Ответ:
 (1) абстрактного транслятора CIL-кода 
 (2) абстрактного JIT-компилятора 
 (3) абстрактного интерпретатора CIL-кода 
 (4) абстрактного компилятора CIL-кода 
Упражнение 6:
Номер 1
Правилами совместимости типов S
и T
будут следующие:
Ответ:
 (1) S& := T&
, если S := T
 
 (2) S[] := T[]
, если S := T
и размерности массивов совпадаю 
 (3) S := null
, если S
- объектный тип или интерфейс 
 (4) S := T
, если S
и T
- интерфейсы, и реализация T
требует реализации S
 
Номер 2
Данные о количестве слотов на стеке и типы значений, лежащих в этих слотах - это:
Ответ:
 (1) конфигурация стека 
 (2) буфер стека 
 (3) объем стека 
 (4) состояние стека 
Номер 3
Алгоритм верификации работает со следующими данным:
Ответ:
 (1) неизменяемые данные 
 (2) изменяемые данные 
 (3) произвольные данные 
 (4) пользовательские данные 
Упражнение 7:
Номер 1
Программы, рассматривающие сборки .NET в качестве объектов анализа, генерации или преобразования - это:
Ответ:
 (1) инструкции для платформы .NET 
 (2) метаинструменты для платформы .NET 
 (3) инструменты для платформы .NET 
 (4) верификаторы для платформы .NET 
Номер 2
Генерация новой сборки .NET осуществляется:
Ответ:
 (1) компиляторами 
 (2) трансляторами 
 (3) интерпретаторами 
 (4) RAD-средствами 
Номер 3
В составе .NET Framework SDK поставляются следующие библиотеки:
Ответ:
 (1) Metadata Unmanaged API 
 (2) Reflection API 
 (3) AbsIL SDK 
 (4) Reflection Extension API 
Упражнение 8:
Номер 1
При использовании Metadata Unmanaged API метаинструмент работает:
Ответ:
 (1) со сборкой в памяти 
 (2) с образом сборки в памяти 
 (3) с отпечатком образа сборки в памяти 
 (4) со сборкой в буфере 
Номер 2
Для того чтобы использовать Metadata Unmanaged API из программы, написанной на Visual C++, необходимо включить в программу следующие строки:
Ответ:
 (1) #include <corhlpr.h>
 
 (2) #pragma comment(lib, "format.lib")
 
 (3) #include; #pragma comment(lib, "format.lib")
 
 (4) #include <corhlpr.h>
#pragma comment(lib, "format.lib") 
Номер 3
Взаимодействие с Metadata Unmanaged API осуществляется через набор:
Ответ:
 (1) API-интерфейсов 
 (2) .NET-интерфейсов 
 (3) COM-интерфейсов 
 (4) стандартных интерфейсов 
Упражнение 9:
Номер 1
С помощью данного кода:CoInitialize(NULL);
IMetaDataDispenser *dispenser;
HRESULT h = CoCreateInstance(
CLSID_CorMetaDataDispenser,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMetaDataDispenserEx,
(void **)&dispenser
);
if (h)
printf("Error");осуществляется:
Ответ:
 (1) начало работы с Metadata Unmanaged API 
 (2) начало работы с .NET 
 (3) инициализации системы COM 
 (4) получение указателя на интерфейс IMetadataDispenserEx: 
Номер 2
При завершении работы с Metadata Unmanaged API необходимо освободить указатели на полученные интерфейсы следующим образом:
Ответ:
 (1) mdimp->Release();
dispenser->Release(); 
 (2) dispenser->OpenScope();
mdimp->Release(); 
 (3) mdimp->OpenScope();
dispenser->"test.exe" 
Номер 3
Генерация метаданных осуществляется через методы интерфейса IMetadataEmit
, которые можно условно разделить на следующие группы:
Ответ:
 (1) методы DefineXXX
 
 (2) методы SetXXX
 
 (3) методы EnumXXX
 
 (4) методы FindXXX
 
 (5) методы GetXXX
 
Упражнение 10:
Номер 1
Библиотека рефлексии содержит классы для работы с метаданными на высоком уровне, которые располагаются в пространствах имен:
Ответ:
 (1) System.Reflection
 
 (2) System.Reflection.Emit
 
 (3) System.Reflection.API
 
 (4) System.Reflection.Stat
 
Номер 2
Метаинструмент, использующий библиотеку рефлексии, получает доступ к метаданным сборки через экземпляр класса:
Ответ:
 (1) Assembly
 
 (2) Module
 
 (3) ConstructorInfo
 
 (4) MethodInfo
 
Номер 3
Класс Module
, позволяет получить набор экземпляров класса:
Ответ:
 (1) Type
 
 (2) FieldInfo
 
 (3) Assembly
 
 (4) ConstructorInfo
 
 (5) MethodInfo
 
 (6) Module
 
Упражнение 11:
Номер 1
Библиотека рефлексии спроектирована таким образом, что создание объектов рефлексии, соответствующих элементам метаданных, осуществляется:
Ответ:
 (1) путем вызова методов других методов рефлексии 
 (2) путем вызова методов других объектов рефлексии 
 (3) путем вызова объектов других объектов рефлексии 
 (4) путем вызова объектов других методов рефлексии 
Номер 2
Информацию о любом элементе метаданных можно прочитать из свойств соответствующего ему:
Ответ:
 (1) метода рефлексии 
 (2) инструмента рефлексии 
 (3) метаинструмента рефлексии 
 (4) объекта рефлексии 
Номер 3
Если нас интересует текущая работающая сборка, то экземпляр класса Assembly
можно получить так:
Ответ:
 (1) Assembly assembly = Assembly.GetAssembly(typeof(int))
 
 (2) Assembly assembly = Assembly.GetExecutingAssembly()
 
 (3) Assembly assembly = Assembly.LoadFrom("test.exe")
 
Упражнение 12:
Номер 1
Кроме чтения метаданных, библиотека рефлексии позволяет:
Ответ:
 (1) создавать экземпляры типов, входящих в обрабатываемую сборку 
 (2) вызывать методы типов, входящих в обрабатываемую сборку 
 (3) читать значения полей 
 (4) изменять значения полей 
Номер 2
Для генерации метаданных и CIL-кода в библиотеке рефлексии предназначены классы:
Ответ:
 (1) пространтсва имен System.Reflection.Emit
 
 (2) ILGenerator
 
 (3) Generator
 
 (4) пространтсва имен System.Reflection.API
 
Номер 3
Библиотеки Reflection API и Metadata Unmanaged API не имеет следующих возможностей:
Ответ:
 (1) чтение метаданных 
 (2) генерация метаданных 
 (3) чтение CIL-кода 
 (4) генерация CIL-кода