Logo
TGCATALOG
Каталог Подборки Блог
C/C++ - вопросы собесов

C/C++ - вопросы собесов

Вопросы собесов C/C++.

Нет оценок
29
08.09.2026
29
08.09.2026
Нет оценок
29
08.09.2026
Безопасный переход через бот
О канале

Вопросы собесов C/C++.

Подписчиков 4,190
Тематика Технологии
Язык Русский
Ссылка t.me/easy_c_plus

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Вопросы для собеседований по C/C++.

Последние посты

C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Асимптотическая сложность в list? std::list — это двусвязный список, где каждый элемент хранит ссылку на предыдущий и следующий элементы. Это даёт эффективное добавление и удаление элементов в любой части списка, но делает доступ по индексу медленным 🚩Разбор операций в `std::list` с примерами Добавление в начало и конец — O(1) std::list lst; lst.push_back(10); // O(1) lst.push_front(5); // O(1) Доступ по индексу — O(n) auto it = std::next(lst.begin(), 2); // O(n), приходится идти от начала std::cout
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое абстрактный класс? Это класс, который содержит хотя бы одну чисто виртуальную функцию. Он не может быть создан как объект и предназначен для использования в качестве базового класса. Такие классы служат для определения интерфейсов и полиморфного поведения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Почему со стеком работать быстрее чем с кучей? 🟠Управление памятью Стек: Память в стеке управляется автоматически. Когда вызывается функция, память для её локальных переменных выделяется одним блоком при входе в функцию и освобождается при выходе из неё. Эта операция выполняется за постоянное время (O(1)). Куча: Память в куче управляется вручную (программистом) или через автоматическое управление памятью (например, сборщик мусора). Выделение и освобождение памяти в куче требуют поиска подходящего блока памяти, что может занимать больше времени (O(log n) или даже O(n)). 🟠Локальность данных Стек: Данные в стеке расположены компактно и последовательно. Это означает, что доступ к данным будет быстрее из-за лучшего использования кэш-памяти процессора. Куча: Данные в куче могут быть фрагментированы, что приводит к меньшей эффективности кэширования и увеличению времени доступа. 🟠Предсказуемость Стек: Память в стеке выделяется и освобождается в строго определённом порядке (LIFO - Last In, First Out). Это делает операции со стеком предсказуемыми и упрощает управление памятью. Куча: Память в куче может выделяться и освобождаться в произвольном порядке, что приводит к фрагментации и усложняет управление памятью. 🟠Минимизация накладных расходов Стек: Операции выделения и освобождения памяти на стеке имеют минимальные накладные расходы, так как это просто смещение указателя стека. Куча: Операции выделения и освобождения памяти в куче требуют более сложных алгоритмов и могут включать в себя дополнительные накладные расходы, такие как управление списками свободных блоков и слияние фрагментов. #include void stackFunction() { int stackArray[1000]; // Массив на стеке // Работа с массивом } void heapFunction() { int* heapArray = new int[1000]; // Массив в куче // Работа с массивом delete[] heapArray; // Освобождение памяти } int main() { stackFunction(); // Быстрая работа со стеком heapFunction(); // Медленная работа с кучей return 0; } Ставь 👍 и забирай 📚 Базу знаний
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое back_inserter, зачем он нужен? std::back_inserter — это адаптер итератора из библиотеки STL, который позволяет удобно добавлять элементы в конец контейнера при использовании алгоритмов стандартной библиотеки (например, std::copy, std::transform и т. д.). Он создает итератор-вставку (inserter iterator), который при попытке записи нового элемента фактически вызывает метод push_back() у контейнера. 🚩Почему он нужен? Обычно алгоритмы STL работают с итераторами и требуют, чтобы целевой контейнер уже содержал достаточно места для копирования или вставки элементов. back_inserter позволяет избежать этого ограничения, автоматически расширяя контейнер по мере необходимости. 🚩Пример использования Без back_inserter (приведет к ошибке!) #include #include #include int main() { std::vector source = {1, 2, 3, 4, 5}; std::vector destination; // Пустой контейнер // Ошибка! У destination нет места для элементов std::copy(source.begin(), source.end(), destination.begin()); return 0; } Используем back_inserter (правильный вариант) #include #include #include #include int main() { std::vector source = {1, 2, 3, 4, 5}; std::vector destination; // Начинаем с пустого контейнера // Используем back_inserter std::copy(source.begin(), source.end(), std::back_inserter(destination)); // Вывод результата for (int num : destination) { std::cout
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Какой контейнер используется в priority_queue? priority_queue в C++ обычно реализован на базе std::vector с использованием кучи (heap) для управления приоритетами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что будет если вызвать дважды lock()? Если вызвать дважды lock() на одном и том же объекте std::mutex из одного и того же потока, это приведет к взаимной блокировке (deadlock). Это происходит потому, что после первого вызова lock() мьютекс уже будет заблокирован данным потоком, и второй вызов lock() будет ожидать освобождения мьютекса, что никогда не произойдет, так как поток уже заблокировал мьютекс. #include #include #include std::mutex mtx; void threadFunction() { mtx.lock(); // Первый вызов lock() std::cout
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Когда нужно объявлять деструктор виртуальным? Виртуальный деструктор нужен всегда, когда класс предполагается использовать в качестве базового и поддерживает полиморфизм (наследование и динамическое связывание). 🚩Зачем нужен виртуальный деструктор? Если у базового класса деструктор не виртуальный, а удаление происходит через указатель на базовый класс, деструктор производного класса не вызовется! Это приведёт к утечке памяти или некорректному освобождению ресурсов. Пример проблемы без виртуального деструктора #include class Base { public: ~Base() { std::cout
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое deque? Deque (double-ended queue, двусторонняя очередь) — это последовательный контейнер в C++, который позволяет добавлять и удалять элементы как с начала, так и с конца очереди с постоянной временной сложностью O(1). Контейнер deque является частью стандартной библиотеки шаблонов (STL) и объявляется в заголовочном файле . 🚩Основные характеристики: 🟠Быстрый доступ к элементам: deque обеспечивает доступ к элементам по индексу с амортизированной временной сложностью O(1). 🟠Двусторонняя очередь: Позволяет эффективно добавлять и удалять элементы как с начала, так и с конца очереди. 🟠Динамический размер: deque автоматически изменяет свой размер по мере добавления или удаления элементов, подобно vector. 🟠Не требует смежного хранения: В отличие от vector, элементы deque могут быть размещены в различных сегментах памяти, что делает его более гибким для частых операций вставки и удаления. 🚩Основные операции: 🟠Добавление элементов: push_back(), push_front() 🟠Удаление элементов: pop_back(), pop_front() 🟠Доступ к элементам: operator[], at(), front(), back() 🟠Размер и емкость: size(), empty(), resize() 🟠Итераторы: Поддержка итераторов для прохода по элементам #include #include int main() { std::deque dq; // Добавление элементов в конец dq.push_back(1); dq.push_back(2); dq.push_back(3); // Добавление элементов в начало dq.push_front(0); std::cout
C/C++ - вопросы собесов
C/C++ - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое наследование? Наследование — это механизм ООП, позволяющий одному классу (наследнику) унаследовать свойства и методы другого класса (родителя) для повторного использования и расширения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
C/C++ - вопросы собесов
Динамика подписчиков
+0.1% за 30 дней
Текущие
4,190
Месяц назад
4,185
Средний рост
+0 / день
Обновлено
10 часов назад

Отзывы о канале C/C++ - вопросы собесов

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Официальный канал обо всём Android: новости, советы, обновления и эксклюзивы для пользователей.

Канал
PUBG - Мобильная игра

PUBG - Мобильная игра

Технологии
27

Канал с новостями и материалами по мобильной игре PUBG.

Канал
GISCYBERTEAM - мир pentest

GISCYBERTEAM - мир pentest

Технологии
11

Канал о penetration testing от Red Team: техники, инструменты и новости.

Канал
Переход на светлую тему
Главная Каталог Подборки Блог Вход