Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🫠 Задача на выходные: LRU Cache
Классика интервью. Проверяет знание STL, сложности операций и дизайн-мышление😸
✏️ Реализуй. Объясни выбор структур данных и почему сложность O(1).
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Классика интервью. Проверяет знание STL, сложности операций и дизайн-мышление😸
// Реализуй класс LRUCache:
// - LRUCache(int capacity)
// - int get(int key) // O(1)
// - void put(int key, int val) // O(1)
//
// При переполнении вытесняется
// наименее недавно использованный элемент.
//
// Разрешено использовать STL.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.
В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.
Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы.
👉 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1😁1🤔1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• oo-alloc — набор объектно-ориентированных обёрток поверх низкоуровневого управления памятью
•Что скрывает auto(x) — именованная операция, позволяющая удобно копировать переменные
• Just My Code в Visual Studio — инструмент, отключающий переходы в режиме отладки в код, который не принадлежит вашему проекту
📙 Ranges:
• Разбиение диапазонов: views::split, chunk, chunk_by
• Генераторы: views::iota и views::repeat
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• oo-alloc — набор объектно-ориентированных обёрток поверх низкоуровневого управления памятью
•Что скрывает auto(x) — именованная операция, позволяющая удобно копировать переменные
• Just My Code в Visual Studio — инструмент, отключающий переходы в режиме отладки в код, который не принадлежит вашему проекту
📙 Ranges:
• Разбиение диапазонов: views::split, chunk, chunk_by
• Генераторы: views::iota и views::repeat
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
😁1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Какую проблему метапрограммирования решают шаблоны с переменным числом аргументов совместно с рекурсией?
Anonymous Quiz
15%
Динамическое выделение памяти для параметров
12%
Проверка корректности аргументов при выполнении
6%
Генерация случайных типов для тестирования
63%
Обход всех элементов пакета параметров поочерёдно
4%
Создание потоков для каждого аргумента пакета
😁1
🕯️ Hello World в 2 МБ
Простейшая программа на C++ с
•
• Флаг
• Тенденция по версиям GCC показательна: тот же
Принцип «не плати за то, что не используешь» на практике работает ровно до того момента, пока компилятор сам не решит, что тебе нужно.
👉 Более детальный разбор
✏️ Вы проверяли, сколько весит ваш «минимальный» бинарник?
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Простейшая программа на C++ с
iostream и статической линковкой на GCC 15 выдаёт бинарник в 2,3 МБ. Для вывода 11 символов — как-то многовато.•
iostream тянет за собой инициализацию std::cout, std::stringstream, локали, виртуальные функции и шаблоны — всё это ради одного вызова operator<<. Замена на printf сразу роняет размер до 42,5 КБ• Флаг
-s срезает ~1,2 МБ отладочной информации, которую компилятор зачем-то пихает в релизный бинарник по умолчанию• Тенденция по версиям GCC показательна: тот же
iostream-бинарник на GCC 3.4.2 весил 260 КБ, на 15.2.0 — уже 1,05 МБ. С каждой версией зависимости жиреютПринцип «не плати за то, что не используешь» на практике работает ровно до того момента, пока компилятор сам не решит, что тебе нужно.
👉 Более детальный разбор
✏️ Вы проверяли, сколько весит ваш «минимальный» бинарник?
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
😁8❤5👍1
Forwarded from Библиотека задач по C++ | тесты, код, задания
😁3🔥1
В прошлый раз мы генерировали диапазоны на лету с помощью iota и repeat. Теперь научимся их комбинировать — объединять несколько источников данных в один поток, не копируя ни байта.
std::vector<std::string> names = {"Алиса", "Борис", "Виктор"};
std::vector<int> scores = {95, 82, 78};
// Получаем пары (имя, балл)
for (auto [name, score] : views::zip(names, scores)) {
std::cout << name << ": " << score << "\n";
}
// Алиса: 95
// Борис: 82
// Виктор: 78zip заканчивается на самом коротком диапазоне — безопасно при разной длине. Внутри возвращается
std::tuple, а structured bindings разбирают его на отдельные переменные.❗️
views::zip возвращает ссылки на элементы исходных контейнеров. Модификация через structured binding изменит оригинальные данные.std::vector<int> data = {10, 50, 30, 90, 20};
for (auto [i, val] : data | views::enumerate) {
if (val > 40) {
std::cout << "Первое превышение на позиции " << i << "\n";
break;
}
}
// Первое превышение на позиции 1Раньше для этого приходилось писать
views::zip(views::iota(0), data) (см. предыдущий пост про генераторы). Теперь — в одну строку.❗️ Тип индекса в
enumerate — это range_difference_t, а не int или size_t. На практике разница редко бьёт, но при сравнении с size() компилятор может выдать предупреждение о знаковости.🧊 Главное свойство
Как и все views,
zip и enumerate ленивые — они не создают копий и не выделяют память. Это лёгкие обёртки поверх исходных данных, которые вычисляются только при обращении к элементу.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
🪞 Reflection в C++26 — два оператора, которые меняют правила игры
Каждый C++ разработчик хоть раз писал
• Появляются два новых оператора:
•
• Практический пример — generic
• Для итерации используется
Вместо ручного
🍴 Подробнее
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Каждый C++ разработчик хоть раз писал
switch-case для превращения enum в строку. C++26 предлагает забыть об этом — в стандарт входит compile-time reflection.• Появляются два новых оператора:
^^ (reflection operator) и [: :] (splicer). Первый превращает любую C++-сущность — тип, переменную, namespace, шаблон — в значение std::meta::info на этапе компиляции. Второй делает обратное: конвертирует std::meta::info обратно в тип, выражение или шаблон•
std::meta::info — это constexpr-хэндл к сущности. По сути, программа получает возможность исследовать собственную структуру в compile-time, не прибегая к макросам или кодогенерации• Практический пример — generic
to_enum_string(). Через std::meta::enumerators_of(^^T) получаем список enumerator-ов, итерируемся по ним с помощью template for, сплайсим значение через [:e:] и достаём имя через std::meta::identifier_of. Добавил новый enumerator — всё работает автоматически• Для итерации используется
std::define_static_array — отдельный proposal C++26, без которого развернуть expansion statement пока не получитсяВместо ручного
switch-case, который ломается при каждом добавлении нового значения, reflection даёт обобщённое решение на уровне языка. Никакой кодогенерации, никаких макросов — чистый constexpr-код с полной type safety.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11😢1