wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

квиз

Total questions: 21

Worksheet time: 16mins

Name
Class
Date
1.

Какое из утверждений про ссылки и указатели неверно?

a)

`int& r = x;` — ссылка на `x`

b)

`int* p = &x;` — указатель на `x`

c)

Ссылку можно переназначить после инициализации

d)

Указатель может хранить `nullptr`

2.

Что инвалидирует итераторы `std::vector<T>`? (может быть несколько ответов)

a)

`v.push_back(x)` при недостаточном `capacity`

b)

`v.reserve(new_cap)` при `new_cap > capacity`

c)

`v.clear()`

d)

`v[ i ] = value`

3.

Что такое чисто виртуальная функция?

a)

`virtual void f() { … }`

b)

`virtual void f() = 0;`

c)

`void f() const;`

d)

`virtual void f() override;`

4.

Когда нужен виртуальный деструктор в базовом классе?

a)

Всегда, если есть виртуальные функции

b)

Только если планируется удаление через `Base*`

c)

Никогда, если нет данных

d)

Если класс абстрактный

5.

Какие виды полиморфизма есть в C++?

a)

Параметрический (шаблоны)

b)

Ad-hoc (перегрузка)

c)

Subtype (виртуальные функции)

d)

Duck typing

6.

В чём проблема “алмаза” (Diamond) при множественном наследовании?

a)

Несколько базовых объектов одного типа

b)

Неоднозначность доступа к членам

c)

Отсутствие виртуальных функций

d)

Утечка памяти

7.

Как работает vtable (таблица виртуальных функций)?

a)

Один на объект

b)

Один на класс

c)

Содержит указатели на виртуальные методы

d)

Меняется в рантайме при каждом вызове

8.

Чем отличается `unique_ptr<T>` от `shared_ptr<T>`?

a)

`unique_ptr` нельзя копировать

b)

`unique_ptr` нельзя перемещать

c)

`shared_ptr` считает ссылки

d)

`shared_ptr` всегда медленнее

9.

Зачем нужен `weak_ptr<T>`?

a)

Для разделяемого владения

b)

Чтобы разорвать циклические ссылки

c)

Чтобы хранить указатель без увеличения счётчика

d)

Для передачи владения

10.

Почему `make_unique<T>()` предпочитают прямому `new T`?

a)

Безопасность при исключениях

b)

Меньше кода

c)

Всегда эффективнее

d)

Создает указатель на несколько объектов сразу

11.

Как передать `unique_ptr<T>` в функцию, чтобы она взяла владение?

a)

`void f(unique_ptr<T>& p); f(ptr);`

b)

`void f(unique_ptr<T> p); f(move(ptr));`

c)

`void f(const unique_ptr<T>& p); f(ptr);`

d)

`void f(unique_ptr<T>&& p); f(move(ptr));`

12.

При каком порядке `catch` блоков правильно обрабатывать исключения?

a)

От специфичных к общим

b)

От общих к специфичным

c)

Любой

d)

С `catch(...)` последним

13.

Какой из компараторов для `std::priority_queue<Task, …>` задаёт приоритет по убыванию `priority`, а при равном — по возрастанию `duration`?

a)

`a.priority < b.priority`

b)

`a.priority > b.priority`

c)

`a.duration < b.duration`

d)

`a.duration > b.duration`

14.

Какие утверждения про ссылки в C++ верны?

a)

Ссылку нужно инициализировать при объявлении

b)

Ссылка не может быть переназначена на другой объект после инициализации

c)

Ссылку можно инициализировать константой

d)

Ссылка может быть равна nullptr

15.

Какие утверждения про указатели в C++ неверны?

a)

Можно объявить указатель и сразу инициализировать его значением nullptr

b)

Разыменование указателя всегда безопасно без дополнительных проверок

c)

Можно иметь указатель на ссылку

d)

Арифметика указателей допустима только для элементов одного массива

16.

Какие утверждения про шаблоны в C++ верны?

a)

Частичная специализация доступна для шаблонов функций

b)

Частичная специализация доступна только для шаблонов классов

c)

Шаблон функции можно перегрузить

d)

Полная специализация позволяет задать альтернативную реализацию для конкретного набора параметров

17.

В чём разница между указателем и ссылкой?

a)

Указатель может быть `nullptr`, ссылка — нет

b)

Ссылку можно переназначить после инициализации

c)

Указатель — самостоятельная переменная, ссылка — псевдоним

d)

Ссылку можно разыменовать через `*`, указатель — нет

18.

Чем отличается `std::vector` от `std::deque`?

a)

`vector` гарантирует стабильность адресов при `push_front()`

b)

`deque` поддерживает эффективное `push_front()`

c)

`vector` хранит данные кусочно-непрерывно

d)

`deque` — сплошной массив в куче

19.

Какую категорию итераторов поддерживает только `std::vector`?

a)

Input Iterator

b)

Forward Iterator

c)

Bidirectional Iterator

d)

Random Access Iterator

20.

Что можно сделать с `unique_ptr<T>`?

a)

Скопировать

b)

Переместить

c)

Передать по значению в функцию, берущую владение

d)

Извлечь `use_count()`

21.

Когда нужен `virtual` деструктор?

a)

Если класс содержит виртуальные методы

b)

Если объекты удаляются через указатель на базовый

c)

Всегда, даже без наследования

d)

Только в шаблонных классах