Главная / Программирование /
Common Intermediate Language и системное программирование в Microsoft .NET / Тест 3
Common Intermediate Language и системное программирование в Microsoft .NET - тест 3
Упражнение 1:
Номер 1
Файл, который может быть загружен в память загрузчиком операционной системы и затем исполнен - это:
Ответ:
 (1) системый файл 
 (2) модульный файл 
 (3) интерпретируемый файл 
 (4) исполняемый файл 
Номер 2
В операционной системе Windows исполняемые файлы, как правило, имеют расширения:
Ответ:
 (1) ".exe" 
 (2) ".dll" 
 (3) ".bat" 
 (4) ".com" 
Номер 3
Основным форматом для хранения исполняемых файлов в операционной системе Windows является:
Ответ:
 (1) Portable Executable (PE) 
 (2) Linear Executable (LE) 
 (3) New Executable (NE) 
 (4) COM Executable (CE) 
Упражнение 3:
Номер 1
Смысл раздельной компиляции заключается в том, что части программы (модули) компилируются независимо в объектные файлы, которые затем связываются:
Ответ:
 (1) интерпретатором в один исполняемый файл 
 (2) компоновщиком в один исполняемый файл 
 (3) транслятором в один исполняемый файл 
 (4) компилятором в один исполняемый файл 
Номер 2
В ".NET Framework Glossary" утверждается, что:
Ответ:
 (1) PE - это формат исполняемых файлов 
 (2) COFF - это формат объектных файлов 
 (3) COFF - это формат исполняемых файлов 
 (4) PE - это формат объектных файлов 
Номер 3
Управление памятью в Windows NT/2k/XP/2k3 осуществляет:
Ответ:
 (1) system manager
 
 (2) virtual-memory manager
 
 (3) event viewer
 
 (4) task scheduler
 
Упражнение 4:
Номер 1
Менеджер виртуальной памяти использует страничную схему управления памятью, при которой вся физическая память делится на одинаковые отрезки размером в:
Ответ:
 (1) 512 байт 
 (2) 1024 байт 
 (3) 2512 байт 
 (4) 4096 байт 
Номер 2
Каждый процесс в Windows запускается в своем виртуальном адресном пространстве размером в:
Ответ:
 (1) 4 Гб 
 (2) 2 Гб 
 (3) 1 Гб 
 (4) 8 Гб 
Номер 3
Для memory-mapped files верно:
Ответ:
 (1) это отображаемые в память файлы 
 (2) это мощная возможность операционной системы 
 (3) не каждое обращение к отображенному в память файлу вызывает операцию чтения/записи 
 (4) это отображаемые в кэш-память файлы 
Упражнение 5:
Номер 1
Разность виртуального адреса данного элемента и базового адреса, по которому PE-файл загружен в память - это:
Ответ:
 (1) PE некоторого элемента RVA-файла 
 (2) RVA некоторого элемента PE-файла 
 (3) образ PE-файла 
 (4) секция PE-файла 
Номер 2
Секция в PE-файле представляет:
Ответ:
 (1) код 
 (2) глобальные переменные 
 (3) таблицы импорта 
 (4) ресурсы 
Номер 3
Как правило, все exe-файлы содержат в поле ImageBase
значение:
Ответ:
 (1) 0x400000 
 (2) 0x400001 
 (3) 0x000000 
 (4) 0x400004 
 (5) 0x400044 
 (6) 0x440002 
Упражнение 6:
Номер 1
Какая секция описывает функции, которые PE-файл импортирует из динамических библиотек?
Ответ:
 (1) ".text" 
 (2) ".rsrc" 
 (3) ".idata" 
 (4) ".edata" 
Номер 2
Информация об экспортируемых функциях хранится внутри PE-файла в специальной секции:
Ответ:
 (1) ".edata" 
 (2) ".reloc" 
 (3) ".rdata" 
 (4) ".text" 
Номер 3
Сразу после заголовка MS-DOS следует сигнатура PE-файла, состоящая из четырех байт:
Ответ:
 (1) 0x50, 0x45, 0x00, 0x00 
 (2) 0x20, 0x15, 0x00, 0x00 
 (3) 0x00, 0x45, 0x00, 0x10 
 (4) 0x10, 0x00, 0x10, 0x00 
Упражнение 7:
Номер 1
Заголовок PE-файла состоит из следующих полей:
Ответ:
 (1) unsigned short Machine;
 
 (2) unsigned short NumberOfSections;
 
 (3) long TimeDateStamp;
 
 (4) long NumberOfSymbols;
 
Номер 2
Поля дополнительного заголовка можно разделить на следующие группы:
Ответ:
 (1) стандартные поля 
 (2) поля, специфичные для Windows NT. 
 (3) системные поля 
 (4) директории данных 
Номер 3
В дополнительном заголовке PE-файла поле longCodeSize;
- это:
Ответ:
 (1) cуммарный размер всех кодовых секций 
 (2) старшее число версии компоновщика 
 (3) младшее число версии компоновщика 
 (4) RVA точки входа в программу 
Упражнение 8:
Номер 1
Cекция содержит исполняемый код в следующем случае:
Ответ:
 (1) 0x00000020 
 (2) 0x02000000 
 (3) 0x20000000 
 (4) 0x80000000 
Номер 2
Структура Hint/Name
состоит из следующих полей:
Ответ:
 (1) short Hint;
 
 (2) char Name[x];
 
 (3) short Pad;
 
 (4) char Pad;
 
Номер 3
Внесение исправления в 32-разрядное значение, которое находится по адресу FixupAddress
, выполняется так:
Ответ:
 (1) *FixupAddress = ActualAddress + ImageBase;
 
 (2) *FixupAddress += ActualAddress + ImageBase;
 
 (3) *FixupAddress += ActualAddress - ImageBase;
 
 (4) *FixupAddress = ActualAddress - ImageBase;
 
 (5) *FixupAddress += ActualAddress | ImageBase;
 
Упражнение 9:
Номер 1
В заголовоке CLI поле "long Cb;"
:
Ответ:
 (1) содержит размер заголовка в байтах 
 (2) содержит информацию о версии CLR 
 (3) описывает свойства сборки 
 (4) не используется и всегда заполнено нулями 
Номер 2
Какие поля в заголовоке CLI содержат информацию о версии CLR, для которой предназначена данная сборка:
Ответ:
 (1) short MinorRuntimeVersion;
 
 (2) short MajorRuntimeVersion;
 
 (3) long Flags;
 
 (4) long EntryPointToken;
 
Номер 3
Описывает свойства сборки следующее поле заголовока CLI:
Ответ:
 (1) long Flags;
 
 (2) long CodeManagerTable[2];
 
 (3) struct { long RVA, Size; } VTableFixups;
 
 (4) long Cb;
 
Упражнение 10:
Номер 1
Токен метаданных, указывающий на точку входа в сборку для заголовока CLI - это:
Ответ:
 (1) short MinorRuntimeVersion;
 
 (2) long CodeManagerTable[2];
 
 (3) long Flags;
 
 (4) long EntryPointToken;
 
Номер 2
В каком поле заголовка CLI указываются RVA и размер в байтах ресурсов сборки:
Ответ:
 (1) struct { long RVA, Size; } Resources;
 
 (2) struct { long RVA, Size; } StrongNameSignature;
 
 (3) struct { long RVA, Size; } VTableFixups;
 
 (4) long ManagedNativeHeader[2];
 
Номер 3
Какое поле заголовка CLI не используется и всегда заполнено нулями:
Ответ:
 (1) long CodeManagerTable[2];
 
 (2) long ExportAddressTableJumps[2];
 
 (3) long ManagedNativeHeader[2];
 
 (4) struct { long RVA, Size; } VTableFixups;
 
 (5) struct { long RVA, Size; } StrongNameSignature;
 
 (6) struct { long RVA, Size; } Resources;
 
Упражнение 11:
Номер 1
Программа pegen
написана на языке:
Ответ:
 (1) C 
 (2) C++ 
 (3) C# 
 (4) Java 
Номер 2
В данном примере:
void make_file (FILE* file, PINPUT_PARAMETERS inP)
{
make_headers (file, inP);
make_text_section (file, inP);
make_cli_section (file, inP);
make_reloc_section (file, inP);
};
функция make_file
вызывает:
Ответ:
 (1) 1 функцию 
 (2) 2 функции 
 (3) 3 функции 
 (4) 4 функции 
Номер 3
Блок входных параметров описывается структурой:
Ответ:
 (1) INPUT_PARAMETERS
 
 (2) IMAGE_SUBSYSTEM_WINDOWS_GUI
 
 (3) IMAGE_SUBSYSTEM_WINDOWS_CUI
 
 (4) DLL_TYPE
 
Упражнение 12:
Номер 1
Можно выделить следующие этапы выполнения программы:
Ответ:
 (1) заполнение заголовка PE-файла 
 (2) генерация секции ".text" 
 (3) генерация секции ".cli" 
 (4) генерация секции ".reloc" 
Номер 2
В следующей форме в программе находится CIL-код методов:
Ответ:
 (1) unsigned char cilcode[] = {
0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
}; 
 (2) unsigned cilcode[] = {
0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
}; 
 (3) unsigned char {
0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
}; 
 (4) char cilcode[] = {
0x56, 0x72, 0x01, 0x00, 0x00, 0x70, 0x28, 0x02,
0x00, 0x00, 0x0A, 0x28, 0x01, 0x00, 0x00, 0x0A,
0x28, 0x02, 0x00, 0x00, 0x0A, 0x2A
}; 
Номер 3
Сообщением об успешной генерации сборки hello.exe
будет:
Ответ:
 (1) File: hello.exe generated
 
 (2) hello.exe generated
 
 (3) File: hello.exe
 
 (4) File: generated
 
 (5) File - hello.exe generated
 
 (6) File - generated