Skip to content

Latest commit

 

History

History
997 lines (983 loc) · 96 KB

RSDN.md

File metadata and controls

997 lines (983 loc) · 96 KB

RSDN [todo]

  1. Что определяет класс? Чем обличается класс от объекта?
  2. Можно ли объявлять массив объектов? А массив классов?
  3. Разрешается ли объявлять указатель на объект? А указатель на класс?
  4. Допускается ли передавать объекты в качестве параметров, и какими способами? А возвращать как результат?
  5. Как называется использование объекта одного класса в качестве поля другого класса?
  6. Является ли структура классом? Чем класс отличается от структуры?
  7. Какие ключевые слова в С++ обозначают класс?
  8. Объясните принцип инкапсуляции.
  9. Что такое композиция?
  10. Для чего используются ключевые слова public и private?
  11. Можно ли использовать ключевые слова public и private в структуре?
  12. Существуют ли ограничения на использование public и private в классе? А в структуре?
  13. Обязательно ли делать поля класса приватными?
  14. Что такое метод? Как вызывается метод?
  15. Может ли метод быть приватный?
  16. Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?
  17. Можно в методах присваивать параметрам значения по умолчанию?
  18. Что обозначается ключевым словом this?
  19. Зачем нужны константные методы? Чем отличается определение константного метода от обычного?
  20. Может ли константный метод вызываться для объектов-переменных? А обычный метод — для объектов-констант?
  21. Объясните принцип полиморфизма.
  22. Сколько места в памяти занимает объект класса? Как это узнать?
  23. Каков размер «пустого» объекта?
  24. Влияют ли методы на размер объекта?
  25. Одинаков ли размер класса и аналогичной структуры?
  26. Какие операции нельзя перегружать? Как вы думаете, почему?
  27. Можно ли перегружать операции для встроенных типов данных?
  28. Можно ли при перегрузке изменить приоритет операции?
  29. Можно ли определить новую операцию?
  30. Перечислите особенности перегрузки операций как методов класса. Чем отличается перегрузка внешним образом от перегрузки как метода класса?
  31. Какой результат должны возвращать операции с присваиванием?
  32. Как различаются перегруженная префиксная и постфиксная операции инкремента и декремента?
  33. Что означает выражение *this? В каких случаях оно используется?
  34. Какие операции не рекомендуется перегружать как методы класса? Почему?
  35. Какие операции разрешается перегружать только как методы класса?
  36. Дайте определение дружественной функции. Как объявляется дружественная функция? А как определяется?
  37. Дайте определение конструктора. Каково назначение конструктора? Перечислите отличия конструктора от метода.
  38. Сколько конструкторов может быть в классе? Допускается ли перегрузка конструкторов? Какие виды конструкторов создаются по умолчанию?
  39. Может ли конструктор быть приватным? Какие последствия влечет за собой объявление конструктора приватным?
  40. Приведите несколько случаев, когда конструктор вызывается неявно.
  41. Как проинициализировать динамическую переменную?
  42. Как объявить константу в классе? Можно ли объявить дробную константу?
  43. Каким образом разрешается инициализировать константные поля в классе?
  44. В каком порядке инициализируются поля в классе? Совпадает ли этот порядок с порядком перечисления инициализаторов в списке инициализации конструктора?
  45. Какие конструкции С++ разрешается использовать в списке инициализации качестве инициализирующих выражений?
  46. Какой вид конструктора фактически является конструктором преобразования типов?
  47. Для чего нужны функции преобразования? Как объявить такую функцию в классе?
  48. Как запретить неявное преобразование типа, выполняемое конструктором инициализации?
  49. Какие проблемы могут возникнуть при определении функций преобразования?
  50. Для чего служит ключевое слово explicit?
  51. Влияет ли наличие целочисленных констант-полей на размер класса?
  52. Разрешается ли объявлять массив в качестве поля класса. Как присвоить элементам массива начальные значения?
  53. Сколько операндов имеет операция индексирования []? Какой вид результата должна возвращать эта операция?
  54. Для чего нужны статические поля в классе? Как они определяются?
  55. Как объявить в классе и проинициализировать статический константный массив?
  56. Что такое выравнивание и от чего оно зависит? Влияет ли выравнивание на размер класса?
  57. Дайте определение контейнера.
  58. Какие виды встроенных контейнеров в С++ вы знаете?
  59. Какие виды доступа к элементам контейнера вам известны?
  60. Чем отличается прямой доступ от ассоциативного?
  61. Перечислите операции, которые обычно реализуются для последовательного доступа к элементам контейнера.
  62. Дайте определение итератора.
  63. Можно ли реализовать последовательный доступ без итератора? В чем преимущества реализации последовательного доступа с помощью итератора?
  64. Что играет роль итератора для массивов С++?
  65. Что такое деструктор? Может ли деструктор иметь параметры?
  66. Почему для классов-контейнеров деструктор надо писать явным образом?
  67. Допускается ли перегрузка деструкторов?
  68. Что такое «глубокое копирование» и когда в нем возникает необходимость?
  69. Какое копирование осуществляет стандартный конструктор копирования?
  70. Чем отличается копирование от присваивания?
  71. Объясните, почему в операции присваивания требуется проверка присваивания самому себе?
  72. Можно ли в качестве операции индексирования использовать операцию вызова функции ()? В чем ее преимущества перед операцией []?
  73. Почему необходимо писать два определения операции индексирования? Чем они отличаются?
  74. Дайте определение вложенного класса.
  75. Можно ли класс-итератор реализовать как внешний класс? А как вложенный? В чем отличия этих методов реализации?
  76. Может ли объемлющий класс иметь неограниченный доступ к элементам вложенного класса? А вложенный класс — к элементам объемлющего?
  77. Ограничена ли глубина вложенности классов?
  78. Можно ли определить вложенный класс внешним образом? Зачем это может понадобиться?
  79. Каким образом вложенный класс может использовать методы объемлющего класса? А объемлющий — методы вложенного?
  80. Что такое «запредельный» элемент, какую роль он играет в контейнерах?
  81. Объясните, по каким причинам трудно написать универсальный контейнер, элементы которого могут иметь произвольный тип.
  82. Назовите ключевые слова С++, которые используются для обработки исключений.
  83. Исключение — это:
  1. событие;
  2. ситуация;
  3. объект;
  4. ошибка в программе;
  5. прерывание;
  1. Каким образом исключение генерируется?
  2. Каковы функции контролируемого блока?
  3. Что обозначается ключевым словом catch?
  1. контролируемый блок;
  2. блок обработки исключения;
  3. секция-ловушка;
  4. генератор исключения;
  5. обработчик прерывания;
  1. Какого типа может быть исключение?

  2. Сколько параметров разрешается писать в заголовке секции-ловушки?

  3. Какими способами разрешается передавать исключение в блок обработки?

  4. Объясните, каким образом преодолеть ограничение на передачу единственного параметра в блок обработки.

  5. Почему нельзя выполнять преобразования типов исключений при передаче в секцию-ловушку?

  6. Напишите конструкцию, которая позволяет перехватить любое исключение.

  7. Могут ли контролируемые блоки быть вложенными?

  8. Зачем нужен «контролируемый блок-функция» и чем он отличается от обычного контролируемого блока?

  9. Перечислите возможные способы выхода из блока обработки.

  10. Каким образом исключение «передать дальше»?

  11. Сколько секций-ловушек должно быть задано в контролируемом блоке?

  12. Что такое «спецификация исключений»?

  13. Что происходит, если функция нарушает спецификацию исключений?

  14. Учитывается ли спецификация исключений при перегрузке функций?

  15. Что такое «иерархия исключений»?

  16. Существуют ли стандартные исключения? Назовите два-три типа стандартных исключений.

  17. Поясните «взаимоотношение» исключений и деструкторов.

  18. Объясните, зачем может понадобиться подмена стандартных функций завершения.

  19. Какие виды нестандартных исключений вы знаете?

  20. В чем отличие механизма структурной обработки исключений Windows от стандартного механизма?

  21. Какие две роли выполняет наследование?

  22. Какие виды наследования возможны в С++?

  23. Чем отличается модификатор доступа protected от модификаторов private и public?

  24. Чем открытое наследование отличается от закрытого и защищенного?

  25. Какие функции не наследуются?

  26. Сформулируйте правила написания конструкторов в производном классе.

  27. Каков порядок вызова конструкторов? А деструкторов?

  28. Можно ли в производном классе объявлять новые поля? А методы?

  29. Если имя нового поля совпадает с именем унаследованного, то каким образом разрешить конфликт имен?

  30. Что происходит, если имя метода-наследника совпадает с именем базового метода?

  31. Сформулируйте принцип подстановки.

  32. Когда выполняется понижающее приведение типов?

  33. Объясните, что такое «срезка» или «расщепление».

  34. Объясните, зачем нужны виртуальные функции.

  35. Что такое связывание?

  36. Чем «раннее» связывание отличается от «позднего»?

  37. Какие два вида полиморфизма реализованы в С++?

  38. Дайте определение полиморфного класса.

  39. Может ли виртуальная функция быть дружественной функцией класса?

  40. Наследуются ли виртуальные функции?

  41. Каковы особенности вызова виртуальных функций в конструкторах и деструкторах?

  42. Можно ли сделать виртуальной перегруженную операцию, например, сложение?

  43. Может ли конструктор быть виртуальным? А деструктор?

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

  45. Как объявляется «чистая» виртуальная функция?

  46. Дайте определение абстрактного класса.

  47. Наследуются ли чистые виртуальные функции?

  48. Можно ли объявить деструктор чисто виртуальным?

  49. Чем отличается чистый виртуальный деструктор от чистой виртуальной функции?

  50. Зачем требуется определение чистого виртуального деструктора?

  51. Наследуется ли определение чистой виртуальной функции?

  52. Приведите классификацию целей наследования.

  53. Объясните разницу наследования интерфейса от наследования реализации.

  54. Назовите причины, требующие разделения программ на части.

  55. Дайте определение термина «единица трансляции»?

  56. Чем отличается файл с исходным текстом от единицы трансляции?

  57. Существуют ли в С++ конструкции, позволяющие идентифицировать отдельный модуль?

  58. Какие способы сборки программы вы можете назвать?

  59. Что такое «объектный модуль»? Программа, которая «собирает» объектные модули в программу, называется _____________ ?

  60. В чем заключается отличие аргумента «файл» от <файл> в директиве #include?

  61. Что такое ODR?

  62. Объясните, что такое «страж» включения и зачем он нужен.

  63. Является ли интерфейс класса его определением?

  64. Сколько определений класса может быть в единице трансляции?

  65. Сколько определений класса может быть в многофайловой программе?

  66. Чем отличаются стандартные заголовки , <string.h> и ?

  67. Объясните суть идиомы Pimpl.

  68. Что такое делегирование и как его можно использовать для повышения степени инкапсуляции?

  69. Каким образом глобальную переменную, определенную в одной единице трансляции, сделать доступной в другой единице трансляции? А константу?

  70. Можно ли использовать слово extern при объявлении функций?

  71. Как локализовать объявление функции в файле?

  72. Чем отличается «внешнее» связывание от «внутреннего» связывания?

  73. Что такое «спецификации компоновки»?

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

  75. Какие области видимости имен вы знаете?

  76. Для чего используются пространства имен?

  77. Чем отличаются именованные и неименованные пространства имен?

  78. Могут ли пространства имен быть вложенными?

  79. Для чего применяются алиасы пространства имен?

  80. Как сделать члены пространства имен доступными в нескольких (в пределе — во всех) файлах программного проекта?

  81. Объясните разницу между статической и динамической инициализацией.

  82. В чем состоит проблема инициализации глобальных статических переменных?

  83. Какие элементы класса можно объявлять статическими?

  84. Можно ли объявить в классе статическую константу? А константный статический массив?

  85. А какие статические поля можно инициализировать непосредственно в классе?

  86. Как определяются статические поля? В какой момент работы программы выполняется инициализация статических полей?

  87. Сколько места в классе занимают статические поля ?

  88. Чем отличается статический метод от обычного?

  89. Какие методы класса не могут быть статическими?

  90. Какие применения статических полей вы можете привести? А каким образом применяются статические методы?

  91. Приведите структуру и принцип действия паттерна Singleton.

  92. Для чего предназначены шаблоны?

  93. Какие виды шаблонов в С++ вы знаете?

  94. Объясните термин «инстанцирование шаблона».

  95. В чем разница между определением и объявлением шаблона?

  96. Объясните назначение ключевого слова typename.

  97. Какие виды параметров разрешается задавать в шаблоне класса? А в шаблоне функции?

  98. Можно ли параметрам шаблона присваивать значения по умолчанию?

  99. Может ли параметром шаблона быть другой шаблон? Каковы особенности объявления параметра-шаблона?

  100. Что такое специализация шаблона? Объясните разницу между полной и частичной специализацией.

  101. Разрешается ли специализировать шаблон функции?

  102. Может ли класс-шаблон быть вложенным в другой класс-шаблон? А в обычный класс?

  103. Можно ли объявить в классе шаблонный метод? А шаблонный конструктор?

  104. Можно ли перегружать функцию-шаблон?

  105. Какие параметры функции-шаблона выводятся автоматически?

  106. Может ли шаблон класса быть наследником обычного класса? А обычный класс от шаблона?

  107. Объясните, что такое класс свойств (класс трактовок).

  108. Каким образом можно использовать возможность наследования обычного класса от шаблона?

  109. Может ли шаблонный конструктор быть конструктором по умолчанию?

  110. Для чего применяются директивы явного инстанцирования?

  111. Объясните, в чем состоят проблемы, возникающие при разделении шаблонного класса на интерфейс и реализацию?

  112. Что такое «модель явного инстанцирования» и как она работает?

  113. Может ли шаблонный класс иметь «друзей»?

  114. Какие проблемы возникают при объявлении дружественной функции для класса-шаблона?

  115. Разрешается ли определять в классе-шаблоне статические поля? А статические методы?

  116. Что такое «инициализация нулем»?

  117. Что является единицей памяти в С++? Какие требования к размеру единицы памяти прописаны в стандарте С++?

  118. В каких единицах выдает результат операция sizeof? Какие типы данных имеют размер 1?

  119. Какие три вида памяти входят в модель памяти С++?

  120. Сколько видов динамической памяти обеспечивает С++?

  121. Какие функции для работы с динамической памятью достались С++ по наследству от С? В какую библиотеку они включены?

  122. Какие функции выделяют память, и с помощью каких функций память освобождается?

  123. Какое важное отличие имеет функция calloc() от функции malloc()?

  124. Какие действия выполняют функции выделения памяти, если память не может быть выделена?

  125. Зависит ли объем выделенной памяти от типа указателя? Влияет ли выравнивание на объем выделяемой динамической памяти?

  126. Можно ли с помощью функции realloc() уменьшить объем выделенной памяти?

  127. Что произойдет, если функции free() передать в качестве аргумента нулевой указатель?

  128. В чем главное отличие объектно-ориентированного механизма new/delete от механизма malloc()/free()?

  129. Сколько существует форм new/delete? В чем их отличие?

  130. Какие типы являются POD-типами? Чем отличается работа механизма new/delete с POD-объектами и nonPOD-объектами?

  131. Какие функции выполняет обработчик new?

  132. Можно ли реализовать собственный обработчик new и «прицепить» его к механизму new/delete?

  133. В чем главное отличие объединения от других видов классов С++?

  134. Может ли объединение участвовать в иерархии наследования?

  135. Разрешается ли определять для объединения конструкторы и деструктор? А виртуальные функции?

  136. В чем похожи и чем отличаются объединение и размещающий new?

  137. Объясните, почему при использовании размещающего new нужно явным образом вызывать деструктор?

  138. Зачем нужны интеллектуальные указатели?

  139. Что такое «стратегия владения»? Сколько стратегий владения вы знаете?

  140. Какой интеллектуальный указатель реализован в стандартной библиотеке STL, и какую стратегию владения он реализует?

  141. Объясните, в чем преимущества и недостатки интеллектуальных указателей со счетчиком ссылок.

  142. Разрешается ли перегружать new и delete и какими способами?

  143. Опишите схему функции, перегружающей глобальную функцию new.

  144. Отличается ли реализация перегруженной функции new для массивов от реализации «обычной» функции new()?

  145. Как вы думаете, почему функции new/delete, перегружаемые для класса, являются статическими?

  146. Зачем при перегрузке new/delete для класса нужно проверять размер запрашиваемой памяти?

  147. Объясните, чем определяется «динамичность» контейнеров?

  148. Что такое «стратегия распределения памяти», и какие стратегии выделения памяти вы знаете?

  149. Рассмотрите следующую стратегию распределения памяти: память выделяется для нескольких элементов блоками фиксированной длины, но блоки связываются в список. Для какого вида контейнера можно использовать такую стратегию?

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

  151. В чем заключаются сложности использования операции индексирования [] для доступа к элементам двумерного массива?

  152. Каковы способы реализации операций с контейнерами?

  153. Какую конструкцию можно назвать «обобщенный алгоритм»?

  154. Каким образом объявить указатель на метод?

  155. Объясните разницу между указателем на функцию и указателем на метод.

  156. Каким образом получить адрес метода?

  157. Можно ли указателю на функцию присваивать адрес метода?

  158. Какие операции определены в С++ для косвенного вызова метода через указатель?

  159. Что такое «функтор»? Приведите пример функционального класса.

  160. Какими способами функтор вызывается?

  161. Можно ли использовать наследование при разработке функторов?

  162. Разрешается ли операцию вызова функции () определять как виртуальный метод? А как статический?

  163. В чем преимущества функторов перед указателями на функции?

  164. Объясните, зачем нужны адаптеры функторов? Какие виды адаптеров вы знаете?

  165. Как используются классы свойств при разработке функторов?

  166. Объясните, что такое «композиция» и приведите примеры?

  167. Объясните, чем отличается множественное наследование от простого?

  168. Приведите структуру и принцип действия паттерна Adapter.

  169. Сформулируйте основную проблему множественного наследования.

  170. Выполняется ли принцип подстановки при открытом множественном наследовании?

  171. Что такое виртуальное наследование? Каковы его преимущества и недостатки по сравнению с обычным наследованием?

  172. Может ли виртуальное наследование быть одиночным?

  173. Влияет ли виртуальное наследование на размер класса?

  174. Объясните, каким образом с помощью виртуального наследования можно вообще запретить наследование.

  175. Какие средства С++ составляют RTTI?

  176. Объясните разницу между повышающим, понижающим и перекрестным приведением.

  177. Какими свойствами должен обладать класс, чтобы с ним работал механизм RTTI?

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

  179. Какие исключения связаны с механизмом RTTI?

  180. Что такое «поток» — дайте определение.

  181. Как классифицируются потоки, реализованые в библиотеках ввода/вывода С++?

  182. Что такое буферизация и зачем она нужна?

  183. Какие библиотеки ввода/вывода реализованы в С++ и чем они отличаются?

  184. Перечислите стандартные потоки и объясните их назначение.

  185. Зачем нужен процесс форматирования и когда он выполняется?

  186. Что такое «форматная строка», и в каких функциях она используется?

  187. Объясните назначение элементов спецификатора формата.

  188. Сколько спецификаторов формата может быть в форматной строке?

  189. Какой из элементов спецификатора формата не является умалчиваемым?

  190. Перечислите несколько известных вам обозначений типов в спецификаторе формата, и укажите их назначение.

  191. Сколько модификаторов типа вы знаете, и какую роль модификатор типа играет в спецификаторе формата?

  192. С помощью какого флага можно выровнять выводимое значение влево? А каким образом вывести ведущие нули?

  193. Какое действие оказывают на выводимую строку ширина, точнойть и флаги в спецификаторе формата?

  194. Для чего в спецификаторе формата может использоваться символ звездочка («*»)? Чем отличается действие этого символа при воде и при выводе?

  195. Каковы особенности ввода строк?

  196. Каким образом ограничить набор вводимых символов при вводе?

  197. Что является главной проблемой при использовании форматного ввода/вывода из библиотеки ?

  198. Объясните, для чего нужны строковые потоки. Почему строковые потоки —всегда форматируемые?

  199. С помощью каких функций выполняется работа со строковыми потоками?

  200. Можно ли использовать тип string (и каким образом) со строковыми потоками?

  201. Объясните, в чем заключается различие между текстовым и двоичным файлом.

  202. Объясните, что означает «открыть» файл и «закрыть» файл?

  203. Каким образом внешний файл связывается с потоком?

  204. Можно ли один и тот же поток связать с разными файлами? А один и тот же файл с разными потоками?

  205. Перечислите режимы открытия файла. Чем отличается режим “r” от режима “a”?

  206. Какую роль в режиме открытия играет знак плюс («+»)?

  207. В каких случаях необходимо следить за ситуацией «конец файла»? Каким способом это делается?

  208. Можно ли текстовый файл открыть как двоичный? А двоичный — как текстовый?

  209. Какие функции ввода/вывода используются для обмена с текстовыми файлами?

  210. Перечислите функции ввода/вывода для работы с двоичными файлами.

  211. Какие функции реализованы в библиотеке для обеспечения прямого доступа к записям двоичного файла? Можно ли их использовать для работы с текстовыми файлами?

  212. Объясните назначение функции fseek().

  213. Чем отличается функция ftell() от функции fgetpos()?

  214. Объясните, что означает «перенаправление» потока? Какие потоки можно перенаправлять и куда?

  215. Каким образом перенаправление ввода можно использовать для ввода строк с пробелами?

  216. В чем преимущества объектно-ориентированной библитеки по сравнению с процедурной?

  217. В каких состояних может находиться поток? Каким образом отслживается состояние «конец потока»?

  218. Какие объектно-ориентированные потоки связаны со стандартными потоками?

  219. Чем отличаются объектно-ориентированные строковые потоки от процедурных строковых потоков?

  220. Каким образом строковые потоки можно использовать для ограничения ширины поля ввода? А можно ли с той же целью использовать строковые потоки ?

  221. Сравните средства форматирования объектно-ориентированной и процедурной библиотеки.

  222. Каким образом ввести строку типа string с пробелами?

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

  224. Что такое «манипулятор»? В чем преимущества манипуляторов перед флагами форматирования?

  225. Как связываются файлы с потоками в объектно-ориентированной библиотеке?

  226. Можно ли файлы, записанные функциями библиотеки , прочитать объектно-ориентированными средствами? А наоборот?

  227. Перечислите режимы открытия объектно-ориентированных файловых потоков. каким образом комбинируются режимы открытия файлоавых потоков?

  228. Обязательно ли закрывать файл, связанный с объектно-ориентированным файловым потоком? А открывать?

  229. Каким образом открыть файловый поток для чтения и записи одновременно?

  230. Как открыть файловый поток для дозаписи?

  231. Можно ли вывести значение переменной в двоичном виде и как это сделать?

  232. Разрешается ли наследовать от классов библиотеки ввода/вывода?

  233. Каким образом можно еренаправить объектно-ориентированный поток?

  234. Как используется буфер потока для копирования потока?

  235. Какими операциями выполняется форматированный ввод/вывод в файловые потоки? А неформатированный?

  236. Реализованы ли в объектно-ориентированной библиотеке средства прямого доступа к файловым потокам? Сравните их с аналогичными средствами библиотеки .

  237. С какими объектно-ориентированными потоками разрешается, и с какими не разрешается использовать средства прямого доступа?

  238. Покажите, каким образом можно выполнить перегрузку операций ввода/вывода для нового типа данных.

  239. Как выполняется обработка ошибок ввода/вывода в объектно-ориентированной библиотеке?

  240. Какое стандартное исключение генерируется при ошибках ввода/вывода? Обязательно ли оно генерируется?

  241. Чем стандартные широкие потоки отличаются от узких?

  242. Что такое — «локаль», и каково ее назначение?

  243. Как установить русский шрифт при выводе в консольное окно?

  244. Чем отличается ли ввод/вывод широких файловых потоков от узких?

  245. Перечислите все последовательные контейнеры стандартной библиотеки. Чем они отличаются друг от друга?

  246. Перечислите адаптеры последовательных контейнеров и дайте их подробную характеристику.

  247. Почему для адаптеров-очередей нельзя использовать вектор в качестве базового?

  248. Чем простая очередь queue отличается от приоритетной очереди priority_queue?

  249. Каким требованиям должны удовлетворять элементы контейнера?

  250. Могут ли быть указатели элементами контейнера? А итераторы?

  251. Почему нельзя использовать в качестве элементов контейнера стандартный интеллектуальный указатель auto_ptr?

  252. Зачем в контейнере list реализованы собственные методы сортировки поиска и слияния? Можно ли пользоваться соответствующими стандартными алгоритмами при обработке списка?

  253. Перечислите типовые виды конструкторов, с помощью которых можно создавать последовательный контейнер.

  254. Можно ли инициализировать контейнер элементами встроенного массива? А элементами другого контейнера? Какими способами это можно сделать?

  255. Почему конструктор инициализации, параметрами которого являются итераторы, сделан шаблонным во всех контейнерах?

  256. Какие методы реализованы в контейнере-векторе для доступа к элементам?

  257. Отличается ли функция at() доступа по индексу от перегруженной операции индексирования и чем?

  258. Перечислите методы контейнера deque, относящиеся к определению размеров контейнера.

  259. Чем метод size() отличается от метода capacity()? А в чем отличие этих методов от метода max_size()?

  260. Перечислите методы контейнера list, предназначенные для вставки удаления и замены элементов. Отличаются ли эти методы от соответствующих методов вектора и дека?

  261. Каким образом выполняются операции сравнения контейнеров?

  262. Разрешается ли изменять элемент ассоциативного контейнера, доступный в данный момент по итератору?

  263. Какие контейнеры называются ассоциативными и почему?

  264. Чем контейнер map отличается от контейнера multimap?

  265. Объясните, почему в ассоциативных контейнерах нельзя изменять элемент, доступный в данный момент по итератору.

  266. По каким причинам в контейнере-множестве не реализованы типовые операции объединения, пересечения, разности и другие?

  267. Как используется структура-пара в ассоциативных контейнерах?

  268. Объясните, что такое «критерий сортировки», и каким требованиям он должен удовлетворять? Какой критерий сортировки принят по умолчанию?

  269. Какими преимуществами обладает функция make_pair() по сравнению с конструктором pair()?

  270. Почему в контейнерах-отображениях операция индексирования перегружена, а в контейнерах-множествах — нет?

  271. Какие гарантии безопасности обеспечивают контейнеры стандартной библиотеки?

  272. Что такое «транзакционная гарантия безопасности» и чем она отличается от базовой?

  273. На какие 4 класса по надежности можно разделить все операции с контейнерами?

  274. Что такое «распределитель памяти» и зачем он нужен?

  275. Чем отличается битовый вектор bitset от битового вектора vector?

  276. Дайте определение итератора.

  277. Что такое «начальный» итератор и «конечный» итератор? Какие методы, связанные с итераторами, обязательно включает каждый контейнер?

  278. Чем константный итератор отличается от неконстантного?

  279. Объясните, что такое «недействительный» итератор. В каких случаях итераторы становятся недействительными?

  280. Какие категории итераторов вы знаете? Какие операции обязательно реализуются для всех категорий итераторов?

  281. К какому виду итераторов можно отнести встроенный указатель и почему?

  282. Какие вспомогательные функции для итераторов вы знаете? В каких случаях оправдано их применение?

  283. Какие адаптеры итераторов реализованы в библиотеке?

  284. Объясните, почему итераторы реализованы как вложенные классы в контейнерах.

  285. Чем отличаются итераторы вставки от обычных итераторов?

  286. Каким образом используются потоковые итераторы?

  287. Какие стандартные функторы реализованы в библиотеке STL? Каково их основное назначение?

  288. Для чего нужны адаптеры функторов bind1st() и bind2nd()?

  289. Как применяются адаптеры-отрицатели?

  290. Почему алгоритмы remove() не удаляют элементы из контейнеров? Как реально удалить элементы из контейнера?

  291. Чем отличается стабильная сортировка от обычной?

  292. Какую функцию выполняет алгоритмы unique()?

  293. Могут ли стандартные алгоритмы работать со строками?

  294. Нужно ли сортировать ассоциативные контейнеры?

  295. Можно ли алгоритмы для работы с множествами применять для последовательных контейнеров? При каких условиях?

  296. Какие алгоритмы предназначены для заполнения контейнера значениями? С какими контейнерами они могут работать?

  297. Каким образом заполнить с помощью алгоритма generate() последовательный контейнер, не имеющий ни одного элемента?

  298. Перечислите алгоритмы, предназначенные для операций с каждым элементом контейнера.

  299. Можно ли с помощью алгоритма for_each() изменить элементы контейнера?

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

  301. Что такое полиморфизм? Виды полиморфизма? Чем задаются?

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

  303. Как задать функцию без параметров?

  304. Что будет разделителем для строки cin>>? (Напр. для «Один два»).

  305. Требуется ли явно указывать тип возвращаемого значения в return?

  306. Как определить булев тип?

  307. Как надо задавать включаемые библиотечные файлы в С++? Как использовать заголовочные файлы из C?

  308. Как задать пространство имен в котором определены все библиотечные функции С++?

  309. Как перегрузить функцию? Как это связано с полиморфизмом?

  310. Какие функции нельзя перегрузить?

  311. Описать варианты наследования базового класса и к каким членам в каждом случае будет иметь доступ наследник?

  312. Структура программы на С++?

  313. Что такое класс и что такое объект?

  314. Какие члены класса не могут иметь инициализатор? (с. 254)

  315. Какие ключевые слова нельзя использовать при объявлении членов класса?

  316. Может ли объявление класса включать в себя его объект или указатель на его объект?

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

  318. 2 отличия между структурами и классами?

  319. Что такое POD? Какие признаки у POD?

  320. Как определить класс с помощью слова union? Будет ли у него конструктор и деструктор? Какие особенности имеют его члены? Какой уровень доступа такой класс будет иметь по умолчанию? (с. 256)

  321. 2 ограничения наложенных на такие классы?

  322. Чего не могут содержать такие классы (4 случая)?

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

  324. Чего не может содержаться в безымянных объединениях (2 случая)?

  325. Как объявить глобальное безымянное объединение?

  326. Когда могут быть особенно полезны дружественные функции (3 случая)? Как их объявить? К каким членам класса они имеют доступ? Можно ли сделать ее доступной просто в проге (использовать 2-ой прототип)?

  327. Что такое неполное объявление класса?

  328. Может ли дружественная функция быть членом другого класса?

  329. Как это записать?

  330. Ограничения на дружественные функции (2 случая)? (с. 261)

  331. Может ли класс быть дружественным?

  332. К каким типам данных он будет иметь доступ?

  333. Можно ли через дружественный класс узнать значение данных из класса которому он дружественен? Через его объект? Как это записывается?

  334. Что гарантирует применение слова inline?

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

  336. Какие есть варианты определения inline функций в классе?

  337. Способы объявлений объектов у которых конструктор класса принимает параметры (2 варианта)?

  338. В чем особенность создания объектов класса у которого конструктор с одним параметром?

  339. В чем особенности статических членов класса?

  340. Чем инициализируются статические переменные-члены класса по умолчанию и когда это происходит?

  341. В чем особенность задания статических переменных-членов класса?

  342. Как правильно их задавать?

  343. Особенности статических функций-членов (5 случаев)? (с. 271) Какие варианты перегрузки возможны?

  344. Можно ли присваивать значения статическим переменным класса до создания объектов этого класса?

  345. Когда вызываются конструкторы глобальных объектов?

  346. Когда вызываются деструкторы глобальных объектов?

  347. Как обратиться к глобальной переменной, если в функции определена локальная переменная с таким же именем?

  348. Можно ли определить один класс внутри другого?

  349. Можно ли определить класс внутри функции?

  350. Какие ограничения накладываются на локальные классы (3 случая)? (с. 275)

  351. Сколько раз будет вызываться конструктор и деструктор объекта, если его один раз передавали функции по значению?

  352. Какие могут возникнуть проблемы при передаче объекта в функцию по значению?

  353. Может ли функция возвращать объект?

  354. Что будет в этом случае возвращаться и какие могут возникнуть проблемы?

  355. Можно ли присваивать объекты друг другу?

  356. В каких случаях можно использовать сокращенную форму инициализации массива объектов?

  357. Как выглядит полная форма инициализации массива объектов?

  358. О чем надо помнить создавая массив неинициализированных объектов?

  359. Можно ли присвоить указателю адрес какого-либо члена объекта?

  360. Что передается практически любой функции класса? Каким функциям это не передается (2 случая)? (с. 285)

  361. На какие члены производного класса можно ссылаться с помощью базового типа указателя?

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

  363. Особенности адресной арифметики ввиду динамического полиморфизма?

  364. Что такое указатель на член класса?

  365. Его синтаксис?

  366. Пример использования?

  367. Синтаксис использования ссылки?

  368. Что будет: int y = 8; int &s = y; s++;?

  369. Может ли функция стоять в левой части оператора присваивания? Когда это возможно?

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

  371. Что такое независимая ссылка?

  372. Когда можно присваивать значение ссылке?

  373. Можно ли присваивать ссылке на базовый класс объекты производных классов?

  374. Ограничения на ссылки (4 случая)?

  375. Что происходит если new не смог выделить требуемую память?

  376. 3 причины почему new, delete лучше malloc, free? (с. 297)

  377. Как проинициализировать память выделяемую new?

  378. Как с помощью new выделить память для массива?

  379. Как для массива правильно вызывать delete?

  380. Как проинициализировать объект созданный с помощью new?

  381. Как проинициализировать массивы созданные с помощью new?

  382. Что нужно помнить о классах, размещая динамически массивы их объектов?

  383. Заголовочный include для new?

  384. Как записать new возвращающий нулевой указатель в случае неудачи распределения памяти?

  385. Буферизованный new?

  386. Является ли это перегрузкой функции: void f (int* p); void f (int p[]);?

  387. Является ли это перегрузкой функции: void f(int a); и void f(const int a);? void f(int a); & void f(unsigned int a);? void f(int a); & void f(int &a);?

  388. Форма записи конструктора копирования? Пример перегрузки?

  389. 3 случая когда может использоваться конструктор копирования для присваивания?(с. 308)

  390. Вызывается ли здесь конструктор копирования: A a; B b; a = b;?

  391. Как создать указатель на функции: void f (int a. float f); void f (int a);?

  392. Где можно задать параметры по умолчанию для функции?

  393. Можно ли создать конструктор с параметрами заданными по умолчанию?

  394. Неоднозначность (2 случая)?

  395. Общий вид операторной функции-члена?

  396. Как перегрузить + чтобы можно было написать (ob.a + ob.b).show();? Когда разрушится объект в скобках?

  397. Примеры перегрузок -, =, ++x, x++, +=?

  398. Ограничения налагаемые на перегруженные операторы (3 случая)?

  399. Какие операторы нельзя перегружать (4 экземпляра)?

  400. Какие перегруженные операторы наследуются производными классами, а какие нет? Можно ли их перегрузить в производном классе?

  401. Как перегрузить оператор с помощью дружественной функции?

  402. Какие операторы нельзя перегрузить с помощью дружественных функций (4 штуки)?

  403. Как перегрузить операторы x++, ++x с помощью дружественных функций?

  404. Как перегрузить оператор сложения объекта с числом?

  405. Примеры перегрузки new и delete?

  406. Примеры перегрузки new и delete для массивов?

  407. Перегрузка new и delete без генерирования исключительной ситуации?

  408. Какие ограничения есть на перегрузку (), [], -> (2 случая)?

  409. Пример перегрузки []?

  410. Пример перегрузки ()?

  411. Пример перегрузки ->?

  412. Пример перегрузки ,?

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

  414. Форма записи при множественном наследовании?

  415. Порядок вызова конструкторов и деструкторов в производном классе? Если он использовал множественное наследование?

  416. Как передать параметры конструктору базового класса?

  417. Правило объявления переменных базового класса в конструкторе производного?

  418. 2 Способа повысить уровень доступа к членам базового класса? На все ли члены базового класса это распространяется?(с. 360)

  419. Как повысить уровень доступа к функции базового класса?

  420. Неоднозначность при множественном наследовании?

  421. 2 способа обойти ее?

  422. А если d1 virtual наследует, а d2 нет?

  423. Форма записи виртуального наследования?

  424. Виды полиморфизма? На чем основаны?

  425. Можно ли в классе-наследнике написать реализацию виртуальной функции с другим числом параметров (лишние имеют значения по умолчанию)?

  426. Будет ли работать полиморфизм при использовании ссылок на базовый класс?

  427. 3 ограничения для виртуальных функций?

  428. Наследуется ли атрибут виртуальности функции?

  429. Если в Base virtual f(), d1:B f(), d2:d1, то что будет: Base *p = &d1; p->f(); Base *p = &d2; p->f(); d1 *p1; p1 = &d2; p1->f();?

  430. Принцип иерархичности наследования относительно выбора реализации функции?

  431. Форма объявления чисто виртуальной функции?

  432. Что такое раннее связывание и что такое позднее связывание? Их плюсы и минусы?

  433. Форма записи шаблонных функций?

  434. Как называется конкретная версия шаблонной функции создаваемая компилятором?

  435. Как называется процесс генерации конкретной функции?

  436. Сколько вариантов шаблонной функции генерирует компилятор?

  437. Как явно перегрузить обобщенную функцию (2 варианта)?

  438. Как перегрузить шаблонную функцию?

  439. Пример объявления обобщенного класса и его объекта?

  440. Пример записи объявления функции обобщенного класса и ее реализации?

  441. Можно ли создать реализацию шаблонного класса с пользовательским типом данных?

  442. Пример обобщенного безопасного массива?

  443. То же самое, но с заданием размера этого массива?

  444. Какие типы можно использовать в качестве стандартных параметров для шаблонного класса, функции?

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

  446. Пример использования аргументов по умолчанию в шаблонных классах?

  447. Пример явной специализации класса?

  448. 2 случая применения typename?

  449. Использование слова export применительно к шаблонам?

  450. Общий вид операторов try и catch?

  451. Пример try, throw, catch?

  452. Что будет если генерируется исключительная ситуация для которой не предусмотрена обработка?

  453. Пример, когда может генерироваться исключение вне блока try?

  454. Может ли catch располагаться не сразу за try?

  455. Пример использования нескольких catch?

  456. Как надо выполнять перехват исключения описанного с помощью базового и производного типов?

  457. Как ввести перехват всех исключительных ситуаций?

  458. Как можно грамотно его использовать вместе с перехватчиками остальных исключений?

  459. Как запретить функции генерировать исключительные ситуации?

  460. Область действия ограничения функции на исключительные ситуации?

  461. Как повторно сгенерировать исключительную ситуацию?

  462. Какие функции вызываются при неверной обработке исключительной ситуации? И в каких конкретно случаях?

  463. Заголовок для функций terminate & unexpected?

  464. Какие функции вызывают terminate & unexpected?

  465. Как поменять обработчик для функций terminate & unexpected?

  466. Чего не должны делать новые обработчики?

  467. Как узнать перехвачена ли уже сгенерированная исключительная ситуация?

  468. ?Поток. Его принцип деятельности?

  469. 2 основных класса С++ для ввода/вывода?

  470. Высокоуровневая иерархия?

  471. Какие потоки открываются при начале выполнения программы?

  472. 2 способа форматирования данных при вводе/выводе?

  473. 18 флагов fmtflags?

  474. Функция для установки флагов формата?

  475. Можно ли применить ее сразу для всех потоков?

  476. Функция для сброса флагов формата?

  477. Перегруженная форма функции setf()?

  478. Функция для определения текущего состояния флагов форматирования?

  479. Как установить группу флагов?

  480. Функции изменения ширины, точности и символа заполнения?

  481. 32 манипулятора формата?

  482. Заголовок для манипуляторов с параметрами?

  483. Пример перегрузки оператора вставки?

  484. Может ли перегруженная функция вставки быть членом класса?

  485. Как с помощью перегруженной функции вставки вывести закрытые члены класса?

  486. Пример перегрузки оператора извлечения?

  487. Как проверить какой поток вызвал перегруженный оператор извлечения/вставки?

  488. Как создать собственный манипулятор?

  489. Заголовок для реализации файлового ввода / вывода?

  490. Класс для низкоуровневого управления файловым потоком?

  491. Как связать файловый поток с файлом?(2)

  492. Отличие текстового от бинарного режима открытия файла?

  493. Режимы открытия файла?

  494. Режимы открытия по умолчанию?

  495. Как проверить успешность открытия файла?(2)

  496. Функция закрытия файла?

  497. Функции чтения / записи символов для файла?

  498. Как определить закончился ли файл при его чтении?

  499. Функции чтения / записи блоков бинарных данных?

  500. Как записать / считать структуру?

  501. Что будет если конец файла обнаружится раньше чем read считает num символов?

  502. Как определить число считанных символов?

  503. Перегрузки get()?

  504. Отличие get() от getline()?

  505. Функция определения конца файла?

  506. Функция пропуска части символов?

  507. Как считать следующий символ в потоке не извлекая его?

  508. Как вернуть обратно считанный символ?

  509. Как принудительно записать данные из буфера в файл? Когда рекомендуется это делать?

  510. Функции произвольного доступа к файлу?

  511. О чем надо помнить применяя эти функции к текстовым файлам?

  512. Как определить текущую позицию курсоров доступа к файлу?

  513. Как получить информацию о статусе ввода / вывода?(2)

  514. Как сбросить флаги ошибок?

  515. Оператор определения типа объекта и его заголовок?

  516. Функции – члены type_info?

  517. Важное ограничение на typeid() в связи с полиморфизмом?

  518. ? Разыменованный указатель.

  519. Можно ли применять typeid() к ссылкам?

  520. Как проверить является ли объект таким-то типом?

  521. Применение typeid() к шаблонным классам?

  522. 5 операторов приведения типов?

  523. ? оператор динамического приведения типов?

  524. Требование к его результирующему типу?

  525. Для приведения каких типов он предназначен?

  526. Как проверить успешность dynamic_cast?

  527. Тип исключительной ситуации при typeid и dynamic_cast?

  528. Какие типы к каким приводятся dynamic_cast-ом?

  529. Приведение типов с typeid и dynamic_cast?

  530. Можно ли использовать dynamic_cast для шаблонных классов?

  531. Можно ли привести T* к T*?

  532. Как заместить const & volatile? Пример? Пример с ссылкой?

  533. Оператор для неполиморфного приведения?

  534. Проверяет ли он приведение типов?

  535. Как привести разные типы данных?

  536. Общий вид объявления пространства имен?

  537. 2 способа обращения к данным из пространства имен вне его?

  538. Если создать объект класса namespace_name::some_class, нужно ли при его использовании ставить область видимости?

  539. 2 варианта использования using?

  540. ?Неименованное пространство имен. Синтаксис?

  541. Зачем оно нужно?

  542. Можно ли разделить пространство имен?

  543. Пример?

  544. Где можно объявлять пространство имен?

  545. Пример использования вложенного пространства имен?

  546. Как включить только часть функций из std?

  547. ? Функция преобразования класса. Синтаксис?

  548. Пример?

  549. Можно ли задать несколько type()?

  550. Как объявить константную функцию – член и в чем ее особенность?

  551. Как разрешить ей изменять какой-либо член класса?

  552. Функция volatile и ее особенности?

  553. ? Явные конструкторы. Синтаксис?

  554. Как инициализировать константы и ссылки в конструкторе?

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

  556. Порядок создания и инициализации членов класса?

  557. Как вставить код на ассемблере?

  558. Спецификация связей функции? Синтаксис?

  559. В каких местах ее можно объявлять?

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

  561. ? Буферизованный ввод / вывод.

  562. Заголовок для него?

  563. Синтаксис ввода / вывода?

  564. Как узнать сколько символов записано в массив?

  565. Динамический массив вывода? Пример использования?

  566. 9 отличий С от С++?

  567. ? Контейнеры. 2 типа?

  568. ? Алгоритмы.

  569. ? Итераторы. 5 видов?

  570. ? Обратный итератор.

  571. ? Распределитель.

  572. ? Предикат. 2 вида? Специальная разновидность бинарных предикатов?

  573. 2 заголовка STL общего типа (для pair и для функторов)?

  574. ? Функторы. 15 экземпляров? Зачем они нужны?

  575. Еще 2 вида функторов?

  576. ? Адаптер.

  577. 11 контейнеров? Заголовки для них?

  578. Основные переопределенные типы контейнерных классов(12)?

  579. 4 конструктора vector? Пример использования?

  580. Ограничение на объекты, хранящиеся в векторе?

  581. Функции вектора?(20)

  582. Пример вектора с использованием итератора?

  583. На что указывает итератор возвращаемый end()?

  584. В каком месте вставляет элемент insert?

  585. Пример со вставкой и удалением?

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

  587. Пример вектора с объектами?

  588. 4 конструктора списка?

  589. 6 операторов определенных в списке?

  590. Основные функции – члены списка?(28)

  591. Что должны иметь объекты, хранящиеся в списке?

  592. Пример вставки одного списка с объектами в другой?

  593. 3 конструктора map?

  594. 6 операторов определенных в map?

  595. Требования к объектам – ключам в map?

  596. Основные функции map?(17)

  597. ? Pair.

  598. Пример с map? Пример с make_pair?

  599. Заголовок для алгоритмов?

  600. Стандартные алгоритмы?

  601. Алгоритмы подсчета элементов? (2) Примеры?

  602. ? remove_copy(). Пример?

  603. ? replace_copy(). Пример?

  604. ? reverse(). Пример?

  605. ? transform().Пример?

  606. ? negate(). Пример?

  607. ? divides().Пример?

  608. Пример создания простого функтора?

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

  610. Пример биндеров с remove_it?

  611. 2 негатора?

  612. 3 «за» string?

  613. Главный «против»?

  614. 3 основных конструктора string?

  615. 12 операторов string?

  616. Можно ли в выражениях смешивать string и строки?

  617. 2 варианта функции – члена string для присвоения строк?

  618. 2 варианта функции – члена string для добавления строк?

  619. 2 варианта функции – члена string для вставки строк?

  620. 2 варианта функции – члена string для замены строк?

  621. Функция – член для удаления символов в string?

  622. Функции – члены string для нахождения первого и последнего вхождения подстроки в строку?

  623. Функции – члены string для сравнения строк?

  624. Функции – члены string для создания С – строки?

  625. Можно ли применять к string контейнерные функции?

  626. Можно ли хранить string в контейнерах?

C++ -для чего нужен виртуальный деструктор -чем отличается вызов виртуального деструктора от обычной виртуальной функции -чем отличаются const char* ptr и char const *ptr -чем чреват выброс исключения из конструктора, деструктора -в чем потенциальная опасность конструктора копирования по умолчанию -чем отличаются операторы приведения типа static_cast, reinterpret_cast, dynamic_cast, const_cast -метод const. класс const. ключевое слово mutable. -как определить чисто виртуальную функцию, абстрактный базовый класс -как организовать освобождение ресурсов при выходе из функции/метода -как запретить создание объектов в куче -как предотвратить утечки памяти связанные с с забывчивостью вызывать Delete -как запретить удаление объекта класса -как запретить наследование от данного класса -что такое виртуальный базовый класс (виртуальное наследование) -что такое частичная специализация шаблона -для чего нужен виртуальный конструктор -как удалить массив объектов -в каких случаях вызывается конструктор копирования -что такое конструктор конверсии. ключевое слово explicit. -в каких случаях переменная класса должна быть проинициализирована в списке инициализации конструктора -когда класс должен иметь конструктор по умолчанию -когда можно вернуть из функции ссылку на локальный объект -почему в C++ нельзя реализовать автоматическую сборку мусора?

STL -Как выбрать подходящий для задачи STL-контейнер -Что такое функтор. Что такое алгоритм -Какие есть способы поиска в контейнерах -В чем разница между stack, queue и другими контейнерами -Что такое распределители (allocators)

COM и ATL -Что такое апартамент. В чем разница между однопоточным и многопоточным апартаментом. -Что такое суррогатный процесс -Как передать указатель на интерфейс из одного потока в другой в STA -Виды маршалинга , их достоинства и недостатки -Какие есть способы передачи массива структур в COM-сервер. -Передача блоков данных переменной длины. -Кто должен распределять и освобождать память при передаче строк BSTR -Как получить на клиенте данные из буфера, распределенного в COM-сервере -Как в ATL создать многопоточный объект (MTA) -Какой интерфейс в ATL используется для передачи клиенту информации об ошибках? -Как организовать передачу callback-вызовов от COM-сервера к клиенту ?

Win32 -Как распределяется доступная процессу память -Чем отличается семафор от мьютекса -Какие средства межпроцессной коммуникации вы знаете, их достоинства и недостатки? -Как создать единственный экземпляр приложения в памяти (singleton) -Как происходит создание отображаемого в память файла -Как передать процессу указатель на память распределенную в другом процессе -Как сигнализировать другому потоку о его завершении и как дождаться его завершения из вызывающего потока

Объектно-ориентированное проектирование -Что такое полиморфизм -Что такое is-a и has-a отношения -Знакомы ли вам паттерны проектирования

Базы данных -что такое нормализация -свойства 3-й нормальной формы -достоинства и недостатки нормализации -что такое ссылочная целостность -что такое первичный ключ, внешний ключ -в чем достоинства и недостатки использования триггеров -что такое транзакция. виды изоляции транзакций -разрешение конфликтов при одновременном изменении данных

Объясните разницу между понятиями виртуальная функция и виртуальное наследование . Объясните, чем отличаются глобальные статические функции от статических функций, членов классов. Что общего, и чем обычно отличаются реализации конструкторов копирования, инициализации и перегруженной операции присваивания? Сравните 2 способа перегрузки операций: как метод класса и как внешнюю функцию-друг . Как создать в классе виртуальные конструкторы и деструктор? Может ли шаблонный (темплэйтный) класс быть абстрактным? Почему? В чем специфика перегрузки операций "sizeof", "typeid", "new" и "delete"? Чем она вызвана? Сравните особенности перегрузки операций "()" и "[]". Дайте развернутое сравнение работы со строками в стиле С (char*) и С++ (string). Дайте развернутое сравнение работы с динамической памятью в С и С++. Дайте развернутое сравнение стандартных средств ввода-вывода в С и С++. Что означает оператор throw без параметра? Расскажите, какие бывают итераторы и чем они отличаются. В чем различие между модификаторами register, const и volatile? Как написать функцию, принимающую заранее неизвестное число аргументов? В чем разница между конструкциями "extern" и "extern "C""? В чем, в рамках традиционного С++, различие между using и include? Сравните использование макросов, inline-функций и template-функций. Как грамотно организовать нетривиальную сортировку средствами стандартных библиотек С и С++ (сравните подходы)? Расскажите, что и как нужно сделать, что бы объекты написанного Вами класса можно было помещать в cout и читать из cin? Сравните различные формы операций приведения типа (в стиле С и в стиле С++). Расскажите о перегрузке этих операций. У каждого класса есть некоторые особые функции-члены, вызовы которых могут вставляться компилятором в код без явного на то указания программиста. Перечислите такие функции, члены и случаи, когда могут возникать неявные вызовы. Как задать значения аргументов функций по умолчанию? Каковы плюсы и минусы использования этой возможности С++? Каковы ее альтернативы? При написании оператора catch мы можем в качестве типа его аргумента написать непосредственно тип исключения, указатель на тип исключения либо ссылку на тип исключения. Сравните эти подходы. В каком порядке вычисляются аргументы функции при ее вызове: слева направо, справа налево или еще как-нибудь? Например, в каком порядке будут вычислены аргументы в следующем примере: f(5+I, ++I); ? Если при создании переменной программист ее явно не инициализировал, то, в некоторых случаях, компилятор сам даст ей некое, заранее известное начальное значение, а в некоторых случаях начальное значение будет непредсказуемо. От чего это зависит? От чего зависит порядок создания (последовательность вызова конструкторов) глобальных переменных? Какие практические выводы из этого следуют? Есть код: f(){return 3.5;} ... double d = f() Чему равно значение d ? Почему? Объясните разницу между понятиями "анонимное пространство имен" и "анонимное перечисление". Что произойдет, если исключение будет выброшено изнутри конструктора? Что из себя представляет и для чего применяется специализация шаблонов? В чем специфика применения операции delete к указателям на функции? Что такое и как используется this ? Для чего применяется предварительное объявление (forward declaration) классов? Какие директивы препроцессора обычно используются для предотвращения повторного включения заголовочного файла? Какие конструкции для организации ветвления предоставляет программистам С++? Какие конструкции для организации циклов предоставляет программистам С++? Что такое полиморфизм? Наличие какие конструкций в С++ позволяет утверждать, что этот язык поддерживает полиморфизм? Для чего используется полиморфизм? Что такое lvalue ? Для чего в C++ используется ключевое слово finaly ? Сравните операторы continue и break. Что такое и для чего нужны триграфы? В чем отличие и что общее в специфике перегрузки конструкторов и деструкторов? Что такое и как используется анонимное объединение? Можно ли в С++ (если да — то как) написать такой класс, от которого нельзя пронаследовать в дальнейшем никакой другой класс? Даны два класса, один из которых является наследником от второго. Напишите, как должны выглядеть конструкторы копирования-инициализации для этих классов (составьте пример). В чем специфика операций || и && ? В чем специфика перегрузки этих операций? Сравните понятия "статическая переменная" и "статическая переменная — член класса". В чем опасность использования макросов? Приведите примеры. Сравните операторы throw и return. Как инициализировать переменную, являющуюся приватным статическим членом класса? Для чего нужен и как используется класс auto_ptr ?