Главная / Программирование / Common Intermediate Language и системное программирование в Microsoft .NET

Common Intermediate Language и системное программирование в Microsoft .NET - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: Описаны основы архитектуры платформы .NET и промежуточный язык этой платформы - Common Intermediate Language (CIL). Подробно рассмотрен прием программирования, называемый динамической генерацией кода. Дано введение в многозадачность и описаны подходы к разработке параллельных приложений на базе платформы .NET. Адресовано всем изучающим вопросы создания метаинструментария и разработки компиляторов для различных операционных систем.
Платформа .NET разработана:
(1) Oracle
(2) Microsoft
(3) Sun
(4) Borland
Прием программирования, заключающийся в том, что фрагменты кода порождаются и запускаются непосредственно во время выполнения программы - это:
(1) динамическая генерация кода
(2) динамическая фрагментация кода
(3) динамическая интерпретация кода
(4) динамическая трансляция кода
Для современных операционных систем и для различных систем программирования в современном мире поддержка разработки и реализация:
(1) многозадачности стала необходимой
(2) изоляции стала необходимой
(3) интеграции стала необходимой
Используемые в операционной системе средства реализации многозадачности можно разделить на следующие группы:
(1) взаимодействие с устройствами
(2) средства управления потоками и волокнами
(3) взаимодействие потоков в рамках одного процесса
(4) взаимодействие между процессами одного компьютера
(5) взаимодействие потоков в рамках разных процессов
(6) взаимодействие между процессами разных компьютеров
При разработке параллельных приложений необходимо обеспечить:
(1) их согласованное выполнение
(2) своевременный обмен данными
(3) произвольный обмен данными
(4) их линейное выполнение
Существует проблема одновременного конкурирующего доступа нескольких потоков к общим разделяемым данным при реализации:
(1) мультипрограммирования
(2) мультипроцессирования
(3) мультиплексирования
Аналогично средствам операционной системы средства .NET Framework могут быть разделены на следующие группы:
(1) обработка асинхронных запросов
(2) организация многопоточных приложений
(3) работа с различными процессами и доменами приложений
(4) работа с различными процедурами
Virtual Execution System - это:
(1) виртуальная система запуска
(2) виртуальная система выполнения
(3) виртуальная система испытаний
Файл, который может быть загружен в память загрузчиком операционной системы и затем исполнен - это:
(1) системый файл
(2) модульный файл
(3) интерпретируемый файл
(4) исполняемый файл
Метаданные служат для:
(1) описания типов, находящихся в сборке .NET
(2) назначения секций, находящихся в сборке .NET
(3) описания объектов, находящихся в сборке .NET
(4) создания классов, находящихся в сборке .NET
Язык Common Intermediate Language является независимым от аппаратной платформы:
(1) объектно-ориентированным транслятором
(2) объектно-ориентированным интерпретатором
(3) объектно-ориентированным компилятором
(4) объектно-ориентированным ассемблером
Язык CIL содержит богатый набор инструкций, предназначенных для поддержки объектной модели, который можно на следующие основные категории:
(1) инструкции для работы с объектами
(2) инструкции для работы с массивами
(3) инструкции для работы с типами-значениями
(4) инструкции для работы с типизированными ссылками
Какие существуют способы перехвата ошибок, возникающих в процессе работы программы:
(1) обработка кодов исполнения
(2) обработка кодов возврата
(3) обработка исключений
(4) обработка текста
Код метода в сборке .NET представляет собой:
(1) линейную последовательность CIL-инструкций
(2) массив описателей обработки исключений
(3) циклическую последовательность CIL-инструкций
(4) массив описателей блоков обработки исключений
Код программ не разрушает память, если эти программы, будучи запущенными в одном адресном пространстве:
(1) корректно объединены друг с другом
(2) корректно изолированы друг от друга
(3) корректно распараллелены друг с другом
(4) корректно зависимы друг от друга
Какой организацией стандартизована спецификация основной части платформы .NET?
(1) European Computer Manufactures Association
(2) Institute of Electrical and Electronics Engineers
(3) Computer and Business Equipment Manufacturers Association
(4) American National Standards Institute
Применение динамической генерации оправдано, если:
(1) запуск этого фрагмента осуществляется многократно
(2) выполнение фрагмента связано с существенными затратами времени процессора
(3) запуск этого фрагмента осуществляется однократно
(4) выполнение фрагмента не связано с затратами времени процессора
Современные операционные системы, как правило, поддерживают:
(1) несколько различных механизмов многозадачности
(2) один механиз многозадачности
(3) ни одного механизма многозадачности
Гибрид средств управления потоками и асинхронного ввода-вывода в Windows называется:
(1) "порт завершения ввода-вывода"
(2) "порт окончания ввода-вывода"
(3) "порт исполнения ввода-вывода"
(4) "порт ожидания ввода-вывода"
Для реализации пула потоков необходимо создание:
(1) некоторого количества потоков
(2) диспетчера с очередью запросов
(3) диспетчера с очередью задач
(4) некоторого количества нитей
Операция увеличения на 1 элемента массива требует:
(1) запроса для считывания данных из памяти
(2) увеличения значения на 1
(3) удаления данных из памяти
(4) сохранения данных в памяти
Для облегчения процесса переноса .NET на другие платформы в архитектуру CLR включен специальный уровень адаптации к платформе:
(1) APC
(2) PAL
(3) RPC
(4) RFC
VES является значительно более абстрактной моделью, чем:
(1) виртуальная машина Java
(2) UCSD p-System
(3) Технология ANDF
(4) CLI
Для формата исполняемых файлов .NET верно:
(1) исполняемые файлы могут содержать несколько секций
(2) расположение секций является более или менее произвольным
(3) исполняемые файлы могут содержать только одну секцию
(4) расположение данных внутри секций является более или менее произвольным
Операнд none имеет размер в байтах равный:
(1) 4
(2) 0
(3) 2
(4) 1
Какая инструкция загружает значение поля объекта:
(1) 0x7B
(2) sdfld
(3) 0x7D
(4) idfld
Полe предложения обработки исключений в случае длинного формата Flags имеет размер равный:
(1) 1
(2) 2
(3) 3
(4) 4
В каком примере метод find выполняет поиск элемента k в массиве X:
(1) find(int32[] k, int32 X)
(2) find(int32 k)
(3) find(int32[] X)
(4) find(int32[] X, int32 k)
Алгоритмы верификации в общем случае имеют следующие проблемы:
(1) потенциальная детерминируемость
(2) экспоненциальная сложность
(3) сложная дискретизация
(4) потенциальная нетерминируемость
К предшественникам платформы .NET можно отнести:
(1) UCSD p-System
(2) Технология ANDF
(3) Язык Fortran
(4) Платформа Java
Идеальным вариантом представления функции, которое бы не зависело от конкретного способа вычисления значения функции является:
(1) реальный класс Function
(2) абстрактный класс Function
(3) вещественный класс Function
(4) псевдокласс Function
В современных компьютерах одновременно сосуществует несколько различных реализаций мультипроцессирования, но практически всегда применяются следующие функционально различные устройства:
(1) центральный процессор
(2) видеосистема
(3) контроллеры прямого доступа к памяти
(4) интеллектуальные периферийные устройства
При взаимодействие между процессами одного компьютера диспетчер памяти операционной системы должен предусмотреть средства организации:
(1) разделяемой между процессами памяти
(2) разделяемых между процессами данных
(3) разделяемых потоков
(4) разделяемой между потоками памяти
В Windows поддержка пула потоков реализована в виде:
(1) порта завершения ввода
(2) порта завершения ввода-вывода
(3) порта завершения вывода
(4) порта завершения исполнения
Атомарные операции обычно имеют более-менее близкое соответствие:
(1) с командами процессора
(2) с системными командами
(3) со специальными командами
(4) с командами памяти
В случае платформ, не поддерживающих многопоточные приложения, PAL должен:
(1) самостоятельно реализовать недостающую функциональность
(2) с помощью COM реализовать недостающую функциональность
(3) с помощью RPC реализовать недостающую функциональность
(4) с помощью диспетчера недостающую функциональность
Виртуальная машина может выполнять сразу несколько:
(1) нитей
(2) программ
(3) объектов
(4) классов
Смысл раздельной компиляции заключается в том, что части программы (модули) компилируются независимо в объектные файлы, которые затем связываются:
(1) интерпретатором в один исполняемый файл
(2) компоновщиком в один исполняемый файл
(3) транслятором в один исполняемый файл
(4) компилятором в один исполняемый файл
Метаданные начинаются с заголовка, называемого:
(1) корнем метаданных
(2) объектом метаданных
(3) классом метаданных
(4) основанием метаданнных
Какая инструкция загружает на стек вычислений значение первого аргумента метода:
(1) arglist
(2) ldarg.0
(3) call System.String::Compare
(4) isinst System.String
Инструкция callvirt имеет следующий код:
(1) 0x80
(2) 0x7B
(3) 0x6F
(4) 0x72
Какая инструкция генерирует исключение, включая тем самым механизм обработки исключений:
(1) throw
(2) rethrow
(3) leave
(4) leave.s
Какая схема представления кода является наиболее компактной?
(1) в виде нелинейной последовательности инструкций
(2) в виде линейной последовательности инструкций
(3) в виде произвольной последовательности инструкций
(4) в виде симметричной последовательности инструкций
Сколько существует подходов для ограничения задачи для верификаторов?
(1) 2
(2) 1
(3) 5
(4) 3
Две разнесенные во времени и пространстве фазы процесса компиляции программ технологии ANDF - это?
(1) перевод программы в формат ANDF
(2) перевод программы из формата ANDF
(3) интерпретация программы, представленной в формате ANDF, в исполняемый файл
(4) трансляция программы, представленной в формате ANDF, в исполняемый файл
В данном примере: public abstract class Expression { public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x); } метод GenerateCIL:
(1) выполняет непосредственное вычисление значения выражения
(2) транслирует выражение в фрагмент программы на C#
(3) транслирует выражение в CIL-код
Для cc-NUMA архитектуры верно:
(1) оперативная память является общей и разделяемой между всеми процессорами
(2) каждый процессорный узел имеет некоторый объем оперативной памяти
(3) на аппаратном уровне решены вопросы когерентности кэш-памяти различных процессоров
(4) формально на ней могут работать операционные системы, созданные для SMP систем
Обычные операции ввода-вывода происходят:
(1) в асинхронном режиме
(2) в произвольном режиме
(3) в параллельном режиме
(4) в синхронном режиме
Порт завершения создается с помощью функции:
(1) HANDLE CreateIoCompletionPort( HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads );
(2) CreateIoCompletionPort( HANDLE FileHandle, HANDLE ExistingCompletionPort, CompletionKey, DWORD NumberOfConcurrentThreads );
(3) HANDLER CreateIoCompletionPort( HANDLER FileHandle, HANDLER ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads );
(4) HANDLE CreateIoCompletionPort( HANDLE FileHandle, HANDLE ExistingCompletion, ULONG_PTR CompletionKey, DWORD ConcurrentThreads );
Для уменьшения значения целочисленных переменных ОС Windows предоставляет следующие функции:
(1) InterlockedDecrement, InterlockedDecrement64
(2) InterlockedCompareExchange, InterlockedCompareExchangePointer
(3) InterlockedExchange, InterlockedExchange64
(4) InterlockedIncrement, InterlockedIncrement64
Для .NET верно:
(1) не предусмотрено передачи аргументов в процедуру потока
(2) процедура должна быть статическим методом
(3) класс Thread является опечатанным
Состояние нити представляет собой односвязный список состояний:
(1) классов
(2) объектов
(3) кучи
(4) методов
Менеджер виртуальной памяти использует страничную схему управления памятью, при которой вся физическая память делится на одинаковые отрезки размером в:
(1) 512 байт
(2) 1024 байт
(3) 2512 байт
(4) 4096 байт
Основными разработчиками .NET Framework являются:
(1) Brian Harry
(2) Susan Radke-Sproull
(3) Jason Zander
(4) Bill Evans
Если инструкция, следующая за инструкцией br, имеет абсолютный адрес next_addr, то адрес перехода rel_addr вычисляется так:
(1) reladdr = target_addr + next_addr
(2) reladdr = target_addr - next_addr
(3) reladdr := target_addr - next_addr
(4) reladdr := target_addr + next_addr
Инструкция newarr выделяет память под одномерный массив, индексируемый:
(1) с единицы
(2) со ста
(3) с тысячи
(4) с нуля
Диаграмма стека для инструкции leave:
(1) ... -> ...
(2) ... ->
(3) ...
Дуги графа потока управления изображают:
(1) передачу управления между узлами
(2) передачу управления между потоками
(3) передачу управления между метаинтсрументами
(4) передачу управления между инструкциями
Верификатор кода .NET может доказать, что сборки, генерируемые компиляторами C#, J# и Visual Basic .NET:
(1) разрушают память
(2) не разрушают буфер
(3) не разрушают память
(4) разрушают буфер
Из каких компонентов состоит платформа .NET?
(1) .NET Framework Library
(2) Common Language Runtime
(3) Common Runtime .NET
(4) .NET Framework Class Library
Порождение текста C#-программы и компиляция этой программы с помощью компилятора C#, доступного через библиотеку классов .NET является:
(1) самым простым способом динамической генерации кода
(2) самым сложным способом динамической генерации кода
(3) самым простым способом автоматической генерации кода
(4) самым сложным способом автоматической генерации кода
Большинство современных операционных систем используют комбинированные планировщики, одновременно применяющие:
(1) квантование с переменной продолжительностью кванта
(2) абсолютные приоритеты
(3) относительные приоритеты
(4) локальные приоритеты
В Windows для реализации асинхронного ввода-вывода предусмотрена следующая специальня структура:
(1) APPED
(2) OVERLAPPED
(3) OVERLAPPE
(4) OVERLAPPEDD
При простом создании порта завершения ввода-вывода достаточно указать только:
(1) минимальное число одновременно работающих потоков
(2) максимальное число одновременно работающих потоков
(3) предполагаемое число одновременно работающих потоков
(4) произвольное число одновременно работающих потоков
В Windows предусмотрен специальный тип данных, предназначенный для реализации критических секций, который называет:
(1) CRITICAL_SECTION
(2) STOP_SECTION
(3) ATTENTION_SECTION
(4) DRIFT_SECTION
Текущее состояние потока можно определить с помощью свойства:
(1) Thread.ThreadState
(2) Thread.State
(3) Thread.PipesState
(4) Thread.Pipes
Элементы состояния метода можно условно разделить на следующие группы:
(1) изменяемые данные
(2) неизменяемые данные
(3) системные данные
(4) временные данные
Разность виртуального адреса данного элемента и базового адреса, по которому PE-файл загружен в память - это:
(1) PE некоторого элемента RVA-файла
(2) RVA некоторого элемента PE-файла
(3) образ PE-файла
(4) секция PE-файла
Представляет собой последовательность 128-битных глобальных идентификаторов следующий поток метаданных:
(1) куча строк
(2) куча двоичных данных
(3) куча GUID'ов
(4) куча пользовательских строк
Какие инструкции языка CIL, служат для организации вычислений:
(1) арифметические инструкции
(2) инструкции для загрузки и сохранения значений
(3) инструкции для удаления значений
(4) инструкции для организации передачи управления
Инструкции ldelem предназначены для загрузки значения элемента:
(1) многомерного массива на стек вычислений
(2) одномерного массива на стек вычислений
(3) двухмерного массива на стек вычислений
(4) трехмерного массива на стек вычислений
В общем случае, предложение обработки исключений определяет в коде метода:
(1) одну область
(2) две области
(3) три области
(4) четыре области
Блоки обработки исключений в CIL реализованы в виде:
(1) массива инструкций
(2) массива описателей
(3) массива стека
(4) массива пременных буфера
Код, для которого верификатор может доказать, что он не разрушает память:
(1) верифицированный код
(2) верифицируемый код
(3) интерпретируемый код
(4) транслируемый код
Программа ngen представляет собой:
(1) JIT-компилятор первого типа
(2) JIT-компилятор второго типа
(3) JIT-компилятор третьего типа
(4) JIT-компилятор четвертого типа
При трансляции выражений в CIL метод начинается:
(1) с создания динамической сборки
(2) с создания заготовки для будущей сборки
(3) с создания заготовки для будущей динамической сборки
Поток является объектом планирования:
(1) процессорного времени
(2) операционной системы
(3) контроллера домена
(4) маршрутизатора
Какой способ может обеспечить самую быструю реакцию на завершение операции ввода-вывода, но ценой более высокой загрузки процессора:
(1) выполнение асинхронных операций с опросом состояния
(2) выполнение асинхронных операций с ожиданием на объектах ядра
(3) выполнение синхронных операций с опросом состояния
(4) выполнение синхронных операций с ожиданием на объектах ядра
Число потоков в пуле обычно превышает число:
(1) произвольно работающих потоков
(2) одновременно работающих потоков
(3) последовательно работающих потоков
(4) линейно работающих потоков
С точки зрения операционной системы объекты ядра, поддерживающие интерфейс синхронизируемых объектов, могут находиться в следующих состояниях:
(1) signaled
(2) nonsignaled
(3) stop
(4) nonstop
Для реализации асинхронного ввода-вывода в .NET предназначен абстрактный класс:
(1) System.IO.Stream
(2) System.IO
(3) System.IO.MemoryStream
(4) System.IO.BufferedStream
Элементами состояния метода, входящими в группу изменяемых данных являются:
(1) Instruction Pointer
(2) Evaluation Stack
(3) Local Variable Array
(4) Argument Array
(5) Local Memory Pool
Какая секция описывает функции, которые PE-файл импортирует из динамических библиотек?
(1) ".text"
(2) ".rsrc"
(3) ".idata"
(4) ".edata"
К таблицам метаданных можно отнести:
(1) Assembly - 0x20
(2) Module - 0x00
(3) TypeDef - 0x02
(4) Method - 0x06
(5) AssemblyRef - 0x23
(6) TypeRef - 0x01
(7) MemberRef - 0x0A
(8) MemberDef - 0x0B
Сколько существует вариантов инструкций для работы с переменными и параметрами:
(1) 0
(2) 1
(3) 2
(4) 3
Диаграмма стека для инструкции ldelema выглядит следующим образом:
(1) ... , array, index -> ... , value
(2) ... , array, index, value -> ...
(3) ... , array -> ... , length
(4) ... , array, index -> ... , addr
Для выхода из защищенной области, из области фильтра или из области обработчика существуют только следующие возможности:
(1) порождение исключения инструкцией throw
(2) использование инструкции endfilter из области фильтра
(3) использование инструкции endfinally из области без фильтрации
(4) использование инструкции rethrow из области с фильтрацией
(5) использование инструкции rethrow из области без фильтрации
Блок обработки исключений:
(1) прикреплен к защищенному блоку
(2) соответствует try-блоку в программе
(3) главный блок графа
Правилами совместимости типов S и T будут следующие:
(1) S& := T&, если S := T
(2) S[] := T[], если S := T и размерности массивов совпадаю
(3) S := null, если S - объектный тип или интерфейс
(4) S := T, если S и T - интерфейсы, и реализация T требует реализации S
Абстрагировавшись от конкретных особенностей .NET, можно сказать, что основная цель системы типов заключается в:
(1) отслеживании определенного класса ошибок в программе до ее выпонения
(2) фиксации определенного класса ошибок в программе до ее выпонения
(3) исправлении определенного класса ошибок в программе до ее выпонения
(4) предотвращении определенного класса ошибок в программе до ее выпонения
При генерации динамической сборки через классы пространства имен System.Reflection.Emit конструкторы:
(1) автоматически не добавляются
(2) добавляются автоматически
(3) добавляются статически
В современных полновесных реализациях Windows планировщик ядра выделяет процессорное время:
(1) секциям
(2) потокам
(3) блокам
(4) переменным окружения
Alertable waiting как состояние потока - это:
(1) ожиданиe оповещения
(2) ожидание информирования
(3) ожидание объявления
(4) ожидание ввода-вывода
В современных реализациях Windows с помощью функции:BOOL QueueUserWorkItem( LPTHREAD_START_ROUTINE QueryFunction, PVOID pContext, ULONG Flags );предусмотрена возможность:
(1) динамического создания и управления потоками
(2) автоматического создания и управления потоками
(3) автоматического создания и управления пулом потоков
(4) динамического создания и управления пулом потоков
Некоторый объект, который может находиться в одном из двух состояний: занятом или свободном - это:
(1) событие
(2) семафор
(3) мьютекс
Класс ThreadPool предлагает следующие способы для вызова асинхронных процедур:
(1) явное размещение вызовов в очереди
(2) неявное размещение вызовов в очереди
(3) связывание вызовов с переводом некоторых объектов в свободное состояние
(4) связывание вызовов с переводом некоторых объектов в специальное состояние
В виртуальной системе выполнения вместо регистров применяется:
(1) слоты
(2) объекты
(3) ячейки
(4) стек вычислений
Заголовок PE-файла состоит из следующих полей:
(1) unsigned short Machine;
(2) unsigned short NumberOfSections;
(3) long TimeDateStamp;
(4) long NumberOfSymbols;
В качестве примера компонентный подход к разработке программного обеспечения можно привести:
(1) Microsoft Visual Studio .NET
(2) Microsoft Office
(3) C
(4) C++
Арифметические инструкции можно разделить на следующие категории:
(1) унарные операции
(2) инструкция ckfinite
(3) инструкции преобразования значений
(4) бинарные операции
Инструкция initobj потребляет со стека вычислений адрес значения:
(1) ... , addr -> ...
(2) ... , addr ->
(3) addr -> ...
(4) ... , ... addr ->
В составе .NET Framework SDK поставляется ассемблер:
(1) IASM
(2) ILASM
(3) LASM
(4) LSM
Каждый защищенный блок имеет ссылки на соответствующие:
(1) блоки обработки исключений
(2) блоки фильтрации
(3) защищенные блоки
Программы, рассматривающие сборки .NET в качестве объектов анализа, генерации или преобразования - это:
(1) инструкции для платформы .NET
(2) метаинструменты для платформы .NET
(3) инструменты для платформы .NET
(4) верификаторы для платформы .NET
Неперехватываемые ошибки возникают:
(1) при передаче управления на неправильный адрес
(2) при делении на ноль
(3) при обращении к памяти по нулевому указателю
(4) при выходе за границы массива
Линейными участками можно называть участки кода:
(1) не содержащие развилок и защищенных блоков
(2) содержащие развилки и защищенные блоки
(3) содержащие развилки и не содержащие защищенных блоков
(4) не содержащие развилки и содержащие защищенные блоки
В Windows определен следующий список событий, которые приводят к перепланированию потоков:
(1) создание и завершение потока
(2) выделенный потоку квант исчерпан
(3) поток вышел из состояния ожидания
(4) поток перешел в состояние ожидания
(5) изменен приоритет потока
(6) изменена привязка к процессору
Для перевода потока в состояние ожидания оповещения Win32 API предусматривает специальный набор функций:
(1) CreateFile, CreateProcess, CreateEvent
(2) CloseHandle, DuplicateHandle
(3) SleepEx, WaitForSingleObjectEx
(4) ReadFile, WriteFile, ReadFileEx, WriteFileEx
При разработке многопоточных приложений возникает необходимость обеспечивать не только параллельное исполнение кода потоков, но также их взаимодействие:
(1) обмен данными
(2) доступ к общим, разделяемым всеми потоками данным
(3) изоляцию некоторых данных одного потока от других
Какие объекты предназначены для выполнения операций через заданные промежутки времени или в заданное время:
(1) специальные таймеры
(2) системные таймеры
(3) ожидающие таймеры
В случае с использованием объектов, производных от класса System.Threading.WaitHandle вызов асинхронной процедуры связывается с переводом объекта:
(1) в статическое состояние
(2) в динамическое состояние
(3) в свободное состояние
(4) в произвольное состояние
Беззнаковый тип unsigned int32 при загрузке на стек вычислений становится:
(1) знаковым int32
(2) знаковым int64
(3) float32
(4) float64
Cекция содержит исполняемый код в следующем случае:
(1) 0x00000020
(2) 0x02000000
(3) 0x20000000
(4) 0x80000000
Отсутствие удовлетворительной технологии взаимодействия компонентов приводит к следующим негативным явлениям:
(1) для разработки программной системы используется только один язык программирования
(2) программа выглядит как гигантский монолит, из которого трудно выделить отдельные части
(3) появляются чрезмерно универсальные языки программирования
Инструкция ckfinite имеет код:
(1) 0x65
(2) 0xD
(3) 0xC3
(4) 0x5E
Диаграмма стека для инструкций sizeof:
(1) ... -> ... ,
(2) ... -> ... , size
(3) ... , size
(4) ... ->
Программы в IL-формате состоят из следующих лексических элементов:
(1) идентификаторы
(2) константы
(3) зарезервированные слова
(4) специальные знаки
(5) специальные метки
(6) комментарии
(7) метки
Когда выполнение некоторой инструкции в линейной последовательности инструкций порождает исключение, всегда можно легко определить защищенный блок, которому:
(1) эта инструкция соответствует
(2) эта инструкция эквивалентна
(3) эта инструкция принадлежит
(4) эта инструкция не принадлежит
При использовании Metadata Unmanaged API метаинструмент работает:
(1) со сборкой в памяти
(2) с образом сборки в памяти
(3) с отпечатком образа сборки в памяти
(4) со сборкой в буфере
Ядро общей системы типов .NET состоит из следующих категорий:
(1) value types
(2) system types
(3) performance types
(4) reference types
Разделить фаз генерации и оптимизации кода позволяет
(1) существенно упростить генератор
(2) сделать генератор независимым от оптимизатора
(3) повторно использовать оптимизатор с другими генераторами
(4) повторно использовать генератор с другими оптимизаторами
Процесс выбора потока для выполнения усложняется в случае SMP систем, когда помимо приоритета готового к исполнению потока учитывается:
(1) на каком процессоре выполнятся код данного потока
(2) на каком процессоре может выполнялся код данного потока
(3) на каком процессоре ранее выполнялся код данного потока
(4) на каком процессоре ранее выполнялся код предыдущего потока
Объектами ядра являются:
(1) файлы
(2) процессы
(3) потоки
(4) события
(5) почтовые ящики
Thread Local Storage - это:
(1) механизм управления данными, локальными для потока
(2) механизм управления данными, глобальными для потока
(3) механизм управления данными, внешними для потока
(4) механизм управления данными, внутренними для потока
Процессы в Windows определяют адресное пространство, которое будет использоваться:
(1) всеми потоками, работающими в этой процедуре
(2) всеми потоками, работающими в этом процессе
(3) всеми процессами, работающими в этом потоке
(4) всеми процедурами, работающими в этом потоке
Какой метод позволяет узнать результат завершения процедуры:
(1) EndInvoke
(2) BeginInvoke
(3) IAsyncResult
Одной из основных особенностей платформы .NET, делающих ее привлекательной для разработки приложений, является механизм:
(1) garbage collection
(2) managed heap
(3) generational garbage collector
(4) system heap
В заголовоке CLI поле "long Cb;":
(1) содержит размер заголовка в байтах
(2) содержит информацию о версии CLR
(3) описывает свойства сборки
(4) не используется и всегда заполнено нулями
Для открытых исходных текстов верны утверждения:
(1) если компоненты написаны на разных языках, то соединить их вместе не просто
(2) открытые компоненты почти всегда имеют так называемые "заразные" лицензии
(3) исходные тексты в отличие от двоичных файлов содержат информацию о типах
(4) исходные тексты могут распространяться по лицензии с назваием GNU Public License
Инструкции для организации передачи управления можно разделить на следующие категории:
(1) инструкции условного перехода
(2) инструкция множественного выбора switch
(3) инструкция вызова метода call
(4) инструкции безусловного перехода
(5) инструкция возврата из метода ret
Какая инструкция имеет следующую диаграмму стека: ..., value ->..., obj?
(1) unbox
(2) initobj
(3) sizeof
(4) box
Несколько идентификаторов могут будут объединены в один идентификатор в следующем примере:
(1) System;Console;WriteLine;
(2) System_Console_WriteLine
(3) System+Console+WriteLine
(4) System.Console.WriteLine
Дан массив инструкций P размера N и массив предложений обработки исключений EH размера M, какое поле задает тип обработчика исключений:
(1) Flags
(2) TryOffset
(3) HandlerOffset
(4) FilterOffset
С помощью данного кода: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:
Интерфейсы могут рассматриваться как чисто абстрактные классы, содержащие только следующие элементы:
(1) абстрактные события
(2) абстрактные методы
(3) абстрактные свойства
(4) статические методы
(5) статические поля
(6) статические события
Использование каких структурных конструкций позволяет существенно упростить генерацию развилок:
(1) выбор
(2) множественный выбор
(3) цикл с предусловием
(4) последовательность
(5) цикл с постусловием
Если на одном из процессоров в многопроцессорной системе работает поток с меньшим приоритетом, то последний вытесняется:
(1) и заменяется новым потоком
(2) и процессор начинает простаивать
(3) и образ памяти разрушается
(4) и стек потока обнуляется
В Windows для идентификации процессов и потоков используют их:
(1) описатели
(2) идентификаторы
(3) имена
(4) сертификаты
Какая функция выделяет в ассоциированной с потоком памяти двойное слово, индекс которого возвращается вызвавшей процедуре:
(1) DWORD TlsAlloc(void)
(2) TlsFree
(3) SetThreadIdealProcessor
(4) GetNumaNodeProcessorMask
Для создания процессов используются функции:
(1) CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateProcessWithTokenW
(2) VirtualAlloc, VirtualFree, VirtualAllocEx, VirtualFreeEx, VirtualLock, VirtualUnlock
(3) CreateProcessAlloc, CreateProcessAllocEx, VirtualProcessWithLogonW, CreateProcessUnlock
.NET предоставляет следующий набор средств взаимодействия потоков и их взаимной синхронизации:
(1) атомарные операции
(2) локальная для потока память
(3) синхронизирующие примитивы
(4) таймеры
Специальный указатель HeapPtr содержит адрес, по которому будет выделена память:
(1) для следующего объекта
(2) для предыдущего объекта
(3) для текущего объекта
(4) для последнего объекта
Токен метаданных, указывающий на точку входа в сборку для заголовока CLI - это:
(1) short MinorRuntimeVersion;
(2) long CodeManagerTable[2];
(3) long Flags;
(4) long EntryPointToken;
Какие особенности платформы .NET позволяют среде выполнения автоматически обеспечивать взаимодействие компонентов вне зависимости от того, на каком языке они написаны:
(1) любая программа, работающая в среде .NET, использует общую систему типов CLR
(2) любая программа, работающая в среде .NET, использует общую систему типов CTS
(3) выполнение любой программы управляется средой выполнения CLR
(4) выполнение любой программы управляется средой выполнения CTS
Какие инструкции потребляют со стека вычислений один операнд и, в зависимости от его значения, осуществляют или не осуществляют переход по указанному во встроенном операнде относительному адресу:
(1) базовые инструкции условного перехода
(2) дополнительные инструкции условного перехода
(3) дополнительные длинные инструкции условного перехода
(4) дополнительные короткие инструкции безусловного перехода
Типизированные ссылки в системе типов .NET реализованы исключительно для поддержки некоторых особенностей синтаксиса и семантики языка:
(1) C#
(2) Visual Basic .NET
(3) C++
(4) Basic
К элементам IL-программы можно отнести:
(1) сборка
(2) модуль
(3) поле
(4) тип
(5) метод
В процессе преобразования линейной последовательности инструкций в граф потока управления, на первом этапе, для каждой инструкции, входящей в массив P, мы создаем соответствующий ей узел графа, в который записываются все данные об инструкции, кроме информации о:
(1) передачи состояний
(2) передаче управления
(3) принадлежности блокам
(4) принадлежности узлам
Библиотека рефлексии содержит классы для работы с метаданными на высоком уровне, которые располагаются в пространствах имен:
(1) System.Reflection
(2) System.Reflection.Emit
(3) System.Reflection.API
(4) System.Reflection.Stat
Дополнительными элементами системы типов .NET являются:
(1) пользовательские типы-значения
(2) ссылки
(3) кучи
(4) указатели
При записи абстрактного синтаксиса управляющих конструкций используется нетерминал LogExpr для представления:
(1) определения последовательностей
(2) условий выбора
(3) циклов
(4) описания условий
Квантование потоков осуществляется:
(1) по тикам системного таймера
(2) по тикам системного времени
(3) по тикам сетевого таймера
(4) по тикам встроенного бипера
Какие функции Win32 API предоставляет для изменения класса приоритета для процесса:
(1) GetThreadPriority, SetThreadPriority
(2) GetPriorityClass, SetPriorityClass
(3) GetProcessPriorityBoost, SetProcessPriorityBoost
(4) GetThreadPriorityBoost, SetThreadPriorityBoost
В Visual Studio работа с локальной для потока памятью может быть упрощена при использовании:
(1) _declspec(thread) при описании потоков
(2) _declspec(thread) при описании процедур
(3) _declspec(thread) при описании переменных
(4) _declspec(thread) при описании констант
Проецирование файлов используется:
(1) для создания адресной памяти
(2) для создания разделяемой памяти
(3) для создания общей памяти
(4) для создания изолированной памяти
Средствами взаимной синхронизации потоков в .NET являются:
(1) мониторы
(2) события
(3) мьютексы
(4) процедуры
Что такое корень (root)
(1) указатель на кучу, расположенный вне кучи
(2) указатель на объект кучи, расположенный в куче
(3) указатель на кучу, расположенный в куче
(4) указатель на объект кучи, расположенный вне кучи
Программа pegen написана на языке:
(1) C
(2) C++
(3) C#
(4) Java
Флаг видимости для типов NestedAssembly имеет следующее значение:
(1) 0x00000005
(2) 0x00000006
(3) 0x00000007
(4) 0x00000000
Какая инструкция имеет следующее описание: ceq; brtrue.s?
(1) 0x2F
(2) 0x2E
(3) 0x31
(4) 0x32
Инструкция mkrefany имеет код:
(1) 0xC2
(2) 0xC3
(3) 0xC6
(4) 0xC5
Атрибутами полей являются:
(1) family
(2) public
(3) private
(4) assembly
(5) static
(6) focus
Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков мы получаем:
(1) дерево блоков
(2) вспомогательный массив T
(3) специальный массив T
(4) вспомогательный массив T
Библиотека рефлексии спроектирована таким образом, что создание объектов рефлексии, соответствующих элементам метаданных, осуществляется:
(1) путем вызова методов других методов рефлексии
(2) путем вызова методов других объектов рефлексии
(3) путем вызова объектов других объектов рефлексии
(4) путем вызова объектов других методов рефлексии
В .NET имеются категории указателей:
(1) managed pointers
(2) system pointers
(3) unsystem pointers
(4) unmanaged pointers
Для обнаружения избыточных инструкций сохранения значений выполняется анализ использования переменной, состоящий из следующих фаз:
(1) построение графа использования переменной.
(2) анализ графа использования переменной
(3) выполнение графа использования переменной
Сколько уровней приоритетов выделяется в Windows?
(1) 12
(2) 22
(3) 32
(4) 42
Если стандартное разрешение мультимедийного таймера на данном компьютере хуже 5-10 мс, то у функции timeBeginPeriod есть побочный эффект - улучшение разрешения повлияет на работу:
(1) планировщика отдельного процесса
(2) планировщика во всей системе
(3) планировщика отдельного потока
(4) плнировщика всех потоков
Аналогично TLS памяти, Windows поддерживает память, локальную для волокон:
(1) LFS память
(2) FLS память
(3) SFL память
Работа с разделяемыми данными посредством проецирования файлов связана:
(1) с объявлением специальных разделяемых сегментов в приложении
(2) с объявлением специальных не разделяемых сегментов в приложении
(3) с объявлением специальных разделяемых секций в приложении
(4) с объявлением специальных не разделяемых секций в приложении
При синхронизации потоков исключительный доступ единственного потока, вносящего в объект изменения можно назвать так:
(1) "читатели"
(2) "исполнители"
(3) "писатель"
Все объекты делятся на следующие категории:
(1) поколение 0
(2) поколение 1
(3) поколение 2
(4) поколение 3
Можно выделить следующие этапы выполнения программы:
(1) заполнение заголовка PE-файла
(2) генерация секции ".text"
(3) генерация секции ".cli"
(4) генерация секции ".reloc"
В данном примере:Default Public ReadOnly Property Array (ByVal Index As Integer) As Integer Get Return Arr(Index) End Get End Property Public ReadOnly Property Count() As Integer Get Return Arr.Length End Get End Propertyдля доступа к отсортированному массиву используются свойства:
(1) Array
(2) Get
(3) Public
(4) Count
Какая иструкция выполняет вызов метода:
(1) 0x2A
(2) 0x28
(3) 0x42
(4) 0x37
Диаграмма стека для инструкций refanytype:
(1) ... , typedRef ->
(2) typedRef -> ... , type
(3) ... , typedRef -> ... , type
(4) ... , typedRef -> ...
Директивами тела метода являются:
(1) .entrypoint
(2) .locals
(3) .maxstack
(4) .globals
Преобразование линейной последовательности инструкций в граф потока управления происходит в ходе следующих этапов:
(1) создание массива узлов
(2) создание дерева блоков
(3) присвоение родительских блоков узлам графа
(4) формирование дуг
Кроме чтения метаданных, библиотека рефлексии позволяет:
(1) создавать экземпляры типов, входящих в обрабатываемую сборку
(2) вызывать методы типов, входящих в обрабатываемую сборку
(3) читать значения полей
(4) изменять значения полей
Разработка платформы .NET началась в:
(1) 1997 г.
(2) 1996 г.
(3) 2000 г.
(4) 1998 г.
Целью динамической генерации кода является использование информации, доступной только во время выполнения программы, для:
(1) повышения качества исполняемого кода
(2) повышения динамичночти исполняемого кода
(3) повышения качетсва верификации исполняемого кода
(4) повышения качества компиляции исполняемого кода
Очень сильно зависит от того, какая вычислительная система и какие аспекты работы этой системы рассматриваются с точки зрения многозадачности:
(1) конкретная реализция операционной системы
(2) конкретная реализация многозадачности
(3) конкретная реализция языка программирования
(4) конкретная реализция среды программирования
Наиболее типичным примером относительно универсальных средств взаимодействия с устройствами являются средства:
(1) асинхронного ввода-вывода
(2) синхронного ввода-вывода
(3) параллельного ввода-вывода
Разработка серверов, обслуживающих асинхронно поступающие запросы является:
(1) одной из типовых задач
(2) одной из специальных задач
(3) нетипичной задачей
(4) одной из легких задач
В каких приложения особенно актуальна проблема одновременного конкурирующего доступа нескольких потоков к общим разделяемым данным:
(1) малопоточных
(2) многопоточных
(3) максипоточных
(4) минипоточных
К организации многопоточных приложений можно отнести:
(1) средства создания потоков, управления ими
(2) средства взаимной синхронизации
(3) надстройки над абстракциями высокого уровня
(4) организация локальной для потоков памяти
Абстрактная виртуальная машина способна выполнять:
(1) избранный код
(2) произвольный код
(3) абстрактный код
(4) управляемый код
В операционной системе Windows исполняемые файлы, как правило, имеют расширения:
(1) ".exe"
(2) ".dll"
(3) ".bat"
(4) ".com"
Метаданные хранятся:
(1) в системных файлах
(2) в архивных файлах
(3) в пользовательских файлах
(4) в исполняемых файлах
Инструкции CIL можно разделить на следующие основные группы:
(1) инструкции общего назначения
(2) инструкции для работы с объектной моделью
(3) инструкции для генерации и обработки исключений
(4) неверифицируемые инструкции
Диаграмма стека для инструкции newobj:
(1) ... , obj, arg1, ... , argN -> ... , retVal
(2) ... , arg1, ... , argN -> ... , obj
(3) ... -> ... , obj
(4) ... , obj -> ... , obj
Каждое предложение обработки исключений представляет собой структуру, состоящую из нескольких полей, в которых записаны координаты следующих областей:
(1) защищенной области
(2) области обработчика
(3) область буфера
(4) в некоторых случаях область фильтра
Представленный в теле метода алгоритм в общем случае:
(1) линейный
(2) нелинейный
(3) произвольный
Процесс автоматического доказательства того, что этот код не разрушает память - это:
(1) интерпретация кода
(2) компиляция кода
(3) трансляция кода
(4) верификация кода
Для чего используются метаинструменты?
(1) для разработки программ
(2) для тестирования программ
(3) для трансформации программ
(4) для анализа и преобразования программ
В .NET доступны следующие способы организации динамической генерации кода:
(1) непосредственное порождение метаданных и CIL-кода
(2) порождение программы на языке C и вызов компилятора C
(3) порождение программы на языке C++ и вызов компилятора C#
(4) порождение программы на языке C# и вызов компилятора C#
Использование нескольких процессоров для одновременного выполнения задач - это:
(1) мультипроцессирование
(2) мультипрограммирование
(3) процессирование
(4) программирование
Потоки, работающие в рамках одного процесса, имеют возможность взаимодействовать друг с другом:
(1) используя общее пространство процесса
(2) используя общее адресное пространство процесса
(3) используя общее адресное пространство
(4) используя общее адресное пространство потоков
При использовании пула потоков имеет смысл ограничивать общее число рабочих потоков:
(1) числом доступных процессоров
(2) числом кратным числу доступных процессоров
(3) числом не кратным числу доступных процессоров
Какие существуют в Windows способы решения проблем, возникающих при осуществлении одновременного доступа разных потоков к общим данным:
(1) атомарные операции
(2) критические секции
(3) синхронизация с использованием объектов ядра
(4) ожидающие таймеры
Platform Adaptation Layer является прослойкой между основными механизмами CLR и:
(1) уровнем виртуальной подсистемы
(2) уровнем операционной подсистемы
(3) уровнем виртуальной системы
(4) уровнем операционной системы
В чем причина того, что VES является более абстрактной моделью, чем JVM?
(1) изначально Java была ориентирована на реализацию в бытовых приборах
(2) байт-код Java должен был выполняться специальными процессорами
(3) VES не является более абстрактной моделью, чем JVM
(4) аппаратная реализация VES никогда даже не предполагалась
Расположение метаданных задается:
(1) в начале секции ".text"
(2) в секции ".reloc"
(3) в телах методов
(4) в заголовке CLI
Операнд int64 имеет размер в байтах равный:
(1) 8
(2) 4
(3) 2
(4) 1
Загружает адрес статического поля объекта следующая инструкция:
(1) idsflda
(2) sdfld
(3) 0x80
(4) 0x7F
Какие допустимые значения имеет поле Flags предложения обработки исключений:
(1) 0
(2) 1
(3) 2
(4) 3
При использовании метода find для поиска элемента в массиве, в случае если элемент не найден возвращается:
(1) 1
(2) 0
(3) +1
(4) -1
Алгоритмы, работающие неизвестно сколько времени и потребляющие неизвестно какое количество ресурсов, представляют скорее:
(1) практический интерес
(2) научный интерес
(3) теоретический интерес
Операционная система UCSD p-System была разработана в:
(1) 1978 году
(2) 1979 году
(3) 1980 году
(4) 1981 году
Имея какой класс мы можем записать обобщенный алгоритм интегрирования методом прямоугольников:
(1) Func
(2) Abstract
(3) Math
(4) Function
В каких компьютерах несколько процессоров подключены к общей оперативной памяти и имеют к ней равноправный и конкурентный доступ:
(1) SMP машины
(2) MPP системам
(3) NUMA и cc-NUMA архитектуры
Многие операционные системы предоставляют дополнительные средства межпроцессного взаимодействия, многие из них являются:
(1) надстройками над средствами работы с потоками
(2) надстройками над средствами работы с разделяемой памятью
(3) надстройками над средствами работы с данными
(4) надстройками над средствами работы с файловыми системами
В Windows порта завершения ввода-вывода берет на себя функциональность, необходимую для организации:
(1) очереди запросов
(2) списков рабочих потоков
(3) очереди процедур
(4) списков рабочих процессов
В командах процессора операции с блокировкой шины имеют префикс:
(1) unlock
(2) lock
(3) close
(4) unclose
Потоки в .NET не предусматривают средств:
(1) управления потоками
(2) управления процедурами
(3) управления волокнами
(4) управления секциями
Нити (threads) могут:
(1) работать параллельно
(2) работать в режиме вытесняющей многозадачности
(3) могут отображаться на процессы
(4) могут отображаться на нити операционной системы
(5) работать последовательно
В ".NET Framework Glossary" утверждается, что:
(1) PE - это формат исполняемых файлов
(2) COFF - это формат объектных файлов
(3) COFF - это формат исполняемых файлов
(4) PE - это формат объектных файлов
Корень метаданных начинается с 32-разрядной сигнатуры:
(1) 0x434A5342
(2) 0x424A5242
(3) 0x424A5341
(4) 0x424A5342
В каком случае будет произведена динамическая проверка типа объекта на стеке вычислений:
(1) /* 22 | 0000803F */ ldc.r4 1.0
(2) /* FE 00 */ arglist
(3) /* 28 | (06)0000CD */ call System.String::Compare
(4) /* 75 | (02)00000F */ isinst System.String
Какая инстукция создает на вершине стека объект-строку:
(1) 0x72
(2) callvirt
(3) 0x6F
(4) ldstr
Какая инструкция разрешена только внутри обработчика исключений с фильтрацией по типу и предназначена для генерации того же самого исключения, которое было поймано обработчиком:
(1) rethrow
(2) endfilter
(3) endfinally
(4) leave.s
Какие метаинструменты, выполняющие только анализ CIL-кода, могут непосредственно работать с линейной последовательностью инструкций:
(1) JIT-компиляторы
(2) интерпретаторы
(3) верификаторы
(4) отладчики
Верификаторы, предназначенные для выявления определенного класса ошибок в программах, используются при разработке программ на этапе:
(1) тестирования
(2) разработки
(3) кодирования
(4) отладки
Для формата ANDF верно:
(1) не зависит от языков программирования
(2) не зависит от особенностей аппаратных платформ
(3) не зависит от инсталляторов
(4) не зависит от операционных систем
В данном примере: public abstract class Expression { public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x); } метод GenerateCS:
(1) транслирует выражение в фрагмент программы на C#
(2) транслирует выражение в CIL-код
(3) выполняет непосредственное вычисление значения выражения
На многопроцессорных системах при реальной возможности распараллеливания задач по разным процессорам, обычно используют механизм разделения времени:
(1) на каждом из доступных процессоров
(2) на одном из доступных процессоров
(3) на двух параллельных процессорах
(4) на произвольном процессоре
Эффективность использования процессора можно было бы повысить, если бы существовала возможность выполнять код программы:
(1) во время выполнения операций ввода
(2) во время выполнения операций ввода-вывода
(3) во время выполнения операций вывода
Типичными формами применения функции CreateIoCompletionPort являются:
(1) создание нового порта завершения ввода-вывода
(2) ассоциирование порта с файлом
(3) ассоциирование порта с пулом
(4) создание нового порта ввода-вывода
Какая функция подготавливает начальный указатель на LIFO список:
(1) InterlockedPushEntrySList
(2) InterlockedPopEntrySList
(3) InterlockedFlushSList
(4) InitializeSListHead
Если начальные значения всех элементов матриц равны 1, то результирующая матрица должна быть заполнена числами, равными:
(1) размерности перемножаемых матриц
(2) cумме перемножаемых матриц
(3) произведению перемножаемых матриц
(4) частному перемножаемых матриц
Если активный метод закончит свою работу, то его состояние будет:
(1) удалено из списка
(2) добавлено в конец списка
(3) занесено в историю списка
(4) добавлено в начало списка
Каждый процесс в Windows запускается в своем виртуальном адресном пространстве размером в:
(1) 4 Гб
(2) 2 Гб
(3) 1 Гб
(4) 8 Гб
Корень метаданных заканчивается:
(1) 32-разрядным целым числом
(2) 8-разрядным целым числом
(3) 64-разрядным целым числом
(4) 16-разрядным целым числом
Ограничениями на последовательности инструкций, введеными для упрощение JIT-компилятора являются следующие:
(1) ограничение на структуру стека вычислений
(2) ограничение на размер стека вычислений
(3) ограничение на системные переходы
(4) ограничение на обратные переходы
Диаграмма стека для инструкции newarr:
(1) ... , num -> array
(2) ... , num -> ... , array
(3) num -> ... , array
(4) ... , ... , array
Диаграмма стека для инструкции endfinally:
(1) ... -> ... ...
(2) ... ... -> ...
(3) -> ...
(4) ... -> ...
Количество дуг, исходящих из узла графа, зависит от:
(1) потока управления
(2) записанной в нем инструкции
(3) специальных метаинструментов
(4) группировки секций
Отметьте верные утверждения, касающиеся разрушающего память кода:
(1) существуют компиляторы, которые в общем случае могут порождать такой код
(2) любой CIL-код можно непосредственно компилировать с помощью ILASM
(3) всем перечисленным может воспользоваться злоумышленник
(4) в языке C# предусмотрены unsafe-блоки и unsafe-методы, внутри которых может находиться такой код
На основе спецификации CLI, разрабатываются следующие ее реализации:
(1) проект Portable .NET
(2) GNU
(3) Rotor
(4) платформа Mono
Классы, отвечающие за компиляцию исходного кода, относятся:
(1) к пространству имен System.Compiler
(2) к пространству имен System.CodeDom.Compiler
(3) к пространству имен CodeDom.Compiler
(4) к пространству имен System.CodeDom.Compiler.Text
Типичными причинами коррекции приоритета являются:
(1) запуск задачи
(2) очистка процессора
(3) частый вызов операций ввода-вывода
(4) продолжительное ожидание в очереди
Специальная структура OVERLAPPED используется для:
(1) взаимодействия с синхронной операцией
(2) взаимодействия с параллельной операцией
(3) взаимодействия с последовательной операцией
(4) взаимодействия с асинхронной операцией
Ассоциирование порта с файлом можно осуществить так:
(1) #define CreateIoCompletionPort( );
(2) #define SOME_NUMBER 123 CreateIoCompletionPort;
(3) SOME_NUMBER 123 CreateIoCompletionPort( hFile, hCP, SOME_NUMBER, 0 );
(4) #define SOME_NUMBER 123 CreateIoCompletionPort( hFile, hCP, SOME_NUMBER, 0 );
Работа с критическими секциями сводится к следующим основным функциям:
(1) EnterCriticalSection
(2) LeaveCriticalSection
(3) InterlockedCriticalSection
(4) EnterlockedCriticalSection
Для выполнения задержек в ходе выполнения потока предназначены следующие методы:
(1) Sleep
(2) Wait
(3) WakeUp
(4) SpinWait
Изменяемые данные доступны из тела метода для:
(1) чтения
(2) записи
(3) исполнения
Секция в PE-файле представляет:
(1) код
(2) глобальные переменные
(3) таблицы импорта
(4) ресурсы
Поток таблицы метаданных имеет следующее имя потока:
(1) "#GUID"
(2) "#US"
(3) "#Blob"
(4) "#~"
Для обмена значениями между стеком вычислений и памятью предназначены следующие инструкции:
(1) инструкции для загрузки и сохранения значений
(2) системные инструкции
(3) инструкции для организации буфера
(4) арифметические инструкции
Инструкция ldelem.u2 имеет код:
(1) 0x96
(2) 0x93
(3) 0x98
(4) 0x92
Какие существуют правила для расположения областей, которые определяет предложение обработки исключений в коде метода?
(1) области, определяемые в предложении обработки исключений, не могут перекрываться
(2) область фильтра всегда расположена непосредственно перед областью обработчика
(3) область фильтра завершается инструкцией endfilter
Главный блок графа, в который непосредственно или транзитивно входят все остальные узлы графа - это:
(1) защищенный блок
(2) блок фильтрации
(3) блок тела метода
(4) блок обработки исключений
Код, для которого верификатор доказал, что он не разрушает память:
(1) верифицированный код
(2) компилируемый код
(3) верифицируемый код
(4) транслируемый код
Укажите типичные ошибки при управлении памятью:
(1) преждевременное освобождение памяти
(2) двойное освобождение
(3) утечки памяти
(4) фрагментация адресного пространства
Вызывая метод DefineDynamicAssembly домена приложений мы можем получить:
(1) класс Assembly
(2) метод класса AssemblyBuilder
(3) класс AssemblyBuilder
(4) объект класса AssemblyBuilder
Термин "fiber" может переводиться так:
(1) "нить"
(2) "волокно"
(3) "элемент"
(4) "секция"
В данном случае:ov.Offset = 12345; if ( WriteFile( fh, buffer, sizeof(buffer), &dwWritten, &ov ) || GetLastError() == ERROR_IO_PENDING ) { while (!GetOverlappedResult(fh, &ov, &dwWritten, FALSE)){} } else { }Функция GetOverlappedResult проверяет:
(1) состояние операции ввода-вывода и возвращает признак ее завершения
(2) состояние операции вывода и возвращает признак ее завершения
(3) состояние операции ввода и возвращает признак ее завершения
(4) состояние операции ввода-вывода и возвращает признак ее исполнения
Чтобы порт завершения ввода-вывода не связывать с файлами, для размещения запроса можно воспользоваться функцией:
(1) ExistingCompletionPort
(2) CreateIoCompletionPort
(3) CompletionKey
(4) PostQueuedCompletionStatus
Функции проверяют состояние ожидаемого объекта или ожидаемых объектов и продолжают выполнение, только если:
(1) объекты заняты
(2) объекты свободны
(3) объекты в ожидании
(4) объекты вызваны
Какой потомок абстрактного класса Stream в .NET Framework предоставляет возможность использования байтового массива в качестве источника или получателя данных:
(1) System.IO.Stream
(2) System.NET.Sockets.NetworkStream
(3) System.IO.BufferedStream
(4) System.IO.MemoryStream
Что из изменяемых данных содержит адрес следующей инструкции в теле метода, которая будет выполнена системой выполнения:
(1) Instruction Pointer
(2) Local Memory Pool
(3) Argument Array
(4) Evaluation Stack
Информация об экспортируемых функциях хранится внутри PE-файла в специальной секции:
(1) ".edata"
(2) ".reloc"
(3) ".rdata"
(4) ".text"
Различные биты какого поля заголовка таблиц метаданных задают размеры индексов, используемых для адресации куч метаданных:
(1) char HeapSizes;
(2) char Valid[8];
(3) unsigned long Rows[7];
(4) char Valid;
Код 0xDF соответствует инструкции:
(1) stind.i
(2) stind.r8
(3) stind.r4
(4) stind.i1
Диаграмма стека для инструкций stelem:
(1) ... , array, index, value -> ...
(2) ... , array, index, ...
(3) array, index, value -> ...
(4) ... , array, value -> ...
Пусть в некотором методе инструкция, расположенная по некоторому адресу, породила исключение. Система выполнения обрабатывает это исключение:
(1) в три этапа
(2) в семь этапов
(3) в четыре этапа
(4) в два этапа
Блок обработки исключений в графе потока управления имеет:
(1) один вход
(2) два входа
(3) три входа
(4) четыре входа
Данные о количестве слотов на стеке и типы значений, лежащих в этих слотах - это:
(1) конфигурация стека
(2) буфер стека
(3) объем стека
(4) состояние стека
Все ошибки в программах можно разделить на две категории:
(1) допустимые и недопустимые
(2) критические и не критические
(3) теоритические и фактические
(4) перехватываемые и неперехватываемые
При каком способе вычисления значения функции на динамическую сборку будет затрачено 547 мс, на компьютере с процессором Intel Pentium 4 с тактовой частотой 3000 МГц и 1 Гб оперативной памяти:
(1) предварительная компиляция С#
(2) интерпретация дерева выражения
(3) предварительная компиляция в CIL
В Windows управление волокнами возложено на:
(1) приложения пользователя
(2) переменные окружения
(3) потоки
(4) сетевые приложения
Для реализации асинхронного ввода-вывода в операционной системе предусмотрен специальный механизм, основанный на:
(1) асинхронных вызовах процедур
(2) Аsynchronous Procedure Call
(3) APC
С помощью флага WT_EXECUTEDEFAULT запрос будет направлен:
(1) обычному потоку из пула
(2) обычному потоку из процедуры
(3) обычному потоку из задачи
(4) обычному потоку из процессов
Для ограничения числа потоков, имеющих одновременный доступ к какому-либо ресурсу предназначены:
(1) семафоры
(2) указатели
(3) мьютексы
(4) события
.NET позволяет осуществлять асинхронные вызовы любых процедур с помощью метода:
(1) BeginInvoke делегатов
(2) ThreadPool делегатов
(3) QueueUserWorkItem делегатов
(4) WaitHandle делегатов
Глубина стека в VES задается:
(1) динамически в названии объекта
(2) статически в названии объекта
(3) динамически в заголовке метода
(4) статически в заголовке метода
Поля дополнительного заголовка можно разделить на следующие группы:
(1) стандартные поля
(2) поля, специфичные для Windows NT.
(3) системные поля
(4) директории данных
Преимущества компонентного подхода перевешивают:
(1) проблемы в организации взаимодействия компонентов
(2) проблемы в создании компонентов
(3) проблемы в компиляции компонентов
(4) проблемы в интерпретации компонентов
Среди базовых бинарных операций сложением является инструкция:
(1) div.un
(2) mul
(3) xor
(4) add
Какая инструкция заполняет все поля значения нулями:
(1) sizeof
(2) initobj
(3) cpobj
(4) stobj
Ассемблер, входящий в составе .NET Framework SDK позволяет компилировать:
(1) системные вызовы
(2) текстовые файлы, содержащие CIL-код
(3) метаданные
(4) системные инструкции
Обработка исключений требует введения в граф особых дуг, которые отражают:
(1) последовательность обработчиков исключений, присоединенных к блоку фильтрации
(2) последовательность обработчиков исключений, присоединенных к защищенному блоку
(3) последовательность инструкций, присоединенных к защищенному блоку
(4) последовательность инструкций, присоединенных к блоку фильтрации
Генерация новой сборки .NET осуществляется:
(1) компиляторами
(2) трансляторами
(3) интерпретаторами
(4) RAD-средствами
Для программы, написанной на языке со строгой проверкой, справедливы следующие утверждения:
(1) перехватываемые ошибки могут возникать
(2) неперехватываемые ошибки не могут возникнуть
(3) запрещенные перехватываемые ошибки также невозможны
(4) борьба с перехватываемыми ошибками остается в компетенции программиста
Правило Expr ::= local x assign Expr можно описать так:
(1) унарный минус
(2) пустой список фактических параметров метода
(3) параметр метода с именем x
(4) операция присваивания переменной x значения выражения
При переходе из состояния "ожидание" в "готовность": если ожидание было долгим, то стек потока может быть выгружен:
(1) из оперативной памяти
(2) из операционной системы
(3) из системной памяти
(4) из буфера системы
Обычно APC используются самой системой для реализации:
(1) синхронного ввода-вывода
(2) синхронного ввода
(3) асинхронного вывода
(4) асинхронного ввода-вывода
Поскольку все потоки разделяют общее адресное пространство процесса, то все они имеют общий и равноправный доступ:
(1) ко всем данным, хранимым в адресном пространстве
(2) ко всем данным, хранимым в потоках
(3) ко всем данным, хранимым в процедурах
(4) ко всем данным, хранимым в общем пространстве
Таймеры могут:
(1) служить в качестве синхронизирующих объектов
(2) могут вызывать указанную разработчиком функцию
(3) служить в качестве асинхронизирующих объектов
(4) не могут вызывать указанную разработчиком функцию
Когда определяется какой-либо делегат функции, для него будут определены методы:
(1) BeginInvoke
(2) AsyncCallback
(3) AsyncState
(4) EndInvoke
(5) IAsyncResult
Слоты, из которых состоят массивы переменных и параметров:
(1) не имеют адреса
(2) не имеют значений
(3) имеют специальный флаг
(4) адресуемы
Структура Hint/Name состоит из следующих полей:
(1) short Hint;
(2) char Name[x];
(3) short Pad;
(4) char Pad;
В компонентной системе можно выделить следующие виды взаимодействия компонентов:
(1) взаимодействие в сети, когда компоненты запущены на разных компьютерах
(2) взаимодействие внутри адресного пространства одного процесса
(3) системное взаимодействие, когда компоненты запушены на одном компьютере
(4) межпроцессное взаимодействие, при котором компоненты работают в разных процессах
Какая инструкция интерпретирует целое значение, лежащее на вершине стека, как не имеющее знака и преобразует его к вещественному типу:
(1) conv.i2
(2) conv.r8
(3) conv.ovf.i
(4) conv.r.un
Диаграмма стека для инструкций stobj:
(1) ..., addr, val0bj ->...
(2) ..., addr, -> ..., val0bj
(3) ..., destAddr, srcAddr ->...
(4) ..., obj ->..., ptr
Идентификаторы и метки чаще всего представляют последовательности символов, начинающиеся с латинской буквы (или с символов "_", "$", "@" и "?"), за которой следуют:
(1) латинские буквы
(2) цифры
(3) знаки
(4) символы "_", "$", "@" и "?"
Чтобы определить, в какой блок входит некоторая инструкция графа, мы должны каким-то образом пройти от этой инструкции по дугам графа:
(1) в обратном направлении до выхода из блока
(2) в обратном направлении до входа в блок
(3) продолжить путь до входа в блок
(4) продолжить путь до выхода из блока
Для того чтобы использовать 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")
Тип bool будет иметь следующее имя в .NET Framework Class Library:
(1) System.Boolean
(2) System.SByte
(3) System.IntPtr
(4) System.UIntPtr
Алгоритм peephole-оптимизации использует понятие:
(1) блока
(2) секции
(3) пакета
(4) фрейма
Процессор, на котором запускается приложение в первый раз:
(1) "идеальный"
(2) "центральный"
(3) "первичный"
(4) "экспериментальный"
Дескриптор безопасности (Security Descriptor) содержит информацию:
(1) о владельце объекта
(2) первичной группе пользователей
(3) один список управления доступом
(4) два списка управления доступом
Выберите утверждения верные для TLS памяти:
(1) полное название Thread Local Storage
(2) в специальном блоке данных возможно хранение произвольных данных
(3) в специальном блоке данных размещаются указатели на данные большего объема
Основные механизмы взаимодействия процессов могут быть разделены на следующие группы:
(1) использование объектов ядра для взаимной синхронизации
(2) проецирование файлов в адресное пространство процесса
(3) использование файловых объектов
(4) механизмы, ориентированные на обмен оконными сообщениями
(5) RPC
(6) COM
Использование BeginInvoke позволяет связать с завершением обработки асинхронной процедуры:
(1) еще один асинхронный вызов
(2) один синхронный вызов
(3) два синхронных вызова
По спецификации CLI память для объектов, используемых в программе, выделяется в:
(1) механизме автоматического управления памятью
(2) сборщике мусора с поколениями
(3) структуре объектов
(4) управляемой куче
Какие поля в заголовоке CLI содержат информацию о версии CLR, для которой предназначена данная сборка:
(1) short MinorRuntimeVersion;
(2) short MajorRuntimeVersion;
(3) long Flags;
(4) long EntryPointToken;
Технология COM поддерживает следующие виды взаимодействия компонентов:
(1) взаимодействие внутри адресного пространства процесса
(2) межпроцессное взаимодействие
(3) виртуальное взаимодействие
(4) взаимодействие по сети
Сколько существует инструкций безусловного перехода?
(1) 0
(2) 1
(3) 2
(4) 3
Какая инструкция применяется для работы с библиотекой рефлексии:
(1) stobj
(2) sizeof
(3) ldtoken
(4) initobj
В вещественных константах для разделения целой и дробной части используется:
(1) запятая
(2) точка с запятой
(3) тире
(4) точка
Дан массив инструкций P размера N и массив предложений обработки исключений EH размера M, какое поле является количество инструкций, входящих в защищенную область:
(1) TryLength
(2) ClassToken
(3) FilterOffset
(4) TryOffset
При завершении работы с Metadata Unmanaged API необходимо освободить указатели на полученные интерфейсы следующим образом:
(1) mdimp->Release(); dispenser->Release();
(2) dispenser->OpenScope(); mdimp->Release();
(3) mdimp->OpenScope(); dispenser->"test.exe"
Общая система типов не допускает присваивание ячейке несовместимого с ее типом:
(1) объекта
(2) класса
(3) свойства
(4) значения
Следующее правило:LogExpr ::= LogExpr ComparisonOp LogExprможно описать так:
(1) применение логического ИЛИ
(2) равенство
(3) больше
(4) сравнение двух выражений
Планировщик Windows динамически изменяет:
(1) длительность квантов
(2) приоритеты, назначаемые потокам
(3) задачи выполняемые потоками
С помощью каких функций можно узнать идентификаторы текущего процесса и потока:
(1) GetCurrentThreadId, GetCurrentProcessId
(2) GetProcessId, GetThreadId
(3) OpenProcess, OpenThread
(4) GetPriorityClass, SetPriorityClass
Для доступа к данным зарезервированной ячейки используется функция:
(1) TlsSetValue
(2) TlsGetValue
(3) GetNumaHighestNodeNumber
(4) GetNumaProcessorNode
Для управления адресным пространством предназначены функции:
(1) VirtualAlloc
(2) VirtualFree
(3) VirtualAllocEx
(4) VirtualFreeEx
(5) VirtualLock
(6) VirtualUnlock
Какие методы платформы .NET позволяют осуществлять операции над целыми числами, которые могут выполняться атомарно:
(1) Increment
(2) Decrement
(3) Exchange
(4) CompareExchange
(5) Compare
Для некоторых объектов определены методы Finalize, выполняющие некие действия:
(1) при добавлении объекта в кучу
(2) при создании объекта в куче
(3) при выполнении объекта в куче
(4) при удалении объекта из кучи
В каком поле заголовка CLI указываются RVA и размер в байтах ресурсов сборки:
(1) struct { long RVA, Size; } Resources;
(2) struct { long RVA, Size; } StrongNameSignature;
(3) struct { long RVA, Size; } VTableFixups;
(4) long ManagedNativeHeader[2];
При взаимодействия двух объектов на платформе .NET, объекты Client и Server находятся в разных компонентах, работающих:
(1) в адресном пространстве разных процессов
(2) в адресном пространстве одного процесса
(3) в адресном пространстве двух процессов
(4) в адресном пространстве трех процессов
Диаграмма стека для базовых инструкций условного перехода выглядит следующим образом:
(1) ... , value -> ...
(2) ... , value1 , value2 -> ...
(3) ... , value1 , value2 ,value3 -> ...
(4) ... , value1 , value2 , value3 ,value4 -> ...
Сколько инструкций CIL предусмотрено для работы с типизированными ссылками:
(1) 0
(2) 1
(3) 2
(4) 3
В каком примере диектива заголовка задает имя сборки:
(1) .module MyProgram.exe
(2) .assembly MyProgram { }
(3) .assembly extern mscorlib { }
Дан массив инструкций 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]; }
Метаинструмент, использующий библиотеку рефлексии, получает доступ к метаданным сборки через экземпляр класса:
(1) Assembly
(2) Module
(3) ConstructorInfo
(4) MethodInfo
Одной из основных причин ухудшения производительности Java-программ является медленная работа сборщика мусора, вызванная:
(1) большим количеством мелких объектов в куче
(2) малым количеством мелких объектов в куче
(3) большим количеством мелких объектов в структурах
(4) малым количеством мелких объектов в структурах
Правило Statement ::= Statement StatementList можно описать так:
(1) непустая последовательность предложений
(2) цикл с постусловием
(3) цикл с предусловием
(4) выбор с двумя альтернативами
Какой параметр реестра предназначен для управления квантованием:
(1) HKLM\SYSTEM\Control\PriorityControl\ Win32PrioritySeparation
(2) HKLM\SYSTEM\CurrentControlSet\PriorityControl\Win32PrioritySeparation
(3) HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\
(4) HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation
В случае Visual Studio многопоточные версии библиотек выбираются ключами:
(1) /MT
(2) /MD
(3) /MTd
(4) /MDd
(5) /ML
(6) /MLd
При использовании _declspec(thread) при описании переменных компилятор будет размещать эти переменные:
(1) в специальном сегменте данных (_TLS)
(2) в специальном сегменте данных (_SLT)
(3) в специальном сегменте данных (_TSL)
Для явного сброса данных из оперативной памяти в файл можно использовать следующую функцию:
(1) FlushViewOfFile
(2) UnmapViewOfFile
(3) VirtualAlloc
(4) CreateProcess
Мониторы в .NET являются аналогами:
(1) критических секций в Win32 API
(2) секций в Win32 API
(3) критических блоков в Win32 API
(4) блоков в Win32 API
Запуск сборщика мусора осуществляется в тот момент, когда совокупный размер объектов в куче:
(1) становится меньше некоторой границы
(2) превышает допустимый максимум
(3) достигает некоторой границы
В данном примере: 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 функции
Флаг доступа для членов типа, имеющий значение 0x00000002 - это:
(1) Assembly
(2) Family
(3) FamOrAssem
(4) FamAndAssem
Какая инструкция имеет следующее описание: clt.un; brtrue.s?
(1) 0x36
(2) bgt.un.s
(3) bge.un.s
(4) blt.un.s
Диаграмма стека для инструкций mkrefany:
(1) ... , ptr -> ... , typedRef
(2) ... , typedRef -> ... , ptr
(3) ... , typedRef -> ... , type
(4) ... , typedRef -> ...
В каком примере происходит объявление поля x типа массив:
(1) .field private int32 x
(2) .field private int32[]
(3) .field private int32[] x[]
(4) .field private int32[] x
Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков мы получаем вспомогательный массив T, каждый элемент которого состоит из следующих полей:
(1) block
(2) offset
(3) set
(4) length
Информацию о любом элементе метаданных можно прочитать из свойств соответствующего ему:
(1) метода рефлексии
(2) инструмента рефлексии
(3) метаинструмента рефлексии
(4) объекта рефлексии
Для того чтобы программы оставались безопасными, на использование управляемых указателей наложен целый ряд следующих ограничений:
(1) управляемые указатели могут содержать только адреса ячеек
(2) указатели могут храниться только в локальных переменных и параметрах методов
(3) запрещены указатели на указатели
(4) за каждым указателем закреплен тип ячейки, на которую он может указывать
При удалении псевдонима Y переменной X осуществляются следующие действия:
(1) инструкция инициализации переменной Y заменяется инструкцией pop
(2) все использования переменной Y заменяются использованиями переменной X
(3) инструкция инициализации переменной Y заменяется инструкцией dup
Какие приоритеты соответствуют динамическим уровням приоритетов:
(1) приоритеты с 1 по 15
(2) приоритет 0
(3) приоритеты с 32 по 41
(4) приоритеты с 16 по 31
Планировать исполнение исполнение волокон можно с помощью:
(1) DeleteFiber
(2) CreateFiber
(3) ConvertFiberToThread
(4) SwitchToFiber
В данном случае:DWORD FlsAlloc( PFLS_CALLBACK_FUNCTION lpCallback ); VOID WINAPI FlsCallback( PVOID lpFlsData ) { ... }происходит:
(1) выделения ячейки FLS памяти
(2) выделения ячейки TLS памяти
(3) выделения ячейки PLS памяти
В случае работы с разделяемыми данными посредством проецирования файлов связана с объявлением специальных разделяемых сегментов в приложении, которые:
(1) будут не доступны для всех копий этого приложения
(2) будут локальными для всех копий этого приложения
(3) будут глобальными для всех копий этого приложения
(4) будут общими для всех копий этого приложения
В следующем примере:class SomeData { [ThreadStatic] public static double xxx; ...поле класса SomeData.xxx будет размещено:
(1) в глобальной для каждого потока памяти
(2) в локальной для каждого потока памяти
(3) в текущей для каждого потока памяти
(4) в изолированнной для каждого потока памяти
Одним из способов увеличения производительности сборщика мусора является:
(1) выделение отдельной кучи для малых объектов
(2) выделение кучи для малых объектов
(3) выделение отдельной кучи для средних объектов
(4) выделение отдельной кучи для больших объектов
В следующей форме в программе находится 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 };
Класс InsertSortedArray:using VBLib; public class InsertSortedArray: SortedArray { protected override void Sort() { for (int i = 0; i < Arr.Length-1; i++) { int max = i; for (int j = i+1; j < Arr.Length; j++) if (Arr[j] > Arr[max]) max = j; int tmp = Arr[i]; Arr[i] = Arr[max]; Arr[max] = tmp; } } public InsertSortedArray(int[] A): base(A) { } }переопределяет абстрактный метод:
(1) Sort()
(2) Arr[max]
(3) Arr[i]
(4) SortedArray
Какая инструкция имеет код 0x2A?
(1) call
(2) bgt.un.s
(3) ret
(4) ble.un
Инструкция refanyval имеет код:
(1) 0xC0
(2) 0xC1
(3) 0xC2
(4) 0xC3
В следующем примере:.class public SampleClass { .method public static void Demo() { .entrypoint .maxstack 3 ldc.r8 0.0 ldc.r8 0.0 newobj void Point::.ctor(float64,float64) ldc.r8 1.0 ldc.r8 1.0 newobj void Point::.ctor(float64,float64) call float64 Point::Distance(valuetype Point, valuetype Point) call void [mscorlib]System.Console::WriteLine (float64) ret } }метод Demo будет вычислять расстояние между точками:
(1) (0.0,0.0) и (1.0,1.0)
(2) (1.0,1.0) и (0.0,0.0)
(3) (1.0,0.0) и (0.0,1.0)
(4) (0.0,1.0) и (0.0,1.0)
В процессе преобразования линейной последовательности инструкций в граф потока управления, на третьем этапе, во время первой итерации цикла родителем всех узлов становится:
(1) блок тела метода
(2) защищенный блок
(3) блок фильтрации
Для генерации метаданных и CIL-кода в библиотеке рефлексии предназначены классы:
(1) пространтсва имен System.Reflection.Emit
(2) ILGenerator
(3) Generator
(4) пространтсва имен System.Reflection.API
Рабочим названием платформы .NET было:
(1) Project 42
(2) COM
(3) Next Generation Web Services
(4) Lightning
(5) COM+ 2.0
(6) COM Object Runtime
При динамической генерации кода тип процессора - эта та часть информации, которая становится известной:
(1) до выполнения программы
(2) только во время выполнения программы
(3) после выполнения программы
(4) до или во время выполнения программы
Способом реализации многозадачности могут быть:
(1) использование асинхронных операций ввода-вывода
(2) использование механизмов передачи сообщений
(3) обмен данными через область совместно доступной памяти
Когда процесс запускается, операционная система в нем самостоятельно создает:
(1) первичный поток, начинающий исполнение кода этого процесса
(2) вторичный поток, начинающий исполнение кода этого процесса
(3) первичный поток, начинающий исполнение кода следующего процесса
(4) вторичный поток, начинающий исполнение кода предыдущего процесса
Реализация однопоточного сервера для обслуживания асинхронно поступающие запросы нецелесообразна по следующим причинам:
(1) запросы могут приходить в то время, пока сервер занят выполнением предыдущего
(2) такой сервер не сможет эффективно задействовать многопроцессорную систему
(3) такой сервер не сможет эффективно задействовать операционную систему
(4) запросы могут приходить в то время, пока сервер простаивает
В данном примере:#include <stdio.h> #include <process.h> #include <windows.h> #define THREADS 10 #define ASIZE 10000000 static LONG array[ASIZE]; unsigned __stdcall ThreadProc( void *param ) { int i; for ( i = 0; i < ASIZE; i++ ) array[i]++; return 0; } int main( void ) { HANDLE hThread[THREADS]; unsigned dwThread; int i, errs; for ( i = 0; i < THREADS; i++ ) hThread[i] = (HANDLE)_beginthreadex( NULL, 0, ThreadProc, NULL, 0, &dwThread ); WaitForMultipleObjects( THREADS, hThread, TRUE, INFINITE ); for ( i = 0; i < THREADS; i++ ) CloseHandle( hThread[i] ); for ( errs=i=0; i<ASIZE; i++ ) if ( array[i] != THREADS ) errs++; if ( errs ) printf("Detected %d errors!\n", errs ); return 0; }несколько потоков увеличивают значение элементов общего массива на:
(1) 0
(2) 1
(3) 2
(4) 3
(5) 4
(6) 5
При запуске .NET приложения автоматически создается:
(1) пул потоков, используемый CLR по мере надобности
(2) пул потоков, используемый RPC по мере надобности
(3) пул потоков, используемый TLS по мере надобности
(4) пул потоков, используемый APC по мере надобности
В реализациях CLI вместо интерпретатора CIL-кода используется:
(1) JIT-компилятор
(2) JVM
(3) VES
(4) CIL-транслятор
Основным форматом для хранения исполняемых файлов в операционной системе Windows является:
(1) Portable Executable (PE)
(2) Linear Executable (LE)
(3) New Executable (NE)
(4) COM Executable (CE)
Для хранения метаданных используется:
(1) восьмеричный формат
(2) шестнадцатеричный формат
(3) двоичный формат
(4) текстовый формат
Инструкция call, вызывающая метод, имеет встроенный операнд, задающий:
(1) номер переменной
(2) номер константы
(3) положение секций
(4) токен метаданных
Какая инструкция имеет код 0x74:
(1) castclass
(2) isinst
(3) newobj
(4) idfld
(5) sdfld
(6) callvirt
Поле предложения обработки исключений в случае короткого формата ClassToken имеет смещение равное:
(1) 1
(2) 3
(3) 5
(4) 6
(5) 7
(6) 8
Существуют следующие механизмы передачи управления между инструкциями:
(1) явная передача управления с помощью инструкции перехода
(2) передача управления между событиями
(3) неявная передача управления на следующую инструкцию в последовательности
(4) передача управления на обработчик исключения при выходе из защищенного блока
(5) передача управления между методами
Алгоритмы верификации являются:
(1) интерпретируемыми алгоритмами
(2) емкими алгоритмами
(3) метавычислительными алгоритмами
(4) произвольными алгоритмами
Какая составляющая современного компилятора осуществляет лексический и синтаксический анализ программы и переводит программу в некоторое промежуточное представление?
(1) "Back-end"
(2) "Down-end"
(3) "Top-end"
(4) "Front-end"
(5) "Bottom-end"
(6) "Right-end"
Программно вычисление численного интегрирования функции можно выполнять следующими способами:
(1) без динамической генерации кода
(2) путем динамической генерации программы на языке C#
(3) путем динамической генерации метаданных и CIL-кода
Одновременное выполнение нескольких задач на одном или нескольких процессорах:
(1) мультипроцессирование
(2) процессирование
(3) мультипрограммирование
(4) программирование
Взаимодействие потоков, работающие в рамках одного процесса может:
(1) приводить к конфликтам одновременного доступа
(2) требовать средств изоляции некоторых данных одного потока от данных другого
(3) приводить к конфликтам произвольного доступа потока к общим данным процесса
(4) требовать средств изоляции некоторых данных одного потока от общих данных
Если при использовании пула потоков последние занимаются исключительно вычислительной работой, то их число не должно превышать:
(1) число процессоров
(2) число блоков
(3) число секций
(4) число процессов
В достаточно частых случаях необходимо обеспечить конкурентный доступ к какой-либо целочисленной переменной, являющейся счетчиком. Тогда бывает достаточно просто обеспечить:
(1) атомарность выполнения операций увеличения
(2) атомарность выполнения операций уменьшения
(3) атомарность выполнения операций изменения значения переменной
В случае платформы Windows PAL должен предоставить для CLR функциональность, аналогичную:
(1) Win32 API
(2) COM
(3) .NET
(4) RPC
Изучение работы виртуальной машины CLI заключается в том, чтобы понять:
(1) что представляет собой состояние виртуальной машины
(2) как состояние виртуальной машины меняется во времени
(3) что представляет собой виртуальная машина
(4) как изменяется виртуальная машина при трансляции программ
Метаданные и CIL-код практически не зависят от остальных элементов:
(1) формата системного файла
(2) формата исполняемого файла
(3) формата интерпретируемого файла
(4) формата транслируемого файла
Операнд token имеет размер в байтах равный:
(1) 0
(2) 1
(3) 2
(4) 4
(5) 8
Диаграмма стека для инструкции callvirt:
(1) ... , arg1, ... , argN -> ... , retVal
(2) ... , obj, ... , argN -> ... , retVal
(3) ... , obj, arg1, ... , ... , retVal
(4) ... , obj, arg1, ... , argN -> ...
(5) obj, arg1, ... , argN -> ...
(6) ... , obj, arg1, ... , argN -> ... , retVal
Возможны следующие типы обработчиков исключений:
(1) обработчик с пользовательской фильтрацией
(2) обработчик finally
(3) обработчик с фильтрацией по типу
(4) обработчик fault
(5) Обработчик system
(6) Обработчик class
При использовании метода find для поиска элемента в массиве, в случае если элемент найден возвращается:
(1) -1
(2) его значение
(3) его индекс
(4) 0
Сколько известно подходов для алгоритмов верификации кода, позволяющие снизить их сложность и добиться терминируемости:
(1) 0
(2) 1
(3) 2
(4) 3
(5) 4
(6) 5
Для принципов выполнения программ в UCSD p-System и .NET верно:
(1) программы, закодированные в p-коде, непосредственно выполнялись интерпретатором
(2) программы на CIL перед выполнением транслируются в код для конкретного процессора
(3) заметных отличий в выполнении программ не имеется
(4) программы на CIL непосредственно выполнялись интерпретатором
Для проверки работоспособности алгоритма следующего алгоритма:static double Integrate(Function f, double a, double b, int n) { double h = (b-a)/n, sum = 0.0; for (int i = 0; i < n; i++) sum += h*f.Eval((i+0.5)*h); return sum; }можно объявить тестовый класс TestFunction, реализующий вычисление функции f(x) = x * sin(x) следующим образом:
(1) public class TestFunction: Function { public override double Eval { return x * Math.Sin(x); } }
(2) public class TestFunction: Function { public override double Eval(double x) { return x * Math.Sin(x); } }
(3) public class TestFunction: Function { public override double Eval(double x) { return x * Math.Sin; } }
(4) public class TestFunction: Function { public override double Eval(double x) { } }
Для каких систем критической становится среда передачи данных:
(1) MPP
(2) SMP
(3) NUMA
(4) cc-NUMA
В общем случае память разных компьютеров можно рассматривать как:
(1) интегрированную друг с друга
(2) отображаемую друг в друга
(3) изолированную друг от друга
(4) общее адресное пространство
Что касается порта завершения ввода-вывода в Windows, то с точки зрения разработчика приложения необходимо:
(1) создать пакет запросов
(2) создать порт завершения ввода-вывода
(3) создать пул потоков
(4) обеспечить передачу запросов порту
(5) обеспечить передачу на пул
Для увеличения значения целочисленных переменных ОС Windows предоставляет следующие функции:
(1) InterlockedDecrement, InterlockedDecrement64
(2) InterlockedExchange, InterlockedExchange64
(3) InterlockedIncrement, InterlockedIncrement64
(4) InterlockedCompareExchange, InterlockedCompareExchangePointer
(5) InterlockedExchangeAdd, InterlockedExchangePointer
Основные классы для реализации многопоточных приложений определены в пространстве имен:
(1) System.Threading
(2) System.Thread
(3) System.Reading
(4) System.Class
(5) System.Pipes
Состояние виртуальной машины является совокупностью состояний:
(1) нитей
(2) состояния виртуальной памяти
(3) состояния кучи
(4) процессов
Управление памятью в Windows NT/2k/XP/2k3 осуществляет:
(1) system manager
(2) virtual-memory manager
(3) event viewer
(4) task scheduler
Если каждый байт начальной сигнатуры корня метаданных рассматривать в виде ASCII-кода, то получится строка:
(1) "SJBB"
(2) "SBJB"
(3) "BSBJ"
(4) "BSJB"
(5) "JBSB"
В каком случае на стек вычислений будет загружен специальный описатель массива переменных параметров метода:
(1) /* 28 | (06)0000CD */ call System.String::Compare
(2) /* 75 | (02)00000F */ isinst System.String
(3) /* 22 | 0000803F */ ldc.r4 1.0
(4) /* 1F | 10 */ ldc.i4.s 16
(5) /* 02 */ ldarg.0
(6) /* FE 00 */ arglist
Диаграмма стека для инструкции ldstr:
(1) ... -> ... , arg
(2) ... -> ... , obj
(3) arg, ... -> ... , obj
(4) ... -> ... , objN
Встроенный операнд int32 имеют следующие инструкции:
(1) leave.s
(2) leave
(3) endfinally
(4) rethrow
(5) throw
(6) endfilter
Для метаинструментов, которые выполняют преобразование CIL-кода удобно использовать его представление:
(1) в виде линейного графа
(2) в виде графа потока управления
(3) в виде нелинейного графа
(4) в виде графа потока
Верификаторы, способные доказать, что программа, принадлежащая некоторому классу программ, не разрушает память, служат:
(1) для подготовки отладки
(2) для обеспечения безопасности
(3) для обеспечения терминируемости
(4) для обеспечения дискретизации
Для платформы Java верно:
(1) по архитектуре и своим возможностям наиболее близка к платформе .NET
(2) была разработана в середине 1990-х годов в Sun Microsystems
(3) широкому распространению способствовало развитие Internet-технологий
(4) в настоящее время является основным конкурентом платформы .NET
(5) краеугольным камнем является виртуальная машина
(6) Java byte-code - это набор инструкций виртуальной машины
В данном примере: public abstract class Expression { public abstract string GenerateCS(); public abstract void GenerateCIL(ILGenerator il); public abstract double Evaluate(double x); } метод Evaluate:
(1) транслирует выражение в CIL-код
(2) выполняет непосредственное вычисление значения выражения
(3) транслирует выражение в фрагмент программы на C#
В случае невытесняющей многозадачности решение о переключении принимает:
(1) операционная система
(2) выполняемая в данный момент задача
(3) следующая после выполняемой в данный момент задачи
(4) контроллер домена
В Windows для реализации асинхронного ввода-вывода предусмотрены функции типа:
(1) ReadFile
(2) WriteFile
(3) ReadFileEx
(4) WriteFileEx
Создавать новый порт завершения ввода-вывода с помощью функции CreateIoCompletionPort можно так:
(1) CONCURRENTS 4 HANDLE hCP; hCP = CreateIoCompletionPort( INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS );
(2) #define CONCURRENTS 4 HANDLE hCP; hCP = CreateIoCompletionPort();
(3) #define CONCURRENTS 4 hCP = CreateIoCompletionPort( INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS );
(4) #define HANDLE hCP; INVALID_HANDLE_VALUE, NULL, NULL, CONCURRENTS;
Некоторый фрагмент кода, который должен выполняться в исключительном режиме - никакие другие потоки и процессы не должны выполнять этот же фрагмент в то же время называется:
(1) "системная секция"
(2) "критическая секция"
(3) "главная секция"
(4) "блочная секция"
Поток в .NET может находиться в одном из следующих состояний:
(1) незапущенном
(2) исполнения
(3) ожидания
(4) приостановленном
(5) завершенном
(6) прерванном
Состояние кучи определяется состояниями содержащихся в ней:
(1) объектов
(2) методов
(3) нитей
(4) классов
Для memory-mapped files верно:
(1) это отображаемые в память файлы
(2) это мощная возможность операционной системы
(3) не каждое обращение к отображенному в память файлу вызывает операцию чтения/записи
(4) это отображаемые в кэш-память файлы
В заголовке потока метаданных полем с размером этого потока в байтах является:
(1) char Name[x];
(2) long Size;
(3) long Offset;
(4) long Set;
Когда JIT-компилятор доходит до инструкции ldc.0, расположенной непосредственно после инструкции безусловного перехода br L2, он:
(1) не может определить для нее стек вычислений
(2) не может определить для нее буфер стека вычислений
(3) не может определить для нее схему стека вычислений
(4) не может определить для нее структуру стека вычислений
Какая инструкция загружает размер одномерного массива на стек вычислений:
(1) newarr
(2) ldlen
(3) 0x8D
(4) ldelema
(5) 0x8E
(6) 0x8F
Диаграмма стека для инструкции endfilter:
(1) ... , value -> ...
(2) ... , value -> ... ...
(3) value -> ...
(4) ... , -> ...
(5) ... , value ->
(6) value ->
Номер дуги должен задавать ее:
(1) семантику
(2) синтаксис
(3) граф
(4) схему
Верификатор .NET предназначен:
(1) для процесса отладки
(2) для поиска ошибок в программах
(3) для проверки интерпретируемости кода
(4) для обеспечения безопасности системы
Составными частями спецификации CLI являются:
(1) Common Type System
(2) Virtual Execution System
(3) Metadata System
(4) Common Intermediate Language
(5) Common Language Specification
(6) Common File System
Метод CreateCompiler класса CSharpCodeProvider может создавать экземпляр компилятора C#, к которому можно обращаться через интерфейс:
(1) ICodeCompiler
(2) CodeCompiler
(3) ISharpCompiler
(4) SharpCompiler
Для процесса верны следующие утверждения:
(1) не является потребителем процессорного времени
(2) является потребителем процессорного времени
(3) не подлежит планированию
(4) подлежит планированию
Выяснить состояние асинхронной операции, дождаться ее завершения или отменить ее, не дожидаясь завершения можно с помощью следующего набора функций:
(1) ReadFile, WriteFile, ReadFileEx, WriteFileEx
(2) CancelIo, GetOverlappedResult, HasOverlappedIoCompleted
(3) ExitFile, OpStop, OperationComplete
С помощью функции PostQueuedCompletionStatus можно помещать в очередь порта запросы:
(1) имитирующие завершение ввода-вывода
(2) имитирующие завершение вывода
(3) имитирующие начало ввода-вывода
(4) имитирующие начало ввода
Какая функция позволяет при необходимости не входить в секцию, если она занята:
(1) TryEnterCriticalSection
(2) EnterCriticalSection
(3) InitializeCriticalSectionAndSpinCount
(4) SetCriticalSectionSpinCount
(5) InitializeCriticalSection
Для получения и задания приоритета потока используется свойство:
(1) Thread.Get
(2) Thread.Priority
(3) Get.State
(4) Priority.State
Для неизменяемых данных верно:
(1) доступны только для чтения
(2) предназначены для внутреннего использования в системе выполнения
(3) доступны только для записи
(4) предназначены для системного использования
Как правило, все exe-файлы содержат в поле ImageBase значение:
(1) 0x400000
(2) 0x400001
(3) 0x000000
(4) 0x400004
(5) 0x400044
(6) 0x440002
Имя "#Blob" имеет следующий поток:
(1) куча GUID'ов
(2) куча пользовательских строк
(3) таблицы метаданных
(4) куча строк
(5) куча двоичных данных
Инструкция ldnull имеет следующий код:
(1) 0x15
(2) 0x14
(3) 0x22
(4) 0x20
(5) 0x21
(6) 0x23
Диаграмма стека для инструкций ldelem выглядит так:
(1) array, index -> ... , value
(2) ... , array, index -> ... , value
(3) ... , array, value
(4) ... , array, index -> ...
Передача управления внутрь защищенных областей, из них и между ними и их обработчиками регламентирована следующими правилами:
(1) передача управления на обработчики осуществляется только через механизм обработки исключений
(2) существует только два способа передать управление извне на защищенную область
(3) перед входом в защищенную область стек вычислений должен быть пустым
Какой блок прикреплен к защищенному блоку и может получить управление при выходе из этого защищенного блока:
(1) блок фильтрации
(2) блок тела метода
(3) защищенный блок
(4) блок обработки исключений
Алгоритм верификации представляет собой вариант:
(1) абстрактного транслятора CIL-кода
(2) абстрактного JIT-компилятора
(3) абстрактного интерпретатора CIL-кода
(4) абстрактного компилятора CIL-кода
С точки зрения обеспечения безопасности в классификацию CIL-кода можно включить:
(1) недопустимый код
(2) допустимый код
(3) безопасный код
(4) верифицируемый код
(5) независимый код
(6) открытый код
Компилятор C# создает конструкторы:
(1) с параметрами по умолчанию
(2) без параметров по умолчанию
(3) с специальными параметрами
(4) без специальных параметров
Дескриптор должен содержать:
(1) переменные окружения
(2) права доступа, назначенные потоку
(3) приоритет
(4) величину кванта
В данном случае:ov.Offset = 12345; ov.hEvent = CreateEvent((LPSECURITY_ATTRIBUTES)NULL, TRUE, FALSE, 0); if ( WriteFile( fh, buffer, sizeof(buffer), &dwWritten, &ov ) || GetLastError() == ERROR_IO_PENDING ) { GetOverlappedResult( fh, &ov, &dwWritten, TRUE ); } else { }функция GetOverlappedResult проверяет состояние операции и, если она еще не завершена, вызывает функцию:
(1) ForSingleObject
(2) WaitForSingle
(3) WaitForSingleObject
(4) WaitForSingleObjectResult
В общем виде поток в пуле реализует цикл с выбором запросов из очереди с помощью функции:
(1) CompletionKey
(2) PostQueuedCompletionStatus
(3) GetQueuedCompletionStatus
(4) CreateIoCompletionPort
Функция WaitForSingleObject осуществляет ожидание:
(1) одного объекта
(2) двух объектов
(3) трех объектов
(4) четырех объектов
(5) пяти объектов
Какой потомок абстрактного класса Stream в .NET Framework обеспечивает буферизацию запросов чтения и записи:
(1) System.IO.Buffered
(2) System.IO.BufferedStream
(3) System.BufferedStream
(4) System.IO.Stream
(5) BufferedStream
(6) IO.BufferedStream
В группу неизменяемых данных входят следующие элементы состояния метода:
(1) methodInfo handle
(2) Security Descriptor
(3) Return State Handle
(4) Local Memory Pool
(5) Local Variable Array
Сразу после заголовка MS-DOS следует сигнатура PE-файла, состоящая из четырех байт:
(1) 0x50, 0x45, 0x00, 0x00
(2) 0x20, 0x15, 0x00, 0x00
(3) 0x00, 0x45, 0x00, 0x10
(4) 0x10, 0x00, 0x10, 0x00
В каком поле таблицы членов импортируемых типов специальным образом закодированная информация об импортируемом типе:
(1) short Signature;
(2) short Class;
(3) short Name;
(4) short Object;
Инструкция pop имеет следующий код:
(1) 0x25
(2) 0x10
(3) 0x4E
(4) 0x57
(5) 0x26
(6) 0x11
Инструкция stelem.i8 имеет код:
(1) 0x9C
(2) 0x9F
(3) 0xA0
(4) 0xA1
(5) 0xA2
(6) 0x9D
Система выполнения для обработки сгенерированного исключения на втором этапе:
(1) останавливается, когда доходит до предложения, найденного на втором этапе
(2) останавливается, когда доходит до предложения, найденного на нуль-этапе
(3) останавливается, когда доходит до предложения, найденного на первом этапе
(4) останавливается, когда доходит до предложения, найденного на подготовительном этапе
Выход из блока обработки исключений в графе потока управления может осуществляться через:
(1) один выходной узел
(2) несколько выходных узлов
(3) линейные выходные узлы
(4) линейный выходной узел
Алгоритм верификации работает со следующими данным:
(1) неизменяемые данные
(2) изменяемые данные
(3) произвольные данные
(4) пользовательские данные
В качестве примеров перехватываемых ошибок можно привести:
(1) деление на ноль
(2) обращение к памяти по нулевому указателю
(3) выход за границы массива
(4) передача управления на неправильный адрес
Результаты измерений эффективности трех способов вычисления выражений, проведенных на компьютере с процессором Intel Pentium 4 с тактовой частотой 3000 МГц и 1 Гб оперативной памяти показывают, что динамическая генерация кода может:
(1) на два порядка уменьшить время работы программы
(2) на три порядка уменьшить время работы программы
(3) на четыре порядка увеличить время работы программы
(4) на пять порядков увеличить время работы программы
Фактически для волокон реализуется (в операционной системы Windows):
(1) невытесняющая многозадачность средствами приложения
(2) вытесняющая многозадачность средствами приложения
(3) невытесняющая многозадачность средствами операционной системы
(4) вытесняющая многозадачность средствами операционной системыя
Для реализации APC операционная система ведет:
(1) списки потоков
(2) списки процедур
(3) списки нитей
(4) списки процессов
Флаг WT_EXECUTEINIOTHREAD заставит систему обрабатывать запрос в потоке, который находится:
(1) в состоянии оповещения
(2) в состоянии ожидания оповещения
(3) в состоянии ожидания потока
(4) в состоянии ожидания процессов
Для захвата мьютекса используется функция:
(1) ReleaseMutex
(2) WaitFor...
(3) CreateMutex
(4) GetMutex
Какой метод ставит вызов указанной процедуры в очередь для обработки:
(1) ThreadPool.QueueUser
(2) ThreadPool.QueueUserWorkItem
(3) RegisterWaitForSingleObject
(4) System.Threading.WaitHandle
(5) AsyncState
Тип F представляет собой:
(1) 8-байтовое целое со знаком
(2) 4-байтовое целое со знаком
(3) управляемый указатель
(4) объектная ссылка
(5) число с плавающей точкой
В дополнительном заголовке PE-файла поле longCodeSize; - это:
(1) cуммарный размер всех кодовых секций
(2) старшее число версии компоновщика
(3) младшее число версии компоновщика
(4) RVA точки входа в программу
Взаимодействие компонентов, написанных на разных языках:
(1) требует от разработчика дополнительных усилий
(2) может существенно снизить эффективность получаемого кода
(3) требует от разработчика создания различных интерпретаторов
(4) не может снизить эффективность получаемого кода
Какие инструкции выполняют унарные арифмитические операции:
(1) neg
(2) clt
(3) ceq
(4) shr
(5) add.ovf
(6) not
Какая инструкция загружает на стек размер значения указанного типа:
(1) ldobj
(2) box
(3) unbox
(4) ldtoken
(5) sizeof
(6) cpobj
IL-формат - это формат файлов, поддерживаемый:
(1) ассемблером ILASM
(2) ассемблером NASM
(3) ассемблером MASM
(4) ассемблером ASM
Какой блок имеет более сложную структуру, чем другие блоки обработки исключений:
(1) блок обработки исключений с фильтрацией по типу
(2) блок обработки исключений finally/fault-блок
(3) блок обработки исключений с пользовательской фильтрацией
В составе .NET Framework SDK поставляются следующие библиотеки:
(1) Metadata Unmanaged API
(2) Reflection API
(3) AbsIL SDK
(4) Reflection Extension API
Какие пути существуют для диагностики запрещенных ошибок:
(1) статическая проверка программы до ее выполнения
(2) динамическая проверка во время выполнения
(3) фактическая проверка во время выполнения
(4) теоретическая проверка программы до ее выполнения
Определим набор функций, отображающих различные деревья абстрактного синтаксиса в соответствующие им последовательности инструкций CIL, можно считать, что каждая функция принимает в качестве параметра:
(1) дерево абстрактного синтаксиса
(2) абстрактный синтаксис
(3) дерево реального синтаксиса
(4) реальный синтаксис
При выборе потока для выполнения учитываются приоритеты потоков (абсолютные приоритеты) - система начинает выполнять:
(1) код потока с наибольшим приоритетом из числа готовых к исполнению
(2) код потока с наименьшим приоритетом из числа готовых к исполнению
(3) код потока с наибольшим приоритетом из числа готовящихся к исполнению
(4) код потока с наименьшим приоритетом из числа готовящихся к исполнению
С помощью какой функции можно ставить в APC очередь запросы для вызова собственных функций:
(1) QueueUserAPC
(2) CloseHandle
(3) CreateFile
(4) OpenEvent
(5) DuplicateHandle
(6) WaitForSingleObjectEx
Очень часто для изоляции данных достаточно их размещать:
(1) в стеке
(2) в потоке
(3) в процедуре
(4) в памяти
При необходимости точно планировать время выполнения надо использовать следующие функции:
(1) timeGetSystemTime
(2) timeBeginPeriod
(3) CreateMutex
(4) EnterCriticalSection
Какой метод содержит все выходные параметры:
(1) EndInvoke
(2) IAsyncResult
(3) BeginInvoke
(4) AsyncWaitHandle
(5) WaitHandle
Память из области локальных данных может быть явно выделена с помощью инструкции:
(1) localoc
(2) localloc
(3) local
(4) loc
Внесение исправления в 32-разрядное значение, которое находится по адресу FixupAddress, выполняется так:
(1) *FixupAddress = ActualAddress + ImageBase;
(2) *FixupAddress += ActualAddress + ImageBase;
(3) *FixupAddress += ActualAddress - ImageBase;
(4) *FixupAddress = ActualAddress - ImageBase;
(5) *FixupAddress += ActualAddress | ImageBase;
Организация компонентного программирования на базе библиотек подпрограмм обладает следующими недостатками:
(1) двоичный код библиотеки жестко привязан к аппаратной платформе
(2) библиотека рассчитана на использование конкретного компоновщика
(3) библиотеки подпрограмм плохо подходят для объектно-ориентированных языков
Инструкция conv.ovf.u8.un имеет следующий код:
(1) 0x8B
(2) 0x83
(3) 0x87
(4) 0x82
(5) 0x8A
(6) 0x89
Какая инструкция имеет следующую диаграмму стека: ..., obj ->..., ptr?
(1) ldtoken
(2) unbox
(3) box
(4) stobj
В каком случае в идентификаторы будут включены символы Unicode:
(1) Label_1 $Name Идентификатор
(2) Label_1 $Name 'Идентификатор'
(3) Label_1 $Name
(4) Label_1 $Name 'Идентификатор
К чему сводится операция поиска блока, в который входит инструкция, на графе, включающем дерево блоков:
(1) к переходу по одной дуге от блока к инструкции
(2) к переходу по одной дуге к другой
(3) к переходу по одной дуге от инструкции к блоку
(4) к переходу по одной дуге от блока к блоку
Взаимодействие с Metadata Unmanaged API осуществляется через набор:
(1) API-интерфейсов
(2) .NET-интерфейсов
(3) COM-интерфейсов
(4) стандартных интерфейсов
Классы могут содержать следующие элементы:
(1) events
(2) fields
(3) properties
(4) methods
(5) objects
Для peephole-оптимизации CIL-кода вместо:stloc(starg) x ldloc(Ldarg) хможно использовать:
(1) ldloc(ldarg) x dup
(2) pop
(3) dup stloc(starg) x
(4) pop pop
(5) idc.i4.0 stloc(starg) x
Диспетчер памяти Windows при выделении памяти для запускаемого процесса старается учитывать доступность памяти для назначенного процессора в случае:
(1) SMP системы
(2) MPP системы
(3) NUMA системы
Для того, чтобы процесс или поток мог ссылаться на объекты ядра, созданные другим процессом или потоком предусмотрены следующие механизмы:
(1) объекты могут быть унаследованы дочерним процессом при его создании
(2) объект может иметь собственное уникальное имя
(3) процесс-владелец объекта может передать его описатель любому другому процессу
Сколько функций предоставляет ОС Windows необходимых для работы с локальной для потока памятью:
(1) 0
(2) 1
(3) 2
(4) 3
(5) 4
(6) 5
Надстройка, использующая проецирование для реальной передачи данных - это:
(1) Pipes
(2) RPC
(3) COM
(4) Sockets
Метод EndInvoke служит для ожидания:
(1) завершения обработки синхронной процедуры
(2) начала обработки асинхронной процедуры
(3) завершения обработки асинхронной процедуры
(4) начала обработки синхронной процедуры
Работает на основе построения графа достижимости объектов:
(1) сборщик мусора с поколениями
(2) управляемая куча
(3) механизм автоматического управления памятью
(4) группа объектов
Описывает свойства сборки следующее поле заголовока CLI:
(1) long Flags;
(2) long CodeManagerTable[2];
(3) struct { long RVA, Size; } VTableFixups;
(4) long Cb;
В терминах CORBA информационная магистраль называется:
(1) ORB
(2) BRO
(3) ROB
(4) OBR
(5) BOR
Безусловными инструкциями являются:
(1) br.s
(2) brfalse.s
(3) brtrue
(4) ble
(5) bgt.un.s
(6) br.
Инструкция ldtoken имеет код:
(1) 0x8C
(2) 0x79
(3) 0xD0
(4) 0x71
(5) 0x70
(6) 0x15
Комментарии в IL-программах записываются так:
(1) "//"...
(2) "/*"..."*/"
(3) "/"..."/"
(4) "/-""-/"
(5) "#"...
(6) "/&"..."&/"
В процессе преобразования линейной последовательности инструкций в граф потока управления, на первом этапе, для каждой инструкции, входящей в массив P размера N:
(1) создается соответствующий ей блок
(2) создается соответствующий ей узел блока
(3) создается соответствующий ей узел графа
(4) создается соответствующий ей граф
Генерация метаданных осуществляется через методы интерфейса IMetadataEmit, которые можно условно разделить на следующие группы:
(1) методы DefineXXX
(2) методы SetXXX
(3) методы EnumXXX
(4) методы FindXXX
(5) методы GetXXX
Для объектных ссылок и значений типов-значений вводятся следующие отношения:
(1) идентичности
(2) допустимости
(3) равенства
(4) совместимости
Функции какого набора отображают деревья абстрактного синтаксиса, соответствующие логическим выражениям, в CIL:
(1) GenLogExpr
(2) LogExpr
(3) GenLog
(4) GenLogExprTree
Администратор системы может в некоторой степени изменить поведение системы при:
(1) назначении длительности квантов
(2) назначении приоритетов потоков
(3) изменении единого дерева кода
Какая функция превращает псевдоописатель процесса в настоящий описатель, действующий только в текущем процессе:
(1) HANDLE hrealThread; DuplicateHandle( GetCurrentProcess(), GetCurrentProcess(), GetCurrentProcess(), &hrealThread, DUPLICATE_SAME_ACCESS, FALSE, 0 );
(2) HANDLE hrealThread; DuplicateHandle( OpenProcess, GetCurrentProcess(), OpenProcess, &hrealThread, DUPLICATE_SAME_ACCESS, FALSE, 0 );
(3) HANDLE hrealThread; DuplicateHandle( OpenThread, GetCurrentProcess(), OpenThread, &hrealThread, DUPLICATE_SAME_ACCESS, FALSE, 0 );
(4) HANDLE hrealThread; DuplicateHandle( GetPriorityClass, GetCurrentProcess(), SetPriorityClass, &hrealThread, DUPLICATE_SAME_ACCESS, FALSE, 0 );
Какая функция изменяет значение в соответствующей ячейке:
(1) TlsSetValue
(2) TlsGetValue
(3) DWORD TlsAlloc(void)
Для проецирования файла или его части в память предназначены функции:
(1) MapViewOfFile
(2) MapViewOfFileEx
(3) UnmapViewOfFile
(4) CreateFileMapping
(5) OpenFileMapping
(6) LoadLibraryEx
Самое начало процедуры потока, там, где определяется номер полосы:public static void ThreadProc() { int i,j,k, from, to; from = ( m_stripused++ ) * m_stripsize; to = from + m_stripsize; ...с помощью атомарных операций можно переписать так:
(1) public static void ThreadProc() { int i,j,k, from, to; from = (Interlocked.Increment(ref m_stripused) - 1 ) * m_stripsize; ...
(2) public static void ThreadProc() { int i,j,k, from, to; from = (Interlocked.Increment(ref m_stripused) - 1 ) * m_stripsize; to = from + m_stripsize; ...
(3) public static ThreadProc() { int i,j,k; from = (Interlocked.Increment(ref m_stripused) - 1 ) * m_stripsize; to = from + m_stripsize; ...
(4) public static void ThreadProc() { int i,j,k, from, to; from = (Interlocked.Increment(ref m_stripused) m_stripsize; to = from + m_stripsize; ...
(5) public ThreadProc() { int i,j,k, from, to; from = (Interlocked.Increment() - 1 ) * m_stripsize; to = from; ...
Функция malloc выполняет следующие действия:
(1) поиск свободного блока нужного размера
(2) разбивку блока
(3) внесение необходимых изменений в список блоков
(4) форматирование блоков
Какое поле заголовка 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;
Компоненты на платформе .NET представляют собой:
(1) объекты .NET
(2) классы .NET
(3) сборки .NET
(4) секции .NET
Инструкция beq имеет следующий код:
(1) 0x3C
(2) 0x3D
(3) 0x3E
(4) 0x3B
(5) 0x3F
(6) 0x42
Инструкция mkrefany предназначена для:
(1) создания типизированных ссылок
(2) сохранения типизированных ссылок
(3) удаления типизированных ссылок
(4) использования типизированных ссылок
В каком примере происходит объявление неэкспортируемого интерфейса:
(1) .class private interface MyInterface { }
(2) .class public sealed MyValueType
(3) .class public abstract MyAbstractClass
Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На входе этапа создания дерева блоков мы имеем:
(1) специальный массив T
(2) вспомогательный массив T
(3) массив OP
Класс Module, позволяет получить набор экземпляров класса:
(1) Type
(2) FieldInfo
(3) Assembly
(4) ConstructorInfo
(5) MethodInfo
(6) Module
Все структуры неявно наследуют от библиотечного класса:
(1) System.ValueType
(2) System.Enum
(3) System.Library
(4) System.Value
Функций какого набора транслируют деревья абстрактного синтаксиса в последовательности инструкций:
(1) GenStatementTree
(2) GenStatement
(3) StatementAbs
(4) AbsStatementTree
Фиксированная длительность короткого кванта со значением 1 равна:
(1) 6
(2) 12
(3) 18
(4) 36
Windows предоставляет следующие способы измерения интервалов:
(1) таймер низкого разрешения
(2) "мультимедийный" таймер
(3) высокоточный таймер
(4) таймер высокого разрешения
Следует внимательно следить за выделением и освобождением данных, указатели на которые:
(1) сохраняются в потоках
(2) сохраняются в TLS памяти
(3) сохраняются в процедурах
(4) сохраняются в процессах
Механизм проецирования файлов является базовым средством для передачи данных:
(1) между адресными пространствами потоков
(2) между адресными пространствами процедур
(3) между адресными пространствами процессов
(4) между адресными пространствами секций
Какой базовый класс предоставляет .NET, служащий для описания объекта, который находится в одном из двух состояний: занятом или свободном:
(1) WaitHandle
(2) SystemHandle
(3) SystemWait
(4) Monitor
Дефрагментация заключается в сдвиге достижимых объектов:
(1) к концу кучи на место удаляемых недостижимых объектов
(2) к середине кучи на место удаляемых недостижимых объектов
(3) к метке кучи на место удаляемых недостижимых объектов
(4) к началу кучи на место удаляемых недостижимых объектов
Блок входных параметров описывается структурой:
(1) INPUT_PARAMETERS
(2) IMAGE_SUBSYSTEM_WINDOWS_GUI
(3) IMAGE_SUBSYSTEM_WINDOWS_CUI
(4) DLL_TYPE
Флаг доступа для членов типа Public имеет следующее значение:
(1) 0x00000001
(2) 0x00000002
(3) 0x00000003
(4) 0x00000004
(5) 0x00000005
(6) 0x00000006
Какая инструкция имеет код 0x42?
(1) call
(2) ret
(3) ble.un
(4) switch
(5) bge.s
(6) bge.un.s
Загружает токен, хранящийся в типизированной ссылке следующая инструкция:
(1) refanytype
(2) sizeof
(3) refanyval
(4) mkrefany
(5) ldtoken
Объявление конструктора с двумя параметрами происходит в следующем случае:
(1) .method public void .ctor (int32 x, class [mscorlib]System.String s)
(2) .method private virtual int32 myMethod(int32& pX)
(3) .method public static int32[] MyStaticMethod()
Дан массив инструкций B размера G и массив предложений обработки исключений OP размера Z. На выходе этапа создания дерева блоков их минимальное количество в массиве T равно:
(1) Z+2
(2) B+2
(3) T+2
(4) G+2
Если нас интересует текущая работающая сборка, то экземпляр класса Assembly можно получить так:
(1) Assembly assembly = Assembly.GetAssembly(typeof(int))
(2) Assembly assembly = Assembly.GetExecutingAssembly()
(3) Assembly assembly = Assembly.LoadFrom("test.exe")
Выберите верные утверждения для упакованных типов-значений:
(1) не могут быть объявлены программистом
(2) эти типы являются ссылочными и самоописывающими
(3) с помощью упаковки мы можем превратить значение любого типа-значения в объект
(4) система автоматически определяет тип для типа-значения
(5) получение объекта упакованного типа-значения осуществляется путем упаковки
При воспроизведении константы C, являющейся значением переменной Y осуществляются следующие действия:
(1) инструкция инициализации переменной Y заменяется инструкцией pop
(2) инструкции ldloc(ldarg) Y заменяются инструкциями ldc C
(3) инструкции ldloc(ldarg) Y заменяются инструкциями ldr C
(4) инструкция инициализации переменной Y заменяется инструкцией dup
Планировщик операционной системы может корректировать уровень приоритета в случае пробуждении GUI потоков:
(1) на 1 уровень
(2) на 1 - 8 уровней
(3) на 5 уровней
(4) на 2 уровня
Целевая функция FiberProc эпизодически вызывает следующую функцию для переключения выполняемого волокна:
(1) SwitchToFiber
(2) CreateFiber
(3) ConvertThreadToFiber
(4) ResumeThread
(5) WaitForSingleObject
(6) ThreadProc
Маска, назначаемая потоку, должна быть:
(1) элементом подмножеством маски процесса
(2) элементов множества маски процесса
(3) подмножеством маски процесса
(4) множеством маски процесса
Какие директивы для объявления разделяемого сегмента и помещаемых в него данных можно использовать в Microsoft Visual C++:
(1) #pragma
(2) #close
(3) #open
(4) _ _special
(5) _ _declspec
Таймеры в .NET могут быть описаны в следующих пространствах имен:
(1) System.Timer
(2) Timer.Class
(3) System.Timers
(4) System.Threading
Большими считаются объекты, размер которых превышает:
(1) 85 000 байт
(2) 100 000 байт
(3) 80 000 байт
(4) 75 000 байт
Сообщением об успешной генерации сборки 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
Основными правилами Common Language Specification являются:
(1) спецификация распространяется только на доступные извне части экспортируемых из библиотеки типов
(2) методы не должны иметь переменного количества параметров
(3) глобальные поля и методы не поддерживаются спецификацией
(4) регистр букв в идентификаторах не имеет значения
(5) упакованные типы-значения, неуправляемые указатели и типизированные ссылки не должны использоваться
(6) объекты исключений должны наследовать от System.Exception
Осуществляет возврат из метода следующая инструкция:
(1) ret
(2) call
(3) 0x42
(4) switch
(5) 0x28
(6) 0x2A
Диаграмма стека для инструкций refanyval:
(1) typedRef -> ... , ptr
(2) ... , typedRef -> ...
(3) ... , typedRef -> ... , obj
(4) ... , typedRef -> ... , ptr
(5) ... , typedRef -> obj
Сборка успешно прошла верификацию в следующем случае:
(1) All Classes in sample1.exe Verified
(2) All Methods in sample1.exe Verified
(3) All Classes and Methods in sample1.exe
(4) All Classes and Methods in sample1.exe Verified
На четвертом этапе процесса преобразования линейной последовательности инструкций в граф потока управления в последний добавляются:
(1) дуги
(2) вершины
(3) циклы
(4) ветвления
Библиотеки Reflection API и Metadata Unmanaged API не имеет следующих возможностей:
(1) чтение метаданных
(2) генерация метаданных
(3) чтение CIL-кода
(4) генерация CIL-кода