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

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

Тренировочное техническое интервью по C++ с задачами на строки и биты, а также вопросами о компиляции, сериализации и STL. В конце интервьюер даёт кандидату конкретные рекомендации по подготовке.

Источник: Ambushed Raccoon

Открыть на YouTube

Таймлайн

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

Это тренировочное C++-собеседование с Александром: он рассказывает об опыте с C++, OpenCV, gRPC и компьютерным зрением, после чего решает две практические задачи. Интервьюер разбирает экранирование символов в строке, работу заголовочных файлов, extern/extern "C", битовые операции, сериализацию, union, C++11, функторы и наследование от STL-контейнеров. В финальном фидбэке отмечены умение кандидата рассуждать с подсказками и пробелы в extern "C", union и битовых операциях.

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

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

  • Для экранирования символов лучше собирать новую строку за один проход, а не вставлять символы в середину исходной строки; ёмкость результата можно заранее зарезервировать до удвоенной длины входа.
  • Код в заголовочных файлах размножается по единицам трансляции, поэтому изменение header может замедлять пересборку проекта; шаблоны обычно должны быть доступны в header для инстанцирования.
  • Нужно различать extern для объявления сущности, определённой в другой единице трансляции, и extern "C" для C linkage функций.
  • Для установки бита подходит маска 1u << index и операция OR, а для сброса — AND с инвертированной маской; в задаче индекс заранее считается корректным.
  • Бинарная сериализация компактна, но прямое сохранение памяти объекта может быть непереносимым между платформами из-за различий в размерах типов и выравнивании.
  • При сериализации двусвязного списка адреса указателей стоит заменять устойчивыми индексами узлов, чтобы затем восстановить связи.
  • Для расширения std::vector предпочтительнее композиция и класс-обёртка, а не наследование: у стандартного контейнера нет виртуального деструктора.

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