Какой текст появится в консоли после запуска программы
Программа напечатает 16: первый элемент станет 1, а размер списка останется 6. std::remove_if перемещает сохраняемые значения, но не удаляет узлы контейнера.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Программа напечатает 16: первый элемент станет 1, а размер списка останется 6. std::remove_if перемещает сохраняемые значения, но не удаляет узлы контейнера.
Читать ответВ консоль будет выведено 3. После последнего постфиксного инкремента значение counter станет 4, но в поток передаётся его прежнее значение.
Читать ответПосле копирования rawPtr и refCount нужно выполнить if (refCount) ++*refCount. Проверка нужна для копирования пустого SharedPtr.
Читать ответПеремещающий конструктор забирает указатель на ресурс и общий счётчик, затем обнуляет оба поля источника. Счётчик ссылок при этом не увеличивается.
Читать ответРазделите чтение и запись на IFileReader и IFileWriter, чтобы клиент зависел только от нужной операции. Открытие и закрытие лучше связать с жизненным циклом файлового объекта через RAII.
Читать ответВектор сортируется по возрастанию вызовом std::sort(A.begin(), A.end()). Результат: -33, -5, 1, 1, 1, 4, 10, 300.
Читать ответКод не компилируется из-за закрытого наследования и отсутствия вызова Foo(j). Кроме того, delete не соответствует new[], копирование поверхностное, а удаление Bar через Foo* небезопасно.
Читать ответКопирующий конструктор должен разделить с исходным объектом и ресурс, и общий счётчик, увеличив счётчик на единицу. Для пустого указателя увеличивать нечего.
Читать ответПри стандартных настройках cout будет выведено 5.8=5=4. Преобразование double в int отбрасывает дробную часть, а дальнейшее деление выполняется как целочисленное.
Читать ответУказанная иерархия уже реализует виртуальный ромб: B и C совместно используют одну базовую часть A внутри D. Обращение к h через обе ветви относится к одному объекту.
Читать ответИспользуйте алгоритм Кнута — Морриса — Пратта: префикс-функция позволяет продолжать поиск без повторного обхода уже проверенных символов. После совпадения нельзя сбрасывать состояние в ноль — нужны перекрытия.
Читать ответПри глубоком копировании новый объект получает собственный динамический ресурс с тем же содержимым. В присваивании сначала создайте копию и только после успеха заменяйте старый ресурс.
Читать ответ