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

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

Тренировочное C++-собеседование с разбором типичных вопросов уровня Middle: ООП, SOLID, коллекции, время жизни объектов, рекурсия и Singleton. В конце интервьюер даёт кандидату предметный фидбэк по пробелам и практике.

Источник: Ambushed Raccoon

Открыть на YouTube

Таймлайн

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

Тренировочное собеседование на позицию Middle C++ Developer: кандидат рассказывает об опыте работы с C++17 и затем отвечает на теоретические и практические вопросы. Интервьюер разбирает назначение `override`, принципы SOLID, требования к пользовательской коллекции для range-based `for`, перегрузку `const`-методов и опасность возврата ссылки на локальный объект. В лайвкодинге кандидат решает задачу сравнения двух бинарных деревьев, после чего получает рекомендации подтянуть стек, range-based `for` и рекурсивные задачи на деревьях.

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

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

  • `override` не требуется для самого переопределения виртуального метода, но заставляет компилятор проверить, что метод действительно переопределяет базовый метод с совместимой сигнатурой.
  • Класс, одновременно работающий с файлами, базой данных и сервером, нарушает Single Responsibility Principle; обязанности предлагается разделять по отдельным компонентам.
  • Для расширяемости новые варианты поведения следует добавлять через наследников или реализации общего интерфейса, не переписывая большой исходный класс; при этом наследник не должен ломать контракт базового типа.
  • Чтобы пользовательская коллекция работала в range-based `for`, ей нужны методы `begin()` и `end()`, возвращающие итераторы, либо подходящие свободные функции `begin`/`end`.
  • Нельзя возвращать ссылку на локальный временный объект: после выхода из функции объект уничтожается, а ссылка становится висячей.
  • В рекурсивной проверке равенства бинарных деревьев сначала нужно закрыть базовые случаи: оба указателя `null` — `true`, только один `null` — `false`; затем сравнить значения и рекурсивно сравнить левые и правые поддеревья.
  • По мнению интервьюера, Singleton осложняет тестирование из-за глобального состояния и смешивает ответственность за инициализацию с прикладной логикой.

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