О курсе
Материалы предназначены в первую очередь для разработчиков, которые уже знают основы С++ и планируют проходить собеседования. Безусловно, его материалы будут полезны разработчикам независимо от уровня знания языка, так там будут рассматриваться множество различных нюансов и подводных камней С++.
Курс сфокусирован на прохождении собеседований исключительно по С++ секции, для прохождения алогитмической или дизайн секции он никак не поможет.
Автор курса:
-
Ведущий разработчик в Ozon, до этого работал в Mail.ru Group (VK), Тинькофф и Kaspersky Lab;
-
Ведущий преподаватель в GeekBrains на кафедре С++, а также автор курса по С++ в университете Синергия;
-
Побывал на огромном количестве собеседований в роли собеседуемого в маленьких и крупных компаниях;
-
Провел не один десяток собеседований в Тинькофф по алгоритмическим и С++ секциям, также собеседовал людей в свою команду в VK.
Содержание:
-
Динамическая память
-
внутреннее устройство malloc и new
-
new с исключением в конструкторе
-
new для массива с нулевой длиной
-
разница malloc/new и free/delete
-
виртуальная память и swapping
-
placement new
-
-
Основы
-
mangling имен
-
бинарные операции
-
арифметика указателей
-
разница ссылок и указателей
-
константность с указателями
-
внутренняя и внешняя линковка
-
преобразование знакового типа к безнаковому
-
поряд инициализации и разрушения переменных
-
-
Макросы
-
макрос без скобок
-
макрос с инкрементом и декрементом
-
условие внутри макроса
-
-
ООП
-
перегрузка префиксного и постфиксного инкремента
-
пергрузка метода для lvalue и rvalue объекта
-
поряд инициализации полей в классе
-
виртуальное наследование
-
правило нуля, трех и пяти
-
виртуальные функции
-
разница struct и class
-
move семантика
-
сокрытие имен
-
pure virtual call
-
EBO
-
-
Шаблоны
-
сокрытие имен в шаблонном базовом классе
-
процесс инстанцирования шаблонов
-
ошибки специализации
-
-
Исключения
-
исключение, не перехваченное в программе
-
исключение в конструкторе и деструкторе
-
порядок перехвата исключения в catch блоках
-
перехват исключения по ссылке и по значению
-
-
Умные указатели
-
проблемы auto_ptr
-
утечки ресурсов с unique_ptr
-
утечки ресурсов с shared_ptr
-
внутреннее устройство shared_ptr
-
- Контейнеры
-
внутреннее устройство vector
-
внутреннее устройство priority_queue
-
внутреннее устройство list / forward_list
-
внутреннее устройство map / multimap / set / multiset
-
внутреннее устройство unordered_map / unordered_multimap / unordered_set / unordered_multiset
-
структура или класс в качестве ключа ассоциативных контейнеров
-
перемещение объектов во время реаллокации внутри вектора
-
индексация элементов внутри вектора
-
инвалидация итераторов
-
- Многопоточность
-
некорректное завершение потока
-
data race и локальный мьютекс
-
дедлок с двумя мьютексами
-
различные виды примитивов синхронизации
-
различные виды мьютексов
-
-
Реализация потокобезопасного синглтона с миксинами
-
Реализация умного указатели со стратегией deleter-a
- Реализация вектора с использованием vector_base
Популярные вопросы:
-
Подойдёт ли мне этот курс? Курс предназначен для разработчиков, которые уже знают основы С++ и планируют проходить собеседования. Материалы будут полезны разработчикам независимо от уровня знания С++.
-
Достаточно ли курса для того, чтобы с нуля разобраться в C++? К сожалению, нет. Курс помогает только подготовиться к собеседованию по С++.
-
Смогу ли я пройти собеседования по С++ после курса? Знания из курса повысят ваши шансы на успешное прохождение собеседований. В курсе я сфокусировался на том, что нужно для подготовки к собеседованиям, а также поделилюсь своим опытом проведения и прохождения собеседований. Помимо этого собрал список материалов для самостоятельной подготовки.
Для кого этот курс
Для тех, кто готовится к прохождению собеседований по С++ или для тех, кто хочет узнать много нюансов и подводводных камней языка С++
Начальные требования
Необходимы основополагающие навыки в С++ (указатели, ООП, шаблоны, умные указатели и контейнеры из стандартной библиотеки) и программировании