Библиотека собеса по 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
加入频道
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Как получить текущую дату и время?

Предположим, вы хотите получить текущую системную дату и время, либо в качестве локального времени, либо в качестве скоординированного универсального времени (UTC).

Выше приведен пример для достижения обоих целей.
Что делает алгоритм inner_product?

Вычисляет сумму поэлементного умножения двух диапазонов и добавляет ее к указанному начальному значению либо вычисляет результат обобщенной процедуры, где бинарные операции суммы и умножения заменены на другие указанные бинарные операции.
#код
Задача

Преподаватель Васиной группы наконец-то начал объявлять оценки за прошедшие работы. Так как важен не набор оценок, а средняя, то после каждого объявления студент, которому сообщили новую оценку, хочет знать среднее своих оценок по уже объявленным работам. Напишите программу, которая избавит Васиных одногруппников от лишнего ручного счета.

Первая строка входного файла - целое число N от 0 до 105 - общеее количество оценок. Далее идут N строк, каждая из которых содержит фамилию очередного студента (строка из латинских букв длиной от 1 до 20 символов) и его оценку - целое число от 0 до 109.

Выведите N строк. k-я строка должна содержать среднюю оценку студента, которому была выставлена k-я оценка в исходном списке, после объявления k оценок. Средняя оценка округляется до ближайшего целого вниз (то есть, от нее отбрасывается дробная часть).
Как защитить объект от копирования?

Сделать private конструктор копирования и оператор =.
Что делает алгоритм replace_if?

Алгоритм replace_if() используется для присвоения нового значения всем элементам в диапазоне [first, last), для которых функция IsOdd возвращает true.
Задача

Напишите функцию, которая принимает вектор и удаляет из него нули, а ненулевые элементы оставляет в прежнем порядке. В реализации нельзя использовать циклы.
Задача: Встречалось ли число раньше

Во входной строке записана последовательность чисел через пробел. Для каждого числа выведите слово YES (в отдельной строке), если это число ранее встречалось в последовательности или NO, если не встречалось.
Что делает алгоритм iter_swap?

std::swap используется для обмена элементами между двумя контейнерами. Один из других способов сделать то же самое облегчает std::iter_swap, который, как следует из названия, используется для замены элементов с помощью итератора.

Он просто меняет значения элементов, на которые указывают итераторы. Если мы посмотрим на его внутреннюю работу, мы обнаружим, что эта функция сама использует std::swap().
Есть ли разница между классом и структурой?

Единственное различие между классом и структурой — это модификаторы доступа. Элементы структуры являются общедоступными по умолчанию, а класса — private. Рекомендуется использовать классы, когда вам нужен объект с методами, а в случае с простым объектом — структуры.
Как можно оптимизировать данный цикл?

В исходном цикле каждый раз происходит вычисление позиции элемента в массиве array. Переписав функцию мы избавляемся от этого вычисления.
В чем проблема следующего фрагмента?

Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
Напишите код для переворота строки

Код переворота строки для контейнеров, без временных переменных, не осуществляющий прохода по всей строке.
В чем отличие vector от deque?

Ответ: Здесь вспоминают о наличии у deque методов push_front и pop_front. Но основное отличие в организации памяти, у vector она как у обычного Си-массива, т.е. последовательный и непрерывный набор байт, а у deque это фрагменты с разрывами. За счет этого отличия vector всегда можно привести к обычному массиву или скопировать целиком участок памяти, но зато у deque операции вставки/удаления в начало быстрее (O(1) против O(n)), ввиду того, что не нужно перемещать.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Чем отличается мьютекс от семафора?

— Семафор может принимать любое неотрицательное целое значение, мьютекс — только 0 или 1.

— Семафор используется для синхронизации потоков и ограничения доступа к общим ресурсам. Мьютекс — только для взаимного исключения потоков.

— Операции с семафором: wait/signal. С мьютексом: lock/unlock.

— Ожидание семафора можно прервать. Блокировка мьютекса — непрерывная.

— Семафоры можно использовать для реализации ограниченных ресурсов, счетчиков, барьеров. Мьютексы — только для взаимного исключения.

— Мьютекс может быть рекурсивным, семафор — нет.

— Использование семафора часто требует больше кода и аккуратности чем мьютекса.
Что такое глубокое копирование?

Глубокое копирование (deep copy) — это создание полной копии объекта, включая все его внутренние объекты и поля.
В Java глубокое копирование нужно реализовывать вручную, так как оператор присваивания и конструктор копирования создают поверхностную копию (shallow copy).

При поверхностном копировании копируются только поля текущего объекта. Внутренние объекты не копируются, а их ссылки просто переносятся в новый объект.
При глубоком копировании рекурсивно копируются также все вложенные объекты. Это позволяет разорвать связь между исходным объектом и копией.

Для глубокого копирования в Java используют:
— Переопределение метода clone().
— Сериализацию объекта.
— Вручную рекурсивно копировать все поля и вложенные объекты.

Глубокое копирование нужно, чтобы изменения в копии объекта не влияли на оригинал. Это важно для правильной работы программы.
Может ли inline-функция быть рекурсивной?

Поскольку компилятор просто встраивает код inline-функции в место вызова, не имеет значения, является ли эта функция рекурсивной или нет. Компилятор будет просто копировать один и тот же код функции при каждом рекурсивном вызове.

Таким образом, рекурсивные inline-функции абсолютно допустимы и часто используются, когда нужна рекурсия без накладных расходов на стандартные вызовы функций.
В чем разница между struct и class?

Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.