Собеседование Middle C++
Тренировочное техническое интервью по C++ с задачами на строки и биты, а также вопросами о компиляции, сериализации и STL. В конце интервьюер даёт кандидату конкретные рекомендации по подготовке.
Ambushed Raccoon
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 151,8 тыс.
- Лайки на YouTube: 2,6 тыс.
Таймлайн
Коротко о видео
Это тренировочное 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 предпочтительнее композиция и класс-обёртка, а не наследование: у стандартного контейнера нет виртуального деструктора.