Advertisement
geirby

C++ interview part3

Apr 11th, 2019
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.66 KB | None | 0 0
  1. Вопросы по С++.
  2.  
  3. 1. Что такое инкапсуляция?
  4. 2. Что такое полиморфизм? Виды полиморфизма? Чем задаются?
  5. 3. Что такое наследование?
  6. 4. Как задать функцию без параметров?
  7. 5. Что будет разделителем для строки cin>>? (Напр. для «Один два»).
  8. 6. Требуется ли явно указывать тип возвращаемого значения в return?
  9. 7. Как определить булев тип?
  10. 8. Как надо задавать включаемые библиотечные файлы в С++? Как использовать заголовочные файлы из C?
  11. 9. Как задать пространство имен в котором определены все библиотечные функции С++?
  12. 10. Как перегрузить функцию? Как это связано с полиморфизмом?
  13. 11. Какие функции нельзя перегрузить?
  14. 12. Описать варианты наследования базового класса и к каким членам в каждом случае будет иметь доступ наследник?
  15. 13. Структура программы на С++?
  16. 14. Что такое класс и что такое объект?
  17. 15. Какие члены класса не могут иметь инициализатор? (с. 254)
  18. 16. Какие ключевые слова нельзя использовать при объявлении членов класса?
  19. 17. Может ли объявление класса включать в себя его объект или указатель на его объект?
  20. 18. Когда имеет смысл объявлять переменные класса открытыми?
  21. 19. 2 отличия между структурами и классами?
  22. 20. Что такое POD? Какие признаки у POD?
  23. 21. Как определить класс с помощью слова union? Будет ли у него конструктор и деструктор? Какие особенности имеют его члены? Какой уровень доступа такой класс будет иметь по умолчанию? (с. 256)
  24. 22. 2 ограничения наложенных на такие классы?
  25. 23. Чего не могут содержать такие классы (4 случая)?
  26. 24. Как осуществляется доступ к членам безымянного объединения?
  27. 25. Чего не может содержаться в безымянных объединениях (2 случая)?
  28. 26. Как объявить глобальное безымянное объединение?
  29. 27. Когда могут быть особенно полезны дружественные функции (3 случая)? Как их объявить? К каким членам класса они имеют доступ? Можно ли сделать ее доступной просто в проге (использовать 2-ой прототип)?
  30. 28. Что такое неполное объявление класса?
  31. 29. Может ли дружественная функция быть членом другого класса?
  32. 30. Как это записать?
  33. 31. Ограничения на дружественные функции (2 случая)? (с. 261)
  34. 32. Может ли класс быть дружественным?
  35. 33. К каким типам данных он будет иметь доступ?
  36. 34. Можно ли через дружественный класс узнать значение данных из класса которому он дружественен? Через его объект? Как это записывается?
  37. 35. Что гарантирует применение слова inline?
  38. 36. Какие функции компилятор может запретить подставлять?
  39. 37. Какие есть варианты определения inline функций в классе?
  40. 38. Способы объявлений объектов у которых конструктор класса принимает параметры (2 варианта)?
  41. 39. В чем особенность создания объектов класса у которого конструктор с одним параметром?
  42. 40. В чем особенности статических членов класса?
  43. 41. Чем инициализируются статические переменные-члены класса по умолчанию и когда это происходит?
  44. 42. В чем особенность задания статических переменных-членов класса?
  45. 43. Как правильно их задавать?
  46. 44. Особенности статических функций-членов (5 случаев)? (с. 271) Какие варианты перегрузки возможны?
  47. 45. Можно ли присваивать значения статическим переменным класса до создания объектов этого класса?
  48. 46. Когда вызываются конструкторы глобальных объектов?
  49. 47. Когда вызываются деструкторы глобальных объектов?
  50. 48. Как обратиться к глобальной переменной, если в функции определена локальная переменная с таким же именем?
  51. 49. Можно ли определить один класс внутри другого?
  52. 50. Можно ли определить класс внутри функции?
  53. 51. Какие ограничения накладываются на локальные классы (3 случая)? (с. 275)
  54. 52. Сколько раз будет вызываться конструктор и деструктор объекта, если его один раз передавали функции по значению?
  55. 53. Какие могут возникнуть проблемы при передаче объекта в функцию по значению?
  56. 54. Может ли функция возвращать объект?
  57. 55. Что будет в этом случае возвращаться и какие могут возникнуть проблемы?
  58. 56. Можно ли присваивать объекты друг другу?
  59. 57. В каких случаях можно использовать сокращенную форму инициализации массива объектов?
  60. 58. Как выглядит полная форма инициализации массива объектов?
  61. 59. О чем надо помнить создавая массив неинициализированных объектов?
  62. 60. Можно ли присвоить указателю адрес какого-либо члена объекта?
  63. 61. Что передается практически любой функции класса? Каким функциям это не передается (2 случая)? (с. 285)
  64. 62. На какие члены производного класса можно ссылаться с помощью базового типа указателя?
  65. 63. Как получить доступ к остальным членам производного класса?
  66. 64. Особенности адресной арифметики ввиду динамического полиморфизма?
  67. 65. Что такое указатель на член класса?
  68. 66. Его синтаксис?
  69. 67. Пример использования?
  70. 68. Синтаксис использования ссылки?
  71. 69. Что будет: int y = 8; int &s = y; s++;?
  72. 70. Может ли функция стоять в левой части оператора присваивания? Когда это возможно?
  73. 71. Что происходит с объектом которого вернули по ссылке после завершения работы вернувшей его функции?
  74. 72. Что такое независимая ссылка?
  75. 73. Когда можно присваивать значение ссылке?
  76. 74. Можно ли присваивать ссылке на базовый класс объекты производных классов?
  77. 75. Ограничения на ссылки (4 случая)?
  78. 76. Что происходит если new не смог выделить требуемую память?
  79. 77. 3 причины почему new, delete лучше malloc, free? (с. 297)
  80. 78. Как проинициализировать память выделяемую new?
  81. 79. Как с помощью new выделить память для массива?
  82. 80. Как для массива правильно вызывать delete?
  83. 81. Как проинициализировать объект созданный с помощью new?
  84. 82. Как проинициализировать массивы созданные с помощью new?
  85. 83. Что нужно помнить о классах, размещая динамически массивы их объектов?
  86. 84. Заголовочный include для new?
  87. 85. Как записать new возвращающий нулевой указатель в случае неудачи распределения памяти?
  88. 86. Буферизованный new?
  89. 87. Является ли это перегрузкой функции: void f (int* p); void f (int p[]);?
  90. 88. Является ли это перегрузкой функции: 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);?
  91. 89. Форма записи конструктора копирования? Пример перегрузки?
  92. 90. 3 случая когда может использоваться конструктор копирования для присваивания?(с. 308)
  93. 91. Вызывается ли здесь конструктор копирования: A a; B b; a = b;?
  94. 92. Как создать указатель на функции: void f (int a. float f); void f (int a);?
  95. 93. Где можно задать параметры по умолчанию для функции?
  96. 94. Можно ли создать конструктор с параметрами заданными по умолчанию?
  97. 95. Неоднозначность (2 случая)?
  98. 96. Общий вид операторной функции-члена?
  99. 97. Как перегрузить + чтобы можно было написать (ob.a + ob.b).show();? Когда разрушится объект в скобках?
  100. 98. Примеры перегрузок -, =, ++x, x++, +=?
  101. 99. Ограничения налагаемые на перегруженные операторы (3 случая)?
  102. 100. Какие операторы нельзя перегружать (4 экземпляра)?
  103. 101. Какие перегруженные операторы наследуются производными классами, а какие нет? Можно ли их перегрузить в производном классе?
  104. 102. Как перегрузить оператор с помощью дружественной функции?
  105. 103. Какие операторы нельзя перегрузить с помощью дружественных функций (4 штуки)?
  106. 104. Как перегрузить операторы x++, ++x с помощью дружественных функций?
  107. 105. Как перегрузить оператор сложения объекта с числом?
  108. 106. Примеры перегрузки new и delete?
  109. 107. Примеры перегрузки new и delete для массивов?
  110. 108. Перегрузка new и delete без генерирования исключительной ситуации?
  111. 109. Какие ограничения есть на перегрузку (), [], -> (2 случая)?
  112. 110. Пример перегрузки []?
  113. 111. Пример перегрузки ()?
  114. 112. Пример перегрузки ->?
  115. 113. Пример перегрузки ,?
  116. 114. Какие виды доступа при наследовании бывают и как при этом трактуются данные различных видов доступа из базового класса в производном?
  117. 115. Форма записи при множественном наследовании?
  118. 116. Порядок вызова конструкторов и деструкторов в производном классе? Если он использовал множественное наследование?
  119. 117. Как передать параметры конструктору базового класса?
  120. 118. Правило объявления переменных базового класса в конструкторе производного?
  121. 119. 2 Способа повысить уровень доступа к членам базового класса? На все ли члены базового класса это распространяется?(с. 360)
  122. 120. Как повысить уровень доступа к функции базового класса?
  123. 121. Неоднозначность при множественном наследовании?
  124. 122. 2 способа обойти ее?
  125. 123. А если d1 virtual наследует, а d2 нет?
  126. 124. Форма записи виртуального наследования?
  127. 125. Виды полиморфизма? На чем основаны?
  128. 126. Можно ли в классе-наследнике написать реализацию виртуальной функции с другим числом параметров (лишние имеют значения по умолчанию)?
  129. 127. Будет ли работать полиморфизм при использовании ссылок на базовый класс?
  130. 128. 3 ограничения для виртуальных функций?
  131. 129. Наследуется ли атрибут виртуальности функции?
  132. 130. Если в Base virtual f(), d1:B f(), d2:d1, то что будет: Base *p = &d1; p->f(); Base *p = &d2; p->f(); d1 *p1; p1 = &d2; p1->f();?
  133. 131. Принцип иерархичности наследования относительно выбора реализации функции?
  134. 132. Форма объявления чисто виртуальной функции?
  135. 133. Что такое раннее связывание и что такое позднее связывание? Их плюсы и минусы?
  136. 134. Форма записи шаблонных функций?
  137. 135. Как называется конкретная версия шаблонной функции создаваемая компилятором?
  138. 136. Как называется процесс генерации конкретной функции?
  139. 137. Сколько вариантов шаблонной функции генерирует компилятор?
  140. 138. Как явно перегрузить обобщенную функцию (2 варианта)?
  141. 139. Как перегрузить шаблонную функцию?
  142. 140. Пример объявления обобщенного класса и его объекта?
  143. 141. Пример записи объявления функции обобщенного класса и ее реализации?
  144. 142. Можно ли создать реализацию шаблонного класса с пользовательским типом данных?
  145. 143. Пример обобщенного безопасного массива?
  146. 144. То же самое, но с заданием размера этого массива?
  147. 145. Какие типы можно использовать в качестве стандартных параметров для шаблонного класса, функции?
  148. 146. Правила передачи стандартных параметров шаблонного класса?
  149. 147. Пример использования аргументов по умолчанию в шаблонных классах?
  150. 148. Пример явной специализации класса?
  151. 149. 2 случая применения typename?
  152. 150. Использование слова export применительно к шаблонам?
  153. 151. Общий вид операторов try и catch?
  154. 152. Пример try, throw, catch?
  155. 153. Что будет если генерируется исключительная ситуация для которой не предусмотрена обработка?
  156. 154. Пример, когда может генерироваться исключение вне блока try?
  157. 155. Может ли catch располагаться не сразу за try?
  158. 156. Пример использования нескольких catch?
  159. 157. Как надо выполнять перехват исключения описанного с помощью базового и производного типов?
  160. 158. Как ввести перехват всех исключительных ситуаций?
  161. 159. Как можно грамотно его использовать вместе с перехватчиками остальных исключений?
  162. 160. Как запретить функции генерировать исключительные ситуации?
  163. 161. Область действия ограничения функции на исключительные ситуации?
  164. 162. Как повторно сгенерировать исключительную ситуацию?
  165. 163. Какие функции вызываются при неверной обработке исключительной ситуации? И в каких конкретно случаях?
  166. 164. Заголовок для функций terminate & unexpected?
  167. 165. Какие функции вызывают terminate & unexpected?
  168. 166. Как поменять обработчик для функций terminate & unexpected?
  169. 167. Чего не должны делать новые обработчики?
  170. 168. Как узнать перехвачена ли уже сгенерированная исключительная ситуация?
  171. 169. ?Поток. Его принцип деятельности?
  172. 170. 2 основных класса С++ для ввода/вывода?
  173. 171. Высокоуровневая иерархия?
  174. 172. Какие потоки открываются при начале выполнения программы?
  175. 173. 2 способа форматирования данных при вводе/выводе?
  176. 174. 18 флагов fmtflags?
  177. 175. Функция для установки флагов формата?
  178. 176. Можно ли применить ее сразу для всех потоков?
  179. 177. Функция для сброса флагов формата?
  180. 178. Перегруженная форма функции setf()?
  181. 179. Функция для определения текущего состояния флагов форматирования?
  182. 180. Как установить группу флагов?
  183. 181. Функции изменения ширины, точности и символа заполнения?
  184. 182. 32 манипулятора формата?
  185. 183. Заголовок для манипуляторов с параметрами?
  186. 184. Пример перегрузки оператора вставки?
  187. 185. Может ли перегруженная функция вставки быть членом класса?
  188. 186. Как с помощью перегруженной функции вставки вывести закрытые члены класса?
  189. 187. Пример перегрузки оператора извлечения?
  190. 188. Как проверить какой поток вызвал перегруженный оператор извлечения/вставки?
  191. 189. Как создать собственный манипулятор?
  192. 190. Заголовок для реализации файлового ввода / вывода?
  193. 191. Класс для низкоуровневого управления файловым потоком?
  194. 192. Как связать файловый поток с файлом?(2)
  195. 193. Отличие текстового от бинарного режима открытия файла?
  196. 194. Режимы открытия файла?
  197. 195. Режимы открытия по умолчанию?
  198. 196. Как проверить успешность открытия файла?(2)
  199. 197. Функция закрытия файла?
  200. 198. Функции чтения / записи символов для файла?
  201. 199. Как определить закончился ли файл при его чтении?
  202. 200. Функции чтения / записи блоков бинарных данных?
  203. 201. Как записать / считать структуру?
  204. 202. Что будет если конец файла обнаружится раньше чем read считает num символов?
  205. 203. Как определить число считанных символов?
  206. 204. Перегрузки get()?
  207. 205. Отличие get() от getline()?
  208. 206. Функция определения конца файла?
  209. 207. Функция пропуска части символов?
  210. 208. Как считать следующий символ в потоке не извлекая его?
  211. 209. Как вернуть обратно считанный символ?
  212. 210. Как принудительно записать данные из буфера в файл? Когда рекомендуется это делать?
  213. 211. Функции произвольного доступа к файлу?
  214. 212. О чем надо помнить применяя эти функции к текстовым файлам?
  215. 213. Как определить текущую позицию курсоров доступа к файлу?
  216. 214. Как получить информацию о статусе ввода / вывода?(2)
  217. 215. Как сбросить флаги ошибок?
  218. 216. Оператор определения типа объекта и его заголовок?
  219. 217. Функции – члены type_info?
  220. 218. Важное ограничение на typeid() в связи с полиморфизмом?
  221. 219. ? Разыменованный указатель.
  222. 220. Можно ли применять typeid() к ссылкам?
  223. 221. Как проверить является ли объект таким-то типом?
  224. 222. Применение typeid() к шаблонным классам?
  225. 223. 5 операторов приведения типов?
  226. 224. ? оператор динамического приведения типов?
  227. 225. Требование к его результирующему типу?
  228. 226. Для приведения каких типов он предназначен?
  229. 227. Как проверить успешность dynamic_cast?
  230. 228. Тип исключительной ситуации при typeid и dynamic_cast?
  231. 229. Какие типы к каким приводятся dynamic_cast-ом?
  232. 230. Приведение типов с typeid и dynamic_cast?
  233. 231. Можно ли использовать dynamic_cast для шаблонных классов?
  234. 232. Можно ли привести T<int>* к T<double>*?
  235. 233. Как заместить const & volatile? Пример? Пример с ссылкой?
  236. 234. Оператор для неполиморфного приведения?
  237. 235. Проверяет ли он приведение типов?
  238. 236. Как привести разные типы данных?
  239. 237. Общий вид объявления пространства имен?
  240. 238. 2 способа обращения к данным из пространства имен вне его?
  241. 239. Если создать объект класса namespace_name::some_class, нужно ли при его использовании ставить область видимости?
  242. 240. 2 варианта использования using?
  243. 241. ?Неименованное пространство имен. Синтаксис?
  244. 242. Зачем оно нужно?
  245. 243. Можно ли разделить пространство имен?
  246. 244. Пример?
  247. 245. Где можно объявлять пространство имен?
  248. 246. Пример использования вложенного пространства имен?
  249. 247. Как включить только часть функций из std?
  250. 248. ? Функция преобразования класса. Синтаксис?
  251. 249. Пример?
  252. 250. Можно ли задать несколько type()?
  253. 251. Как объявить константную функцию – член и в чем ее особенность?
  254. 252. Как разрешить ей изменять какой-либо член класса?
  255. 253. Функция volatile и ее особенности?
  256. 254. ? Явные конструкторы. Синтаксис?
  257. 255. Как инициализировать константы и ссылки в конструкторе?
  258. 256. Как проинициализировать члены класса, имеющего только конструктор с аргументами, в другом, содержащем его классе?
  259. 257. Порядок создания и инициализации членов класса?
  260. 258. Как вставить код на ассемблере?
  261. 259. Спецификация связей функции? Синтаксис?
  262. 260. В каких местах ее можно объявлять?
  263. 261. Как связать с программой сразу несколько функций?
  264. 262. ? Буферизованный ввод / вывод.
  265. 263. Заголовок для него?
  266. 264. Синтаксис ввода / вывода?
  267. 265. Как узнать сколько символов записано в массив?
  268. 266. Динамический массив вывода? Пример использования?
  269. 267. 9 отличий С от С++?
  270. 268. ? Контейнеры. 2 типа?
  271. 269. ? Алгоритмы.
  272. 270. ? Итераторы. 5 видов?
  273. 271. ? Обратный итератор.
  274. 272. ? Распределитель.
  275. 273. ? Предикат. 2 вида? Специальная разновидность бинарных предикатов?
  276. 274. 2 заголовка STL общего типа (для pair и для функторов)?
  277. 275. ? Функторы. 15 экземпляров? Зачем они нужны?
  278. 276. Еще 2 вида функторов?
  279. 277. ? Адаптер.
  280. 278. 11 контейнеров? Заголовки для них?
  281. 279. Основные переопределенные типы контейнерных классов(12)?
  282. 280. 4 конструктора vector<T>? Пример использования?
  283. 281. Ограничение на объекты, хранящиеся в векторе?
  284. 282. Функции вектора?(20)
  285. 283. Пример вектора с использованием итератора?
  286. 284. На что указывает итератор возвращаемый end()?
  287. 285. В каком месте вставляет элемент insert?
  288. 286. Пример со вставкой и удалением?
  289. 287. Когда можно не перегружать операторы объектов для вектора?
  290. 288. Пример вектора с объектами?
  291. 289. 4 конструктора списка?
  292. 290. 6 операторов определенных в списке?
  293. 291. Основные функции – члены списка?(28)
  294. 292. Что должны иметь объекты, хранящиеся в списке?
  295. 293. Пример вставки одного списка с объектами в другой?
  296. 294. 3 конструктора map?
  297. 295. 6 операторов определенных в map?
  298. 296. Требования к объектам – ключам в map?
  299. 297. Основные функции map?(17)
  300. 298. ? Pair.
  301. 299. Пример с map? Пример с make_pair?
  302. 300. Заголовок для алгоритмов?
  303. 301. Стандартные алгоритмы?
  304. 302. Алгоритмы подсчета элементов? (2) Примеры?
  305. 303. ? remove_copy(). Пример?
  306. 304. ? replace_copy(). Пример?
  307. 305. ? reverse(). Пример?
  308. 306. ? transform().Пример?
  309. 307. ? negate(). Пример?
  310. 308. ? divides().Пример?
  311. 309. Пример создания простого функтора?
  312. 310. 2 биндера для связи аргументов функтора с определенными значениями?
  313. 311. Пример биндеров с remove_it?
  314. 312. 2 негатора?
  315. 313. 3 «за» string?
  316. 314. Главный «против»?
  317. 315. 3 основных конструктора string?
  318. 316. 12 операторов string?
  319. 317. Можно ли в выражениях смешивать string и строки?
  320. 318. 2 варианта функции – члена string для присвоения строк?
  321. 319. 2 варианта функции – члена string для добавления строк?
  322. 320. 2 варианта функции – члена string для вставки строк?
  323. 321. 2 варианта функции – члена string для замены строк?
  324. 322. Функция – член для удаления символов в string?
  325. 323. Функции – члены string для нахождения первого и последнего вхождения подстроки в строку?
  326. 324. Функции – члены string для сравнения строк?
  327. 325. Функции – члены string для создания С – строки?
  328. 326. Можно ли применять к string контейнерные функции?
  329. 327. Можно ли хранить string в контейнерах?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement