Определение вывода размера структуры в консоль
При обычной поддержке #pragma pack(4) и 8-битном байте размер A равен 16 байтам. Поля занимают 14 байт, а ещё два байта добавляются в конце для выравнивания структуры.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
При обычной поддержке #pragma pack(4) и 8-битном байте размер A равен 16 байтам. Поля занимают 14 байт, а ещё два байта добавляются в конце для выравнивания структуры.
Читать ответСравнивайте соответствующие узлы: два пустых дерева равны, только одно пустое — нет. Для непустых узлов должны совпасть значение, левое и правое поддеревья.
Читать ответПрограмма выведет A: функция f не виртуальная, поэтому вызов через ссылку типа A& выбирает A::f. Фактический тип объекта B не меняет этот выбор.
Читать ответВ программе есть гонка данных: два потока несинхронизированно изменяют обычный int. Поведение неопределено, поэтому нельзя гарантировать ни 200000, ни какой-либо диапазон значений.
Читать ответДля list сохранённый итератор остаётся действительным и указывает на 0. Для vector перераспределение памяти при росте инвалидирует его; последующее разыменование даёт неопределённое поведение.
Читать ответНи один из обработчиков не напечатает свою цифру: исключение из деструктора при раскрутке стека приводит к std::terminate. В C++11 и новее этот деструктор также неявно noexcept.
Читать ответВывод будет A, B, ~A, caught. Поле a успело построиться и уничтожается при раскрутке стека. Объекты b и C не завершили создание, их деструкторы не вызываются.
Читать ответКонструктор Threadsafe(Threadsafe other) недопустим как копирующий, а std::mutex нельзя копировать или присваивать. Для копирования данных нужен новый mutex и согласованный снимок other.
Читать ответВывод: строка «0 1», затем missing, затем 1. operator[] создаёт отсутствующий элемент со значением int, равным нулю; at бросает исключение и не вставляет ключ.
Читать ответРезультат зависит от объявления переменной цикла: auto e изменяет копию, auto& e — элемент вектора. При const auto& присваивание нуля не компилируется.
Читать ответBase<T> — зависимый базовый класс, поэтому его поля не находятся обычным поиском имени i при разборе шаблона. Используйте this->i или явное Base<T>::i.
Читать ответРезультаты: 20, 8, 20 и 5. Массив содержит пять int, указатель хранит адрес, а sizeof выражения-ссылки r измеряет сам массив, на который она ссылается.
Читать ответ