Практика‎ > ‎

Питання по C++

Junior

Загальні питання

1.У чому полягають основні принципи ООП?
2.Що таке складність алгоритму?
3.Код працює неправильно. Що робити?
4.Поясніть такі структури даних, як стек і черга.
5.Які книги, пов’язані з програмуванням, читали? Чого з них навчились?
6.Що цікавого знайшли в нових стандартах С++17, С++20?
7.Що таке таблиця ASCII?
8.Що таке Unicode?
9.Що таке патерни проєктування та для чого їх використовують?
10.Патерни Singleton, Strategy, Template-Method, Decorator?
11.Для чого потрібні модульні тести?
12.Яка різниця між модульними та інтеграційними тестами?
13.Що таке TDD?

Метапрограмування

14.Що таке шаблонний клас і шаблонна функція?
15.Що таке конструктори? Які типи знаєте?
16.Чи може конструктор бути шаблонною функцією?
17.Чи може віртуальна функція бути шаблонною?
18.Що таке інстанціація шаблону?
19.Що таке спеціалізація шаблону? Часткова спеціалізація шаблону?
20.Розкажіть про імплементацію шаблонних класів у срр-файлі?

Препроцесор і компіляція

21.Як проходить процес компіляції срр-файлів у бінарний файл?
22.Що таке препроцесор?
23.Як працює препроцесор?
24.Які знаєте його команди?
25.Як працює директива include?
26.Як працює директива define?
27.Що саме лінкує лінкер?
28.Що таке оптимізація компілятора?
29.Що таке прапорці компіляції?
30.Як захистити хедер від повторного включення?
31.Що робить директива include?
32.Як працюють макроси?

C

33.Як static впливає на глобальні/локальні змінні?
34.Як сonst впливає на змінну?
35.Які варіанти використання extern знаєте?
36.Які варіанти використання volatile знаєте?
37.Які є бітові операції?
38.Що таке булева алгебра?
39.Розкажіть про етапи розробки бібліотеки або програми.
40.Що таке алгоритми сортування та які знаєте?
41.Які алгоритми роботи з рядками знаєте?
42.Які алгоритми на графах знаєте?
43.Де може зберігатися змінна?
44.Яка різниця між calloc і malloc?
45.Для чого використовують realloc?
46.Що таке вказівник?
47.Який розмір вказівника і від чого він залежить?
48.Які є операції з вказівниками?
49.Що таке struct?
50.Як визначити розмір структур?
51.Що таке вирівнювання в структурах?
52.Що таке union?
53.Який розмір union?

C++/OOP

54.Що таке клас?
55.Які є основні типи даних у C++?
56.Що таке інкапсуляція? Як вона реалізується в C++?
57.Які є вбудовані типи в С++?
58.Що таке enum?
59.Як співвідноситься клас і об’єкт?
60.Яка різниця між структурою і класом?
61.Різниця між private/protected/public та де вони використовуються?
62.Які методи класу є стандартними для класу?
63.Що таке абстрактний клас і навіщо він?
64.Скільки займає пам’яті об’єкт порожнього класу class A{};?
65.Що стане з функцією, якщо до неї додати ключове слово static? У контексті члена класу? У контексті методу класу?
66.Які особливості статичних полів класу?
67.Яка особливість константних методів-членів класу?
68.Як змінити поле класу в константному методі класу?
69.Які методи можна викликати з константних об’єктів?
70.Що таке купа та стек? Відмінності, принцип роботи.
71.В чому різниця між вказівником s посиланням?
72.Для чого потрібен вказівник на функцію? Як його оголосити?
73.Що буде, якщо забути викликати delete? Коли звільниться та пам’ять?
74.Що таке розумний вказівник? Які розумні вказівники є в стандартній бібліотеці?
75.Як працює std::unique_ptr?
76.Як працює std::shared_ptr?
77.Розкажіть про константність змінної, посилання, вказівника? Що таке константний вказівник і вказівник на константу? Розмір вказівника в пам’яті?
78.Розкажіть про передачу аргументів за значенням, посиланням і вказівником?
79.Розкажіть про порядок обчислення аргументів функції?
80.Що трапиться, якщо повернути посилання на тимчасовий об’єкт?
81.Що таке перевантаження функції? Види перевантаження.
82.Що таке явне та неявне приведення типів у С++? Розкажіть про функції явного приведення типів у C++?
83.Що таке ініціалізація змінної в if?
84.Що таке ліниві обчислення в С++?
85.Розкажіть про цикли for та range-for.
86.Що робить ключове слово auto? auto-визначення return-типу, аргументів функції?
87.Чим відрізняються delete та delete[]? Що трапиться, коли викликати delete в об’єкта, створеного через new[]?
88.Обробка помилок у С++? Які конструкції використовують під час обробки exception?
89.Чи можна викидати exception з конструктора? Які поля будуть сконструйовані, які поля будуть зруйновані?
90.Що таке memory leak?
91.Чи можна викидати exception з деструктора?
92.Як відловити ділення на 0 в С++?
93.Як працюють константні методи?
94.Що таке лямбда-функція у С++? Як отримати доступ до змінних у зовнішній ділянці видимості?
95.Для чого використовувати namespaceanonymous namespace?
96.Яе викликати об’єкт з nested namespace?
97.Як працюють inline-функції? Чи може така функція бути рекурсивною?
98.Що таке поліморфізм?
99.Для чого використовується наслідування?
100.Які бувають типи наслідування?
101.Для чого використовують віртуальне наслідування?
102.Як можна розв’язати проблему ромбоподібного наслідування без використання віртуального наслідування?
103.Що трапиться, якщо клас-спадкоємець передати за значенням у функцію, яка приймає базовий клас?
104.Що трапиться, якщо успадкуватися від базового класу, який не має віртуального конструктора?
105.Що трапиться, якщо викликати перевизначену virtual function з конструктора? Чи може конструктор бути віртуальним?
106.Чи може мати імплементацію pure virtual function? Що трапиться, якщо викликати pure virtual function з конструктора?
107.Які методи генеруються для класу за замовчуванням? В якому випадку такі методи не будуть генеруватися? Як змусити компілятор додати/видалити ці методи?
108.Як заборонити успадковувати клас?
109.Який порядок конструювання та руйнування класів в ієрархії? Порядок ініціалізації полів класу?
110.Які є способи ініціалізації полів класу?
111.Чи може деструктор бути віртуальним?
112.Що робить ключове слово virtual?
113.Для чого використовують віртуальний деструктор?
114.Що таке глибоке копіювання?
115.Що таке віртуальні функції та навіщо вони потрібні?
116.Як захистити об’єкт від копіювання?
117.Що таке семантика переміщення?

STL/Algorithms

118.З чого складається STL?
119.Які алгоритми застосовували з STL? В чому перевага використання алгоритмів перед власноруч написаними функціями?
120.Розкажіть про контейнери стандартної бібліотеки vectorlistmapunordered_map.
121.Які знаєте типи ітераторів? Чим вони відрізняються? В яких контейнерах використовуються?
122.Яка різниця між std::setstd::map std::unordered_multimap?
123.Що таке ідіома remove-erase?
124.Як отримати найменше значення типу?
125.Яка різниця між std::map та std::hashmap?
126.Як підрахувати кількість елементів у std::list?
127.Що таке складність алгоритму та від чого вона залежить?
128.В чому різниця між vector та list і у яких випадках їх краще використовувати?

Багатопотоковість

129.Що вам відомо про багатопотоковість?
130.Що спільного і відмінного в процесах і потоках?
131.Як синхронізувати передачі інформації між потоками?
132.Яка різниця між м’ютексом і семафором?
133.Що таке deadlock?
134.Чи є С++ thread-safe?
135.Що таке race-condition?
136.Які уникнути стану гонитви?
137.Що таке атомарна операція?
138.Як працювати із std::mutex?

Networking

139.Що таке сокет?
140.Які операції можна робити з сокетом?
141.Яка інформація потрібна, щоб створити сокет?
142.Які бувають моделі мереж?
143.Розкажіть про рівні моделі OSI.
144.Розкажіть про рівні моделі TCP/IP.
145.Що таке IP-адреса?
146.Для чого використовується маска підмережі?
147.Яка різниця між IPv4 та IPv6?
148.Скільки пам’яті необхідно для зберігання IPv4?
149.Навіщо порт?
150.Скільки максимально може бути портів?
151.Яка різниця між TCP і UDP?
152.Для чого такий ненадійний UDP-протокол?

OS/Linux

153.Що таке менеджер пакетів?
154.Які бувають менеджери пакетів?
155.Які бувають дистрибутиви Linux?
156.Що таке PID?
157.Для чого використовують файлові дескриптори?
158.Розкажіть про стандартні файлові дескриптори процесу.
159.Що таке Pipe?
160.Що таке Named Pipe?
161.Що таке UID?
162.Розкажіть про команди bash.

SCM/CI/CD

163.Які є види SCM?
164.Для чого використовують системи контролю версій?
165.Які є команди git?
166.Які етапи під час коміту змін?
167.Різниця між git fetch і git pull?
168.Які є етапи вирішення merge conflict?

Практичні завдання

169.Порахуйте кількість одиниць у довільному числі.
170.Є структура за типом «однозв’язний список». Напишіть функцію, яка розгортає список. Тобто перший елемент стає останнім, а останній — першим.
171.Напишіть реалізацію функції int atoi(const char *str); перетворення рядка в число.
172.Для структури типу однозв’язний список напишіть функцію вставки елемента.
173.Реалізуйте клас vector.
174.Реалізуйте бінарний пошук у масиві.
175.Реалізуйте будь-яке сортування.
176.Реалізуйте макрос для порівняння двох рядків.
177.Реалізуйте реверс рядків.
178.Реалізуйте переведення числа з рядка в int.
179.Реалізуйте підрахунок слів у реченні.
180.Реалізуйте підрахунок чисел Фібоначчі.
181.Знайдіть такі елементи двох масивів, які трапляються тільки в кожному з них. Бажано використовувати STL.
182.Видаліть з unordered_map елементи, які діляться на 2, і виведіть ключі цих елементів.
183.Напишіть клас для логування, який міг би логувати до консолі або файлу.
184.Напишіть функцію для визначення, чи є певний рік високосним.
185.Напишіть функцію для визначення, чи є певне слово паліндромом.
186.Напишіть реалізацію патерну Singleton.
187.Напишіть реалізацію std::vector з операціями: push_backpush_frontpop_back, pop_front, sizeclear.
188.Напишіть рекурсивний пошук значення в дереві бінарного пошуку.
189.Напишіть функцію, яка перевіряє, чи є дерево збалансованим.
190.Напишіть функцію для пошуку унікального елемента в масиві.

Middle

Загальне

1.Які курси пройшли чи книги прочитали за цей рік? Чого навчились?
2.Що подобається та не подобається в С++? Чого бракує?
3.Що цікавого знайшли в нових стандартах С++17, С++20 (конкретні фічі)?
4.Розкажіть про фічі, які з’явилися в різних версіях мови.
5.Розкажіть про модель пам’яті, яка з’явилася в С++11 стандарті.
6.Що таке серіалізація? Які бібліотеки знаєте?
7.Які знаєте патерни проєктування?
8.Що таке операційна система? Які існують типи за призначенням?
9.Назвіть основні складові та принципи роботи ОС Linux як приклад системи загального призначення.
10.Що таке SFINAE та PIMPL?
11.Назвіть породжувальні, структурні та поведінкові патерни програмування та наведіть приклади їх використання.

Препроцесор і компіляція

12.Розкажіть про системи автоматизації білд-процесу.
13.Яка різниця між статичною і динамічною бібліотеками?
14.Яка різниця між виконавчим файлом і динамічною бібліотекою?
15.Що таке DLL hell?
16.Що таке прапорці компіляції (fPIC)?
17.У чому різниця між дебажною та релізною збіркою?
18.Що потрібно для використання сторонньої бібліотеки?
19.Що таке internal linkage?

C

20.Що буде, якщо двічі викликати free?
21.Як відбувається виклик функції?
22.Як відбувається передача параметрів у функцію?
23.Як опрацьовується константність змінних?
24.Що означає ключове слово inline?
25.Для чого використовують вирівнювання, чи можна його контролювати?
26.Розкажіть про бітові поля.
27.Для чого потрібен extern «C»?
28.Що буде, якщо у двох файлах зробити функцію з однаковим ім’ям і параметрами? На якому етапі виникне помилка?
29.Як експортувати/імпортувати функції з динамічної бібліотеки?
30.Яка різниця між С-style приведенням типів і C++ приведенням?

C++

31.Що таке явне та неявне приведення типів у С++? Навіщо робити explicit-конструктор?
32.Що таке Uniform initialization? Aggregate initialization?
33.Що таке Reference to temporary object? Як продовжити час життя тимчасового об’єкта?
34.Що таке делегуючий конструктор?
35.Що таке список ініціалізації?
36.Який порядок ініціалізації полів класу? Що трапиться, якщо конструктор ініціалізує поля в іншому порядку?
37.Що трапиться, якщо ініціалізувати поле іншим полем?
38.Що таке copy elision? Скільки разів буде викликано конструктор/деструктор в об’єкта, який повертають за значенням?
39.Що таке move-семантика?
40.В яких випадках не буде згенеровано конструктор копіювання?
41.Чим відрізняється конструктор копіювання від оператора присвоєння?
42.За яких умов в конструкторі можна викинути exception?
43.Що таке конструктор за замовчуванням? Для чого потрібні default та delete?
44.Чим відрізняється інтерфейс від абстрактного класу?
45.Які види поліморфізму в С++?
46.Як реалізовне успадкування в більшості компіляторів?
47.Множинне успадкування: за та проти?
48.Віртуальне спадкування та порядок конструювання?
49.Навіщо використовувати override?
50.Які є правила виведення типу при використанні auto? В яких випадках auto може призвести до небажаного копіювання об’єкта?
51.Розкажіть про всі можливі способи використання ключового слова static в С++? Що таке static initialization order fiasco?
52.Що робить виклик throw; в блоку catch?
53.Чим відрізняється constexpr від const?
54.Що таке const correctness?
55.В якому випадку можна використовувати const_cast?
56.Що таке ключове слово mutable і коли його потрібно використовувати?
57.Що таке ключове слово friend і коли його потрібно використовувати?
58.Розкажіть про лямбда-вирази у С++ і доступ до змінних у зовнішній області видимості, захоплення this у лямбду та час життя лямбди та захоплених змінних?
59.Що таке функтор? Напишіть приклад.
60.Що таке спеціалізація шаблону?
61.Що таке dynamic_cast та run-time type identification?
62.Що таке exception? Як кинути та зловити?
63.Що буде, якщо кинути exception з конструктора? А з деструктора?
64.Що буде, якщо не зловити exception?
65.Що станеться, якщо exception вийде за межі блоку noexcept функції?
66.Для чого можна використовувати приватне успадкування?
67.Що таке контракт функції?
68.Що таке vptr і vtable?
69.Де міститься vptr?
70.Де міститься vtable?
71.Яка різниця між overload and override?
72.Як компілятор розрізняє члени класу та звичайні змінні в функціях?
73.Навіщо використовують exceptions?
74.Що таке блоки try-throw-catch?
75.Розкажіть про логіку catch-блоків.
76.Що таке move constructor?
77.У чому різниця між константним методом і неконстантним?
78.Що таке О-нотація та як визначити складність будь-якого алгоритму?
79.Що таке таблиця віртуальних методів?
80.Які функції класу автоматично генерує компілятор, якщо їх не визначити?
81.Що таке вирівнювання даних?
82.Що таке exception?
83.Які є стандартні контейнери та на основі яких структур вони побудовані?
84.Що таке Undefined behavior? Наведіть приклади.
85.Як визначити, що в програмі є memory leak?
86.Для чого потрібен std::make_shared? Чим він кращий за створення std::shared_ptr через конструктор?
87.Що буде, якщо виділити один обсяг пам’яті, а записати більше?
88.Що таке переповнення stack?

Патерни проєктування

89.Навіщо потрібні патерни? Які типи патернів розрізняють?
90.Недоліки патерну Singleton? Коли він доречний?
91.Переваги та недоліки PIMPL?
92.У чому різниця між патерн-фабрикою та фабричним методом? Коли використовувати який з них?
93.Що таке патерн Observer?
94.Як контролювати стан програми? Машину станів? Патерн стан?
95.Що таке патерн Visitor?

Метапрограмування

96.Які є правила виведення типу в шаблоні?
97.Чим відрізняється using від typedef?
98.Скільки пам’яті займає довільна структура? Що таке вирівнювання об’єкта?
99.Чому порожня структура займає 1 байт? Яка мінімальна одиниця адресування у С++?

OOP/OOD

100.Що таке SOLID? Що означає кожен з цих принципів?
101.Розкажіть про патерни проєктування.
102.Що таке Dependency Injection? Наведіть приклад.
103.Які переваги та недоліки функціонального підходу?
104.Що таке принцип RAII?
105.Що таке принцип DRY?
106.Що таке принцип KISS?
107.Які переваги композиції перед успадкуванням?

STL/Algorithms

108.Які алгоритми з STL використовували? Яких не вистачає?
109.Якими особливостями має володіти клас, щоб він був ітератором?
110.Які бувають ітератори?
111.Розкажіть про інвалідацію ітераторів.
112.Як оптимізувати видалення елемента з середини вектора?
113.Як реалізований vector?
114.Як реалізований list?
115.Як розширити STL-контейнери?
116.Які є алгоритми в STL?
117.В чому різниця між vectordequelistset e STL?
118.Коли треба використовувати map? Коли — unordered_map? Яка складність пошуку і вставки в цих контейнерах?
119.Як перевірити, чи є в контейнері елементи? Чому виклик container.size() є поганою практикою?
120.Що таке exception safety guarantee? Яку exception safety guarantee мають STL-контейнери?
121.Розкажіть про типи розумних вказівників і підрахунок посилань у них?

Багатопотоковість

122.Чи є С++ thread-safe?
123.У чому різниця між багатопотоковістю та асинхронністю?
124.Що таке багатопотоковість? Яку функціональність надає С++ для розробки багатопотокових застосунків? Які основні проблеми багатопотокових застосунків?
125.Як передати інформацію між кількома процесами?
126.Як синхронізувати між собою кілька процесів?
127.Які є особливості роботи з shared memory?
128.Як працює spinlock?
129.Які ви знаєте особливості використання recursive mutex?
130.Розкажіть про read-write mutex.
131.Що таке race-condition? Взаємне блокування? Що таке критична секція?
132.Які уникнути стану гонитви?
133.Чим відрізняється м’ютекс від семафора?
134.Які примітиви синхронізації реалізовані в C++? Переваги lock_guard?
135.Що трапиться, якщо exception вийде за межі потоку? Які інструменти є для безпечної асинхронності в С++?
136.Чим відрізняється std::launch::async від std::launch::deferred?
137.Що таке атомарна операція? std::atomic?
138.Як працювати з std::conditional_variable?
139.Як створити потік за допомогою std::thread?
140.На скільки потоків найкраще розбити задачу? Від чого це залежить?
141.Як працювати з std::async?
142.Thread-safe гарантії контейнерів в С++? Чому недолік інтерфейсу front() + pop_fornt()?

Networking

143.Що таке TCP handshake?
144.Яка різниця між TCP та UDP?
145.Розкажіть про протоколи верхнього рівня.
146.Яка різниця між HTTP та HTTPS?
147.Розкажіть про SSL/TLS handshake.

SCM/CI/CD

148.Розкажіть про процеси CI.
149.Як відредагувати коміт?
150.Розкажіть про інтерактивний rebase.
151.Які можуть бути способи дебагінгу коду?
152.Для чого потрібні Unit test? Чим відрізняється від Functional Test?
153.Як тестувати код? Який використовуєте фреймворк?
154.Які бібліотеки знаєте для написання тестів?
155.Що таке mock?
156.Скільки тестів потрібно написати на одну функцію?
157.Що таке побічний ефект, ідемпотентність і чисті функції?
158.Що таке контейнеризація і в чому переваги та недоліки? Що таке Docker чи інший інструмент контейнеризації?
159.Що таке CI/CD і які переваги приносить для розробника?
160.Які принципи ітеративних методологій?
161.Які переваги та недоліки code-convention?

Практичні завдання

162.Напишіть максимально коректну реалізацію класу string з конструктором копіювання та оператором присвоєння.
163.Напишіть реалізацію черги.
164.Реалізуйте функцію, яка за один прохід знайде унікальний елемент в контейнері.
165.Напишіть thread-safe пул потоків.
166.Напишіть гру життя в ООП стилі.
167.Напишіть клас, який дістає з бази список товарів за фільтром і показує на консолі. Напишіть тести для нього.
168.Будь-яке завдання на написання коду, щоб перевірити вміння проєктувати інтерфейси та дотримуватися принципів SOLID, DRY, KISS.
169.Напишіть свою реалізацію std::atomic.
170.Напишіть програму для аналізу графів: знаходження циклів, deadlock-станів, циклів, недосяжних станів.
171.Напишіть програму, яка б перевіряла, що у системі запущено лише один її екземпляр. Рішення має бути cross-platform.
172.Проаналізуйте C++ код з погляду якості: виявити потенційні memory leak, нераціональне використання STL-контейнерів, алгоритмів, неоптимальні конструкції тощо.
173.Напишіть код для розв’язання судоку.
174.Напишіть код, який знайде зациклення в однозв’язному списку.

Senior

Загальне

1.Як ви розумієте SOLID?
2.Як розробити систему плагінів на С++?
3.Що таке RPC? Які бібліотеки знаєте?
4.На що звертати увагу під час проведення code review?
5.Які є проблеми під час написання кросплатформенного коду? На що звертати увагу?
6.Що робити, якщо код працює повільно?
7.Які є способи та методологія вимірювання швидкодії коду? Як можна усунути/зменшити вплив замірів на швидкодію?
8.Що таке SFINAE? Для чого використовується?
9.Що таке метапрограмування? За допомогою чого реалізується на С++?
10.Як використовувати variadic templates?
11.Як тестувати закриті методи?
12.Як рахувати покриття тестами? Чи потрібно це робити?
13.Що таке cache miss і як це виявити?
14.Що таке SIMD-інструкції? Які є необхідні умови та способи їх використання?
15.Що таке покриття коду і як забезпечується?
16.Опишіть принципи lock-free структур даних і свій досвід роботи з ними.

Препроцесор і компіляція

17.Розкажіть про побудову білд-системи.
18.Як працювати з білд-системами: Make, CMake.
19.Як інтегрувати third-party в проєкт?
20.Що таке бар’єри пам’яті?
21.Розкажіть про роботу з сирими вказівниками та ручне управління пам’яттю.
22.Що таке статичний аналізатор коду? Які знаєте?
23.Що таке динамічний аналізатор коду? Які знаєте?
24.Проєкт повільно збирається. Як можна прискорити?

C/C++

25.Розкажіть про використання realloc в контейнерах.
26.Як працюють темплейти?
27.Розкажіть про спеціалізацію темплейтів.
28.Як працює RTTI?
29.Чи можна використовувати exception в конструкторі/деструкторі?
30.Що таке rvalue та lvalue?
31.В чому особливості контейнерів std::setstd::mapstd::unordered_mapstd::hash?
32.Що таке placement new? Для чого використовують? Як зробити placement delete?
33.Як розміщується в пам’яті клас з множинним успадкуванням та віртуальними функціями?
34.Як працюють точки зупинки?
35.Що таке вразливості? Який механізм їхньої роботи?
36.Як написати власний std::shared_ptr?
37.Що таке curiously recurring template pattern?
38.Опишіть призначення та принцип роботи std::shared_ptrstd::unique_ptr та std::weak_ptr.
39.Яке призначення та відмінності використання std::variant та std::any?
40.Які покращення отримав std::search з С++17?
41.Що таке copy elision і коли стає можливим? Які є особливості для різних стандартів?
42.Що таке Return Value Optimization?

OOP/OOD

43.Поясніть принципи SOLID.
44.Поясніть принципи KISS.
45.Поясніть принципи YAGNI.
46.Які є підходи до оптимізації коду?
47.На що варто звертати увагу під час code review?
48.Які є патерни проєктування? Чому не радять використовувати Singleton?
49.Що таке статичний поліморфізм?

STL/Algorithms

50.Коли std::vector може використовувати std::move?
51.Розкажіть про свій улюблений алгоритм пошуку.
52.Що таке lock-free та wait-free алгоритми? У чому їхні відмінності та способи реалізації?
53.Опишіть призначення execution policy для паралельних алгоритмів.

Багатопотоковість

54.Розкажіть про побудову API, розрахованих на багатопотокове використання.
55.У чому різниця між kernel-level та user-level потоками?
56.Що таке coroutine?
57.Що робить специфікатор thread_local?
58.Як реалізувати синхронізацію в задачі producer-consumer?
59.Як синхронізуватися між різними процесами?

SCM/CI/CD

60.Розкажіть про налаштування процесу менеджменту гілок репозиторію.
61.Розкажіть про стратегію бренчування.

Практичні завдання

62.Напишіть базову реалізацію std::shared_ptr.
63.Реалізуйте алгоритм сортування.
64.Реалізуйте алгоритм хешування.
65.Реалізуйте shared_ptr з розширенням для weak_ptr.
66.Реалізуйте найпростіший producer-consumer, використовуючи умовні змінні.
67.Опишіть якомога детальніше, що відбувається в системі, коли застосунок робить мережевий запит.
68.Детально описати дизайн програмного компонента, наприклад, системи голосування — врахувати при цьому високе навантаження і зробити його розширюваним і відмовостійким.