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