Какой у вас опыт работы с фреймворком Boost
Что проверяют
Знаете ли вы Boost как набор отдельных библиотек и понимаете ли, какие из них в современном C++ уже не нужны. Следом обычно просят рассказать про одну библиотеку глубже, чаще всего про Asio, или спрашивают, почему вы не взяли стандартный аналог.
Как отвечать
Назовите две-три библиотеки, с которыми работали руками, и для каждой задачу, которую она решала:
- Boost.Asio: асинхронная сеть и таймеры. Расскажите про
io_context, про то, сколько потоков вызывалиrun(), как черезstrandсериализовали обработчики одного соединения и как держали объект живым черезshared_from_this. С C++20 обработчики можно писать корутинами черезco_spawnиawaitable; - Boost.Beast: HTTP и WebSocket поверх Asio;
- Boost.Container и Boost.MultiIndex:
flat_map,small_vector,static_vector, контейнер с несколькими индексами; - Program_options, Spirit, Graph, Interprocess, Test: то, что часто встречается в реальных проектах.
Затем покажите, что следите за стандартом. shared_ptr, thread, chrono и regex вошли в C++11, filesystem, optional, variant и any в C++17. В новом коде на C++17 и выше тащить ради них Boost незачем.
Отдельно скажите про сборку: большая часть Boost header-only, но есть компилируемые библиотеки, например filesystem, program_options, log. Зависимость подключали через vcpkg или Conan, в CMake через конфиг-пакет find_package(Boost CONFIG): старый модуль FindBoost в свежих версиях CMake убран политикой CMP0167.
Если опыта мало, честно назовите, что использовали точечно, и объясните, как решили бы ту же задачу стандартной библиотекой.
Где спотыкаются
Говорят «использовал Boost.SmartPtr от утечек» в проекте на C++17. Интервьюер слышит, что вы не заметили std::unique_ptr.
Считают, что Asio сам по себе делает сервер многопоточным. Без понимания, кто крутит io_context и где нужен strand, рассказ про производительность разваливается.
Не упоминают цену: время компиляции, размер бинарника и проблемы, когда в зависимостях проекта оказываются разные версии Boost.