

Для чего нужна динамическая локальная память потока (thread local storage, TLS)?
Для оптимизации хранения данных в многопоточной среде
Для решения задач синхронизации
Для хранения контекста потока.
Для хранения глобальных переменных
Для хранения потокозависимых данных
Какой функции для работы с виртуальной памятью не существует в Win32 API?
AllocMemory
FillMemory
MoveMemory
ZeroMemory
CopyMemory
Что выведет в консоль следующий код, если известно, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок и его размер равен ровно 4Кб?
4096
Код не будет скомпилирован
Ничего
2048
Что будет нарисовано в клиентской области окна, фрагмент кода оконной процедуры которого следующий:
Желтый квадрат
Красный квадрат
Черный квадрат
Синий квадрат
Ничего
Cледующий код демострирует синхронизацию с помощью критической секции.
Что будет выведено на экран в результате выполнения программы?
Возникнет ошибка компиляции
Возникнет ошибка времени выполнения
5678901234
Порядок вывода цифр не определен
0123456789
При его выполнении в консоль вывелось:
Что нужно сделать, чтобы исправить досадную ошибку?
В строке 7 заменить флаги GENERIC_EXECUTE|GENERIC_READ на GENERIC_ALL
В строке 22 заменить NULL адресом корректно проинициализированной структуры OVERLAPPED
В строке 17 заменить WriteFile на WriteFileEx
В строке 8 заменить флаг OPEN_EXISTING на CREATE_ALWAYS
В строке 17 заменить !WriteFile на WriteFile
Укажите два ложных утверждения о GDI.
GDI унифицированно работает с различными устройствами
GDI отвечает за отрисовку окон, меню и других элементов Windows
В GDI есть средства для отрисовки 3D-графики
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры
GDI является составной частью пользовательского интерфейса Microsoft Windows
Класс окна описывается структурой WNDCLASSEX и содержит следующую информацию об окне: (укажите ложное утверждение)
Адрес точки входа в приложение, в котором находится оконная процедура для этого класса
Дескриптор курсора, дескриптор пиктограммы и дескриптор кисти для фона окна
Дескриптор экземпляра приложения, в котором находится оконная процедура для этого класса
Указатель на оконную процедуру
Имя меню, применяемого по умолчанию для этого класса
Что из системных ресурсов не принадлежит потоку?
Код исполняемой функции
Рабочее множество страниц реальной памяти
Стек для работы ОС
Стек для работы приложения
Набор регистров процессора
Какое из следующих утверждений относительно функции DllMain не верно?
В DLL обязательно должна присутствовать функция DllMain.
DllMain вызывается при загрузке DLL в адресное пространство процесса и при выгрузке из него.
DllMain вызывается при создании процессом нового потока и при завершении этого потока.
Последний параметр DllMain содержит способ загрузки DLL.
Все утверждения верны.
Какая функция Win32API служит для создания каталогов?
CreateFolder
СreateDir
CreateCatalog
CreateDirectory
CreateFile
Каким будет результат работы программы? (предполагается, что потоки создаются успешно
в консоль будет выведено: 210
результат не определен
в консоль будет выведено: 012
в консоль будет выведено: 120
в консоль будет выведено: 201
Дан код, который пишет цифры от 0 до 9 в файл.
Следующий код считывает из файла и выводит в консоль одну цифру:
Какая цифра будет выведена?
7
Результат не определен
6
3
2
Функция Win32 API GetFileSize, возвращающая размер указанного файла и имеющая прототип
работает следующим образом: (выберите правильный вариант)
В случае успеха возвращает старшее слово размера файла, при этом во втором параметре возвращается младшее слово размера файла.
В случае успеха возвращает 0, при этом во втором параметре возвращается размер файла в байтах.
В случае успеха возвращает младшее слово размера файла, при этом во втором параметре возвращается старшее слово размера файла.
В случае успеха возвращает 0, при этом во втором параметре возвращается структура LARGE_INTEGER
В случае успеха возвращает не 0, при этом во втором параметре возвращается размер файла в байтах.
WS_THICKFRAME
WS_POPUP
WS_SYSMENU
WS_VSCROLL
Какие функции Win32 API используются для посылки асинхронных сообщений?
PostMessage
SendMessage
PostThreadMessage
PostQuitMessage
SendNotifyMessage
Программист написал небольшую DLL, которая экспортирует две переменные целого типа. Вот ее код:
Также программист написал программу(EXE), использующую эту DLL. Код программы такой:
Затем программист последовательно, не закрывая предыдущих, запустил 3 экземпляра программы Client.exe. Что выведет в консоль экземпляр программы Client.exe, запущенный последним(3-им)?
42
33
44
24
22
Нижеследующий код работает со стандартной кучей процесса. Определите, вызов какой функции Win32 API должен размещаться на месте прочерка в строке 12.
HeapOpen()
GetDefaultHeap()
GetProcessHeap()
GetHeap()
HeapCreate()
В предопределенные классы окон Windows не входит:
SCROLLBAR
STATIC
TREEVIEW
COMBOBOX
LISTBOX
Программист написал код асинхронной записи в файл.
Название какой функции Win32 API нужно подставить вместо ___1___, чтобы код корректно выполнился? (Считаем, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок)
WaitForSingleObject
SleepEx
SuspendThread
Sleep
SignalObjectAndWait
Среди перечисленных режимов доступа к файлу укажите так называемые родовые режимы доступа.
FILE_SHARE_READ
GENERIC_READ
FILE_SHARE_DELETE
GENERIC_WRITE
GENERIC_EXECUTE
Функция GetCurrentThread() возвращает:
дескриптор текущего потока
другое
контекст текущего потока
идентификатор текущего потока
псевдодескриптор текущего потока
Какую библиотечную функцию рекомендуется использовать для создания потока вместо CreateThread при программировании на C++?
_beginthread
_beginthreadex
BeginThread
beginthread
beginthreadex
Пользователь посылает окну с дескриптором hWnd сообщение с помощью функции SendMessage() из того же потока. Каков будет упрощенный маршрут сообщения?
-> Оконная процедура с дескриптором окна hWnd.
-> Системная очередь сообщений -> Оконная процедура hWnd.
-> Системная очередь сообщений -> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd.
-> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd
-> Очередь сообщений потока, создавшего окно hWnd -> Оконная процедура hWnd.
Что выведет на экран нижеследующий код? (предполагается, что потоки создаются успешно)
33
00
13
Результат не определен
31
Что называют "Dll hell" в ОС Windows? (укажите наиболее точное определение)
Это понятие относится к использованию DLL в другой ОС (не семейства ОС Windows)
Пример плохой концепции программирования с использованием DLL
Тупиковую ситуацию, связанную с управлением библиотеками DLL
Такого понятия не существует
Несовместимость и невзаимозаменяемость различных версий DLL
Что нужно сделать, чтобы следующий код гарантированно завершил свое выполнение
Добавить квалификатор volatile перед объявлениями переменных flag и flagThread
В строке 5 добавить перед объявлением переменной flagThread квалификатор volatile
Заменить в строке 24 константу INFINITE на 1000
В строке 9 изменить while(!flagThread) на while(flagThread)
В строке 14 добавить перед объявлением переменной flag квалификатор volatile
_________ - это процесс, который загружается при загрузке ОС Windows или в процессе ее работы по специальной команде и заканчивает свою работу по завершении работы ОС или по специальной команде.
резидентная программа
сервис
фоновый процесс
задача
драйвер
Каков будет вывод в консоль в результате выполнения следующей программы?
120
110
111
121
160
Ниже представлен код, который тестирует механизм отображения файлов в память.
Замените метки __1__, __2__ и __3__ на соответствующие параметрам и контексту функции.
CreateFile, CreateFileMapping, CreateViewOfFile
CreateFileEx, CreateViewOfFile, CreateFileMapping
CreateFile, CreateFileMapping, MapViewOfFile
CreateFile, CreateViewOfFile, MapViewOfFile
CreateFileEx, CreateFileMapping, CreateViewOfFile
Программист написал программу для работы с виртуальной памятью, но в код вкралась ошибка, приводящая к access violation при обращении к указателю ‘a’ в строке 19.
Как исправить ошибку?
В строке 10 заменить NULL на корректный указатель
В строке 12 заменить MEM_RESERVE на MEM_RESET
В строке 13 заменить PAGE_ READWRITE на PAGE_EXECUTE_READWRITE
В строке 12 заменить MEM_RESERVE на MEM_COMMIT
В строку 18 вставить вызов VirtualLock(a, size * sizeof(int));
Какой фрагмент кода не вызовет глобальную раскрутку стека?
Перекрывающимся (overlapped) вводом-выводом данных в ОС Windows называется …
пакетированный ввод-вывод
файловый ввод-вывод
потоковый ввод-вывод
асинхронный ввод-вывод
синхронный ввод-вывод
Программист написал, скомпилировал и запустил код:
Результат его выполнения такой:
Определите, какой прототип из предложенных имеет функция GetFileTime, если файл demo_file.dat имеет следующие свойства:
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime, LPFILETIME lpLastAccessTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime);
Какие стили из перечисленных имеет окно на рисунке?
WS_MAXIMIZEBOX
WS_POPUP
WS_OVERLAPPEDWINDOW
WS_MINIMIZEBOX
WS_SYSMENU
Укажите ложное утверждение относительно следующего кода.
Указатель pa содержит адрес в куче
Код не предназначен для работы в многопоточной среде т.к куча несериализуемая
Утечек памяти не возникнет
Код скомпилируется и выполнится без ошибок
Все перечисленные утверждения верны
Выберите правильный прототип для пользовательской асинхронной процедуры (указатель на которую передается в функцию QueueUserAPC).
HANDLE CALLBACK APCProc(DWORD);
VOID CALLBACK APCProc(HANDLE, ULONG_PTR);
DWORD CALLBACK APCProc(DWORD, HANDLE);
VOID CALLBACK APCProc(ULONG_PTR);
VOID LRESULT APCProc(ULONG_PTR);
Представленный код должен открывать почтового клиента и создавать в нем новое сообщение с заполненным полем "Кому". В коде вызывается функция ShellExecute из Shell32.dll, которая поддерживается начиная с WindowsXP / Windows 2000 Server.
Проверка показала, что он не компилируется:
Что из перечисленного исправит это? (код компилируется без поддержки Unicode)
Заменить строку 1 на #define _WIN32_WINNT 0x0300
Заменить строку 1 на #define _WIN32_WINNT 0x0200
Нужно убрать строку 1
Заменить строку 1 на #define _WIN32_WINNT 0x0501
Заменить строку 1 на #define _WIN32_WINNT 0x0600
Какой точке входа в приложение Win32 соответствуют следующий набор параметров:(компилятор Microsoft Visual С++)
DllMain
main
WinMain
wWinMain
wmain
Совокупность правил контроля доступа субъектов к объектам в системе информационной безопасности называется …
состоянием системы безопасности
правами и привилегиями
моделью безопасности
монитором безопасности
политикой безопасности
Представлен код:
Данный код определяет, есть ли диск в CD-ROMе или дискета в дисководе. Но строка 30 не компилируется. Что нужно сделать, чтобы исправить этот баг? (код компилируется без поддержки Юникода)
В строке 5 заменить LPTSTR на LPСSTR
В строке 30 убрать скобки вокруг выражения IsDiskInDrive("E:\") ? "full" : "empty"
Для корректной работы IsDiskInDrive должна возвращать bool, а не BOOL
Заменить в строке 30 "E:\" на "E:\"
Заменить в строке 30 "E:\" на L"E:\"
Выделенный блок программного кода, в котором может произойти исключение, называется:
охраняемым блоком
фреймом
охраняемым кодом
блоком-фильтром
небезопасным кодом
Есть два потока. thread1() и thread2() – соответственно функции этих потоков. a и b – глобальные переменные целого типа, cs1 и cs2 – критические секции.
Укажите места в коде, прерывание выполнения потока в которых приведет к возникновению взаимной блокировки(deadlock).
//2
//3
//1
//5
//4
Какого состояния потока не существует в модели потоков Windows?
Подвешен/приостановлен (suspended state)
Состояние готовности (ready state)
Состояние ожидания (wait state)
Состояние завершения (terminated state)
Сигнальное состояние (signal state)
Распределенная процессом область виртуальной памяти, используемая им для захвата и освобождения блоков памяти, размер которых меньше размера виртуальной страницы, называется …
хранилищем памяти
стеком
статической памятью
кучей
свободной памятью
Где функция LoadLibrary ищет нужную библиотеку в последнюю очередь?
В каталогах , которые указаны в переменной окружения PATH
В каталоге Windows
В системном каталоге Windows
В текущем каталоге процесса
В каталоге, из которого запущено приложение
Следующий код демонстрирует известный прием, позволяющий получить хэндл консольного окна.
Однако код не компилируется. Определите, в какой строке ошибка (поддержка Юникода отключена).
В строке с меткой //3
В строке с меткой //4
В строке с меткой //2
В строке с меткой //5
В строке с меткой //1
Программист написал код создания объекта сервиса (будем считать, что сервис уже собран, называется DemoService и располагается в корневом каталоге диска С).
Какая ошибка содержится в этом коде?
Функции CloseServiceHandle не существует. Следует использовать CloseHandle
Внешнее и внутреннее имя сервиса не совпадают
Путь к сервису указан неверно
Не открыт менеджер сервисов
Константы SERVICE_ALL_ACCESS не существует
Какого состояния не существует в модели пяти состояний процесса в Windows?
Подвешен (Suspended)
Завершен (Exit)
Блокирован (Blocked)
Выполняется (Running)
Готов (Ready)
При работе с консольными приложениями (в том числе и посредством Win32 API) нередко приходится устанавливать кодировку. В каких из представленных популярных кодировок используется кириллица?
CP437
CP866
ANSI-1252
CP1251
Windows-1250
Программист написал функцию удаления каталога и всех его подкаталогов:
Что нужно подставить вместо ___1___, чтобы она корректно работала? (будем считать, что CString – просто класс для работы со строками, удобная оболочка над строкой в стиле С):
RemoveDirectory
MoveFileEx
RemoveDirectoryEx
RemoveDir
DeleteFile
Какой функции из перечисленных не существует в Win32 API?
UnloadLibrary
VirtualFree
MapViewOfFile
TranslateMessage
WaitForMultipleObjects
Это сообщение посылается когда пользователь выбирает команду меню или посылает команду из элемента управления.
WM_ACTIVATE
WM_NOTIFY
WM_COMMAND
WM_CHOOSE
WM_SELECT
Какой базовый стиль окна не входит в комбинированный стиль WS_OVERLAPPEDWINDOW?
WS_MAXIMIZEBOX
WS_MINIMIZEBOX
WS_CAPTION
WS_SYSMENU
WS_CHILD
Если выполнить вызов Sleep(0), то …
поток приостановится на 1 миллисекунду
поток приостановится на неопределенное время
поток приостановится и сразу встанет в очередь на выполнение
поток не приостановится и не передаст управление другому потоку
Вызов Sleep() просто проигнорируется
На рисунке представлен пример матрицы управления доступами.
Строки соответствуют субъектам, столбцы – объектам. В клетках прописаны соответствующие права. Определите, какое утверждение ложно.
Борис имеет право удалить файл Василия и свой файл, но не имеет прав чтения на Объект 1
Исполнять Объект 2 могут только Александр, Никита и Менеджер
Михаил и Никита обладают одинаковыми правами только на файл Бориса и на Объект 1.
Александр имеет право на чтение файла Василия, Василий имеет право на запись файла
Никиты, а Никита имеет право на чтение файлов Бориса и Василия
Менеджер имеет право устанавливать режимы доступа для всех перечисленных в таблице
объектов, но передавать права управления объектами другим субъектам - только для
файлов Бориса и Василия
Следующий код использует Native API для перевода ПК в режим гибернации (работает для WinXP / Win 7):
Какой вариант из представленных нужно вставить в строку 8, чтобы код успешно скомпилировался и выполнился? (код компилируется с поддержкой Unicode)
NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetDllProcAddress("NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = GetProcAddress("NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = GetDllProcAddress("NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetProcAddress(Dll, "NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = GetProcAddress(Dll, "NtInitiatePowerAction");
Есть работоспособный фрагмент кода рисования в клиентской области окна:
Какое число будет нарисовано в клиентской области окна в результате его выполнения?
*Цифры изображаются в стиле начертания индекса на почтовых конвертах
11
17
38
88
30
Чтобы удалить учетную запись пользователя, нужно вызвать функцию NetUserDel как например в этом коде:
Какие могут быть причины неудачного выполнения функции NetUserDel в данном коде, если известно, что код выполняется на локальном компьютере?
Не указан пароль пользователя
Код запущен не под администратором
Учетная запись пользователя заблокирована
Указано неправильное имя компьютера
Указано несуществующее имя пользователя
Чего нельзя сделать с помощью функции SetWindowLong?
Ассоциировать с окном пользовательские данные
Поменять иконку, ассоциированную с окном
Поменять курсор для окна
Поменять стиль окна
Поменять адрес оконной процедуры окна
Семейство Interlocked-функций используется для синхронизации параллельных потоков,если синхронизировать нужно несложные действия над общими переменными и применение мьютексов или критических секций накладно.
В следующей программе один поток производит символические продукты, а другой поток - их потребляет, осуществляя при этом вывод на экран общее количество потребляемых продуктов:
По идее на экран должна выводиться возрастающая последовательность чисел, а на деле выводится последовательность из нулей. Из предложенных вариантов выберите правильный способ для устранения ошибки.
Синхронизировать потоки с помощью мьютекса или критической секции
Заменить строку 18 на InterlockedExchange(&goods, n);
В строке 18 заменить InterlockedExchange на InterlockedExchangeAdd
Убрать строку 17
Заменить строку 9 на InterlockedIncrement(n);
Какая модель безопасности реализована в Windows?
дискреционная
мандатная
строгая
либеральная
ролевая
Что означает префикс «sz» в венгерской нотации?
число, задающее размер
короткое целое число
структуру SIZE
size_t
строку, заканчивающуюся нулевым байтом
Подставьте вместо звездочек название функции Win32 API, которой соответствует сигнатура:
WaitForMultipleObjectsEx
WaitForMultipleObjects
WaitForSingleObjectEx
WaitForSingleObject
SignalObjectAndWait
Для каждого процесса, использующего конкретнуюю DLL, создается отдельная копия этой DLL
Точка входа в DLL обязательно должна иметь имя DllMain.
Исполняемый код DLL хранится в физической памяти в одном экземпляре.
Данные, содержащиеся в DLL, разделяются между всеми процессами, использующими эту DLL.
Механизм загрузки DLL не основан на отображении файлов в память (file-mapping).
Что выведет в консоль следующий код, если запустить его на выполнение?
10
2
Код будет заблокирован
1
Макрос AbnormalTermination имеет прототип
и возвращает ноль(FALSE) если блок __try завершился нормально. Что будет выведено на экран после выполнения следующего кода?
Ничего
Результат выполнения кода не определен (Undefined behaivior)
10
20
Чем именованные каналы отличаются от анонимных (неименованных) каналов?
возможностью синхронного обмена данных
ограничением на тип передаваемых данных
возможностью моделирования любой топологии связей
возможностью передачи данных потоком
возможностью двустороннего обмена данными
Какое сообщение Windows посылается оконной процедуре диалогового окна непосредственно перед тем как оно будет отображено на экране?
WM_RESIZEDIALOG
WM_CREATEDIALOG
WM_INITDIALOG
WM_MODALDIALOG
WM_SHOWDIALOG
Что делает следующий код?
Выводит в консоль заголовки всех окон второго уровня
Выводит в консоль заголовки всех окон верхнего уровня
Выводит в консоль заголовки всех дочерних окон первого окна вернего уровня
Выводит в консоль заголовки всех окон всех уровней
Выводит в консоль заголовки всех дочерних окон активного окна
Реализованная в Windows модель безопасности удовлетворяет уровню безопасности С-2, который определен министерством обороны США. Далее перечислены наиболее важные требования, которым должна удовлетворять система, поддерживающая безопасность на этом уровне. В одном из них умышленно допущена ошибка и соответственно Windows ему не удовлетворяет. Определите это ложное утверждение.
ОС должна защищать ресурсы от случайного повторного использования, например,
содержимое памяти завершившегося процесса должно быть недоступно другому процессу;
Администратор системы должен иметь средства для проведения аудита событий, связанных с безопасностью системы. Доступ к полученным при аудите данным должен иметь только авторизованный администратор системы;
Система должна защищать себя от постороннего вмешательства во время своей работы,
например, система должна защищать себя от модификации извне во время своей работы.
Владелец ресурса должен управлять доступом к ресурсу;
Каждый пользователь системы должен при входе в систему указывать свое имя и
пароль, но система может не иметь средств для отслеживания работы пользователя;
Программист создал приложение Win32 Application. Цикл обработки сообщений в функции WinMain имеет вид:
switch-обработчик сообщений в оконной процедуре имеет вид:
Что будет содержать сообщение c заголовком Result, если запустить эту программу, перевести фокус на появившееся окно, один раз нажать например клавишу «F», а затем закрыть окно?
dcu
du
Окно сообщения не будет отображено
duc
c
Есть следующая небольшая DLL:
Следующая программа использует эту библиотеку, используя статическую загрузку.
Проверка показала, что код не линкутся. Что нужно добавить вместо комментария, чтобы код собрался и выполнился?
Дан фрагмент кода:
Какие утверждения относительно этого кода верны?
Функция Foo вызывает функцию WndProc
После выполнения инструкции return 0; ( в точке //2) функция WndProc больше не будет вызвана
В точке //1 Bar будет указывать на WndProc
Прием, применяемый в этом коде, называется сабклассингом (sub-classing)
Прием, применяемый в этом коде, называется суперклассингом (super-classing)
Какой заголовочный файл нужно подключить, чтобы воспользоваться функцией _beginthreadex для создания потоков?
crt.h
windows.h
process.h
thread.h
WindowsNT.h
Какая функция Win32 API из представленных служит для перемещения (переименования) каталогов?
MoveFolder
RenameDirectory
MoveDirectory
MoveDir
MoveFile
Следующий код не компилируется:
Определите, в чем проблема, если известно, что ошибка компиляции происходит в строке 22 и что код собирается в Юникоде.
Нужно заменить функцию NetUserChangePassword на UserChangePassword
Нужно заменить функцию NetUserChangePassword на NetUserSetInfo
Нужно подключить заголовочный файл lm.h
Нужно подключить библиотеку netapi32.lib через настройки проекта
Достаточно заменить NET_API_STATUS на NET_STATUS или на LONG
Что выведет в консоль следующая программа?
3
Программа блокируется в функции WaitForSingleObject
4
Результат не определен
Базовый приоритет потока определяется как сумма приоритета процесса и уровня приоритета потока. В следующей таблице все возможные базовые приотеты потоков в Windows. По столбцам указаны приоритеты классов процессов, а по строкам — уровни приоритетов потоков.
Какой уровень приоритета потоков является наивысшим? (подставьте вместо знака вопроса)
Time critical
Critical
Supreme
Maximum
Real time
Что из перечисленного не является объектом ядра?
критическая секция (critical section)
мьютекс (mutex)
поток (thread)
процесс (process)
неименованный канал (anonymous pipe)
Следующий код, создающий ожидающий таймер и устанавливающий для него процедуру завершения ожидания, при выполнении ведет себя по-разному в различных компиляторах, что явно похоже на Undefined behavior.
Определите, какой способ из предложенных исправляет положение.
Нужно поменять тип qwTimeInterval на ULONGLONG, а также qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND
Нужно передать в CreateWaitableTimer первым параметром инициализированный указатель
5-ый параметр функции SetWaitableTimer нужно заменить на “” (пустую строку)
Нужно заменить qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND
Нужно заменить вызов SleepEx(INFINITE, TRUE) на вызов Sleep(1000)
Даны DLL и программа, её использующая.
При сборке кода возникают 3 ошибки линковки:
Определите, что из перечисленного необходимо сделать, чтобы код собрался и выполнился?
Подключить библиотеку импорта к use_dll.exe
В коде use_dll.exe добавить extern "C" к прототипу функции Min
В коде библиотеки dll.dll в строках 8 и 13 добавить extern "C" перед __declspec(dllexport)
В коде use_dll.exe добавить extern "C" к прототипу функции Abs
В коде use_dll.exe добавить extern "C" к прототипу функции Max
Укажите две функции, которые обязательно должны присутствовать в сервисе (службе) Windows?
обработчик управляющих команд ОС
функция регистрации / дерегистрации в системе
оконная процедура
точка входа
функция WinMain
Имеется следующий фрагмент кода открытия именованного канала:
Что означает точка в имени канала (первом параметре)?
локальную машину
объект канала будет храниться в специальном каталоге Windows
текущий каталог
объект канала будет храниться в виртуальной памяти
канал открывается, а не создается
Дан фрагмент работоспособного кода, отрезками рисующего в клиентской области окна геометрическую фигуру в виде буквы латинского или русского алфавита:
Какая буква будет нарисована на экране после выполнения кода?
Х
L
И
I
Г
Как средствами Windows API можно завершить GUI-приложение, оконная процедура единственного окна которого имеет вид:
Вызвать TerminateProcess() для процесса, в котором выполняется приложение
Отправить в очередь сообщений его окна сообщение WM_QUIT
Послать сообщение WM_DESTROY окну, принадлежащему приложению
Послать сообщение WM_CLOSE окну, принадлежащему приложению
Вызвать PostQuitMessage(0) в приложении
Следующий код производит синхронизацию потоков с помощью объекта ядра "событие".
Что будет выведено на экран в результате выполнения кода? (предполагается, что объекты событий и поток создаются успешно)
x01c2
порядок вывода не определен
0x1c2
произойдет взаимная блокировка
01xc2
Какого зарезервированного слова не существует в механизме SEH?
__leave
__except
__finaly
__try
Все перечисленные слова входят в SEH
Если поток ожидает событие, которое никогда не произойдет, то говорят, что поток …
навсегда приостановлен
«завис»
заблокирован
закольцован
находится в тупике
Какой текст выведет сообщение в результате выполнения следующего кода?
(будем считать, что код компилируется без поддержки Юникода и что вызовы VirtualProtect выполняются успешно).
Возникнет ошибка времени выполнения
707
700
777
Возникнет ошибка компиляции
Каких функций для работы с объектом синхронизации "семафор" из представленных не существует в Win32?
ReleaseSemaphore
OpenSemaphore
IncrementSemaphore
CloseSemaphore
CreateSemaphore
С помощью какой функции Win32 API можно выполнить удаление директории и всех её поддиректорий за один вызов?
SHFileOperation
DeleteFileEx
RemoveDirRecursive
RemoveDirectory
Такой функции не существует в Win32 API
Следующий код демонстрирует специфику работы инструкции __finally.
Какой будет вывод в консоль в результате выполнения программы?
21
14
4
20
13
Что будет нарисовано в клиентской области окна приложения, если код следующий?
Ничего
Круг внутри квадрата
Квадрат внутри круга
Квадрат
Круг
Следующий код служит для создания учетной записи пользователя на локальном компьютере.
Определите, в какой из предложенных строк есть ошибка? (программа компилируется с поддержкой Юникода)
23
10
14
21
22
Следующий код не компилируется. Какое из представленных решений не исправляет ошибку?
Заменить TCHAR на CHAR
Обернуть "Error" в макрос _TEXT()
Убрать директиву #define
Добавить символ L перед "Error"
Обернуть "Error" в макрос _T()
Какая функция Win32 используется для установки фильтр-процедур для контроля над некоторыми типами событий в системе?
SetWindowFilter
SetWindowsHookEx
SetFilterProcedure
SetFilterHook
SetWindowsHook
Следующий код работает с консолью – меняет её заголовок, а затем возвращает размеры консоли:
Код не компилируется. В каких строках из отмеченных есть ошибки? (код компилируется с поддержкой Юникода)
//5
//3
//1
//4
//2
Программист написал код, который создает дочерний процесс и через аргумент командной строки передает в дочерний процесс дескриптор своего потока. Код следующий:
Код, выполняющейся в дочернем процессе, таков: :
При запуске приложения выяснилось, что дочерний процесс запускается и корректно завершается, а основной процесс "зависает". Что нужно сделать, чтобы исправить ситуацию? (сделать так, чтобы основной процесс тоже корректно завершался)
В строке 28 кода основного процесса заменить FALSE на TRUE
Строку 9 кода дочернего процесса заменить на WaitForSingleObject(hThread, 1000);
Убрать строки 41 и 42 в коде основного процесса
Изменить строку 6 кода дочернего процесса на HANDLE hThread = (HANDLE)atoi(argv[0]);
Строку 14 кода основного процесса заменить на sa.bInheritHandle = FALSE;
На рисунке представлена общая схема канала передачи данных между процессами:
T1 и T2 – пользовательские процессы, выполняющиеся в контекстах разных процессов. Что на схеме обозначено буквой «M»?
Общая память
Сообщение WM_COPYDATA
Поток ядра ОС
Менеджер потоков ядра
Буфер
Какие клавиши относятся к так называемым клавишам-модификаторам?
Shift
Alt
Ctrl
Insert
Caps Lock
Что делает представленный код? (укажите все возможные варианты)
Выводит длину идентификатора безопасности
Проверяет достоверность идентификатора безопасности
Выводит значение относительного идентификатора SID
Инициализирует идентификатор безопасности (SID)
Связывает SID с учетной записью
Нужно получить размеры окна при обработке сообщения WM_SIZE в оконной процедуре. Как это сделать?
Cогласованность данных, хранящихся в файле, отображенном в память несколькими процессами, называется __________
симметрией данных
синхронизацией данных
когерентностью данных
корелляцией данных
разделяемостью данных
Достижение некоторого фиксированного соотношения (порядка) между сигналами, которыми обмениваются два процесса, называется …
параллелизмом процессов
сбалансированностью процессов
синхронизацией процессов
дивергенцией процессов
ковариантностью процессов
Укажите верное определение для параметра /EHa компилятора от Microsoft (Visual Studio).
Ни одно из определений не верно
Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» не предполагается возникновение исключений C++.
Задает модель обработки, в которой перехватываются асинхронные (структурированные) и синхронные (C++) исключения.
Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» предполагается возникновение исключений.
Этот параметр устарел и больше не поддерживается
Что верно относительно следующего кода?
Он успешно конвертирует строку "string" в Юникод
Возникнет ошибка времени выполнения
Возникнет ошибка компиляции из-за TCHAR
Возникнет ошибка компиляции из-за "string"
Ошибок компиляции не возникнет, но строка "string" не будет конвертирована в Юникод
Посмотрите на следующую схему и ответьте, какая функция из семейства функций по работе с разделяемой памятью скрыта?
GetViewOfFile
UnmapViewOfFile
CloseViewOfFile
DeleteViewOfFile
MoveViewOfFile
Что из перечисленного не является способом создания меню средствами Win32 API?
При помощи класса CMenu
При помощи структуры MENU и функции CreateWindow
На основе шаблона меню, определенного в памяти, и функции LoadMenuIndirect
На основе шаблона меню, определенного в файле ресурсов
При помощи функций CreateMenu и AppendMenu
Какая функция не используется в так называемом цикле обработки сообщений приложения Win32 API?
GetMessage()
PeekMessage()
PostMessage()
TranslateMessage()
DispatchMessage()
Отметьте верное утверждение. Если функция реентерабельна, то она:
потокобезопасна
не использует статические переменные, определенные внутри функции
может использовать глобальные переменные без ограничений
обеспечивает блокировку доступа к ресурсам, которые она использует
Ни одно из утверждений не верно
Какие префиксы из венгерской нотации не предполагают целочисленное значение?
w
c
v
b
by
Что из перечисленного является способом обмена данными между процессами?
сообщение WM_COPYDATA
асинхронный вызов процедур (asynchronous procedure call)
именованные каналы (named pipes)
сокеты(sockets)
отображение файлов в память(file mapping)
Что не относится к графическим объектам GDI
Все это графические объекты GDI
Палитра (palette)
Реги
Желтый квадрат
Красный квадрат
Черный квадрат
Синий квадрат
Ничего
Cледующий код демострирует синхронизацию с помощью критической секции.
Что будет выведено на экран в результате выполнения программы?
Возникнет ошибка компиляции
Возникнет ошибка времени выполнения
5678901234
Порядок вывода цифр не определен
0123456789
Программист написал код:
При его выполнении в консоль вывелось:
Что нужно сделать, чтобы исправить досадную ошибку?
В строке 7 заменить флаги GENERIC_EXECUTE|GENERIC_READ на GENERIC_ALL
В строке 22 заменить NULL адресом корректно проинициализированной структуры OVERLAPPED
В строке 17 заменить WriteFile на WriteFileEx
В строке 8 заменить флаг OPEN_EXISTING на CREATE_ALWAYS
В строке 17 заменить !WriteFile на WriteFile
Укажите два ложных утверждения о GDI.
GDI унифицированно работает с различными устройствами
GDI отвечает за отрисовку окон, меню и других элементов Windows
В GDI есть средства для отрисовки 3D-графики
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры
GDI является составной частью пользовательского интерфейса Microsoft Windows
Класс окна описывается структурой WNDCLASSEX и содержит следующую информацию об окне: (укажите ложное утверждение)
Адрес точки входа в приложение, в котором находится оконная процедура для этого класса
Дескриптор курсора, дескриптор пиктограммы и дескриптор кисти для фона окна
Дескриптор экземпляра приложения, в котором находится оконная процедура для этого класса
Указатель на оконную процедуру
Имя меню, применяемого по умолчанию для этого класса
Что из системных ресурсов не принадлежит потоку?
Код исполняемой функции
Рабочее множество страниц реальной памяти
Стек для работы ОС
Стек для работы приложения
Набор регистров процессора
Какое из следующих утверждений относительно функции DllMain не верно?
В DLL обязательно должна присутствовать функция DllMain.
DllMain вызывается при загрузке DLL в адресное пространство процесса и при выгрузке из него.
DllMain вызывается при создании процессом нового потока и при завершении этого потока.
Последний параметр DllMain содержит способ загрузки DLL.
Все утверждения верны.
Какая функция Win32API служит для создания каталогов?
CreateFolder
СreateDir
CreateCatalog
CreateDirectory
CreateFile
Каким будет результат работы программы? (предполагается, что потоки создаются успешно)
в консоль будет выведено: 210
результат не определен
в консоль будет выведено: 012
в консоль будет выведено: 120
в консоль будет выведено: 201
Дан код, который пишет цифры от 0 до 9 в файл.
Следующий код считывает из файла и выводит в консоль одну цифру:
Какая цифра будет выведена?
7
Результат не определен
6
3
2
Функция Win32 API GetFileSize, возвращающая размер указанного файла и имеющая прототип
работает следующим образом: (выберите правильный вариант)
В случае успеха возвращает старшее слово размера файла, при этом во втором параметре возвращается младшее слово размера файла.
В случае успеха возвращает 0, при этом во втором параметре возвращается размер файла в байтах.
В случае успеха возвращает младшее слово размера файла, при этом во втором параметре возвращается старшее слово размера файла.
В случае успеха возвращает 0, при этом во втором параметре возвращается структура LARGE_INTEGER
В случае успеха возвращает не 0, при этом во втором параметре возвращается размер файла в байтах.
Какие два стиля из перечисленных точно имеет окно на рисунке?
WS_TILEDWINDOW
WS_THICKFRAME
WS_POPUP
WS_SYSMENU
WS_VSCROLL
Какие функции Win32 API используются для посылки асинхронных сообщений?
PostMessage
SendMessage
PostThreadMessage
PostQuitMessage
SendNotifyMessage
Программист написал небольшую DLL, которая экспортирует две переменные целого типа. Вот ее код:
Также программист написал программу(EXE), использующую эту DLL. Код программы такой:
Затем программист последовательно, не закрывая предыдущих, запустил 3 экземпляра программы Client.exe. Что выведет в консоль экземпляр программы Client.exe, запущенный последним(3-им)?
42
33
44
24
22
Нижеследующий код работает со стандартной кучей процесса. Определите, вызов какой функции Win32 API должен размещаться на месте прочерка в строке 12.
HeapOpen()
GetDefaultHeap()
GetProcessHeap()
GetHeap()
HeapCreate()
В предопределенные классы окон Windows не входит:
SCROLLBAR
STATIC
TREEVIEW
COMBOBOX
LISTBOX
Программист написал код асинхронной записи в файл. Название какой функции Win32 API нужно подставить вместо ___1___, чтобы код корректно выполнился? (Считаем, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок)
WaitForSingleObject
SleepEx
SuspendThread
Sleep
SignalObjectAndWait
Среди перечисленных режимов доступа к файлу укажите так называемые родовые режимы доступа.
FILE_SHARE_READ
GENERIC_READ
FILE_SHARE_DELETE
GENERIC_WRITE
GENERIC_EXECUTE
Функция GetCurrentThread() возвращает:
дескриптор текущего потока
другое
контекст текущего потока
идентификатор текущего потока
псевдодескриптор текущего потока
Какую библиотечную функцию рекомендуется использовать для создания потока вместо CreateThread при программировании на C++?
_beginthread
_beginthreadex
BeginThread
beginthread
beginthreadex
Пользователь посылает окну с дескриптором hWnd сообщение с помощью функции SendMessage() из того же потока. Каков будет упрощенный маршрут сообщения?
-> Оконная процедура с дескриптором окна hWnd.
-> Системная очередь сообщений -> Оконная процедура hWnd.
-> Системная очередь сообщений -> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd.
-> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd
-> Очередь сообщений потока, создавшего окно hWnd -> Оконная процедура hWnd.
Что выведет на экран нижеследующий код? (предполагается, что потоки создаются успешно)
33
00
13
Результат не определен
31
Это понятие относится к использованию DLL в другой ОС (не семейства ОС Windows)
Пример плохой концепции программирования с использованием DLL
Тупиковую ситуацию, связанную с управлением библиотеками DLL
Такого понятия не существует
Несовместимость и невзаимозаменяемость различных версий DLL
Что нужно сделать, чтобы следующий код гарантированно завершил свое выполнение?
Добавить квалификатор volatile перед объявлениями переменных flag и flagThread
В строке 5 добавить перед объявлением переменной flagThread квалификатор volatile
Заменить в строке 24 константу INFINITE на 1000
В строке 9 изменить while(!flagThread) на while(flagThread)
В строке 14 добавить перед объявлением переменной flag квалификатор volatile
_________ - это процесс, который загружается при загрузке ОС Windows или в процессе ее работы по специальной команде и заканчивает свою работу по завершении работы ОС или по специальной команде.
резидентная программа
сервис
фоновый процесс
задача
драйвер
Каков будет вывод в консоль в результате выполнения следующей программы?
120
110
111
121
160
Ниже представлен код, который тестирует механизм отображения файлов в память.
Замените метки __1__, __2__ и __3__ на соответствующие параметрам и контексту функции.
CreateFile, CreateFileMapping, CreateViewOfFile
CreateFileEx, CreateViewOfFile, CreateFileMapping
CreateFile, CreateFileMapping, MapViewOfFile
CreateFile, CreateViewOfFile, MapViewOfFile
CreateFileEx, CreateFileMapping, CreateViewOfFile
Программист написал программу для работы с виртуальной памятью, но в код вкралась ошибка, приводящая к access violation при обращении к указателю ‘a’ в строке 19.
Как исправить ошибку?
В строке 10 заменить NULL на корректный указатель
В строке 12 заменить MEM_RESERVE на MEM_RESET
В строке 13 заменить PAGE_ READWRITE на PAGE_EXECUTE_READWRITE
В строке 12 заменить MEM_RESERVE на MEM_COMMIT
В строку 18 вставить вызов VirtualLock(a, size * sizeof(int));
пакетированный ввод-вывод
файловый ввод-вывод
потоковый ввод-вывод
асинхронный ввод-вывод
синхронный ввод-вывод
Программист написал, скомпилировал и запустил код:
Результат его выполнения такой:
Определите, какой прототип из предложенных имеет функция GetFileTime, если файл demo_file.dat имеет следующие свойства:
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime, LPFILETIME lpLastAccessTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime);
BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime);
Какие стили из перечисленных имеет окно на рисунке
WS_MAXIMIZEBOX
WS_POPUP
WS_OVERLAPPEDWINDOW
WS_MINIMIZEBOX
WS_SYSMENU
Укажите ложное утверждение относительно следующего кода.
Указатель pa содержит адрес в куче
Код не предназначен для работы в многопоточной среде т.к куча несериализуемая
Утечек памяти не возникнет
Код скомпилируется и выполнится без ошибок
Все перечисленные утверждения верны
Выберите правильный прототип для пользовательской асинхронной процедуры (указатель на которую передается в функцию QueueUserAPC).
HANDLE CALLBACK APCProc(DWORD);
VOID CALLBACK APCProc(HANDLE, ULONG_PTR);
DWORD CALLBACK APCProc(DWORD, HANDLE);
VOID CALLBACK APCProc(ULONG_PTR);
VOID LRESULT APCProc(ULONG_PTR);
Представленный код должен открывать почтового клиента и создавать в нем новое сообщение с заполненным полем "Кому". В коде вызывается функция ShellExecute из Shell32.dll, которая поддерживается начиная с WindowsXP / Windows 2000 Server.
Проверка показала, что он не компилируется:
Что из перечисленного исправит это? (код компилируется без поддержки Unicode)
Заменить строку 1 на #define _WIN32_WINNT 0x0300
Заменить строку 1 на #define _WIN32_WINNT 0x0200
Нужно убрать строку 1
Заменить строку 1 на #define _WIN32_WINNT 0x0501
Заменить строку 1 на #define _WIN32_WINNT 0x0600
Какой точке входа в приложение Win32 соответствуют следующий набор параметров:(компилятор Microsoft Visual С++)
DllMain
main
WinMain
wWinMain
wmain
Совокупность правил контроля доступа субъектов к объектам в системе информационной безопасности называется …
состоянием системы безопасности
правами и привилегиями
моделью безопасности
монитором безопасности
политикой безопасности
Представлен код:
Данный код определяет, есть ли диск в CD-ROMе или дискета в дисководе. Но строка 30 не компилируется. Что нужно сделать, чтобы исправить этот баг? (код компилируется без поддержки Юникода)
В строке 5 заменить LPTSTR на LPСSTR
В строке 30 убрать скобки вокруг выражения IsDiskInDrive("E:\") ? "full" : "empty"
Для корректной работы IsDiskInDrive должна возвращать bool, а не BOOL
Заменить в строке 30 "E:\" на "E:\"
Заменить в строке 30 "E:\" на L"E:\"
Выделенный блок программного кода, в котором может произойти исключение, называется:
охраняемым блоком
фреймом
охраняемым кодом
блоком-фильтром
небезопасным кодом
Есть два потока. thread1() и thread2() – соответственно функции этих потоков. a и b – глобальные переменные целого типа, cs1 и cs2 – критические секции.
Укажите места в коде, прерывание выполнения потока в которых приведет к возникновению взаимной блокировки(deadlock).
//2
//3
//1
//5
//4
Какого состояния потока не существует в модели потоков Windows?
Подвешен/приостановлен (suspended state)
Состояние готовности (ready state)
Состояние ожидания (wait state)
Состояние завершения (terminated state)
Сигнальное состояние (signal state)
Распределенная процессом область виртуальной памяти, используемая им для захвата и освобождения блоков памяти, размер которых меньше размера виртуальной страницы, называется …
хранилищем памяти
стеком
статической памятью
кучей
свободной памятью
Где функция LoadLibrary ищет нужную библиотеку в последнюю очередь?
В каталогах , которые указаны в переменной окружения PATH
В каталоге Windows
В системном каталоге Windows
В текущем каталоге процесса
В каталоге, из которого запущено приложение
Следующий код демонстрирует известный прием, позволяющий получить хэндл консольного окна.
Однако код не компилируется. Определите, в какой строке ошибка (поддержка Юникода отключена).
В строке с меткой //3
В строке с меткой //4
В строке с меткой //2
В строке с меткой //5
В строке с меткой //1
Программист написал код создания объекта сервиса (будем считать, что сервис уже собран, называется DemoService и располагается в корневом каталоге диска С).
Какая ошибка содержится в этом коде?
Функции CloseServiceHandle не существует. Следует использовать CloseHandle
Внешнее и внутреннее имя сервиса не совпадают
Путь к сервису указан неверно
Не открыт менеджер сервисов
Константы SERVICE_ALL_ACCESS не существует
Какого состояния не существует в модели пяти состояний процесса в Windows?
Подвешен (Suspended)
Завершен (Exit)
Блокирован (Blocked)
Выполняется (Running)
Готов (Ready)
При работе с консольными приложениями (в том числе и посредством Win32 API) нередко приходится устанавливать кодировку. В каких из представленных популярных кодировок используется кириллица?
CP437/1
CP866/1
ANSI-1252
CP1251
Windows-1250
Программист написал функцию удаления каталога и всех его подкаталогов:
Что нужно подставить вместо ___1___, чтобы она корректно работала? (будем считать, что CString – просто класс для работы со строками, удобная оболочка над строкой в стиле С):
RemoveDirectory
MoveFileEx
RemoveDirectoryEx
RemoveDir
DeleteFile
Какой функции из перечисленных не существует в Win32 API?
UnloadLibrary
VirtualFree
MapViewOfFile
TranslateMessage
WaitForMultipleObjects
Это сообщение посылается когда пользователь выбирает команду меню или посылает команду из элемента управления.
WM_ACTIVATE
WM_NOTIFY
WM_COMMAND
WM_CHOOSE
WM_SELECT
Какой базовый стиль окна не входит в комбинированный стиль WS_OVERLAPPEDWINDOW?
WS_MAXIMIZEBOX
WS_MINIMIZEBOX
WS_CAPTION
WS_SYSMENU
WS_CHILD
Если выполнить вызов Sleep(0), то …
поток приостановится на 1 миллисекунду
поток приостановится на неопределенное время
поток приостановится и сразу встанет в очередь на выполнение
поток не приостановится и не передаст управление другому потоку
Вызов Sleep() просто проигнорируется
На рисунке представлен пример матрицы управления доступами.
Строки соответствуют субъектам, столбцы – объектам. В клетках прописаны соответствующие права. Определите, какое утверждение ложно.
Борис имеет право удалить файл Василия и свой файл, но не имеет прав чтения на Объект 1
Исполнять Объект 2 могут только Александр, Никита и Менеджер
Михаил и Никита обладают одинаковыми правами только на файл Бориса и на Объект 1.
Александр имеет право на чтение файла Василия, Василий имеет право на запись файла
Никиты, а Никита имеет право на чтение файлов Бориса и Василия
Менеджер имеет право устанавливать режимы доступа для всех перечисленных в таблице
объектов, но передавать права управления объектами другим субъектам - только для
файлов Бориса и Василия
Следующий код использует Native API для перевода ПК в режим гибернации (работает для WinXP / Win 7):
Какой вариант из представленных нужно вставить в строку 8, чтобы код успешно скомпилировался и выполнился? (код компилируется с поддержкой Unicode)
NTDll_PA NtInitiatePowerAction = GetProcAddress("NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = GetDllProcAddress("NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetProcAddress(Dll, "NtInitiatePowerAction");
NTDll_PA NtInitiatePowerAction = GetProcAddress(Dll, "NtInitiatePowerAction");
Какое число будет нарисовано в клиентской области окна в результате его выполнения?
*Цифры изображаются в стиле начертания индекса на почтовых конвертах
11
17
38
88
30
Чтобы удалить учетную запись пользователя, нужно вызвать функцию NetUserDel как например в этом коде:
Какие могут быть причины неудачного выполнения функции NetUserDel в данном коде, если известно, что код выполняется на локальном компьютере?
Не указан пароль пользователя
Код запущен не под администратором
Учетная запись пользователя заблокирована
Указано неправильное имя компьютера
Указано несуществующее имя пользователя
Чего нельзя сделать с помощью функции SetWindowLong?
Ассоциировать с окном пользовательские данные
Поменять иконку, ассоциированную с окном
Поменять курсор для окна
Поменять стиль окна
Поменять адрес оконной процедуры окна
Семейство Interlocked-функций используется для синхронизации параллельных потоков,если синхронизировать нужно несложные действия над общими переменными и применение мьютексов или критических секций накладно.
В следующей программе один поток производит символические продукты, а другой поток - их потребляет, осуществляя при этом вывод на экран общее количество потребляемых продуктов:
По идее на экран должна выводиться возрастающая последовательность чисел, а на деле выводится последовательность из нулей. Из предложенных вариантов выберите правильный способ для устранения ошибки.
Синхронизировать потоки с помощью мьютекса или критической секции
Заменить строку 18 на InterlockedExchange(&goods, n);
В строке 18 заменить InterlockedExchange на InterlockedExchangeAdd
Убрать строку 17
Заменить строку 9 на InterlockedIncrement(n);
Какая модель безопасности реализована в Windows?
дискреционная
мандатная
строгая
либеральная
ролевая
Что означает префикс «sz» в венгерской нотации?
число, задающее размер
короткое целое число
структуру SIZE
size_t
строку, заканчивающуюся нулевым байтом
Подставьте вместо звездочек название функции Win32 API, которой соответствует сигнатура:
WaitForMultipleObjectsEx
WaitForMultipleObjects
WaitForSingleObjectEx
WaitForSingleObject
SignalObjectAndWait
Какое утверждение относительно динамически подключаемых библиотек (DLL) является верным?
Для каждого процесса, использующего конкретнуюю DLL, создается отдельная копия этой DLL
Точка входа в DLL обязательно должна иметь имя DllMain.
Исполняемый код DLL хранится в физической памяти в одном экземпляре.
Данные, содержащиеся в DLL, разделяются между всеми процессами, использующими эту DLL.
Механизм загрузки DLL не основан на отображении файлов в память (file-mapping).
Что выведет в консоль следующий код, если запустить его на выполнение?
10
2
Код будет заблокирован
1
Макрос AbnormalTermination имеет прототип
и возвращает ноль(FALSE) если блок __try завершился нормально. Что будет выведено на экран после выполнения следующего кода?
Ничего
Результат выполнения кода не определен (Undefined behaivior)
10
20
Чем именованные каналы отличаются от анонимных (неименованных) каналов?
возможностью синхронного обмена данных
ограничением на тип передаваемых данных
возможностью моделирования любой топологии связей
возможностью передачи данных потоком
возможностью двустороннего обмена данными
Какое сообщение Windows посылается оконной процедуре диалогового окна непосредственно перед тем как оно будет отображено на экране?
WM_RESIZEDIALOG
WM_CREATEDIALOG
WM_INITDIALOG
WM_MODALDIALOG
WM_SHOWDIALOG
Что делает следующий код?
Выводит в консоль заголовки всех окон второго уровня
Выводит в консоль заголовки всех окон верхнего уровня
Выводит в консоль заголовки всех дочерних окон первого окна вернего уровня
Выводит в консоль заголовки всех окон всех уровней
Выводит в консоль заголовки всех дочерних окон активного окна
Реализованная в Windows модель безопасности удовлетворяет уровню безопасности С-2, который определен министерством обороны США. Далее перечислены наиболее важные требования, которым должна удовлетворять система, поддерживающая безопасность на этом уровне. В одном из них умышленно допущена ошибка и соответственно Windows ему не удовлетворяет. Определите это ложное утверждение.
ОС должна защищать ресурсы от случайного повторного использования, например,
содержимое памяти завершившегося процесса должно быть недоступно другому процессу;
Администратор системы должен иметь средства для проведения аудита событий, связанных с безопасностью системы. Доступ к полученным при аудите данным должен иметь только авторизованный администратор системы;
Система должна защищать себя от постороннего вмешательства во время своей работы,
например, система должна защищать себя от модификации извне во время своей работы.
Владелец ресурса должен управлять доступом к ресурсу;
Каждый пользователь системы должен при входе в систему указывать свое имя и
пароль, но система может не иметь средств для отслеживания работы пользователя;
Программист создал приложение Win32 Application. Цикл обработки сообщений в функции WinMain имеет вид:
switch-обработчик сообщений в оконной процедуре имеет вид:
Что будет содержать сообщение c заголовком Result, если запустить эту программу, перевести фокус на появившееся окно, один раз нажать например клавишу «F», а затем закрыть окно?
dcu
du
Окно сообщения не будет отображено
duc
c
Есть следующая небольшая DLL:
Следующая программа использует эту библиотеку, используя статическую загрузку.
Проверка показала, что код не линкутся. Что нужно добавить вместо комментария, чтобы код собрался и выполнился?
Дан фрагмент кода:
Какие утверждения относительно этого кода верны?
Функция Foo вызывает функцию WndProc
После выполнения инструкции return 0; ( в точке //2) функция WndProc больше не будет вызвана
В точке //1 Bar будет указывать на WndProc
Прием, применяемый в этом коде, называется сабклассингом (sub-classing)
Прием, применяемый в этом коде, называется суперклассингом (super-classing)
Какой заголовочный файл нужно подключить, чтобы воспользоваться функцией _beginthreadex для создания потоков?
crt.h
windows.h
process.h
thread.h
WindowsNT.h
Какая функция Win32 API из представленных служит для перемещения (переименования) каталогов?
MoveFolder
RenameDirectory
MoveDirectory
MoveDir
MoveFile
Следующий код не компилируется:
Определите, в чем проблема, если известно, что ошибка компиляции происходит в строке 22 и что код собирается в Юникоде.
Нужно заменить функцию NetUserChangePassword на UserChangePassword
Нужно заменить функцию NetUserChangePassword на NetUserSetInfo
Нужно подключить заголовочный файл lm.h
Нужно подключить библиотеку netapi32.lib через настройки проекта
Достаточно заменить NET_API_STATUS на NET_STATUS или на LONG
Что выведет в консоль следующая программа?
3
Программа блокируется в функции WaitForSingleObject
4
Результат не определен
Базовый приоритет потока определяется как сумма приоритета процесса и уровня приоритета потока. В следующей таблице все возможные базовые приотеты потоков в Windows. По столбцам указаны приоритеты классов процессов, а по строкам — уровни приоритетов потоков.
Какой уровень приоритета потоков является наивысшим? (подставьте вместо знака вопроса)
Time critical
Critical
Supreme
Maximum
Real time
Что из перечисленного не является объектом ядра?
критическая секция (critical section)
мьютекс (mutex)
поток (thread)
процесс (process)
неименованный канал (anonymous pipe)
Следующий код, создающий ожидающий таймер и устанавливающий для него процедуру завершения ожидания, при выполнении ведет себя по-разному в различных компиляторах, что явно похоже на Undefined behavior.
Определите, какой способ из предложенных исправляет положение.
Нужно поменять тип qwTimeInterval на ULONGLONG, а также qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND
Нужно передать в CreateWaitableTimer первым параметром инициализированный указатель
5-ый параметр функции SetWaitableTimer нужно заменить на “” (пустую строку)
Нужно заменить qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND
Нужно заменить вызов SleepEx(INFINITE, TRUE) на вызов Sleep(1000)
Даны DLL и программа, её использующая.
При сборке кода возникают 3 ошибки линковки:
Определите, что из перечисленного необходимо сделать, чтобы код собрался и выполнился?
Подключить библиотеку импорта к use_dll.exe
В коде use_dll.exe добавить extern "C" к прототипу функции Min
В коде библиотеки dll.dll в строках 8 и 13 добавить extern "C" перед __declspec(dllexport)
В коде use_dll.exe добавить extern "C" к прототипу функции Abs
В коде use_dll.exe добавить extern "C" к прототипу функции Max
Укажите две функции, которые обязательно должны присутствовать в сервисе (службе) Windows?
обработчик управляющих команд ОС
функция регистрации / дерегистрации в системе
оконная процедура
точка входа
функция WinMain
Имеется следующий фрагмент кода открытия именованного канала:
Что означает точка в имени канала (первом параметре)?
локальную машину
объект канала будет храниться в специальном каталоге Windows
текущий каталог
объект канала будет храниться в виртуальной памяти
канал открывается, а не создается
Дан фрагмент работоспособного кода, отрезками рисующего в клиентской области окна геометрическую фигуру в виде буквы латинского или русского алфавита:
Какая буква будет нарисована на экране после выполнения кода?
Х
L
И
I
Г
Как средствами Windows API можно завершить GUI-приложение, оконная процедура единственного окна которого имеет вид:
Вызвать TerminateProcess() для процесса, в котором выполняется приложение
Отправить в очередь сообщений его окна сообщение WM_QUIT
Послать сообщение WM_DESTROY окну, принадлежащему приложению
Послать сообщение WM_CLOSE окну, принадлежащему приложению
Вызвать PostQuitMessage(0) в приложении
Следующий код производит синхронизацию потоков с помощью объекта ядра "событие".
Что будет выведено на экран в результате выполнения кода? (предполагается, что объекты событий и поток создаются успешно)
x01c2
порядок вывода не определен
0x1c2
произойдет взаимная блокировка
01xc2
Какого зарезервированного слова не существует в механизме SEH?
__leave
__except
__finaly
__try
Все перечисленные слова входят в SEH
Если поток ожидает событие, которое никогда не произойдет, то говорят, что поток …
навсегда приостановлен
«завис»
заблокирован
закольцован
находится в тупике
Какой текст выведет сообщение в результате выполнения следующего кода?
(будем считать, что код компилируется без поддержки Юникода и что вызовы VirtualProtect выполняются успешно).
Возникнет ошибка времени выполнения
707
700
777
Возникнет ошибка компиляции
Каких функций для работы с объектом синхронизации "семафор" из представленных не существует в Win32?
ReleaseSemaphore
OpenSemaphore
IncrementSemaphore
CloseSemaphore
CreateSemaphore
С помощью какой функции Win32 API можно выполнить удаление директории и всех её поддиректорий за один вызов?
SHFileOperation
DeleteFileEx
RemoveDirRecursive
RemoveDirectory
Такой функции не существует в Win32 API
Следующий код демонстрирует специфику работы инструкции __finally.
Какой будет вывод в консоль в результате выполнения программы?
21
14
4
20
13
Что будет нарисовано в клиентской области окна приложения, если код следующий?
Ничего
Круг внутри квадрата
Квадрат внутри круга
Квадрат
Круг
Следующий код служит для создания учетной записи пользователя на локальном компьютере.
Определите, в какой из предложенных строк есть ошибка? (программа компилируется с поддержкой Юникода)
23
10
14
21
22
Следующий код не компилируется. Какое из представленных решений не исправляет ошибку?
Заменить TCHAR на CHAR
Обернуть "Error" в макрос _TEXT()
Убрать директиву #define
Добавить символ L перед "Error"
Обернуть "Error" в макрос _T()
Какая функция Win32 используется для установки фильтр-процедур для контроля над некоторыми типами событий в системе?
SetWindowFilter
SetWindowsHookEx
SetFilterProcedure
SetFilterHook
SetWindowsHook
Следующий код работает с консолью – меняет её заголовок, а затем возвращает размеры консоли:
Код не компилируется. В каких строках из отмеченных есть ошибки? (код компилируется с поддержкой Юникода)
//5
//3
//1
//4
//2
Программист написал код, который создает дочерний процесс и через аргумент командной строки передает в дочерний процесс дескриптор своего потока. Код следующий:
Код, выполняющейся в дочернем процессе, таков: :
При запуске приложения выяснилось, что дочерний процесс запускается и корректно завершается, а основной процесс "зависает". Что нужно сделать, чтобы исправить ситуацию? (сделать так, чтобы основной процесс тоже корректно завершался)
В строке 28 кода основного процесса заменить FALSE на TRUE
Строку 9 кода дочернего процесса заменить на WaitForSingleObject(hThread, 1000);
Убрать строки 41 и 42 в коде основного процесса
Изменить строку 6 кода дочернего процесса на HANDLE hThread = (HANDLE)atoi(argv[0]);
Строку 14 кода основного процесса заменить на sa.bInheritHandle = FALSE;
На рисунке представлена общая схема канала передачи данных между процессами:
T1 и T2 – пользовательские процессы, выполняющиеся в контекстах разных процессов. Что на схеме обозначено буквой «M»?
Общая память
Сообщение WM_COPYDATA
Поток ядра ОС
Менеджер потоков ядра
Буфер
Какие клавиши относятся к так называемым клавишам-модификаторам?
Shift
Alt
Ctrl
Insert
Caps Lock
Что делает представленный код? (укажите все возможные варианты)
Выводит длину идентификатора безопасности
Проверяет достоверность идентификатора безопасности
Выводит значение относительного идентификатора SID
Инициализирует идентификатор безопасности (SID)
Связывает SID с учетной записью
Нужно получить размеры окна при обработке сообщения WM_SIZE в оконной процедуре. Как это сделать?
Cогласованность данных, хранящихся в файле, отображенном в память несколькими процессами, называется __________
симметрией данных
синхронизацией данных
когерентностью данных
корелляцией данных
разделяемостью данных
Достижение некоторого фиксированного соотношения (порядка) между сигналами, которыми обмениваются два процесса, называется …
параллелизмом процессов
сбалансированностью процессов
синхронизацией процессов
дивергенцией процессов
ковариантностью процессов
Укажите верное определение для параметра /EHa компилятора от Microsoft (Visual Studio).
Ни одно из определений не верно
Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» не предполагается возникновение исключений C++.
Задает модель обработки, в которой перехватываются асинхронные (структурированные) и синхронные (C++) исключения.
Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» предполагается возникновение исключений.
Этот параметр устарел и больше не поддерживается
Что верно относительно следующего кода?
Он успешно конвертирует строку "string" в Юникод
Возникнет ошибка времени выполнения
Возникнет ошибка компиляции из-за TCHAR
Возникнет ошибка компиляции из-за "string"
Ошибок компиляции не возникнет, но строка "string" не будет конвертирована в Юникод
Посмотрите на следующую схему и ответьте, какая функция из семейства функций по работе с разделяемой памятью скрыта?
GetViewOfFile
UnmapViewOfFile
CloseViewOfFile
DeleteViewOfFile
MoveViewOfFile
Что из перечисленного не является способом создания меню средствами Win32 API?
При помощи класса CMenu
При помощи структуры MENU и функции CreateWindow
На основе шаблона меню, определенного в памяти, и функции LoadMenuIndirect
На основе шаблона меню, определенного в файле ресурсов
При помощи функций CreateMenu и AppendMenu
Какая функция не используется в так называемом цикле обработки сообщений приложения Win32 API?
etMessage()PeekMessage()
PostMessage()
TranslateMessage()
DispatchMessage()
Отметьте верное утверждение. Если функция реентерабельна, то она:
потокобезопасна
не использует статические переменные, определенные внутри функции
может использовать глобальные переменные без ограничений
обеспечивает блокировку доступа к ресурсам, которые она использует
Ни одно из утверждений не верно
Какие префиксы из венгерской нотации не предполагают целочисленное значение?
w
c
v
b
by
Что из перечисленного является способом обмена данными между процессами?
сообщение WM_COPYDATA
асинхронный вызов процедур (asynchronous procedure call)
именованные каналы (named pipes)
сокеты(sockets)
отображение файлов в память(file mapping)
Что не относится к графическим объектам GDI?
Все это графические объекты GDI
Палитра (palette)
Регион (region)
Шрифт (font)
Растровое изображение (bitmap)
Синонимом чего из перечисленного является понятие «нить»?
Поток выполнения
Передача синхронного сообщения
Соединение по именованному каналу
Соединение по анонимному каналу
Вызов асинхронной процедуры
В пользовательском приложении указатель получил адрес (к примеру 0x004c1560). По какой схеме этот адрес будет преобразован к физическому?
логический адрес -> физический адрес
линейный адрес -> виртуальный адрес -> физический адрес
виртуальный адрес ->линейный адрес-> физический адрес
виртуальный адрес -> физический адрес
линейный адрес -> физический адрес
Следующий код программно нажимает, а затем на 2 секунды прячет кнопку Пуск в Windows (не работает в Vista и более новых). Определите, вызов какой функции скрывается за ___1___.
GetWindowByName()
GetWindowHandle()
GetHwnd()
GetTaskBar()
FindWindow()
Перемеинованием какого стандартного типа C++ является тип BOOL?
unsigned int
bool
char
unsigned char
int
Какие из вариантов прототипа оконной процедуры корректны (не вызовут ошибок компиляции)?
3
4
1
5
2
Какой контекст устройства не поддерживается или не существует в Win32 API?
контекст принтера
метафайловый контекст
контекст в памяти (совместимый)
контекст бу