Вернуться в видеотеку

С++ собеседование

Мок-интервью по C++ с разбором ответов кандидата по языковым основам, STL и исключениям. Ведущий уточняет формулировки и даёт ориентиры для реального технического интервью.

Источник: Владимир Невзоров

Открыть на YouTube

Таймлайн

Коротко о видео

Это открытое мок-собеседование по C++: кандидат Виталий тренирует ответы перед поиском новой работы, а интервьюер уточняет и дополняет их. Разбираются RAII, ООП и виртуальные функции, устройство и сложности контейнеров STL, а затем исключения, порядок catch-блоков и риски исключений в деструкторах. В финале кратко обсуждают возможности C++11 и пользу проговаривания базовых тем вслух.

Затронутые темы

Что взять на заметку

  • Для ответа про RAII достаточно чётко связать захват ресурса в конструкторе с освобождением в деструкторе и привести примеры `std::unique_ptr`/`std::shared_ptr` и `std::lock_guard`.
  • При объяснении полиморфизма стоит назвать виртуальные функции, работу через указатель или ссылку на базовый класс и динамический выбор переопределённого метода; vtable — распространённая деталь реализации, а не требование стандарта.
  • Нужно различать свойства контейнеров: `std::array` имеет фиксированный размер, `std::vector` хранит элементы непрерывно и имеет амортизированное O(1) добавление в конец, а `std::list` — двусвязный список.
  • Для `std::map` и `std::set` полезно назвать O(log n) поиска и вставки; их часто реализуют сбалансированным деревом, но конкретная структура стандартом не предписана.
  • Отвечая про `std::unordered_map` и `std::unordered_set`, следует оговаривать среднюю сложность O(1), коллизии, rehash и стоимость косвенного доступа по сравнению с индексированием в векторе.
  • В обработчиках исключений специализированные типы должны идти раньше базового, а `catch (...)` — последним; выброс исключения из деструктора при уже идущей раскрутке стека приводит к `std::terminate`.

Рекомендуем посмотреть