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

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

前往频道在 Telegram

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

显示更多
4 597
订阅者
+124 小时
-47 天
-2330 天
帖子存档
Как узнать факториал числа? Решение приведено на картинке.
Как узнать факториал числа? Решение приведено на картинке.

Как проверить, является ли число степенью двойки? Мы можем проверить, является ли число степенью двойки или нет напрямую, исп
Как проверить, является ли число степенью двойки? Мы можем проверить, является ли число степенью двойки или нет напрямую, используя код выше.

Что такое rvalue, lvalue? lvalue — это всё, что имеет имя, rvalue — это то, что имени не имеет. Исторически сложились такие н
Что такое rvalue, lvalue? lvalue — это всё, что имеет имя, rvalue — это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue — это то, что появлялось только справа от этого выражения.

Что такое класс хранения? Класс, который определяет срок существования, компоновку и расположение переменных/функций в памяти. В C++ поддерживаются такие классы хранения: auto, static, register, extern и mutable. Обратите внимание, что register устарел для C++11. Для C++17 он был удален и зарезервирован для будущего использования.

Что делает алгоритм move? Синтаксис: std::move(first, last, result); Перемещает элементы диапазона [first,last) в диапазон, н
Что делает алгоритм move? Синтаксис: std::move(first, last, result); Перемещает элементы диапазона [first,last) в диапазон, начиная с позиции result. Значение элементов в [first,last) массиве передается элементам, на которые указывает result. После вызова элементы в диапазоне [first,last) остаются в неопределенном, но допустимом состоянии.

Бывает такое, что оператор new не выделяет память? Ответ: Да, бывает, когда new передаётся указатель на уже выделенную память
Бывает такое, что оператор new не выделяет память? Ответ: Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc. Важно! В этом случае деструктор нужно вызывать самостоятельно!

Что такое виртуальный деструктор и зачем он используется в C++? В C++ виртуальный деструктор используется для правильного освобождения памяти при удалении объекта через указатель на базовый класс. Если базовый класс имеет виртуальный деструктор, то при удалении объекта через указатель на базовый класс будет вызван деструктор не только базового класса, но и всех его производных классов. Это позволяет избежать утечек памяти и неопределенного поведения при работе с полиморфными объектами. Если виртуального деструктора не объявлено в базовом классе, то при удалении производного объекта через указатель на базовый класс будут вызваны только деструкторы базового класса, что может привести к утечкам памяти и неопределенному поведению.

Что такое void указатель? Можно ли разыменовать указатель void, не зная его типа? void указатель — это указатель, который можно использовать для указания на любые данные любого произвольного типа. Указатель void может быть разыменован только после явного приведения. Например: int a = 5; void *b = &a; printf(“%d\n”, *((int*)b));

Что такое хеш-функция? Объясните на примере Хеш-функция — это функция, которая принимает на вход некоторые данные и возвращае
Что такое хеш-функция? Объясните на примере Хеш-функция — это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных. Рассмотрим применение на примере кода выше: Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.

Что быстрее: постфиксные инкрементные операторы или префиксные? Чем отличается их сигнатура? Префиксные операторы быстрее. В
Что быстрее: постфиксные инкрементные операторы или префиксные? Чем отличается их сигнатура? Префиксные операторы быстрее. В постфиксных операторах производится дополнительная операция сохранения предыдущего состояния объекта, а затем только увеличение на 1, а в префиксном операторе после инкрементирования объекта, сразу возвращается ссылка объект. Сигнатура их отличается фиктивным параметром int у постфиксного оператора.

Когда следует использовать виртуальное наследование? Хотя идеально вообще избегать виртуального наследования (вы должны знать
Когда следует использовать виртуальное наследование? Хотя идеально вообще избегать виртуального наследования (вы должны знать, как будет использоваться ваш класс), все же важно иметь четкое представление о том, как работает виртуальное наследование: Итак, когда у вас есть класс (класс A), который наследуется от двух родителей (B и C), оба из которых имеют общего родителя (класс D), как показано на картинке. Если вы не используете виртуальное наследование в этом случае, вы получите две копии D в классе A: одну из B и одну из C. Чтобы это исправить, вам нужно изменить объявления классов C и B на виртуальные: class C: virtual public D { }; class B: virtual public D { };

Как сгенерировать pure virtual function call исключение? Нужно вызвать чисто виртуальный метод в конструкторе родительского к
Как сгенерировать pure virtual function call исключение? Нужно вызвать чисто виртуальный метод в конструкторе родительского класса, то есть до создания дочернего, в котором этот метод реализован. Так как современный компилятор не даст это сделать напрямую, то нужно будет использовать промежуточный метод.

К чему приводит удаление указателя NULL? Удаление указателя NULL не приводит к каким-либо изменениям и ошибкам.
К чему приводит удаление указателя NULL? Удаление указателя NULL не приводит к каким-либо изменениям и ошибкам.

Для чего нужен алгоритм generate? Используется для генерации чисел на основе функции генератора, а затем присваивает эти знач
Для чего нужен алгоритм generate? Используется для генерации чисел на основе функции генератора, а затем присваивает эти значения элементам в контейнере в диапазоне [first, last).

Что дают разные модификаторы при наследовании? Ответ: Изменяют зону видимости членов базового класса. При private наследовани
Что дают разные модификаторы при наследовании? Ответ: Изменяют зону видимости членов базового класса. При private наследовании protected и public члены становятся private. При protected наследовании public становится protected. А при public ничего не изменяется.

Прямой эфир «Технический этап собеседования: разбор задач и ошибок» 🕐 Когда? 29 августа в 19:00 мск 🗣️ Кто спикер? Алексей
Прямой эфир «Технический этап собеседования: разбор задач и ошибок» 🕐 Когда? 29 августа в 19:00 мск 🗣️ Кто спикер? Алексей Бочкарев | Engineering Manager at FAANG 🦥 Где регистрироваться? Здесь – https://proglib.io/w/5e90c859 🌝 О чем поговорим? Комбинаторика и комбинаторные числа: определение и практические примеры – Основные идеи динамического программированияИдеи рекурсии и примеры, включая inorder обход двоичного дерева – Графы и способы их представления – Примеры различных типов асимптотической сложностиРаспространенные ошибки в коде, как избегать обращения за границы массива, разыменования нулевого указателя, некорректная логика ☄️ Регистрируйтесь, будет интересно – https://proglib.io/w/5e90c859

Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++? В C++ ссылки более безопасны, чем указатели, потому ч
Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++? В C++ ссылки более безопасны, чем указатели, потому что ссылки должны быть инициализированы, и их нельзя изменить, чтобы ссылаться на что-то другое после инициализации. Но есть исключения, когда у нас могут быть недействительные ссылки. Но есть пара исключений, когда у нас могут быть недействительные ссылки. Они приведены на картинке.

В чем отличие overload и overried? Ответ: overload — это перегрузка, два одинаковых имени функций с разными принимаемыми аргументами, override — это переопределение (с помощью таблицы виртуальных функций), изменение поведения функции в выведенном классе (с помощью механизма виртуальных функций).

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

Для чего нужен std::string::at? std::string::at можно использовать для извлечения символов по символам из заданной строки. По
Для чего нужен std::string::at? std::string::at можно использовать для извлечения символов по символам из заданной строки. Подробнее ознакомиться можно здесь.