Мок-собеседование по C++: реализация shared_ptr
Кандидат реализует упрощённый shared_ptr и обсуждает счётчик ссылок, конструкторы, деструктор и операторы присваивания. Интервьюер находит ошибки с инициализацией, утечками памяти и самоприсваиванием, затем даёт обратную связь.
- Опубликовано на YouTube:
- Просмотры на YouTube: 17 тыс.
- Лайки на YouTube: 332
Таймлайн
Коротко о видео
В этой записи проходит мок-собеседование по C++ с задачей реализовать упрощённый shared_ptr. Сначала кандидат объясняет идею совместного владения объектом и счётчика ссылок, после чего начинает писать класс. Интервьюер последовательно разбирает конструктор по умолчанию, конструктор с параметром, деструктор, копирование и присваивание. Он просит кандидата проверить, что происходит с неинициализированным указателем на стеке, лишними выделениями памяти, удалением ресурса и присваиванием объекта самому себе. Отдельно обсуждаются списки инициализации, swap-идиома и перемещающие операции. В финале интервьюер отмечает, что кандидат знает основные механизмы, но пропускает крайние случаи, которые ведут к некорректному поведению или утечкам.
Затронутые темы
Что взять на заметку
- Счётчик ссылок должен быть отдельным для каждого управляемого объекта, поэтому статическая переменная для него не подходит.
- Указатели и счётчики в конструкторе нужно инициализировать, чтобы не работать с невалидной памятью.
- Оператор присваивания обязан корректно обрабатывать самоприсваивание и освобождение прежнего ресурса.
- Реализация владеющего указателя требует согласованной работы конструктора копирования, деструктора и операций перемещения.
- Тесты крайних случаев помогают выявить утечки и обращения к неинициализированной памяти.