Найти:

Объектно-ориентированное программирование в технических системах – тест МОИ (МТИ)

Студенты университета МОИ (МТИ) регулярно проходят тестирование по предмету Объектно-ориентированное программирование в технических системах. Иногда задания требуют знания теории и внимательности. Наш сервис помогает пройти тест быстро и получить высокий балл. Работа выполняется оперативно, конфиденциально и без предоплаты. Стоимость — 350 рублей.

Класс Timer, управляющий аппаратным таймером, должен быть спроектирован так, чтобы его внутренние регистры нельзя было изменить напрямую из внешнего кода. Какой принцип ООП это реализует?
Инкапсуляция, обеспечиваемая закрытыми членами и методами доступа.
Наследование, позволяющее расширить функциональность.
Полиморфизм, дающий возможность переопределять поведение.
Абстракция, скрывающая реализацию через интерфейс.
Инкапсуляция, обеспечиваемая закрытыми членами и методами доступа. +

В системе сбора данных используется иерархия классов датчиков: базовый Sensor и производные TemperatureSensorPressureSensor. Какой метод должен быть чисто виртуальным в базовом классе, чтобы гарантировать, что каждый датчик реализует свою процедуру калибровки?
void calibrate() объявленный как virtual void calibrate() = 0;
void calibrate() объявленный как void calibrate() { }
void calibrate() объявленный как virtual void calibrate()
void calibrate() объявленный как static void calibrate()
void calibrate() объявленный как virtual void calibrate() = 0; +

При создании объекта производного класса PwmOutput от базового GpioPin, конструктор базового класса вызывается до конструктора производного. В каком порядке происходит инициализация членов, если в PwmOutput присутствует член-объект Timer?
Сначала инициализируется базовый класс, затем член Timer, затем тело конструктора PwmOutput.
Сначала член Timer, затем базовый класс, затем тело конструктора.
Сначала тело конструктора PwmOutput, затем базовый класс, затем член Timer.
Базовый класс и член Timer инициализируются в порядке их объявления в списке инициализации, независимо от конструктора.
Сначала инициализируется базовый класс, затем член Timer, затем тело конструктора PwmOutput. +

Для обработки прерываний от нескольких периферийных устройств используется единый интерфейс IRQHandler с методом handle(). Какой механизм ООП позволяет связать конкретный обработчик с соответствующим устройством во время выполнения?
Виртуальные функции и динамический полиморфизм через указатели на базовый класс.
Шаблоны, инстанцируемые для каждого типа устройства.
Статические методы, вызываемые по имени устройства.
Множественное наследование от классов-интерфейсов.
Виртуальные функции и динамический полиморфизм через указатели на базовый класс. +

В классе RingBuffer, используемом для хранения выборок АЦП, перегружен оператор [] для доступа к элементу по индексу. Что произойдет, если оператор не перегружен как константный, а объект буфера передан по константной ссылке в функцию обработки?
Вызов buffer[i] приведет к ошибке компиляции, так как неконстантный оператор недоступен для константного объекта.
Оператор будет вызван, но значение не изменится.
Компилятор автоматически создаст константную версию оператора.
Оператор будет вызван, и это может привести к неопределенному поведению.
Вызов buffer[i] приведет к ошибке компиляции, так как неконстантный оператор недоступен для константного объекта. +

При проектировании системы управления двигателем класс MotorController содержит статический член maxRPM, общий для всех экземпляров. Как правильно инициализировать этот член вне определения класса?
int MotorController::maxRPM = 10000;
static int MotorController::maxRPM = 10000;
MotorController.maxRPM = 10000; в конструкторе.
maxRPM = 10000; внутри метода класса.
int MotorController::maxRPM = 10000; +

В классе SerialPort определен деструктор, освобождающий аппаратный ресурс. Если создать объект этого класса в куче через new, а затем вызвать delete для указателя типа SerialPort*, деструктор отработает корректно. Что произойдет, если класс будет использован как базовый для UsbSerialPort, а удаление выполняется через указатель на базовый класс без виртуального деструктора?
Будет вызван деструктор только базового класса, ресурсы производного не освободятся.
Будет вызван деструктор производного класса, так как компилятор определяет реальный тип.
Произойдет ошибка времени выполнения, так как delete не может работать с полиморфными объектами.
Будут вызваны оба деструктора последовательно, начиная с производного.
Будет вызван деструктор только базового класса, ресурсы производного не освободятся. +

Для обмена данными по протоколу MODBUS созданы классы ModbusRTU и ModbusTCP, наследующие от абстрактного класса ModbusProtocol. Какой паттерн проектирования естественно реализуется такой иерархией?
Стратегия (Strategy) – инкапсуляция различных алгоритмов обмена.
Одиночка (Singleton) – для глобального доступа к протоколу.
Фабричный метод (Factory Method) – для создания объектов протокола.
Наблюдатель (Observer) – для уведомления о завершении обмена.
Стратегия (Strategy) – инкапсуляция различных алгоритмов обмена. +

В классе AdcChannel имеется приватный член uint16_t rawValue. Для доступа к нему из отладочного модуля, который не является другом класса, но должен читать значение без нарушения инкапсуляции, что следует использовать?
Геттер-метод uint16_t getRawValue() const.
Объявить отладочный модуль дружественным классом.
Сделать член rawValue защищенным.
Использовать макрос для прямого доступа.
Геттер-метод uint16_t getRawValue() const. +

В системе реального времени критически важно, чтобы вызов виртуальной функции не приводил к непредсказуемой задержке. Какой механизм ООП в C++ может гарантировать отсутствие динамической диспетчеризации в некоторых случаях, но сохранить полиморфное поведение?
Использование final для классов и методов, чтобы компилятор мог выполнить девиртуализацию.
Применение шаблонов с политиками (policy-based design) вместо виртуальных функций.
Использование ключевого слова override для явного указания переопределения.
Объявление методов как inline вместе с virtual.
Использование final для классов и методов, чтобы компилятор мог выполнить девиртуализацию. +

Класс CommunicationDriver, предназначенный для работы с UART, содержит буфер приёма и метод read(). Чтобы запретить копирование таких объектов, так как это может привести к дублированию аппаратного ресурса, какой метод следует объявить удалённым или приватным?
Конструктор копирования и оператор присваивания, объявленные как delete.
Только конструктор копирования, объявленный как private.
Оператор присваивания, перегруженный как virtual.
Деструктор, объявленный как protected.
Конструктор копирования и оператор присваивания, объявленные как delete. +

В иерархии классов управления светодиодной матрицей базовый класс LedDriver имеет невиртуальный метод setBrightness(). В производном классе MatrixDriver переопределён этот метод. Если вызвать setBrightness() через указатель на базовый класс, какой метод будет выполнен?
Метод базового класса, так как метод не виртуальный.
Метод производного класса, потому что объект реально является производным.
Будет ошибка компиляции из-за неоднозначности.
Будет вызван метод, определённый в таблице виртуальных функций, даже без virtual.
Метод базового класса, так как метод не виртуальный. +

Для хранения конфигурации системы используется класс Settings с единственным экземпляром во всей программе. Какой паттерн проектирования следует применить, чтобы гарантировать создание только одного объекта и глобальный доступ к нему, при этом избегая глобальных переменных?
Паттерн Одиночка (Singleton) с приватным конструктором и статическим методом instance().
Паттерн Фабрика (Factory) с созданием объекта в куче.
Паттерн Строитель (Builder) для пошаговой конфигурации.
Паттерн Посетитель (Visitor) для обхода параметров.
Паттерн Одиночка (Singleton) с приватным конструктором и статическим методом instance(). +

При разработке драйвера для SPI-устройства необходимо, чтобы класс SpiDevice имел доступ к приватным регистрам класса SpiBus, но при этом не был его наследником. Какой механизм ООП позволит это сделать без нарушения инкапсуляции?
Объявить SpiDevice дружественным классом для SpiBus.
Сделать регистры protected и унаследовать SpiDevice от SpiBus.
Использовать открытые методы чтения/записи, которые предоставляет SpiBus.
Сделать регистры public временно через макрос.
Объявить SpiDevice дружественным классом для SpiBus. +

При проектировании системы сбора данных возникла необходимость в классе, который одновременно наследует интерфейс IReadable и IWriteable, причём оба интерфейса содержат метод open() с одинаковой сигнатурой. Как разрешить конфликт имён в производном классе?
Использовать виртуальное наследование от обоих интерфейсов и переопределить open() с вызовом нужной версии через квалификацию IReadable::open() и IWriteable::open().
Переименовать метод в одном из интерфейсов.
Наследовать только от одного интерфейса, а второй реализовать как член.
Использовать оператор разрешения области видимости при вызове извне.
Использовать виртуальное наследование от обоих интерфейсов и переопределить open() с вызовом нужной версии через квалификацию IReadable::open() и IWriteable::open(). +

В классе DigitalFilter конструктор принимает коэффициенты фильтра и вычисляет промежуточные значения, которые не должны изменяться после создания объекта. Какой спецификатор следует добавить к членам, хранящим эти промежуточные значения, и к самому классу, чтобы гарантировать неизменность?
Объявить члены как const и класс как const (невозможно), но можно сделать все методы const и инициализировать члены в списке инициализации.
Объявить члены как volatile.
Объявить члены как static.
Использовать макрос #define для констант.
Объявить члены как const и класс как const (невозможно), но можно сделать все методы const и инициализировать члены в списке инициализации. +
(Уточнение: на самом деле класс не может быть объявлен как const, но можно сделать все методы константными и члены инициализировать единожды – я дам более чёткий вариант) – заменю на:
Объявить члены как const и инициализировать их в списке инициализации конструктора, а методы, не изменяющие состояние, пометить const.
Объявить члены как const и инициализировать их в списке инициализации конструктора, а методы, не изменяющие состояние, пометить const. +

При реализации класса MovingAverage требуется эффективно перемещать большие массивы данных, избегая лишнего копирования. Какой конструктор и оператор необходимо определить в дополнение к классическому правилу трёх?
Конструктор перемещения и оператор перемещающего присваивания.
Конструктор копирования с передачей по значению.
Оператор присваивания с проверкой на самоприсваивание.
Виртуальный деструктор.
Конструктор перемещения и оператор перемещающего присваивания. +

В классе PidRegulator коэффициенты настройки хранятся как float. Необходимо, чтобы при создании объекта можно было указать их в любом порядке, используя именованные аргументы. Какой паттерн или идиома C++ позволяет реализовать такой интерфейс?
Идиома именованных параметров через цепочки методов (fluent interface) или использование структуры параметров.
Перегрузка конструктора для всех комбинаций.
Использование макросов.
Применение переменного числа аргументов.
Идиома именованных параметров через цепочки методов (fluent interface) или использование структуры параметров. +

В классе DataLogger требуется выполнить определённые действия при уничтожении объекта, например, закрыть файл журнала. В каком методе следует разместить этот код, чтобы он гарантированно вызывался при любом способе уничтожения (выход из области видимости, delete, исключение)?
В деструкторе.
В отдельном методе close(), который вызывается вручную.
В финализаторе (аналог finally).
В обработчике сигнала.
В деструкторе. +

В иерархии классов для работы с различными типами шин (I2C, SPI, UART) базовый класс Bus содержит виртуальный метод transfer(). В производном классе I2CBus этот метод переопределён. Какое ключевое слово следует использовать при переопределении, чтобы явно указать компилятору на намерение переопределить виртуальный метод базового класса и получить диагностику при ошибке в сигнатуре?
override
virtual
new (в C++/CLI)
overload
override +

В классе EventScheduler используется указатель на функцию обратного вызова для обработки событий. Чтобы сохранить типобезопасность и возможность использования методов объектов, что лучше использовать вместо обычного указателя на функцию?
Указатель на метод класса (void (T::*)(...)) или std::function с std::bind / лямбда.
Макрос с передачей имени функции.
Глобальная переменная с адресом функции.
Виртуальная функция, переопределяемая в наследниках.
Указатель на метод класса (void (T::*)(...)) или std::function с std::bind / лямбда. +

Вопрос
Класс – это
Выберите правильное  утверждение
Шаблон функции – это
Какой вид имеет  переопределение операций?
Полиморфизм реализован через  механизмы
Какими по умолчанию  объявляются методы класса?
Что определяет операция  sizeof(str)?
Задан массивint m[3][4] = {  { 1234}, { 5678}, { 9101112} }. Какое значение содержится в  элементе m[2][3]?
В каком случае подкласс  абстрактного класса сам не является абстрактным?
В каком классе находится  функция seekg(streampos)?
Что включает в себя алфавит  языка C++?
Проект так относится к  зданиюкак класс к …
Какое из следующих  утверждений правильное?
С каким модификатором доступа  должны быть описаны члены классачтобы к ним имели доступ только объекты  самого класса?
Какое из приведенных ниже  утверждений ЛОЖНО в применении к классам?
Если определена операция  вычитания для двух объектов класса Aа операция преобразования к int не  определеначто будет вызвано при A a1,a2,a3=5a3 = a1 – a2;?
Что используется для перевода  вывода на следующую строку?
Выберите верное утверждение
Сколько раз должен быть  указан тип данных для переменной?
Перечислите директивы  ограничения видимости в порядке «увеличения открытости»?
При открытии файла  выполняется следующее действиеКакое?
К целым типам данных в С++ не  относится
Какого типа переменные  следует использовать для представления значений количества какихлибо  предметов?
Какая из операций есть  логическое или?
Какая из операций есть логическое  и?
Какой оператор используется  для выбора одного из двух направлений дальнейшего хода программы?
Оператор switch в С++  используется для
Какой синтаксис в С++ имеет функция,  вычисляющая квадратный корень числа х?
Какой синтаксис в С++ имеет  функциявычисляющая квадрат числа х?
Всечто после символа // в  С++ – это …

Вопрос
Что  называется конструктором?
Объект –  это
Выберите  правильное объявление производного класса
Полиморфизм  в объектноориентированном программировании реализуется
Что  понимается под компонентом?
Чем механизм  шаблонов отличается от механизма перегрузки?
Какие операторы  можно использовать для выделения и освобождения динамической памяти?
Верно ли  такое объявление класса Name? – class Namepublicint Agecharname;};?
Сколько  операндов должна иметь операторная функция бинарного оператораобъявленная  как дружественная функция?
Что  описывает оператор typedef float (*ptr)(char);?
Могут ли  совпадать имена параметров метода и имена полей объекта?
Какое из  следующих утверждений верное?
Какое из  этих выражений вернет trueесли входное целое число v является степенью  двойки?
В чем  различия между delete и delete[]?
Какой символ  исполльзуется для умножения в C++?
Какой  диапазон значений имеет тип данных unsigned char?
Какой  оператор обеспечивает прекращение выполнения самого внутреннего из  объединяющих его операторов?
Оператор if  в С++ используется для
cin – это…

Вопрос
Возможность и способ  обращения производного класса к элементам базового определяется
Полиморфизм – это
Виртуальными называются  функции
Какая функция будет первой  вызванаесли функция запустила особую ситуациюне указанную в ее описании?
Какие функции называются  чисто виртуальными?
Какие библиотечные функции  можно использовать для выделения и освобождения динамической памяти?
Основные особенности  объективноориентированного языка (выберите наиболее точный ответ)?
Какое свойство ООП позволяет  скрыть от других частей программы детали реализации объекта?
С каким модификатором доступа  должны быть описаны члены классачтобы к ним имели доступ любые объекты?
Цикл For называется циклом …
Выберете однострочный  комментарий C++?
Какая разница между ++x и  x++?
Какой диапазон значений имеет  тип данных char?
Какой оператор предназначен  для организации выбора из множества различных вариантов?
Какая функция используется  для вывода данных?

Вопрос
Членами класса могут быть
В чем состоит преимущество  строго типизированных интерфейсов?
Оператором итерационного  цикла является оператор
Как называются операторы,  изменяющие состояние объекта?
Список параметров функции  описан как “void“. Что можно сказать о параметрах этой функции?
Что обычно содержит класс?
В какой секции можно объявить  конструктор класса?
Что такое массив?
Что называется прототипом  функции?
Какое ключевое слово языка  С++ используется для описания структурированного типа данныхвсе элементы  которого в памяти начинаются с одного байта?
Какой диапазон значений имеет  тип данных short?
Знаком &&  обозначается в С++ логическая операция
Для чего предназначена  функция sqrt(nв С++ ?
Для чего предназначена  функция exp(nв С++ ?

Вопрос
Стиль ООП рекомендует  объявлять поля объектов
Какое выражение верно для  переменных в C++?
Переменную какого типа можно  использовать в качестве селектора в операторе switchcase?
Какой диапазон значений имеет  тип int для 32разрядных вычислительных систем?
Какой размер в байтах имеет  переменная вещественного типа float?
Логическое выражение может  возвращать результат типа
В С++ к плавающим типам  данных относится
Для чего предназначена  функция cos(nв С++ ?
Укажите имя основной  программы в С++.

Другие тесты Синергии, МТИ, МОСАП:

Управление качеством проекта

Управление проектами в государственном и муниципальном управлении

Высшая математика

Методология проектирования промышленных изделий

Насосы, вентиляторы и компрессоры в системах теплогазоснабжения и вентиляции