ru
Feedback
Библиотека собеса по C++ | вопросы с собеседований

Библиотека собеса по C++ | вопросы с собеседований

Открыть в Telegram

Вопросы с собеседований по C++ и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9ccf302b Для обратной связи: @proglibrary_feeedback_bot

Больше
5 425
Подписчики
-824 часа
-13 9517 дней
-13 97630 день
Архив постов
Что демонстрирует объявление переменной c2?
Anonymous voting

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Как называется вызов функции внутри той же функции?
Anonymous voting

Yandex DEVent PRO в Питере Это серия офлайн-митапов для опытных бэкендеров от команды Поиска и Рекламных технологий. Здесь можно в закрытом формате познакомиться с лидами из других команд, обменяться опытом и пообщаться. В этот раз митап пройдёт в Санкт-Петербурге 19 июня: будет настоящее раздолье для нетворкинга, а ещё обсуждение горячих и спорных тем по разработке в формате speed dating. Спикеры и доклады: 🟡Константин Гудков, руководитель группы разработки Feature store. Расскажет о процессе создания Feature Store — интерфейса для работы с данными, который используется ML-моделями в Рекламе 🟡Сергей Скворцов, руководитель службы поискового райнтайма. Обсудит, как анализировать производительность нативных программ под Linux под нагрузкой с помощью Perforator 🟡Николай Савушкин, руководитель службы рекомендательных технологий. Расскажет о Real-time processing в рекомендательных системах Яндекса А после докладов вас ждёт афтерпати: кальяны, аэрохоккей и прочие активности! Узнать подробную информацию и зарегистрироваться можно по ссылке. Ждём вас! Реклама. ООО "Яндекс", ИНН 7736207543.

🔮 Почему using namespace std; является плохой практикой?
Anonymous voting

💵 ТОП-15 самых востребованных профессий в ИТ: куда все катится в 2024 году Мы часто рассказываем про то, как обстоят дела с
💵 ТОП-15 самых востребованных профессий в ИТ: куда все катится в 2024 году Мы часто рассказываем про то, как обстоят дела с зарплатами айтишников в России. И это вполне логично, ведь большинство наших читателей живет именно здесь. Но говоря только про Россию, мы совершенно забываем про США. И очень зря, ведь эта страна — мечта для многих программистов. В этой статье рассказываем, сколько получают айтишники в США и стоит ли вкатываться в ИТ сейчас 👉 Ссылка на статью

🍔 Дорожная карта для изучения C с нуля • Автор делится списком полезных ресурсов для изучения Си с нуля • В статье представлены различные области, в которых автор нуждался в дополнительном разъяснении • Автор предлагает начать свой собственный проект, выбрав тему, которая действительно интересует • Для изучения внутренней части ОС x86-64 рекомендуется разработка драйвера ядра и руткита 👉 Ссылочка

✉️❌ Как завалить собеседование, даже не начав его: 8 ошибок в сопроводительных письмах Откликаетесь, но сразу получаете отказ
+3
✉️❌ Как завалить собеседование, даже не начав его: 8 ошибок в сопроводительных письмах Откликаетесь, но сразу получаете отказы? Не торопитесь с выводами — возможно, все дело в вашем сопроводительном письме. 👉Сопроводительное — это первое впечатление, которое мы производим на эйчара, а первое впечатление, как известно, очень важно. Собрали для вас несколько распространенных ошибок по составлению такого письма — а в статье по ссылке можно найти остальные ошибки и пример идеального сопроводительного. Кстати, вакансии можно поискать в наших профильных каналах: 🤮Data Science, анализ данных, аналитика 🤮Python 🤮Frontend

🤯 Как простая задачка поставила в тупик программистов (и как они из него выбрались) В 2010 году пользователь Stack Overflow
🤯 Как простая задачка поставила в тупик программистов (и как они из него выбрались) В 2010 году пользователь Stack Overflow не справился с задачей на собеседовании. Обсуждение способов решения этого задания стало одной из самых популярных тем на платформе. Об этой истории, а также о способах решения задачи, читайте в нашей статье 👉 Ссылка 👉 Зеркало

🍔 Отладочные макросы Отладочные макросы в C++ используются для упрощения процесса отладки и диагностики программного кода Основные отладочные макросы включают assert, static_assert и пользовательские макросы 🍓 assert Макрос assert определён в заголовочном файле <cassert> и используется для проверки логических выражений во время выполнения программы. Если выражение вернёт false, assert завершает выполнение программы и выводит сообщение об ошибке
#include <cassert>

void test(int x) {
    assert(x > 0 && "x must be positive");
    // остальной код функции
}

int main() {
    test(5);  // проходит проверку
    test(-3); // приводит к ошибке во время выполнения
    return 0;
}
🍒 static_assert static_assert введён в C++11 и позволяет проверять условия на этапе компиляции. Это особенно полезно для проверки условий, которые должны выполняться всегда, независимо от состояния программы во время выполнения
#include <type_traits>

template <typename T>
void check() {
    static_assert(std::is_integral<T>::value, "T must be an integral type");
}

int main() {
    check<int>();   // проходит проверку
    check<float>(); // ошибка компиляции: T must be an integral type
    return 0;
}
🫐 Пользовательские отладочные макросы Вы также можете определять собственные макросы для отладки, которые помогут вам выводить дополнительную информацию или выполнять специфические проверки
#include <iostream>

#define DEBUG

#ifdef DEBUG
#define DEBUG_PRINT(x) std::cout << x << std::endl
#else
#define DEBUG_PRINT(x)
#endif

int main() {
    int value = 42;
    DEBUG_PRINT("Value: " << value);
    return 0;
}

⚡️Proglib запускает канал про ИИ для генерации звука Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками. ⭐️генерация голоса и музыки ⭐️замена и перевод речи ⭐️распознавание звуков 👉Подписывайтесь!

Что из следующего верно о шаблонах?
Anonymous voting

🍔 Какая избавиться от вложенных min/max? Старый вариант использования

auto maxVal = std::max(x1, min(x2, min(x3, x4)));
Сейчас же можно использовать cписки инициализации, чтобы уменьшить вложенность
auto maxVal = std::max(({x1, x2, x3, x4});

😱 В чем разница между вектором и списком? std::vector — это реальный массив, а базовая реализация std::list — это двусторонне связанный список ❗ std::vector поддерживает произвольный доступ с доступом за O(1), но производительность вставки и удаления в общем случае низкая. Но стоить отметить что вставка в конец если capacity больше size происходить за O(1) ❗Так же вставка и удаление из std::vector в узлах, отличных от хвоста, вызовет копирование памяти, в std::list такого не происходит ❗std::list не поддерживает произвольный доступ, но производительность вставки и удаления O(1) ❗std::vector хранится последовательно, список — нет ❗std::vector выделяет память сразу и увеличивает емкость в два раза, когда ее недостаточно. std::list будет обращаться за новой памятью каждый раз, когда вставляется новый узел

😱 Как объединить строки в C? В Си строки - это просто массивы char'ов. Следовательно, мы не можем напрямую объединить их с другими строками Мы можем использовать strcat функцию, которая добавляет строку, на которую указывает src, в конец строки, на которую указывает dest:
char *strcat(char *dest, const char *src);
❗️dest выполняет роль буфера назначения. Буфер назначения должен быть буфером массива символов. Он должен быть больше суммарного размера двух строк: той которая в нём уже есть и той которая копируется Пример:
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
❗️Возвращаемое значение strcat можно просто игнорировать, оно просто возвращает тот же указатель, который был передан в качестве первого аргумента
strcat(strcat(str, foo), bar);
Из всего выше сказанного объединить две строки можно с помощью
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

🔮 Что вернёт a[10] == 10 [a]? Стандарт Си определяет [] как оператор следующим образом:
a[b] == *(a + b)
Следовательно , a[5] будет вычисляться как:
*(a + 10)
а 10[a] будет вычисляться как
*(10 + a)
a - указатель на первый элемент массива. a[10] - это значение, которое на 10 элементов дальше от a, что совпадает с *(a + 10)

🔮 В чем разница между статическим выделением памяти и динамическим выделением памяти? - Статическое выделение памяти выполняется во время компиляции и не потребляет ресурсов ЦП; динамическое выделение памяти выполняется во время выполнения, а для выделения и освобождения требуются ресурсы ЦП - Динамическое выделение памяти может привести к утечке памяти - Для выделения статической памяти не требуется поддержка указателей. Для динамического выделения памяти требуется - Статическое выделение памяти выполняется по плану, и размер блока памяти определяется перед компиляцией. Динамическое выделение памяти выполняется по мере необходимости - Статическое выделение памяти дает контроль над памятью компилятору. Динамическое выделение памяти дает контроль над памятью программисту

🌳 Разница между кучей и стеком • Стек непрерывен, но куча не обязательно непрерывна • Существуют разные способы применения.Стек автоматически выделяется операционной системой, а кучей приходится управлять вручную • Стек растет от большего адреса к меньшему, куча растет от меньшего адреса к большему • Временем жизни стека управляет система и в большинстве случаев доступ к нему более быстрый. Куча же может распределяться неравномерно по памяти и подвержена внутренней фрагментации