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

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

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

Нет оценок
47
10.09.2026
47
10.09.2026
Нет оценок
47
10.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 / день
Обновлено
21 час назад

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

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

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

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

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

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

Crypto Box Bybit - Airdrop

Crypto Box Bybit - Airdrop

Технологии
71

Airdrop, giveaway и боксы от Bybit. Бесплатные раздачи криптовалюты и токенов для трейдеров в Telegram.

Канал
Midjourney Digital - промты

Midjourney Digital - промты

Технологии
35

Коллекция лучших промтов для нейросети Midjourney. Генерации изображений, идеи для цифрового искусства и инструкции по использованию.

Канал
221

Канал с актуальными новостями технологий, гаджетов и IT-мира для ежедневного чтения.

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