Вопросы к экзамену

  1. CMake. Основные понятия. Принцип работы.

  2. Указатели и ссылки. Представление в памяти. Назначение. Рекомендации по использованию.

  3. Классы. Инвариант. Инкапсуляция в языках C и C++.

  4. Правило 5. Ссылки. move-семантика.

  5. Обработка ошибок. Исключения.

  6. Наследование. Полиморфизм подтипов. Динамическое связывание.

  7. Перегрузка операторов. Мотивация. ADL.

  8. Операторы сравнения в C++17. Оператор трехстороннего сравнения в C++20.

  9. Функциональные объекты. Мотивация. Лямбда-функции. Захват объектов.

  10. Шаблоны. Статический полиморфизм. Инстанцирование.

  11. Жизненный цикл объекта. Оператор new.

  12. Итераторы. Мотивация. Операции и поведение. Категории итераторов.

  13. Умные указатели. Мотивация, внутреннее устройство.

  14. Стандартная библиотека C++. Контейнеры. Алгоритмы.

Процесс проведения экзамена

В билете три вопроса: два вопроса из списка выше, плюс задача.

  1. В назначенный день приходите в аудиторию, получаете билет, плюс дополнительные вопросы, если есть долги по итогам двух семестров.

  2. На подготовку ~40 минут.

  3. Во время подготовки лучше всего составить план ответа и подготовить примеры кода, чтобы сэкономить время. Распространенная ошибка: законспектировать/списать дословный ответ и читать с листа, такой формат ответа является признаком непонимания материала.

  4. Ответ начинаем с доп. вопросов. Неответ или неудовлетворительный ответ на любой доп. вопрос — неуд за экзамен.

  5. После ответов на вопросы получаете задачу, решение которой нужно написать в live-режиме на листе. Пример задачи: «Реализовать шаблон функции find и написать пример использования». В качестве задачи может быть реализация части шаблонного типа или несложного шаблона алгоритма. Верхней границей сложности считаем обход графа.