uk
Feedback
С++ Собеседования

С++ Собеседования

Відкрити в Telegram
999
Підписники
Немає даних24 години
-297 днів
-6630 день
Архів дописів
Какое главное отличие std::map от std::unordered_map?
Anonymous voting

Что выведет код с применением ranges (C++20)?
Anonymous voting

photo content

🚀 YADRO приглашает C++ разработчиков в команду OpenBMC и встроенных систем! Если вы хотите создавать сложное программное обеспечение для серверов и систем хранения данных, работать с передовыми технологиями Linux и участвовать в проектах open source, то эта возможность для вас. 📌 Кого мы ищем: • Ведущего разработчика C++ (Linux/OpenBMC) • Ведущего разработчика интерфейсов встроенных систем • TeamLead разработки OpenBMC 🧰 Технологический стек и задачи: • C++ (стандарты 17, 20, 23), STL, Boost • Linux-среда, systemd, D-Bus, Yocto, bash, Python • Работа с ядром прошивки OpenBMC, взаимодействие с UEFI/BIOS • Разработка и поддержка сложных интерфейсов встроенных систем 💼 Условия работы: • Гибкий формат: удалённо или в офисах в Москве, Санкт-Петербурге, Екатеринбурге, Нижнем Новгороде и Минске • Работа с масштабными проектами в уникальной команде инженеров • Возможность горизонтального и вертикального карьерного роста 💙 Узнайте больше и откликайтесь на вакансии прямо на сайте!

Что выведет код ?
Что выведет код ?

Что произойдёт при использовании std::variant?
Anonymous voting

photo content

🧠 Задача с подвохом для продвинутых C++ разработчиков 🔹 Уровень: Advanced 🔹 Темы: std::vector, управление памятью, конструкторы/деструкторы, reserve() vs resize() 📌 Условие Рассмотрим следующий код:

#include <iostream>
#include <vector>

struct Foo {
    Foo() { std::cout << "Ctor\n"; }
    ~Foo() { std::cout << "Dtor\n"; }
    Foo(const Foo&) { std::cout << "Copy\n"; }
    Foo(Foo&&) noexcept { std::cout << "Move\n"; }
};

int main() {
    std::vector<Foo> v;
    v.reserve(3);  // Резервируем место под 3 элемента

    std::cout << "--- Pushing ---\n";
    for (int i = 0; i < 3; ++i) {
        v.push_back(Foo());
    }

    std::cout << "--- Done ---\n";
}
Вопросы 1. Что будет выведено на экран? 2. Почему reserve() не предотвращает конструкторы копирования/перемещения? 3. Что изменится, если заменить reserve(3) на resize(3)? 🔍 РазборОжидаемый вывод:
--- Pushing ---
Ctor
Move
Dtor
Ctor
Move
Dtor
Ctor
Move
Dtor
--- Done ---
Dtor
Dtor
Dtor
🔧 Почему так происходит - Foo() создаёт временный объект. - push_back() вызывает перемещающий конструктор Move. - Временный объект уничтожается (вызывается `Dtor`). - reserve(3) выделяет память, но не создаёт объектов. 🔄 Если заменить `reserve(3)` на `resize(3)` - resize(3) создаст 3 объекта Foo через конструктор по умолчанию. - push_back(Foo()) добавит четвёртый, возможно вызовет realocation. - Это может привести к копированию или перемещению уже созданных элементов. ⚠️ Подвох Многие ошибочно считают, что reserve(n) создаёт n объектов. Но это не такreserve() только выделяет память, не вызывая конструкторы. Именно поэтому внутри push_back всё равно происходит перемещение или копирование. 🧠 Вывод - reserve() — экономия на реаллокациях, без создания объектов. - resize() — создаёт n объектов, вызывает конструкторы. - Не путай эти методы — от этого зависит и производительность, и семантика.

// Резервирует память, не создаёт объекты
v.reserve(10);

// Создаёт 10 объектов Foo
v.resize(10);
📌 Совет: Если не хочешь лишнего перемещения, используй emplace_back():

v.emplace_back();  // Вызывает конструктор Foo напрямую внутри вектора

🔓Что выведет следующий код?

#include <iostream>
using namespace std;

class Base {
public:
    Base() {
        cout << "Base constructor: ";
        call();
    }
    virtual void call() { cout << "Base::call\n"; }
};

class Derived : public Base {
    int x = init();

    int init() {
        cout << "Derived::init\n";
        return 42;
    }

public:
    Derived() {
        cout << "Derived constructor\n";
    }

    void call() override {
        cout << "Derived::call, x = " << x << "\n";
    }
};

int main() {
    Derived d;
    return 0;
}
🔢Варианты ответа: A)

Derived::init
Derived constructor
B)

Derived::init
Derived constructor
C)

Base constructor: Derived::call, x = 42
Derived constructor
D)

Derived::call, x = <undefined>
Derived::init
Derived constructor
Правильный ответ: B 💡Почему? В момент вызова конструктора Base, объект ещё не стал Derived. Виртуальная функция вызывается в контексте Base.

🔍 Что выведет этот код C++23?

constexpr auto make_checker() {
    return [](int x) consteval {
        return x % 3 == 0 || x % 5 == 0;
    };
}

int main() {
    auto checker = make_checker();
    std::vector<int> numbers{1, 3, 5, 9, 10, 14, 15};
    auto filtered = numbers | std::views::filter([&](int x) {
        return checker(x);
    });
    for (int x : filtered)
        std::print("{} ", x);
}
🧠 Попробуй угадать результат — он может удивить! @cppsobes

Что выведет код?
Anonymous voting

photo content

Что случится?
Anonymous voting

photo content

Что можно успеть за 3 дня? Получить оффер Software Engineer в YADRO 🚀 Прямо сейчас российская технологическая компания YADRO
Что можно успеть за 3 дня? Получить оффер Software Engineer в YADRO 🚀 Прямо сейчас российская технологическая компания YADRO проводит SPRINT OFFER для Software Engineer в двух направлениях: Linux-based и Android. 🔵 Чтобы присоединиться к команде бренда персональных устройств KVADRA с собственной операционной системой kvadraOS:Оставьте заявку до 24 ноября. • Пройдите HR-скрининг. • Пройдите техническое и менеджерское интервью. → На направлении Linux-based вам предстоит адаптировать исходный код Chromium для компьютеров и ноутбуков с нашими аппаратными платформами и вносить изменения в поведение устройств, учитывая продуктовые требования. → На направлении Android вы будете заниматься подготовкой unit-тестов своего кода. Разрабатывать собственные и адаптировать чужие приложения, если они входят в базовую поставку ОС. Узнать подробности, оставить заявку и стать частью YADRO → по ссылке.

Что выведет код?
Anonymous voting

photo content

Что выведт код?
Anonymous voting

#junior
#junior

Что выведет код?
Anonymous voting