Результати пошуку за запитом: Видеокурс c
400+ питань на співбесіді щодо С++
Автор: Влад Сверчков
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 5 апреля 2021 года. Оригинальная версия на украинском языке доступна по ссылке.
Junior
1.1 Общие вопросы
1.2 Метапрограммирование
1.3 Препроцессор и компиляция
1.4 Язык C
1.5 Язык С++ и ООП
1.6 STL / Algorithms
1.7 Многопоточность
1.8 Networking
1.9 OS/Linux
1.10 SCM / CI / CD
1.11 Практические задания
Middle
2.1 Общее
2.2 Препроцессор и компиляция
2.3 Язык С
2.4 Язык С++
2.5 Паттерны проектирования
2.6 Метапрограммирование
2.7 OOP/OOD
2.8 STL / Algorithms
2.9 Многопоточность
2.10 Networking
2.11 SCM / CI / CD
2.12 Практические задания
Senior
3.1 Общее
3.2 Препроцессор и компиляция
3.3 C/C++
3.4 OOP/OOD
3.5 STL / Algorithms
3.6 Многопоточность
3.7 SCM / CI / CD
3.8 Практические задания
Предлагаем список технических вопросов, которые, вероятно, вам поставят на собеседованиях по 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. В чем разница между указателем и ссылкой?
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. Для чего использовать namespace, anonymous 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. Расскажите о контейнерах стандартной библиотеки vector, list, map, unordered_map.
121. Какие знаете типы итераторов? Чем они отличаются? В каких контейнерах используются?
122. Какая разница между std::set, std::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_back, push_front, pop_back, pop_front, size, clear.
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. В чем разница между vector, deque, list, set 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_front()?
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::set, std::map, std::unordered_map, std::hash?
32. Что такое placement new? Для чего используют? Как сделать placement delete?
33. Как размещается в памяти класс со множественным наследованием и виртуальными функциями?
34. Как работают точки остановки?
35. Что такое уязвимости? Каков механизм их работы?
36. Как написать собственный std::shared_ptr?
37. Что такое curiously recurring template pattern?
38. Опишите назначение и принцип работы std::shared_ptr, std::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. Расскажите о стратегии разветвления (branching).
Практические задания
62. Напишите базовую реализацию std::shared_ptr.
63. Реализуйте алгоритм сортировки.
64. Реализуйте алгоритм хеширования.
65. Реализуйте shared_ptr с расширением для weak_ptr.
66. Реализуйте простейший producer-consumer, используя условные переменные.
67. Опишите как можно подробнее, что происходит в системе, когда приложение делает сетевой запрос.
68. Детально описать дизайн программного компонента, например, системы голосования; учесть при этом высокую нагрузку и сделать ее расширяемой и отказоустойчивой.
Выражаем благодарность за участие в статье Александру Жакуну, Ярославу Пушко, Назару Семенишину, Сергею Подоброму, Владимиру Кочуну, Владимиру Новикову, Сергею Кривоносу, Марку Цирульнику, Кириллу Пшеничному, Виктору Шуму, Сергею Братусю.
Як стати програмістом? Огляд мов програмування та IT-професій
Автор: Редакція ITVDN
Добрий день!
Друзі, сьогодні ми презентуємо вам новий курс для початківців і світчерів “Як стати програмістом”. Уроки курсу присвячені розгляду найпопулярніших мов програмування та ІТ-спеціальностей, їхнім сильним і слабким сторонам, а також перспективам застосування в Україні і світі.
У цьому плейлисті ви знайдете вичерпні відповіді на запитання:
Як стати програмістом?
Наскільки важко опанувати ту чи іншу ІТ-спеціальність?
Які вміння потрібні, щоб стати програмістом?
Які технології варто вчити та скільки часу це займе?
Як отримати свою першу роботу в якості програміста?
Тривалість курсу – 28 годин 47 хвилин.
Структура курсу:
Як стати програмістом? Python, Java, FrontEnd чи .NET – що обрати?
Яка мова програмування найкраща для старту в IT.
Як стати QA спеціалістом у 2023.
Як стати Frontend розробником у 2023 році.
Яка різниця між Frontend і Backend розробкою?
Чи варто вчити C# у 2023?
Як стати Python розробником. Покроковий план з нуля.
Як вивчити Java за 5 місяців і отримати свій перший офер?
Переваги спеціальності JavaScript розробник.
Чому варто стати Node.js розробником у 2023 році?
Як стати PHP розробником і отримати оффер від IT-компанії.
Як стати Full Stack Python розробником.
Python Data Science. З чого почати?
Хто такі DevOps інженери? Що потрібно знати, щоб стати DevOps Engineer у 2023 році.
Шляхи розробника в блокчейні. На чому можна писати і як потрапити.
Уроки курсу допоможуть вам:
виважено розставляти пріоритети у виборі спеціальностіі;
сформувати бачення того, які знання та практичні навички повинен мати спеціаліст із того напрямку, який вас цікавить;
скласти свій план навчання, який міститиме те, що дійсно важливо для побудови успішної кар'єри в IT;
вивчати теорію за перевіреними, якісними джерелами та книгами.
Для кого цей курс
Курс буде корисний і цікавий для тих, хто хоче перейти в ІТ, або освоїти додаткову IT-спеціальність, а також скласти для себе чіткий план опанування обраного напрямку.
Пакет Преміум Plus буде закритий
Автор: Редакція ITVDN
Друзі, привіт! Маємо дуже важливе повідомлення. Як ви знаєте, в період тотальних блекаутів у листопаді-грудні 2022 року перебої зі світлом і інтернетом робили практично неможливими повноцінне онлайн навчання.
Тоді ми створили новий пакет підписки – “Преміум Plus”, фішкою якого стала можливість завантаження відео уроків, аби можна було навчатися у тих складних умовах, в яких ми всі опинилися.
Наразі ситуація зі світлом по всій Україні стабілізувалася, окрім територій, наближених до зони активних бойових дій, тому ми прийняли рішення про закриття продажу пакету “Преміум Plus”. Придбати його можна буде тільки до 5 травня 2023 року.
Але!
Ми даємо 50% знижку на пакет “Преміум Plus” для кожного, хто придбає його до 5 травня включно. Таким чином, вартість пакету складатиме 100 USD (199.99 USD).
Що входить до ”Преміум Plus”:
Доступ до всіх відео курсів (понад 230) на 12 місяців
Доступ до інтерактивних практикумів
Вихідний код навчальних проєктів
Презентації, опорний конспект, д/з
Перевірка 20 домашніх завдань
Консультації з тренером (120 хвилин)
Онлайн тестування та сертифікати за пройденими курсами
Доступ до нових курсів, які виходитимуть під час дії підписки
Можливість завантажувати на свій девайс відео уроки
Що можна вивчати на ITVDN?
ITVDN – це освітня онлайн платформа, яка більше 9 років допомагає початківцям опановувати популярні ІТ-спеціальності. Наразі ми маємо більше 230 різноманітних відео курсів для вивчення:
програмування мовами Python, Java, C#, JavaScript, TypeScript, PHP тощо;
веб-дизайну та веб-розробки;
тестування прграмного забезпеченння;
розробки ігор на Unity;
мобільної розробки під Android та iOS.
Подарунковий сертифікат Преміум Plus – подвійна вигода
Якщо у вас є друг, який хоче вивчати IT, або ж ви самі прагнете опанувати ІТ-спеціальність, але розпочати навчання тут і зараз не маєте змоги, пропонуємо розглянути можливість придбання Подарункового сертифікату “Преміум Plus” за акційною ціною.
Активувати сертифікат ви зможете будь-коли протягом 12 місяців з моменту придбання. Таким чином навіть після закриття пакету у вас буде можливість скористатися усіма його можливостями пізніше.
Придбати подарунковий сертифікат
Увага! Фейк
Автор: Редакція ITVDN
Друзі, сьогодні про важливе для нас із вами!
Протягом останніх 4 днів у телеграм-пабліках та каналах було зроблено 48 публікацій, в яких було використано два наші бренди, ITVDN та CodeUA, без нашої на те відповідної згоди❌
🙏 Просимо всіх наших підписників та користувачів, бути уважними - ці публікації не мають відношення до нас! Без нашої згоди організатори нового телеграм-каналу використали створені нами віжуали та наше ім'я.
Ми зв'язались із деякими пабліками, де були ці публікації, намагаючись знайти відповіді. На превеликий жаль, адміністрація одного із найбільших пабліків відповіла: "Нам надали картинку, текст і зробили оплату, а ви це чи не ви, для нас не має значення". Робимо висновки.
📌 Надаємо актуальні та правдиві посилання на наші продукти:
✅ YouTube канал CodeUA, де ми створюємо якісний українськомовний контент у сфері ІТ для збільшення української спільноти програмістів🤗
✅ По кожному IT курсу на CodeUA ми створили телеграм-канали, де ви знайдете домашні завдання, презентації та корисні матеріали від тренерів, а також однодумців у друзів:
➡️ C# Стартовий
➡️ Python Стартовий
➡️ HTML5 & CSS3 Стартовий
➡️ Java Стартовий
➡️ Git + GitLab
➡️ Python+SQL
➡️ Business English
➡️ Створення гри на С# з нуля
✅ Щомісячно команда ITVDN готує 4-5 вебінарів з різних напрямків та технологій, залучаючи експертів ділитись своїм досвідом - дивіться календар безкоштовних вебінарів
✅ А у блозі ITVDN стисло та зрозуміло пишемо про ІТ, даємо перелік порад новачкам у програмуванні, що ще шукають свій шлях. Будемо раді новим читачам та вашим коментарям🙌
🔥 ПОВІДОМЛЯЄМО, що ми вирішили подовжити нашу Програму безкоштовного навчання для українців до 1 лютого 2023 року. Усі бажаючі можуть зареєструватись, пройти верифікацію та отримати доступ до бази ITVDN із 230+ ІТ відео курсів різних напрямків і вивчити саме те, що зацікавить найбільше. За весь час роботи цієї програми, з 6 березня 2022 року, вже більше 50 тис. українців скористались цією можливістю!
Відкривайте для себе світ ІТ разом з нами і не ходіть по інших каналах ;)
Ruby on Rails – новий курс
Автор: Редакція ITVDN
Дорогі друзі, на ITVDN опубліковано новий відео курс, присвячений вивченню Ruby on Rails – популярного веб-фреймворку для BackEnd-розроблення мовою Ruby!
Ruby on Rails (він же "RoR") – це MVC-фреймворк, який успішно застосовується для розроблення різних веб-додатків: від високонавантажених, стійких до відмов сайтів до веб-сервісів з продуманою бізнес-логікою і динамічним веб-інтерфейсом.
Курс “Ruby on Rails” складається з 15-ти логічно взаємопов'язаних уроків, під час проходження яких учні застосують на практиці теоретичні знання з імплементації якісного веб-сервісу за допомогою RoR.
На курсі будуть розглянуті основні модулі фреймворку Ruby on Rails, тонкощі, пов'язані з побудовою архітектури додатків, заснованих на даному фреймворку, а також з робочою практикою масштабування, налагодження, тестування та доставлення написаного коду на віддалені сервери.
Автор курсу – Євген Кушвід, Software Engineer and Data Scientist. У записаних відео уроках він ділиться техніками ефективного використання Ruby on Rails, спираючись на власний досвід та найкращі практики.
Структура курсу:
Знайомство з Ruby on Rails.
C з MVC. Знайомство з Controllers. Routing.
V з MVC. Знайомство з Views. Templates. Assets pipeline. Webpack.
M з MVC. Знайомство з ActiveRecord, міграціями та асоціаціями.
Інтерфейс запитів ActiveRecord. Валідації та колбеки ActiveRecord.
Rails command line. Налагодження Rails додатку (binding.pry).
Тестування додатку.
Rails Forms.
Знайомство з ServiceObject.
Знайомство з concerns.
Знайомство з FormObject.
Пишемо background jobs.
Кешування, інтернаціоналізація, serializers.
Deploy your Rails app (Heroku / Capistrano).
Зміни у Ruby on Rails 6
Чого ви навчитеся на даному курсі:
Розуміти структуру веб-додатків.
Створювати веб-додатки на Ruby on Rails.
Правильно масштабувати створені веб-додатки.
Ефективно тестувати та налагоджувати код.
Доставляти код на віддалений сервер і запускати його, підтримуючи сервер у постійному Uptime-і.
Попередні вимоги
Для розуміння матеріалу даного курсу потрібні знання мови Ruby, командної оболонки Bash, системи управління версіями Git, мови запитів SQL.
Дивіться перший урок у вільному доступі. Якщо у вас є активна передплата, курс доступний для вас у повному обсязі.
Безкоштовні ключі на софт від JetBrains
Автор: Редакція ITVDN
Компания JetBrains c 2000 года создает эффективные инструменты для разработчиков, освобождая от рутины и помогая сосредоточиться на творческих задачах. Dogfooding — один из ключевых принципов разработки продуктов JetBrains. Сотрудники компании сами постоянно пользуются инструментами, которые разрабатывают, что делает возможным оценивать собственные продукты глазами пользователей.
Для тех пользователей ITVDN, кто проходит Live Online обучение с тренером, наши партнеры предоставляют возможность получить бесплатные лицензии для обучения программированию с помощью профессиональных инструментов для разработчиков IDE JetBrains.
Для вас это прекрасная возможность дополнительно попрактиковать свои навыки и сделать свой процесс изучения программирования еще более полноценным.
Это позволит работать с теми инструментами, которыми пользуются разработчики международного уровня, с многолетним опытом ошибок и удач за плечами.
Среди IDE от JetBrains для профессиональных разработчиков:
IntelliJ IDEA, умная и продуктивная разработка на Java
PyCharm, IDE для профессиональной разработки на Python
Webstorm, умная IDE для JavaScript
Rider, быстрая и мощная кросс-платформенная IDE для .NET
и многие другие.
Получить бесплатный доступ к IDE JetBrains для личного пользования легко и удобно. Обратитесь к нашей технической поддержке или непосредственно к тренеру своего курса Live Online. Тренер-консультант также поможет сориентироваться и подскажет, когда и какую IDE стоит открывать для изучения.
Доступ предоставляется только на время обучения на ресурсе ITVDN по специальности. Количество лицензий ограничено.
Ознакомиться с полным перечнем всех IDE JetBrains.
Желаем вам легкого и продуктивного обучения на ITVDN!
Вчися зараз – плати потім
Автор: Редакція ITVDN
Для тих, хто вже якийсь час планував розпочати своє навчання за відео курсами ITVDN, розповідаємо про нові можливості з оплати. Тепер при оплаті в українських гривнях ви можете скористатися послугою «Оплата частинами» від ПриватБанку та Монобанку. Оформити оплату частинами можна на вигідних умовах, про які ми детально розповімо нижче.
Варіанти виплат
Ви можете розбити плату за навчання на зручну кількість платежів:
через ПриватБанк – від 2-х до 10-ти частин
через Монобанк – від 3-х до 10-ти частин
Як це працює? Ви оформлюєте оплату за навчання частинами у застосунку від банку на вашому смартфоні і буквально в той же день вже можете приступати до вивчення програмування за відео уроками. Банк автоматично зніматиме рівну частину щомісяця з вашого рахунку до моменту повної оплати вартості навчання.
На які послуги ITVDN поширюється оплата частинами? Така можливість передбачена:
для пакетів підписок «Базовий» та «Преміум», детальніше читайте на сторінці «Ціни на навчання» (валюта платежу – UAH);
для online навчання з тренером за найзатребуванішими 6 IT-спеціальностями: Python, Java, C#/.NET, Frontend, FullStack Node.js Developer, QA. Тестування ПЗ.
для наступних IT-спеціальностей на ITVDN:
- Frontend Developer
- Python Developer
- .NET Developer
- ASP.NET Core
- Unity/Game Developer
- Java Developer
- Ruby Developer.
Умови «Оплати частинами»:
необхідно бути клієнтом ПриватБанку чи Монобанку для оформлення цієї послуги;
послуга від банків безкоштовна;
не потрібно додатково подавати документи, довідку про доходи, підписувати нові договори;
оплата частинами оформлюється на всю суму навчання за спеціальністю;
перший платіж буде знято автоматично у день оплати послуг за навчання, а наступний – через місяць.
Дізнатися свій ліміт на послугу оплати частинами:
для клієнтів ПриватБанку за посиланням: https://paypartslimit.privatbank.ua/pp-limit/
для клієнтів Монобанку – у застосунку monobank у вкладці «Розстрочка» на вашому смартфоні.
Додаткова плата за користування сервісом «Покупка частинами» під час здійснення покупки не стягується.
Приємного навчання!
ITVDN – 5 років розвитку
Автор: Редакція ITVDN
В январе 2019 года ITVDN исполнилось 5 лет.
На сегодняшний день ITVDN – это самый большой образовательный онлайн ресурс по программированию и информационным технологиям, созданный в Украине.
В каталоге ITVDN более 170 курсов по самым популярным языкам программирования, созданы комплексные программы обучения по таким специальностям, как:
Java Developer
Python Developer
Верстальщик сайтов
JavaScript Developer
Frontend Developer
Angular Developer
PHP Developer
C#/.NET Developer
Android Developer
Unity/Game Developer
Проект стремительно развивается и пользуется большой популярностью среди IT специалистов.
Все это стало возможно только благодаря усилиям очень многих людей, объединенных идеей создания качественных и доступных видео курсов.
По случаю юбилея мы приглашаем на встречу всех, кто внес свой вклад в создание и развитие ITVDN – авторов курсов, сотрудников, друзей и партнеров проекта.
Мы будем вспоминать, как все начиналось, кто был у истоков, с какими сложностями сталкивались и как преодолевали их. Мы покажем вам, каким стал ITVDN к 2019 году, отметим наградами и небольшими подарками лучших участников проекта, а также и поделимся с вами планами на будущее.
Встреча состоится 22 февраля 2019 года в офисе компании Майкрософт по адресу г. Киев, ул. Жилянская 75, 4 этаж.
Программа:
17:30 – 18:00 Регистрация участников
18:00 – 18:25 ITVDN – как все начиналось. Д. Охрименко, И. Музыка
18:25 – 18:45 5 лет развития. Факты, цифры и достижения. Олег Тарица
18:45– 19:15 Кофе брейк, фуршет
19:15 – 19:30 To be the best in IT Education. Планы и цели ITVDN. Д. Охрименко, И. Музыка
19:30 – 19:50 Обмен мнениями о планах и перспективах развития ITVDN.
19:50 – 20:20 Награждение лучших авторов, партнеров и участников проекта.
20:20 – 20:30 Общая фотосессия
Вход по приглашениям.
Мы будем рады видеть на встрече представителей СМИ, которым близка и интересна тема онлайн обучения программированию и информационным технологиям. Для аккредитации заполните, пожалуйста, заявку и мы свяжемся с Вами.
Kyiv IT Outsourcing Forum 2018
Автор: Редакція ITVDN
Приглашаем на третий Kyiv IT Outsourcing Forum, которая пройдет 20-21 октября 2018 года.
Наряду с Lviv IT Outsourcing Forum, который проводится с 2010 года это уже традиционная конференция для владельцев и C-Level менеджмента украинских IT аутсорсинговых компаний.
Планируется, что в этом году в конференции примут участие около 500 CEO, CTO, COO, CFO директоров из Украины, Германии, Израиля и других стран Европы.
Поговорим о:
Как снять нагрузку и затыкание дыр с владельца IT-аутсорсинговой компании
На каком этапе какие процессы нужны успешно работающей IT сервисной компании?
Что происходит на мировом рынке IT-сервисов?
Возможна ли жесткая специализация компании по технологии, домейн, рынка и продукта?
Примеры сервисно продуктовых компаний которые "взлетели" в 2018 году.
Как построить sales процесс в технологической нише в средней компании?
Организационные изменения, драйвят рост и выход в новые формы существования.
Уже 9 лет подряд Outsourcing Forum собирает активную часть индустрии аутсорсинга в Украине и служит площадкой для обмена опытом и обсуждения "болезненных" проблем.
В результате участия в предыдущих конференциях, участники отмечают увеличение количества работников в своих компаниях, сделки по M & A, увеличение потока клиентов совершенствования собственной организационной структуры и создания или совершенствования стратегии развития компании.
Ключевые докладчики конференции: эксперты-практики, владельцы и директора IT-аутсорсинговых компаний, представители компаний-заказчиков аутсорсинговых услуг, консалтинговые и продуктовые компании.
Фишка наших последних конференций - частные встречи с ведущими спикерами конференции, в течение которых можно получить полноценной консалтинг по наболевшим вопросам.
Собственно в первый день будет полноценная конференционная программа, а уже второй день будет состоять из экскурсий офисами компаний и воркшопов.
Организатор: Lemberg Tech Business School: организация с 10-летней историей проведения успешных конференций: Lviv Mobile Development Day, GameDev Conference, Lviv PM Day, Lviv Freelance Forum и BDMSummit. Также в рамках LemBS действуют следующие школы: jCEO School, PMSchool, IMarketing School, SMM School, Startup School
Регистрация и подробности на сайте конференции. Скидка в размере 10% по промо-коду: KIOF10CBS
Результати акції Technical Skills Марафон
Автор: Редакція ITVDN
В период с 10 по 20 ноября 2017 года на ITVDN проходила акция Technical Skills Марафон.
В акции приняли участие 600 человек, из них 98 успешно выполнили задания практикумов.
21 ноября в 17:00 на YouTube канале в прямом эфире были определены победители марафона. Смотрите видео запись розыгрыша.
Как и было заявлено в условиях акции, мы провели розыгрыш 5 подписок на три месяца и 25 подписок на 1 месяц.
Вот имена победителей:
HTML&CSS
Малышев Сергей – подписка на 3 месяца
Krasnou Vitali – подписка на 1 месяц
Цымбаленко Денис - подписка на 1 месяц
Brovenko Vadim- подписка на 1 месяц
Хмара Владимир- подписка на 1 месяц
Bezvesilny Konstantin- подписка на 1 месяц
JavaScript
Takes Leios– подписка на 3 месяца
Милеев Антон– подписка на 1 месяц
Loktionov– подписка на 1 месяц
Корольчук Александр– подписка на 1 месяц
Korobka Sergey– подписка на 1 месяц
Хмара Владимир– подписка на 1 месяц
SQL
Цуканов Илья - подписка на 3 месяца
Иванова Ольга - подписка на 1 месяц
Safronyuk Maxim - подписка на 1 месяц
Сидоренко Борис - подписка на 1 месяц
Brovenko Vadim - подписка на 1 месяц
Prokhorov Konstantin - подписка на 1 месяц
C# Starter
Цуканов Илья - подписка на 3 месяца
Кириличев Владислав - подписка на 1 месяц
Белошицкий Николай - подписка на 1 месяц
Гурбич Михаил - подписка на 1 месяц
Karpenko Volodymyr - подписка на 1 месяц
Хмара Владимир - подписка на 1 месяц
С# Essential
Brovenko Vadim - подписка на 3 месяца
Хмара Владимир - подписка на 1 месяц
Arsen Grigoryan - подписка на 1 месяц
Xazaryan Artur - подписка на 1 месяц
Bulyha Nazar - подписка на 1 месяц
Nakytniak Dmitry - подписка на 1 месяц
4 участника акции успешно выполнили задания всех 5 практикумов. Вот их имена:
Brovenko Vadim
Хмара Владимир
Korobka Sergey
Pokydko Anton
Наш супер-герой, выполнивший все задания с максимальными результатами - Brovenko Vadim. Мы поздравляем Вадима и будем рады вручить ему фирменную дженгу и футболку ITVDN!
Письма с подорочными сертификатами будут отправлены победителям 22 ноября 2017 года.
Благодарим всех участников марафона!