Подготовка к собеседованиям по С++ [stepik] [Владимир Балун] [Средний уровень]]

Bot

Администратор
Команда форума
23 Янв 2020
142,283
503
113
Подготовка к собеседованиям по С++

О курсе


Материалы предназначены в первую очередь для разработчиков, которые уже знают основы С++ и планируют проходить собеседования. Безусловно, его материалы будут полезны разработчикам независимо от уровня знания языка, так там будут рассматриваться множество различных нюансов и подводных камней С++.

Курс сфокусирован на прохождении собеседований исключительно по С++ секции, для прохождения алогитмической или дизайн секции он никак не поможет.

Автор курса:

  • Ведущий разработчик в 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++? К сожалению, нет. Курс помогает только подготовиться к собеседованию по С++.
  • Смогу ли я пройти собеседования по С++ после курса? Знания из курса повысят ваши шансы на успешное прохождение собеседований. В курсе я сфокусировался на том, что нужно для подготовки к собеседованиям, а также поделилюсь своим опытом проведения и прохождения собеседований. Помимо этого собрал список материалов для самостоятельной подготовки.

Для кого этот курс

Для тех, кто готовится к прохождению собеседований по С++ или для тех, кто хочет узнать много нюансов и подводводных камней языка С++

Начальные требования

Необходимы основополагающие навыки в С++ (указатели, ООП, шаблоны, умные указатели и контейнеры из стандартной библиотеки) и программировании

Скрытая ссылка