Библиотека собеса по C++ | вопросы с собеседований
4.68K subscribers
387 photos
2 videos
168 links
Вопросы с собеседований по C++ и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9ccf302b

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
😱 В чем разница между вектором и списком?

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 будет обращаться за новой памятью каждый раз, когда вставляется новый узел
🍔 Какая избавиться от вложенных min/max?

Старый вариант использования

auto maxVal = std::max(x1, min(x2, max(x3, x4)));


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

Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками.

⭐️генерация голоса и музыки
⭐️замена и перевод речи
⭐️распознавание звуков

👉Подписывайтесь!
🍔 Отладочные макросы

Отладочные макросы в 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;
}


❗️Начиная с C++11 и C23 static_assert является ключевым словом

🫐 Пользовательские отладочные макросы

Вы также можете определять собственные макросы для отладки, которые помогут вам выводить дополнительную информацию или выполнять специфические проверки

#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;
}
🤯 Как простая задачка поставила в тупик программистов (и как они из него выбрались)

В 2010 году пользователь Stack Overflow не справился с задачей на собеседовании. Обсуждение способов решения этого задания стало одной из самых популярных тем на платформе.

Об этой истории, а также о способах решения задачи, читайте в нашей статье
👉 Ссылка
👉 Зеркало
✉️ Как завалить собеседование, даже не начав его: 8 ошибок в сопроводительных письмах

Откликаетесь, но сразу получаете отказы? Не торопитесь с выводами — возможно, все дело в вашем сопроводительном письме.

👉Сопроводительное — это первое впечатление, которое мы производим на эйчара, а первое впечатление, как известно, очень важно.

Собрали для вас несколько распространенных ошибок по составлению такого письма — а в статье по ссылке можно найти остальные ошибки и пример идеального сопроводительного.

Кстати, вакансии можно поискать в наших профильных каналах:
🤮Data Science, анализ данных, аналитика
🤮Python
🤮Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍔 Дорожная карта для изучения C с нуля

• Автор делится списком полезных ресурсов для изучения Си с нуля

• В статье представлены различные области, в которых автор нуждался в дополнительном разъяснении

• Автор предлагает начать свой собственный проект, выбрав тему, которая действительно интересует

• Для изучения внутренней части ОС x86-64 рекомендуется разработка драйвера ядра и руткита

👉 Ссылочка
💵 ТОП-15 самых востребованных профессий в ИТ: куда все катится в 2024 году

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

👉 Ссылка на статью
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Какую самую маленькую программу можно скомпилировать и запустить без ошибок?
Anonymous Quiz
4%
main()
42%
int main() {return 0;}
7%
main() { ; }
46%
main() { }