====== Список вопросов ====== - Что такое парадигма программирования? - Что такое идиома программирования? - Какую парадигму реализует язык С? - Какую парадигму реализует язык С++? - Язык С++ считается низкоуровневым или высокоуровневым? - Что такое ООП? - Что подразумевает абстракция с точки зрения ООП? - Что такое инкапсуляция? - Что такое наследование? - Что такое полиморфизм? - Какие существуют виды полиморфизма? - В чем отличие компилируемых и интерпретируемых языков программирования? - Что такое статическая и динамическая типизация? - Что такое слабая и сильная типизация? - Для чего и на какие файлы производится разбиение программы на С++? - Что такое 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-диаграмма (можно не точную), достоинства и недостатки. ~~DISCUSSION~~