es
Feedback
C/C++ | Вопросы собесов

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

Ir al canal en Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Mostrar más
4 213
Suscriptores
-224 horas
-127 días
-5030 días
Atraer Suscriptores
julio '26
julio '26
+2
en 0 canales
junio '26
+46
en 0 canales
Get PRO
mayo '26
+54
en 0 canales
Get PRO
abril '26
+43
en 0 canales
Get PRO
marzo '26
+58
en 0 canales
Get PRO
febrero '26
+69
en 0 canales
Get PRO
enero '26
+84
en 0 canales
Get PRO
diciembre '25
+42
en 0 canales
Get PRO
noviembre '25
+100
en 0 canales
Get PRO
octubre '25
+54
en 0 canales
Get PRO
septiembre '25
+47
en 0 canales
Get PRO
agosto '25
+77
en 0 canales
Get PRO
julio '25
+72
en 0 canales
Get PRO
junio '25
+83
en 0 canales
Get PRO
mayo '25
+83
en 0 canales
Get PRO
abril '25
+99
en 3 canales
Get PRO
marzo '25
+88
en 2 canales
Get PRO
febrero '25
+187
en 3 canales
Get PRO
enero '25
+129
en 53 canales
Get PRO
diciembre '24
+148
en 0 canales
Get PRO
noviembre '24
+123
en 0 canales
Get PRO
octubre '24
+448
en 43 canales
Get PRO
septiembre '24
+643
en 252 canales
Get PRO
agosto '24
+127
en 0 canales
Get PRO
julio '24
+191
en 54 canales
Get PRO
junio '24
+1 110
en 244 canales
Get PRO
mayo '24
+1 483
en 192 canales
Get PRO
abril '24
+706
en 22 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
01 julio+2
Publicaciones del Canal
Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп 150 000 рублей в месяц.💰 Без опыта, нужен т
Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп 150 000 рублей в месяц.💰 Без опыта, нужен только телефон, занятость 3-6 часов в день Всему обучат на бесплатном курсе и после возьму на работу: ✅ 3 дня уроков по 30 минут ✅ Домашки с проверкой и оплатой бонусами ✅ Плачу 10 тыс за каждую выполненную домашку Все кто пройдет курс, получат сертификат от школы с образовательной лицензией. Набор заканчивается завтра 👍 Для регистрации жмите кнопку "Зарегистрироваться" Зарегистрироваться #реклама 16+ malkinadana.ru О рекламодателе

2
🤔 Когда выбросили исключение из конструктора, о чем стоит помнить? Если исключение выброшено из конструктора, деструктор объекта вызван не будет. Это требует ручного освобождения ресурсов, выделенных до момента выброса исключения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
145
3
Kaspersky Premium со скидкой до 28% Покупайте Kaspersky Premium со скидкой до 28% и получайте гарантированные ценные подарки
Kaspersky Premium со скидкой до 28% Покупайте Kaspersky Premium со скидкой до 28% и получайте гарантированные ценные подарки от партнёров, а также возможность участовать в розыгрыше путешествия. Узнать больше #реклама 16+ kaspersky.ru О рекламодателе
241
4
🤔 Какую операцию над вектором можно сделать, которая вызовет много копирования? В C++ есть несколько операций над std::vector, которые могут привести к множественному копированию элементов. Рассмотрим основные из них. 🟠Изменение размера (`resize`) Метод resize() может вызвать множественное копирование, если новый размер вектора превышает его текущую вместимость (capacity). #include <iostream> #include <vector> struct Data { int value; Data(int v) : value(v) {} Data(const Data& other) { // Конструктор копирования value = other.value; std::cout << "Copying Data: " << value << std::endl; } }; int main() { std::vector<Data> vec(3, Data(10)); // Заполняем 3 элементами std::cout << "Resizing..." << std::endl; vec.resize(10, Data(20)); // Вектор расширяется, возможны копирования } 🟠Вставка элемента (`insert` и `emplace`) Если std::vector не имеет достаточного запаса (capacity), вставка нового элемента может привести к реаллокации и копированию всех элементов. std::vector<int> vec = {1, 2, 3}; vec.insert(vec.begin(), 0); // Вставка в начало → все элементы сдвигаются 🟠Присваивание (`operator=`) Если один std::vector присваивается другому, все элементы копируются. std::vector<int> vec1 = {1, 2, 3, 4, 5}; std::vector<int> vec2; vec2 = vec1; // Копирование всех элементов 🟠Возвращение `std::vector` из функции Если возвращаем std::vector по значению, может произойти копирование (если не работает оптимизация RVO/NRVO или перемещение). std::vector<int> createVector() { std::vector<int> vec(100, 42); return vec; // Может скопироваться, если нет RVO } Ставь 👍 и забирай 📚 Базу знаний
230
5
Получите 400 рублей на счет мобильного телефона Выберите Яндекс Поиск в настройках браузера, ищите в нём — и они ваши! Узнать
Получите 400 рублей на счет мобильного телефона Выберите Яндекс Поиск в настройках браузера, ищите в нём — и они ваши! Узнать больше #реклама 16+ portal.yandex.ru О рекламодателе
275
6
🤔 Unordered_set, unordered_map и set, map чем отличаются? 1. Set/Map: элементы хранятся в отсортированном порядке, используются бинарные деревья (обычно красно-чёрные). 2. Unordered_set/Unordered_map: элементы не сортируются, используют хеш-таблицы для быстрого доступа. 3. Set и Map медленнее на вставке/поиске (O(log N)), но позволяют итерировать в отсортированном порядке. 4. Unordered_set и Unordered_map быстрее для поиска (O(1) в среднем), но не поддерживают упорядоченный доступ. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
282
7
Не грузится? Понимаем. Бесплатный мессенджер для вашей компании - Битрикс24. Личные и групповые чаты, видеозвонки, каналы и н
Не грузится? Понимаем. Бесплатный мессенджер для вашей компании - Битрикс24. Личные и групповые чаты, видеозвонки, каналы и нейросеть. Всё привычно и удобно. Можно перенести рабочие чаты и файлы из Telegram в Битрикс24. Начните работать на бесплатном тарифе уже сейчас. Узнать больше #реклама 16+ bitrix24.ru О рекламодателе
304
8
🤔 Какие знаешь сортировки? Существует множество алгоритмов сортировки, каждый из которых имеет свои преимущества и недостатки в зависимости от условий использования. Рассмотрим основные из них. 🟠Сортировка пузырьком (Bubble Sort) Простейший алгоритм, который многократно проходит по массиву, сравнивая соседние элементы и меняя их местами, если они стоят в неправильном порядке. Сложность: O(n²) в худшем и среднем случаях, O(n) в лучшем случае (если массив уже отсортирован). Когда использовать: Почти никогда, так как слишком медленный. void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { std::swap(arr[j], arr[j + 1]); } } } } 🟠Сортировка выбором (Selection Sort) На каждом шаге ищется минимальный элемент и ставится в начало неотсортированной части массива. Сложность: O(n²) всегда. Когда использовать: Если важна простота реализации, но нужна немного лучшая производительность, чем у пузырьковой сортировки. void selectionSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { int minIdx = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIdx]) { minIdx = j; } } std::swap(arr[i], arr[minIdx]); } } 🟠Сортировка вставками (Insertion Sort) Берём один элемент и вставляем его в правильное место среди уже отсортированных элементов. Сложность: O(n²) в худшем случае, O(n) в лучшем (если массив почти отсортирован). Когда использовать: Для небольших массивов или почти отсортированных данных. void insertionSort(int arr[], int n) { for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } 🟠Сортировка слиянием (Merge Sort) Разделяем массив на две части, рекурсивно сортируем их и затем сливаем. Сложность: O(n log n) всегда. Когда использовать: Когда нужна стабильность и предсказуемая скорость работы. void merge(int arr[], int l, int m, int r) { int n1 = m - l + 1, n2 = r - m; int L[n1], R[n2]; for (int i = 0; i < n1; i++) L[i] = arr[l + i]; for (int i = 0; i < n2; i++) R[i] = arr[m + 1 + i]; int i = 0, j = 0, k = l; while (i < n1 && j < n2) arr[k++] = (L[i] < R[j]) ? L[i++] : R[j++]; while (i < n1) arr[k++] = L[i++]; while (j < n2) arr[k++] = R[j++]; } void mergeSort(int arr[], int l, int r) { if (l < r) { int m = l + (r - l) / 2; mergeSort(arr, l, m); mergeSort(arr, m + 1, r); merge(arr, l, m, r); } } Ставь 👍 и забирай 📚 Базу знаний
254
9
Будьте в центре внимания — с Прайм-баннером С новым медийным форматом Прайм-баннер вы можете не просто размещать рекламу на с
Будьте в центре внимания — с Прайм-баннером С новым медийным форматом Прайм-баннер вы можете не просто размещать рекламу на самых популярных сервисах Яндекса с высоким Brand Safety, а гибко управлять кампанией: — Оптимизируйте стоимость размещения — формат доступен по аукционной модели без порога входа — Настраивайте кросс-частоту и исключайте из показов неподходящие площадки — Размещайтесь как на уже знакомых, так и на уникальных местах показа — Выбирайте нужные среди более чем 600 таргетингов без наценок — Оценивайте результаты с помощью исследований Brand Lift, Search Lift, Visit Lift и Target Lift Узнайте больше о возможностях Прайм-баннера для вашего бренда. Узнать больше #реклама 16+ yandex.ru О рекламодателе
297
10
🤔 Если std::move() не перемещает данные, то что их перемещает? Это просто явное преобразование объекта в rvalue-ссылку, что позволяет использовать семантику перемещения. Реальное перемещение выполняется методами, поддерживающими rvalue-ссылки, например, конструктором перемещения или оператором присваивания. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
324
11
Получи грант до 3,48 млн на обучение дизайну Поступай на дизайн в Центральный университет с грантом. Для учеников 10–11-х кла
Получи грант до 3,48 млн на обучение дизайну Поступай на дизайн в Центральный университет с грантом. Для учеников 10–11-х классов и СПО. Освой графический, UI/UX и продуктовый дизайн. Создавай визуальные концепты будущего. На программе студенты получают фундаментальную базу, развивают прикладные навыки, приобретают опыт работы над реальными проектами, собирают портфолио и строят связи внутри дизайн-сообщества Подать заявку #реклама 16+ cu.ru О рекламодателе
323
12
🤔 Для чего при перегрузке оператора присваивания возвращать ссылку? При перегрузке оператора = в C++ принято возвращать ссылку на текущий объект (*this). Это позволяет цепочечное присваивание (a = b = c), а также улучшает производительность и удобство использования. 🚩Правильная сигнатура оператора `=` class MyClass { public: MyClass& operator=(const MyClass& other) { if (this != &other) { // Защита от самоприсваивания // Копируем данные } return *this; // Возвращаем ссылку на текущий объект } }; 🚩Что даёт возвращение ссылки (`T&`)? Поддержка цепочки присваивания (a = b = c) a = b = c; // Интерпретируется как a = (b = c); Пример #include <iostream> class MyClass { public: int value; MyClass(int v) : value(v) {} MyClass& operator=(const MyClass& other) { if (this != &other) { // Защита от самоприсваивания value = other.value; } return *this; } }; int main() { MyClass a(1), b(2), c(3); a = b = c; // Работает, потому что `b = c` возвращает ссылку на `b` std::cout << "a: " << a.value << ", b: " << b.value << ", c: " << c.value << std::endl; } Вывод a: 3, b: 3, c: 3 🟠Убираем лишнее копирование (повышаем производительность) Если оператор = вернёт не ссылку, а объект, то произойдёт лишнее копирование. Плохо (возвращаем объект, а не ссылку) MyClass operator=(const MyClass& other) { // ⚠️ Ошибка: возвращаем объект value = other.value; return *this; // Здесь создаётся временный объект (лишняя копия!) } Хорошо (возвращаем T&) MyClass& operator=(const MyClass& other) { // ✅ Возвращаем ссылку value = other.value; return *this; } 🚩Поддержка `if (a = b)` Если оператор = вернёт ссылку, мы можем использовать его в условии: if ((a = b).value == 42) { // ОК std::cout << "Присваивание выполнено, a == 42"; } 🚩Что если вернуть `void`? Если оператор = вернёт void, цепочка a = b = c; не будет работать. class MyClass { public: void operator=(const MyClass& other) { // ⚠️ Ошибка! value = other.value; } }; int main() { MyClass a, b, c; a = b = c; // ❌ Ошибка: `b = c` возвращает void, а `a = void` не работает! } Ставь 👍 и забирай 📚 Базу знаний
275
13
Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с пр
Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой? Поступай в магистратуру Центрального университета! — 4 офлайн программы по востребованным направлениям ИТ — 2 онлайн-программы: машинное обучение и продуктовый менеджмент — 550 грантов до 75% — Вечерние занятия и учеба по выходным — удобно совмещать с работой — Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса — Возможность стажировок и трудоустройства в ведущих компаниях — Государственный диплом за 2 года Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии. Оставляй заявку на грант уже сейчас! Зарегистрироваться #реклама 16+ cu.ru О рекламодателе
349
14
🤔 О чем следует помнить при вызове исключений в конструкторе? - Исключения из конструктора предотвращают создание объекта. - Деструкторы членов класса или базового класса должны корректно освобождать ресурсы. - Лучше избегать сложной логики, которая может выбрасывать исключения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
380
15
Запустите рекламу в телеграм-каналах через Яндекс Директ Перфоманс-реклама в мессенджере продолжает работать: • Таргетинг по
Запустите рекламу в телеграм-каналах через Яндекс Директ Перфоманс-реклама в мессенджере продолжает работать: • Таргетинг по тематикам и регионам • Умный подбор каналов • Гибкие модели оплаты (CPC и CPV) Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе
344
16
🤔 Сколько места занимают bool, char, short, int, long long, float, double? - bool: 1 байт. - char: 1 байт. - short: 2 байта. - int: 4 байта. - long long: 8 байт. - float: 4 байта. - double: 8 байт. Эти значения могут варьироваться в зависимости от платформы и компилятора. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
405
17
Магистратура ИТМО для фронтенд и бэкенд разработчиков Выберите язык программирования и уровень. Регулируемая нагрузка. Экспер
Магистратура ИТМО для фронтенд и бэкенд разработчиков Выберите язык программирования и уровень. Регулируемая нагрузка. Эксперты Яндекса учат. Реальные кейсы. Государственный диплом. Оставьте заявку Перейти на сайт #реклама 16+ practicum.yandex.ru О рекламодателе
371
18
🤔 В чем разница vector и list? Vector в C++ представляет собой динамический массив с последовательным размещением элементов в памяти, что обеспечивает быстрый доступ по индексу. List — это двусвязный список, где каждый элемент хранит указатели на соседние элементы, что обеспечивает быструю вставку и удаление. Вставка и удаление в vector могут быть медленными из-за необходимости сдвига элементов, тогда как в list такие операции происходят быстрее. Однако доступ по индексу в list требует обхода элементов, что делает его медленнее для случайного доступа. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний
470
19
Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задан
Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задание — изучили — выполнили — получили свои деньги. Деньги вы получаете в зависимости от сложности задания. Например: За задание могут платить 500-10.000 рублей. 500 рублей — это около 5-30 минут. 10 000 руб. это 5-6 часов. Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д. 💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т. Мы обучим вас сами: — 3 дня уроков по 30 минут — Домашки с проверкой и оплатой бонусами — Платим 10 тыс за каждую выполненную домашку ⚡ Набор заканчивается завтра. Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ course.neurogansta.ru О рекламодателе
335
20
🤔 Чем отличаются STL контейнеры vector и array? Это контейнеры из стандартной библиотеки, но у них есть важные различия в управлении памятью, гибкости и производительности. 🟠Различия в управлении памятью std::vector использует динамическую память, выделяемую в куче (heap). Его размер может изменяться во время выполнения. std::array использует статическую память, выделяемую в стеке (stack) или в статической области памяти, и его размер фиксирован на этапе компиляции. #include <vector> #include <array> #include <iostream> int main() { std::vector<int> vec = {1, 2, 3}; // Размер может изменяться динамически vec.push_back(4); // Добавляем новый элемент std::array<int, 3> arr = {1, 2, 3}; // Размер фиксирован, нельзя добавить новый элемент std::cout << "Vector size: " << vec.size() << std::endl; // Выведет 4 std::cout << "Array size: " << arr.size() << std::endl; // Выведет 3 return 0; } 🟠Гибкость и изменение размера std::vector позволяет изменять размер в процессе работы, автоматически выделяя новую память при необходимости. std::array имеет фиксированный размер, который нельзя изменить после создания. std::vector<int> v = {1, 2, 3}; v.push_back(4); // Увеличиваем размер std::array<int, 3> a = {1, 2, 3}; // a.push_back(4); // Ошибка! У std::array нет метода push_back 🟠Производительность std::array работает быстрее, так как все данные хранятся в непрерывном участке памяти и нет затрат на динамическое выделение. std::vector может требовать дополнительное время при изменении размера, так как может потребоваться новое выделение памяти и копирование элементов. #include <vector> #include <array> #include <chrono> #include <iostream> int main() { constexpr int N = 1'000'000; std::vector<int> vec(N, 1); // Динамический массив std::array<int, N> arr{}; // Статический массив auto start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < N; ++i) vec[i] += 1; auto end = std::chrono::high_resolution_clock::now(); std::cout << "Vector time: " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() << " us" << std::endl; start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < N; ++i) arr[i] += 1; end = std::chrono::high_resolution_clock::now(); std::cout << "Array time: " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() << " us" << std::endl; return 0; } 🟠Совместимость с C-API std::array хранит данные как обычный C-массив, поэтому можно легко передавать его в функции, ожидающие int*. std::vector использует динамическую память, но можно получить указатель на внутренний буфер с помощью data(). void processArray(int* arr, size_t size) { for (size_t i = 0; i < size; ++i) { std::cout << arr[i] << " "; } } int main() { std::array<int, 3> arr = {1, 2, 3}; std::vector<int> vec = {4, 5, 6}; processArray(arr.data(), arr.size()); // std::array можно передавать в C-функции processArray(vec.data(), vec.size()); // std::vector тоже можно передавать return 0; } 🟠Итераторы и стандартные алгоритмы Оба контейнера поддерживают итераторы и совместимы со стандартными алгоритмами из #include <algorithm> #include <iostream> #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> vec = {3, 1, 4, 1, 5}; std::array<int, 5> arr = {3, 1, 4, 1, 5}; std::sort(vec.begin(), vec.end()); std::sort(arr.begin(), arr.end()); for (int n : vec) std::cout << n << " "; // 1 1 3 4 5 std::cout << std::endl; for (int n : arr) std::cout << n << " "; // 1 1 3 4 5 return 0; } Ставь 👍 и забирай 📚 Базу знаний
386