Собеседование Junior C++
Запись тренировочного собеседования по C++ для junior-разработчика с вопросами по языку, памяти, STL и небольшими практическими задачами. Завершается авторским техническим фидбэком по ответам.
Ambushed Raccoon
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 166,2 тыс.
- Лайки на YouTube: 3,7 тыс.
Таймлайн
Коротко о видео
Тренировочное собеседование Максима на позицию Junior C++ Developer: сначала обсуждают его опыт с Qt, QML и учебными проектами, затем проводят серию теоретических и практических вопросов. Основные темы — порядок конструирования при наследовании, этапы сборки, препроцессор, управление ресурсами, умные указатели, STL-контейнеры и задачи со связным списком. В конце автор отдельно разбирает ответы, отмечая важные для подготовки пробелы и удачные решения задач.
Затронутые темы
Что взять на заметку
- Повторите порядок создания объекта при множественном наследовании: сначала базовые классы в порядке объявления, затем поля в порядке объявления, затем тело конструктора производного класса; разрушение идёт в обратном порядке.
- Уметь объяснить цепочку сборки C++-проекта: препроцессирование директив, компиляция единиц трансляции в объектные файлы и линковка в исполняемый файл.
- Ключевое слово explicit предотвращает неявные преобразования через подходящие конструкторы; в макросах параметры и выражение-результат обычно оборачивают в скобки, чтобы текстовая подстановка не меняла приоритет операций.
- Для взаимных указателей между классами достаточно предварительных объявлений классов; полное определение потребуется там, где нужен размер типа или доступ к его членам.
- При удалении объекта производного класса через указатель на базовый класс базовый деструктор должен быть virtual; виртуальных конструкторов в C++ нет.
- Для исключительной безопасности владение ресурсами стоит передавать RAII-объектам и умным указателям: unique_ptr выражает единоличное владение, shared_ptr — разделяемое, weak_ptr не увеличивает счётчик ссылок и помогает разрывать циклы.
- Подготовьте типовые задачи по структурам данных: удаление узла односвязного списка при доступе только к этому узлу, причины перераспределений std::vector и требования сравнения для ключей std::set/map.