Список вопросов

Что такое парадигма программирования?

Что такое идиома программирования?

Какую парадигму реализует язык С?

Какую парадигму реализует язык С++?

Язык С++ считается низкоуровневым или высокоуровневым?

Что такое ООП?

Что подразумевает абстракция с точки зрения ООП?

Что такое инкапсуляция?

Что такое наследование?

Что такое полиморфизм?

Какие существуют виды полиморфизма?

В чем отличие компилируемых и интерпретируемых языков программирования?

Что такое статическая и динамическая типизация?

Что такое слабая и сильная типизация?

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

Что такое union в C++, когда оно может быть применимо?

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

В чем отличие ссылки от указателя?

Что такое указатель на функцию и как он может быть использован?

Какие способы группировки данных в С++ вам известны?

Для чего предназначены структуры?

Где может быть определена структура или класс?

Допустимо ли использование указателей/ссылок/массивов структур?

Какие существуют способы передачи параметров в функцию?

Для чего предназначены классы, в чем их отличие от структур?

Что такое инвариант класса?

В чем отличие функций от методов?

В каких случаях используются значения по умолчанию в функциях?

Что такое публичный интерфейс?

Какие существуют модификаторы доступа, для чего они используются?

Что такое геттеры и сеттеры?

Что такое inline-функции?

Где применяется неявный указатель this?

Для чего используется ключевое слово const?

Что такое константные ссылки/указатели, указатели/ссылки на константу?

В чем отличие синтаксической и логической константности методов?

Для чего используется ключевое слово mutable?

Что такое конструктор?

В каких случаях используется перегрузка конструкторов?

Какую цель может преследовать создание приватного конструктора?

Каким образом и в какой последовательности происходит инициализация полей объекта?

Для чего используется ключевое слово explicit?

В чем заключается предназначение конструктора по умолчанию?

Что такое деструктор, для чего он используется?

Каков порядок вызова деструкторов при разрушении объекта?

В какой момент вызывается деструктор объекта?

Каково время жизни объекта?

Зачем нужен виртуальный деструктор?

Как осуществляется работа с динамической памятью в С/С++?

В чем различие delete и delete[]?

Что подразумевается под идиомой RAII?

Перечислите основные подходы к обработке ошибок.

Для чего предназначен механизм обработки исключительных ситуаций?

Что такое исключение?

Какие типы данных допустимы для использования в качестве объектов exception?

Как происходит возбуждение исключения?

Кто отвечает за обработку возникших исключительных ситуаций?

Что такое раскрутка стека?

Где и для чего используется спецификатор throw?

Где и для чего используется спецификатор noexcept?

К чему приводит вызов throw без аргументов?

Что такое exception-safe операция?

Что такое делегирующие конструкторы?

Что вы можете сказать о генерации исключений в конструкторе/деструкторе?

Что такое ассоциация?

Что такое композиция и агрегация, чем они отличаются?

Время жизни агрегируемого объекта меньше времени жизни агрегата?

Какие классы называются дружественными, для каких целей используется это отношение?

В каком случае можно говорить об отношение «реализация»?

Как представлены объекты в памяти при использовании механизма наследования?

Какие существуют типы наследования, чем они различаются?

Наследуются ли конструкторы и деструкторы?

Наследуются ли приватные поля базового класса?

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

Как осуществить вызов базовой реализации функции при её переопределении в дочернем классе?

Как связаны виртуальные функции и полиморфизм?

Что такое переопределение функций?

Работает ли переопределение для приватных функций?

Что такое таблица виртуальных функций?

Как себя ведут виртуальные функции в конструкторе и деструкторе?

В каких случаях допустимо приведение указателей/ссылок на дочерний класс к базовому?

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

Какой класс называется абстрактным?

Как в С++ реализуются интерфейсы?

Что такое перегрузка функций?

Как ведет себя перегрузка при наследовании?

Опишите процесс выбора функции среди перегруженных.

Чем отличаются механизмы раннего и позднего связывания?

Что такое множественное наследование?

Что такое ромбовидное наследование?

Какой существует механизм разрешения проблемы ромбовидного наследования в С++?

Как реализовано приведение типов в Си?

Что такое статическое приведение типов?

Что такое динамическое приведение типов?

Что такое константное приведение типов?

Что такое интерпретирующее преобразование типов?

Как работает преобразование в Си-стиле на языке С++?

Что такое умные указатели?

Опишите принцип работы boost::scoped_ptr.

Опишите принцип работы std::auto_ptr.

Опишите принцип работы std::shared_ptr.

Опишите принцип работы std::weak_ptr.

В чем особенности работы умных указателей с массивами?

Какие группы операторов в С++ вам известны?

Что такое перегрузка операторов, для чего она используется?

Для каких типов допустима перегрузка операторов?

Где может быть объявлена перегрузка оператора?

Какие особенности у перегрузки операторов инкремента и декремента?

Как ведут себя операторы с особым порядком вычисления при перегрузке?

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

Как защитить объект от копирования?

Для чего предназначен механизм RTTI, как его использовать?

Что такое шаблоны классов?

Что такое шаблоны функций?

Как осуществляется вывод аргументов шаблона?

Что такое специализация шаблонов?

Что такое шаблон проектирования?

+ Вопросы по каждому из 23 шаблонов проектирования: название, область применения, решаемая задача, uml-диаграмма (можно не точную), достоинства и недостатки.