Вопросы к экзамену
CMake. Основные понятия. Принцип работы.
Указатели и ссылки. Представление в памяти. Назначение. Рекомендации по использованию.
Классы. Инвариант. Инкапсуляция в языках C и C++.
Правило 5. Ссылки. move-семантика.
Обработка ошибок. Исключения.
Наследование. Полиморфизм подтипов. Динамическое связывание.
Перегрузка операторов. Мотивация. ADL.
Операторы сравнения в C++17. Оператор трехстороннего сравнения в C++20.
Функциональные объекты. Мотивация. Лямбда-функции. Захват объектов.
Шаблоны. Статический полиморфизм. Инстанцирование.
Жизненный цикл объекта. Оператор new.
Итераторы. Мотивация. Операции и поведение. Категории итераторов.
Умные указатели. Мотивация, внутреннее устройство.
Стандартная библиотека C++. Контейнеры. Алгоритмы.
Процесс проведения экзамена
В билете три вопроса: два вопроса из списка выше, плюс задача.
В назначенный день приходите в аудиторию, получаете билет, плюс дополнительные вопросы, если есть долги по итогам двух семестров.
На подготовку ~40 минут.
Во время подготовки лучше всего составить план ответа и подготовить примеры кода, чтобы сэкономить время. Распространенная ошибка: законспектировать/списать дословный ответ и читать с листа, такой формат ответа является признаком непонимания материала.
Ответ начинаем с доп. вопросов. Неответ или неудовлетворительный ответ на любой доп. вопрос — неуд за экзамен.
После ответов на вопросы получаете задачу, решение которой нужно написать в live-режиме на листе. Пример задачи: «Реализовать шаблон функции find и написать пример использования». В качестве задачи может быть реализация части шаблонного типа или несложного шаблона алгоритма. Верхней границей сложности считаем обход графа.