Экзаменационные вопросы. Май 2015

  1. Шаблоны (templates). Зачем они нужны? Шаблоны функций и классов. Инстанцирование шаблонов.
  2. Полная и частичная специализация. Шаблоны методов.
  3. Классы свойств и значений. Классы стратегий.
  4. Операции из <functional>. std::bind. Лямбда-функции.
  5. Принцип SFINAE. Метапрограммирование.
  6. Конструктор копирования. Семантика перемещения и конструктор перемещения. Перегрузка оператора присваивания. Операции по умолчанию и их удаление.
  7. std::initializer_list.
  8. Перегрузка операторов. Оператор-член класса и оператор-глобальная функция. Операторы и пространства имён.
  9. Перегрузка << и >> для ввода-вывода.
  10. Перегрузка логических операторов и свойство «короткого замыкания».
  11. Перегрузка операторов инкремента и декремента.
  12. Перегрузка оператора индекса [].
  13. Перегрузка оператора вызова функции ().
  14. Перегрузка операторов, связанных с указателями: &, * и ->.
  15. Оператор преобразования типа. Явное и неявное преобразование. Ключевое слово explicit.
  16. Перегрузка операторов new и delete. Placement new.
  17. Константы пользовательских типов (user-defined literals).
  18. Принцип Copy-on-Write.
  19. Паттерны проектирования. Почему они полезны?
  20. Порождающие паттерны. Singleton, Builder, Factory Method, Prototype.
  21. Поведенческие паттерны. Iterator, Command, Template Method, State, Strategy.
  22. Структурные паттерны. Adapter, Decorator, Proxy, Facade, Composite.
  23. Паттерны Object Pool, Null Object, Servant. Модель MVC. Модель цикла обработки событий (Event Loop).
  24. Работа с библиотеками в C++. Структурирование исходного кода в больших проектах.
  25. Динамические объектно-ориентированные языки (на примере Smalltalk, Javascript и др.). Динамическая типизация. Динамическая обработка сообщений.
  26. Сборка мусора. Преимущества и недостатки. Алгоритм Mark-and-Sweep и его модификации. Алгоритм подсчёта ссылок (Reference counting). Поколения объектов.
  27. Недостатки ООП.