Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы разработки программ на языке С++ для систем информационной безопасности. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Примеры тестовых вопросов
141
а) stringstream; б) time_t; в) string; г) struct.
72. Что такое строковый поток?
а) адрес памяти, в которой может сохраняться строка символов; б) символьный массив с ограничителем; в) особый вид строк со специальной кодировкой; г) объект, в который можно вывести информацию оператором <<.
73. Как получить строку из строкового потока?
а) используя метод open(…); б) используя метод c_str() класса строк; в) используя метод str() класса строкового потока; г) используя оператор >>.
74. Какая функция позволяет получить текущее время?
а) time( time_t t ); б) localtime( time_t t ); в) mktime ( tm t ); г) asctime( time_t t ).
75. Какая функция позволяет получить текущее время в структуриро-
ванном виде ( структуры tm )?
а) time( time_t t ); б) localtime( time_t ); в) mktime ( tm t ); г) asctime( time_t t ).
76. Какая функция позволяет получить время из структуры tm в виде
числа секунд?
а) time( time_t t ); б) localtime( time_t t ); в) asctime( time_t t ); г) mktime ( tm t ).
Примеры тестовых вопросов
142
77. Какой из операторов С++ предназначен для динамического выде-
ления памяти?
а) new; б) delete; в) set; г) namespace.
78. Какой из операторов С++ предназначен для освобождения дина-
мически выделенной памяти?
а) new; б) delete; в) set; г) namespace.
79. Какая функция библиотеки позволяет динамически выделять па-
мять?
а) mswap(…); б) memcopy(…); в) malloc(…); г) free().
80. Какая функция библиотеки позволяет освободить динамически
выделять память?
а) memswap(…); б) memcopy(…); в) malloc(…); г) free().
81. Какое из перечисленных преобразований является безопасным?
а) типа double в тип char; б) типа double в тип long; в) типа int в тип short; г) типа int в тип long.
82. Какое из перечисленных преобразований является опасным?
а) типа int в тип double; б) типа int в тип string;
Примеры тестовых вопросов
143
в) типа int в тип char; г) типа int в тип float.
83. Как называется функция преобразования строки в число с плава-
ющей точкой?
а) atoi(…); б) strtod(…); в) _itoa(…); г) _ecvt(…).
84. Как называется функция преобразования целого числа в строку?
а) _itoa(…); б) atoi(…); в) _ecvt(…); г) strtod(…).
85. Что такое контейнер?
а) класс объектов, предназначенный для хранения объектов других
классов;
б) класс объектов, использующийся для хранения программного кода; в) класс объектов для хранения массивов; г) класс объектов для хранения таблиц.
86. Что такое итератор?
а) объект для указания одного из контейнеров; б) объект для указания элементов контейнера; в) объект для указания алгоритма; г) объект для указания позиции в файле.
87. Какой объект определяется в приведённом программном коде?
а) вектор таблиц; б) итератор для таблицы; в) итератор для вектора; г) список итераторов.
88. Какого типа элементы может содержать контейнер, описанный в
приведённом программном коде?
Примеры тестовых вопросов
144
а) любые типы; б) строковые потоки; в) строки символов; г) целые числа.
89. Какая из функций может быть использована как предикат сравне-
ния для алгоритма поиска find?
а) bool function(char e1, char e2); б) struct tm function(char e1, char e2); в) void function(char e1, char e2); г) fstream function(char e1, char e2).
90. Для каких типов элементов в контейнере может использоваться
алгоритм поиска find?
а) только для строк; б) для любых типов; в) только для чисел; г) только для структур.
91. Оценка сложности последовательного поиска определяется выра-
жением:
а) о( N ); б) o( logN ); в) o( N**2 ); г) o( N log N ).
92. Оценка сложности бинарного поиска определяется выражением:
а) о( N ); б) o( log N ); в) o( N**2 ); г) o( N log N ).
93. Какой оператор может быть перегружен при использовании алго-
ритма последовательного поиска?
а) >; б) ++;
Примеры тестовых вопросов
145
в) ==; г) ::.
94. Какой оператор должен быть перегружен при использовании ал-
горитма бинарного поиска?
а) !=; б) >=; в) <=; г) ==.
95. Чем отличается контейнер map от контейнера vector?
а) наличием ключей у каждого элемента; б) наличием индекса у каждого элемента; в) ограничением на тип каждого элемента; г) ограничением на число элементов в контейнере.
96. Какова сложность поиска в контейнере map?
а) o( N ); б) o( log N ); в) o( N log N ); г) o( N**2 ).
97. Требуется ли сортировка элементов контейнера map перед поис-
ком?
а) требуется всегда; б) требуется всегда, если элементы не являются целыми числами; в) не требуется; г) не требуется, если элементы являются целыми числами.
98. Какой из операторов должен быть перегружен для поиска в кон-
тейнере map?
а) ==; б) !=; в) любой из двух перечисленных выше; г) операторы перегружать не требуется.
99. Выберите выражение, определяющее сложность пузырьковой сор-
тировки:
Примеры тестовых вопросов
146
а) o( N**2 ); б) o( N ); в) o( log N ); г) o( N log N ).
100. Выберите выражение, определяющее сложность быстрой сорти-
ровки:
а) o( N**2 ); б) o( N log N ); в) o( log N ); г) o( N ).
101. Какой из операторов предназначен для генерации исключения?
а) throw; б) try; в) catch; г) exception.
102. Какой из операторов используется для указания блока программ-
ного кода, при выполнении которого возможны исключения?
а) catch; б) try; в) throw; г) exception.
103. Какой оператор предназначен для обработки сгенерированного
исключения?
1) throw;
2) try;
3) catch;
4) exception.
104. Как используется оператор catch при обработке исключений?
а) оператор catch прерывает выполнение программы при появлении
исключения;
б) оператор catch позволяет описать тип генерируемого исключения; в) оператор catch указывает на опасный участок программного кода;
Примеры тестовых вопросов
147
г) оператор catch связывает программный код обработки исключения
с его типом.
105. Какой из способов реагирования на ошибку в функции можно
считать более надёжным?
а) генерацию исключения; б) возврат кода ошибки; в) вывод текстового сообщения на экран; г) прекращение выполнения функции.
106. Какой из способов реагирования на ошибку может позволить
продолжить выполнение программы несмотря на ее ошибку?
а) генерацию исключения; б) возврат кода ошибки; в) вывод текстового сообщения на экран; г) прекращение выполнения функции.
107. Куда передаётся управление в программе, если в блоке try сгене-
рировано исключение?
а) оператору, следующему за оператором throw; б) оператору, следующему за блоком try; в) первому подходящему по типу исключения оператору catch; г) первому подходящему по типу исключения оператору throw.
108. Куда передаётся управление в программе, если в блоке try не сге-
нерировано исключение?
а) оператору, следующему за оператором throw; б) первому подходящему по типу исключения оператору catch; в) первому подходящему по типу исключения оператору throw; г) оператору, следующему за последним оператором catch.
109. Как используется стек программы?
а) для хранения переметров вызываемых функций, адресов возврата, а
также локальных переменных функций;
б) для хранения программного кода и глобальных, и статических пере-
менных;
Примеры тестовых вопросов
148
в) для хранения глобальных и статических переменных; г) для хранения динамически созданных переменных.
110. Как используется КУЧА программы?
а) для хранения пареметров вызываемых функций, адресов возврата, а
также локальных переменных функций;
б) для хранения динамически созданных переменных; в) для хранения глобальных и статических переменных; г) для хранения программного кода и глобальных, и статических пере-
менных.
111. Что такое фрагментация памяти?
а) это состояние памяти, когда свободные участки памяти размеща-
ются не только в оперативной памяти, но и на внешних устройствах;
б) это состояние памяти, когда занятые участки принадлежат разным
переменным программы;
в) это состояние памяти, когда занятые участки и свободные череду-
ются друг с другом;
г) это состояние памяти, когда занятые участки и свободные не чере-
дуются друг с другом.
112. Какое ограничение существует при обслуживании запросов на
динамическое выделение памяти?
а) размер участка не должен превышать 32 Кбайт; б) общий объём фрагментов свободной памяти должен быть не меньше
запрошенной длины;
в) общий объём фрагментов свободной памяти должен быть не меньше
размера стека программы;
г) участок требуемого размера должен быть непрерывным.
113. Можно ли с помощью тестирования доказать отсутствие ошибок?
а) нельзя; б) можно; в) можно, если их использовать при разработке программного кода; г) нельзя, если их не использовали при отладке.
Примеры тестовых вопросов
149
114. Какой приём используют при невозможности полного тестирова-
ния программы?
а) ограничиваются отладкой; б) применяют случайное тестирование; в) множество данных разбивают на классы и тестируют программу на
представителях классов;
г) программу разбивают на классы и тестируют классы независимо.
115. Что такое тестовое покрытие?
а) общее число возможных тестов; б) общее число классов тестов; в) тесты, соответствующие каждой ситуации в программе; г) тесты, которые соответствуют классам ситуаций в программе.
116. Ниже приведён программный код. Какое из выражений позволит
явно вызвать функцию calc() из любой области программы:
а) ~calc(); б) smp::calc(); в) calc(); г) extern calc();
117. Допускается ли в языке С++ объявление функций с одинаковыми
именами?
а) да, если полностью совпадает тип возвращаемого значения, количе-
ство и типы параметров;
б) нет, если совпадает тип возвращаемого значения; в) да, если различается хотя бы либо тип возвращаемого значения,
либо тип хотя бы одного параметра, или общее число параматров;
г) нет, ни при каких условиях.
118. До какого момента продолжают тестирование программы?
а) до полного выявления всех ошибок; б) до уменьшения интенсивности обнаружения ошибок до требуемого
уровня;
в) до момента прогона всех имеющихся тестов; г) до тех пор, пока в программе делают существенные изменения.
Примеры тестовых вопросов
150
ЗАКЛЮЧЕНИЕ
Специализация в области информационной безопасности немыслима без знаний принципов разработки программ. На сегодняшний день суще­ствует достаточно много технологий программирования и языков програм­мирования.
Авторам представляется, что со временем это разнообразие сни­жаться не будет. Поэтому важно изучить и понять основные принципы про­граммирования прикладных задач, осознать творческий характер процесса разработки программ.
Настоящее учебное пособие (кроме изложения теоретического мате­риала) содержит значительную долю материала для практической работы и самоконтроля. Это не случайно. Невозможно анализировать информацион­ную безопасность, не разбираясь в тонкостях создания и работы программ. Нельзя глубоко разбираться в деталях программирования, не пройдя путь разработки реальных программ. Авторы надеются, что настоящее учебное пособие даст читателю полезное знание, навыки и умения в области техно­логии, методов и языков программирования.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]