C/C++ | Тесты
Open in Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Вопросы собесов t.me/+BTbqlW1VbIFmYmVi Задачи t.me/+9WeVk7cGswkzNTIy Вакансии t.me/+za2mJYs4riAzMzFi
Show more1 930
Subscribers
+224 hours
-47 days
-630 days
Posts Archive
1 930
🤔 Когда нужно объявлять деструктор виртуальным?
Деструктор должен быть виртуальным, если класс предназначен для использования в качестве базового, и предполагается полиморфное удаление через указатель (Base* ptr = new Derived; delete ptr;). Без виртуального деструктора деструкторы производных классов не будут вызваны, что приведет к утечке памяти.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 В чем разница set и unordered_set?
Set — это отсортированное множество, которое хранит элементы в порядке возрастания и использует бинарное дерево для внутренней реализации. Unordered_set хранит элементы в произвольном порядке и использует хеш-таблицу для доступа к элементам. В set операции поиска, вставки и удаления имеют сложность O(log n), а в unordered_set — O(1) в среднем случае, но O(n) в худшем случае. Set предпочтителен, когда требуется поддерживать порядок элементов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Как работает счетчик у shared_ptr?
Счетчик ссылок в `std::shared_ptr` увеличивается каждый раз, когда новый `shared_ptr` создается с указателем на объект, и уменьшается, когда `shared_ptr` уничтожается или перестает указывать на объект. Когда счетчик достигает нуля, объект уничтожается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Какие есть уровни exception гарантий?
1. No-throw Guarantee: метод или операция не выбрасывает исключений. Пример: деструкторы.
2. Strong Guarantee: при выбросе исключения состояние объекта или программы остаётся неизменным.
3. Basic Guarantee: состояние объекта остаётся корректным, но изменения могут быть частичными.
4. No Guarantee: программа может оказаться в некорректном состоянии при исключении.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Что можешь рассказать о little-endian и big-endian?
Little-endian и big-endian — это порядки байтов в мультибайтовых данных, используемые в компьютерной архитектуре для хранения данных. В little-endian младший байт сохраняется по низкому адресу, а старший байт по высокому. В big-endian старший байт сохраняется по низкому адресу, а младший по высокому. Выбор порядка байтов влияет на совместимость и производительность системы в различных сценариях использования.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Что будет если в функции помеченной как noexcept бросить исключение?
Если функция, помеченная как `noexcept`, выбросит исключение, программа вызовет `std::terminate()`, что приведёт к немедленному завершению выполнения. Это связано с тем, что `noexcept` гарантирует, что функция не выбросит исключений, и нарушение этого обещания считается критической ошибкой. Использование `noexcept` позволяет оптимизировать код, так как компилятор может делать определённые оптимизации, полагаясь на то, что исключения не будут выбрасываться. Следует избегать выбрасывания исключений в таких функциях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Как проверить, вылетело ли исключение в каком-то из потоков?
Исключения из потоков можно сохранить в std::exception_ptr через std::current_exception() и передать их в главный поток для обработки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Какое из следующих утверждений о компиляции и линковке в C++ неверно?
1 930
🤔 Почему по идее в конструкторе нужны исключения?
1. Конструктор отвечает за корректную инициализацию объекта, поэтому при ошибке важно сигнализировать о проблеме.
2. Исключения позволяют безопасно остановить создание объекта, если данные или ресурсы не были успешно инициализированы.
3. Это защищает от использования некорректно инициализированных объектов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
1 930
🤔 Что известно о ключевом слове override?
Ключевое слово override используется для явного указания, что метод переопределяет виртуальный метод базового класса. Оно предотвращает ошибки, связанные с неправильным именованием или сигнатурой методов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Available now! Telegram Research 2025 — the year's key insights 
