Библиотека собеса по 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
加入频道
🔮 Сколько памяти занимает структура?

Ответ
Размер всех членов + Выравнивание (по умолчанию 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)?

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

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

В GCC есть расширение, позволяющее использовать диапазоны в конструкции switch-case

Это бывает удобно, когда можно проверяемое значение привести к числовому. Так не придется писать двойные проверки в конструкции if
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
💣 Как отключить вывод предупреждений о неиспользуемых переменных?

Бывают ситуации, когда приходится пользоваться сторонним кодом (например библиотеками). В нём могут оставаться не используемые переменные, оставленные по той или иной причине. Компилятор на такого рода вещи выдаёт предупреждения

Что бы вывод компиляции не захламлялся данного рода сообщениями, и было проще читать полезные предупреждения, есть специальный флаг (-Wno-unused-variable)

Флаг компилятора -Wno-unused-variable используется для отключения предупреждений, связанных с неиспользуемыми переменными во время компиляции программы
🧨 Что делает std::iota?

std::iota — алгоритм из стандартной библиотеки C++. С его помощью можно заполнять последовательности диапазоном значений, начиная с начального значения и до конца заполняемой структуры

Если выбрать начальное значение за 1, то последовательность будет: 1, 2, 3, 4, 5,...
🧨 Для чего нужен принцип подстановки Лисков?


Принцип подстановки Лисков (Liskov substitution principle) — третий принцип SOLID
• У класса S отнаследованного от T должна быть возможность применяться там, где ожидается T. При этом ожидается, что программа адекватно будет работать
• Идея принципа в том, что контракт (он же функционал), который гарантирует предок должен выполняться и в наследнике
🧨 Как преобразовать std::vector в массив?

Это довольно просто сделать. Достаточно просто разыменовать первый элемент вектора

std::vector<int> vec = {1, 2 , 3};
int* arr = &vrc[0];


Это работает, потому что все элементы std::vector хранятся последовательно