CCareerLab
Главная/База знаний/Собеседование/30 вопросов на собеседовании Junior C++ с ответами (2026)
Собеседование
Новоеjunior

30 вопросов на собеседовании Junior C++ с ответами (2026)

30 вопросов на собеседовании Junior C++ с ответами: память, указатели, ООП, STL, многопоточность. Подготовьтесь к техническому интервью C++ разработчика.

Время чтения5 минут
Обновленомай 2026 г.
Уровеньjunior
Главная мысль
30 вопросов на собеседовании Junior C++ с ответами: память, указатели, ООП, STL, многопоточность. Подготовьтесь к техническому интервью C++ разработчика.

C++ — язык с репутацией сложного собеседования. Здесь проверяют управление памятью, указатели, ООП и знание STL. Вот 30 вопросов, которые задают реально.

Как подготовиться к собеседованию junior

Память и указатели (вопросы 1–10)

1. Чем стек отличается от кучи (heap)?
Стек — автоматическое управление памятью, LIFO, быстрый доступ, ограниченный размер. Heap — динамическое выделение (`new`/`delete`), больший объём, медленнее, нужно освобождать вручную.

2. Что такое указатель?
Переменная, хранящая адрес памяти. `int ptr = &var;`. `ptr` — разыменование (значение по адресу). `&var` — адрес переменной.

3. Чем указатель отличается от ссылки?
Ссылка — псевдоним, не может быть nullptr, не переприсваивается после инициализации. Указатель — адрес, может быть nullptr, может указывать на разные объекты.

4. Что такое `nullptr`?
Безопасный нулевой указатель (C++11). Заменяет `NULL` и `0`. Явно типизирован, не приводится к `int` неявно.

5. Что такое утечка памяти?
Выделенная через `new` память не освобождена через `delete`. Приводит к росту потребления памяти. Инструмент диагностики: Valgrind.

6. Что такое `smart pointer`? Виды?
`unique_ptr` — единственный владелец, не копируется. `shared_ptr` — разделяемое владение (счётчик ссылок). `weak_ptr` — не владеет, не увеличивает счётчик (разрывает циклические зависимости).

7. Что такое dangling pointer?
Указатель на освобождённую память. Обращение к нему — undefined behavior. Предотвращение: `delete ptr; ptr = nullptr;` или smart pointers.

8. Что такое double free?
Попытка освободить уже освобождённую память. Undefined behavior. Предотвращение: smart pointers.

9. Что такое `const` с указателями?
`const int ptr` — нельзя изменить значение через ptr. `int const ptr` — нельзя изменить адрес. `const int* const ptr` — оба ограничения.

10. Что такое `new[]` и `delete[]`?
Для массивов: `int* arr = new int[10];` — выделить. `delete[] arr;` — освободить. Смешивать `delete` и `new[]` — undefined behavior.

ООП и синтаксис (вопросы 11–20)

11. Что такое виртуальная функция?
`virtual` — функция, переопределяемая в производных классах. Вызывается через указатель на базовый класс с учётом реального типа объекта (полиморфизм). Механизм — vtable (таблица виртуальных функций).

12. Что такое чисто виртуальная функция?
`virtual void func() = 0;` — класс становится абстрактным, нельзя инстанциировать. Производный класс обязан переопределить.

13. Что такое конструктор копирования?
Вызывается при копировании объекта: `MyClass b = a;`. По умолчанию — поверхностная копия. Для объектов с динамической памятью нужна глубокая копия (правило трёх/пяти).

14. Что такое оператор присваивания?
`MyClass& operator=(const MyClass& other)`. Вызывается при `a = b;`. Нужно проверить самоприсваивание: `if (this == &other) return *this;`.

15. Что такое Rule of Three / Five?
Если нужен деструктор — нужны конструктор копирования и оператор присваивания (Rule of Three). В C++11+: плюс конструктор перемещения и оператор перемещения (Rule of Five).

16. Что такое `move` семантика?
C++11. Передача ресурсов без копирования: `std::move(obj)`. `&&` — rvalue reference. Перемещение быстрее копирования для тяжёлых объектов (векторы, строки).

17. Что такое `inline` функция?
Подсказка компилятору встроить тело функции в место вызова. Убирает накладные расходы на вызов функции. Компилятор может проигнорировать.

18. Что такое `explicit`?
Запрещает неявное преобразование типов при вызове конструктора с одним аргументом.

19. Что такое `friend`?
Объявляет функцию или класс другом — даёт доступ к приватным членам. Используется осторожно, нарушает инкапсуляцию.

20. Что такое `template`?
Параметризованный код, работающий с разными типами. `template<typename T> T max(T a, T b)`. Конкретизируется при компиляции. Основа STL.

STL и современный C++ (вопросы 21–30)

21. Что такое STL?
Standard Template Library: контейнеры (`vector`, `map`, `set`), алгоритмы (`sort`, `find`, `transform`), итераторы. Основа идиоматичного C++ кода.

22. Чем `vector` отличается от `list`?
`vector` — динамический массив: O(1) доступ по индексу, O(n) вставка в середину. `list` — двусвязный список: O(n) доступ, O(1) вставка с итератором.

23. Что такое `map` vs `unordered_map`?
`map` — красно-чёрное дерево, O(log n), ключи отсортированы. `unordered_map` — хеш-таблица, O(1) среднее, ключи не отсортированы.

24. Что такое `auto`?
Вывод типа компилятором: `auto x = 42;` — `int`. `auto it = vec.begin();` — не нужно писать длинный тип итератора.

25. Что такое range-based for?
`for (const auto& elem : container) { }` — итерация по контейнеру без индекса. Чище и безопаснее.

26. Что такое `lambda` в C++?
Анонимная функция: `capture { body }`. `[&]` — захват по ссылке, `[=]` — по значению. Используется в алгоритмах STL.

27. Что такое `std::algorithm`?
Набор обобщённых алгоритмов: `sort`, `find`, `find_if`, `count_if`, `transform`, `accumulate`, `copy_if`. Работают через итераторы.

28. Что такое RAII?
Resource Acquisition Is Initialization. Ресурс захватывается в конструкторе и освобождается в деструкторе. Smart pointers — реализация RAII для памяти.

29. Что такое `namespace`?
Область видимости для имён. `std::` — стандартный namespace. `using namespace std;` — опасно в headers, засоряет глобальное пространство.

30. Что такое `constexpr`?
Вычисление значений во время компиляции. `constexpr int square(int x) { return x*x; }`. Быстрее `const`, так как константа вычисляется один раз при компиляции.

FAQ

Нужно ли знать ассемблер для C++ junior?
Нет. Полезно понимать, во что компилируется код, но писать на ассемблере не нужно.

Где тренироваться в C++?
Codeforces, LeetCode (C++), Competitive Programming — для алгоритмов. Реальные pet-проекты — для понимания языка на практике.

---