Функция, меняющая порядок элементов вектора
Используйте std::reverse на диапазоне вектора. Функция меняет элементы на месте, ничего не возвращает и корректно обрабатывает пустой вектор.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Используйте std::reverse на диапазоне вектора. Функция меняет элементы на месте, ничего не возвращает и корректно обрабатывает пустой вектор.
Читать ответМожно вычислять максимум сразу, без массива времён и второго цикла. Но сначала нужен определённый контракт ошибок: при нулевой скорости исходник читает неинициализированное t[i].
Читать ответУдаление производного объекта через базовый указатель без виртуального деструктора даёт неопределённое поведение. Это не гарантированное исключение, которое можно надёжно поймать.
Читать ответЧтобы отсортировать исходный вектор, передавайте его по неконстантной ссылке. В текущей сигнатуре сортируется локальная копия, которая уничтожается при выходе.
Читать ответИсправьте имя деструктора на ~A, восстановите скобки try/catch и уберите исключение из деструктора. Тогда внешний throw 32 будет нормально перехвачен, и программа выведет 32.
Читать ответЛокальный mutex не защищает общую очередь между вызовами. Кроме того, код дважды unlock-ит мьютекс и использует ссылку на элемент после снятия защиты. Сообщение нужно извлечь под общей блокировкой.
Читать ответДостаточно предварительно объявить B перед A: для хранения указателя полный тип не нужен. Определения методов, обращающихся к членам другого класса, размещают после полного определения обоих типов.
Читать ответБез virtual объект D содержит две независимые части A. Доступ obj.value неоднозначен; можно выбрать ветвь явно, но это не объединяет два значения в одно.
Читать ответЗа один проход перепишите все ненулевые элементы в начало, сохраняя порядок, а оставшуюся часть заполните нулями. Потребуются O(n) времени и O(1) дополнительной памяти.
Читать ответЕсли собственное управление памятью не требуется, используйте композицию со std::vector<T>. Метод push_back(const T&) скопирует переданный элемент и сохранит его в конце внутреннего контейнера.
Читать ответФункция уже использует линейный поиск с ранним выходом. Рефакторинг может улучшить имена и убрать повторное индексирование, но сам по себе не меняет сложность O(n).
Читать ответВсе три присваивания пытаются изменить объект через const-квалифицированный доступ и нарушают ограничения языка C. Компилятор должен выдать диагностику; корректного выполнения этих записей ожидать нельзя.
Читать ответ