Библиотека собеса по 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
加入频道
-35% на полугодовой курс по алгоритмам!

🌟 Алгоритмы и структуры данных🌟

23 390 рублей 35 990 рублей до 1 апреля

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

🔥 Переходите и активируйте вводные занятия курсаhttps://proglib.io/w/5a72cc41

Вас ждут:

– 150 практических заданий и 47 видеолекций

– бессрочный доступ к обучению

– поддержка преподавателя в чате

А также очень харизматичный спикер из Яндекса 🙌🏻
💡 В чем различия между delete и delete[]?

delete уничтожает объекты, которые были созданы при помощи new()

delete[] уничтожает объекты, которые были созданы при помощи new[](). Также будут вызваны деструкторы для всех элементов


‼️ Если операторы использовать не правильно, то будет undefined behavior😜
⚡️Proglib запускает каналы про нейросети

По каждому направлению отдельно! А именно:

Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей

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

Подписывайтесь!
🧨 Spinlock

Spinlock (спин-блокировка, циклическая-блокировка) — по своей сути просто бесконечный цикл с проверкой для выхода. Необходим для синхронизации доступа к общему ресурсу в многопоточных приложениях


Spinlock даёт максимальную нагрузку на CPU. Так как по задумке он выполняется очень ограниченное время, то это не заметно

Значительно дешевле mutex
🧨 Трюк с битовыми операциями

Значения двух переменных можно поменять местами без дополнительной переменной
с помощью битовой операции XOR (исключающее или)

Если к числу a применить XOR b два раза, то получим тоже самое число а. На этом и строится способ обмена переменными
🔮 Сколько памяти занимает структура?

Ответ
Размер всех членов + Выравнивание (по умолчанию 4 байта) + Размер указателя на таблицу виртуальных методов + Указатели на классы предков (Размер указателя * количество предков)
Какой из следующих типов поддерживается C++, но не C?
Anonymous Quiz
25%
double
12%
float
1%
int
62%
bool
💡 Можно ли вызвать delete this?

Ответ
Да, можно. В основном это делается, если деструктор приватный и другого способа уничтожить объект нет. В остальных же случаях, при двойном вызове delete на одном и том же указателе будет undefined behavior
💡Блок инициализации в цикле for

В стандарте C++20 было добавлен блок инициализации переменных для цикла foreach

С помощью этого можно сделать код более читаемым

Также можно ограничить время жизни переменных только циклом. Это особо полезно если используем разделяемые ресурсы
🧨 Принципы SOLID

Принципы SOLID — в отличие от шаблонов проектирование GoF это правила, которым удобно следовать при разработке для улучшения структуры кода, облегчения возможности поддержки и развития нового функционала

💡В SOLID входит пять принципов, по одному на каждую букву
- Single Responsibility Principle (Принцип единственной обязанности)
- Open/Closed Principle (Принцип открытости/закрытости)
- Liskov Substitution Principle (Принцип подстановки Лисков)
- Interface Segregation Principle (Принцип разделения интерфейсов)
- Dependency Inversion Principle (Принцип инверсии зависимостей)

#solid
🧨 Принцип единственной обязанности

Принцип единственной обязанности (Single Responsibility Principle) — первый из SOLID принципов


💡 Формулировка
- У вас должна быть только одна причина, чтобы поменять класс
- Основной причиной для изменения класса это появление новых требований. Это ведёт к изменению ответственности
- Следуя этому принципу класс не должен иметь больше одной ответственности. Это уменьшит вероятность нарушения логики приложения

Главной идеей данного принципа — это то, что если мы что-то поменяли в одном месте, то мы не хотим чтобы что-то сломалось в другом месте
💡 Зачем нужен __func__?

__func__ — идентификатор, появившийся ещё в C99. Содержит имя функции в скопе которой находится идентификатор
🧨Что такое align(...)?

align(...) — расширение языка, которая задает выравнивание структуры и её элементов

Число в align задаёт выравнивание в байтах и может принимать значения от 1 до 8192

‼️ Начиная с C++11 появилось ключевое слово alignas, работает также, но в отличие от align входит в стандарт языка
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🍰 Зачем нужен std::atomic?

std::atomic — это шаблон для реализации атомарных операций

💡Для std::atomic существуют стандартные алиасы
• std::atomic_bool == std::atomic<bool>
• std::atomic_char == std::atomic<char>
• std::atomic_int == std::atomic<int>
• и т. д.

Полученный из std::atomic объект можно безопасно использоваться из нескольких потоков, не задумываясь о синхронизации
💣 Лучшие книги по C++ для начинающих и продолжающих: ваши рекомендации

Мы ищем лучшие книги (ru, en) по C++, которые помогут как начинающим программистам, делающим свои первые шаги в мире программирования, так и продолжающим программистам, желающим углубить свои знания и перейти на следующий уровень мастерства

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

😏👉 Опросик
💈 Для чего нужна библиотека limits.h?

limits.h — это файл, включаемый в стандартную библиотеку языка программирования Си, который содержит определения характеристик общих типов переменных. Эти значения могут различаться в зависимости от конкретной реализации, но обычно они не меньше диапазона, определенного для конечного представления

🍎Сюда входят максимальные и минимальные значения для основных типов

🍍Особенно часто в коде встречаются INT_MIN, INT_MAX

👉 Дока
💡 Как вы думаете про что принцип Open-closed principle (SOLID)?

Свой вариант можете написать в комментариях

Описание
• ПО должно быть открыто для расширения, но закрыто для модификации
• Мы должны легко уметь от наследоваться от какого-то класса, но при этом наше наследование не должно изменять поведение оригинального класса
• Если всё-таки хотим поменять, то меняем в наследнике