Forwarded from Библиотека задач по C++ | тесты, код, задания
Что произойдёт при вызове foo()?
Anonymous Quiz
31%
Компиляционная ошибка
31%
Вызов std::unexpected() или terminate()
11%
Исключение будет поймано автоматически
12%
Программа продолжит работу нормально
15%
Неопределённое поведение программы
😢2😁1
🔧 std::enable_if_t для проверки иерархии классов
Нужно убедиться, что класс является наследником другого? Проверяйте это на этапе компиляции с помощью type traits.
✅ Контроль иерархии классов на этапе компиляции
💰 Предотвращение неправильного использования API
⚡️ Статическая проверка без runtime-затрат
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Нужно убедиться, что класс является наследником другого? Проверяйте это на этапе компиляции с помощью type traits.
#include <type_traits>
#include <memory>
class Base {
public:
virtual ~Base() = default;
};
class Derived : public Base {};
class Unrelated {};
// Фабрика, работающая только с наследниками Base
template<typename T>
std::enable_if_t<std::is_base_of_v<Base, T> && !std::is_same_v<Base, T>,
std::unique_ptr<T>>
createObject() {
return std::make_unique<T>();
}
int main() {
auto obj1 = createObject<Derived>(); // ✅ OK
// auto obj2 = createObject<Unrelated>(); // ❌ Compile error
// auto obj3 = createObject<Base>(); // ❌ Compile error
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Floating-point арифметика полна сюрпризов. Два специализированных флага помогают найти неявные расширения
float до double и опасные сравнения на равенство.float compute(float x) {
return x * 3.14; // Внимание! 3.14 — это double!
// x неявно расширяется до double
}
// С -Wdouble-promotion:
// warning: implicit conversion increases floating-point precision
// ✅ Исправление:
return x * 3.14f; // f-суффикс — явный floatdouble a = 0.1 + 0.2;
if (a == 0.3) { // Почти никогда не выполнится!
// 0.1 + 0.2 = 0.30000000000000004 в IEEE 754
}
// -Wfloat-equal: warning: comparing floating point with ==
// ✅ Правильно:
constexpr double EPS = 1e-9;
if (std::abs(a - 0.3) < EPS) { /* ... */ }
/W4.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
🫖 Измеряем время затрачиваемое блокировками
Автор статьи взял и замерил:
❗ Ключевые моменты статьи:
•
•
• горячий спинлок — 2–4 такта накладных, однако может съесть всё ядро и заморозить владельца лока
Основной фокус — бенчмарк на реальных данных: пул 128 МБ мелких защищённых объектов, два конкурирующих потока, измерение влияния cache-line соседства и contention.
Спойлер из выводов:
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#линкер_рекомендует
Автор статьи взял и замерил:
mutex, futex, горячий atomic-спинлок — что сколько реально стоит в тактах, и когда какой примитив выбрать.❗ Ключевые моменты статьи:
•
std::mutex — стабильные ~25 накладных тактов, но 40 байт памяти на объект•
futex через std::atomic wait/notify — ~14 тактов в удачном случае, но осторожно с contention• горячий спинлок — 2–4 такта накладных, однако может съесть всё ядро и заморозить владельца лока
Основной фокус — бенчмарк на реальных данных: пул 128 МБ мелких защищённых объектов, два конкурирующих потока, измерение влияния cache-line соседства и contention.
Спойлер из выводов:
unique_ptr<mutex> — неплохой безопасный дефолт, с которого не стыдно начать. А futex стоит рассматривать только если память давит и вы точно замерили свой contention — иначе легко получить проигрыш там, где ждали выигрыш.👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#линкер_рекомендует
❤3👍1😁1
Оптимизация и контроль: инженерный курс по AI-агентам
Пока другие пишут промпты, мы говорим об управлении ресурсами. Обновлённый курс «Разработка AI-агентов» — это про жёсткий инжиниринг, метрики и контроль выполнения.
Hardcore features:
🔹 Управление ресурсами. Оптимизация токенов, кэширование, роутинг запросов и контроль вычислительных затрат.
🔹 Архитектура. Построение отказоустойчивых графов (`LangGraph`),
🔹 Advanced RAG. Эффективные алгоритмы поиска и извлечения данных из сложных источников.
🔹 Prod-ready. Трассировка, логирование и метрики производительности системы.
Стартуй сейчас! Материалы доступны сразу.
🎟 ПромокодAgent — скидка 10 000 ₽ (до 28 февраля).
👉 Инженерный трек в AI
Пока другие пишут промпты, мы говорим об управлении ресурсами. Обновлённый курс «Разработка AI-агентов» — это про жёсткий инжиниринг, метрики и контроль выполнения.
Hardcore features:
🔹 Управление ресурсами. Оптимизация токенов, кэширование, роутинг запросов и контроль вычислительных затрат.
🔹 Архитектура. Построение отказоустойчивых графов (`LangGraph`),
time-travel отладка и восстановление состояний.🔹 Advanced RAG. Эффективные алгоритмы поиска и извлечения данных из сложных источников.
🔹 Prod-ready. Трассировка, логирование и метрики производительности системы.
Стартуй сейчас! Материалы доступны сразу.
🎟 Промокод
👉 Инженерный трек в AI
❤3😁1😢1
😎 Топ-вакансий для C++ разработчиков за неделю
Embedded engineer — от 330 000 и до 370 000 ₽ Офис(Москва)
Разработчик C++ — от 200 000 и до 260 000 ₽ Удалёнка
C++ Developer (Middle/Senior) — от 2 000 и до 4 000 $ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Embedded engineer — от 330 000 и до 370 000 ₽ Офис(Москва)
Разработчик C++ — от 200 000 и до 260 000 ₽ Удалёнка
C++ Developer (Middle/Senior) — от 2 000 и до 4 000 $ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
❤2😁2
🔧Код-ревью от команды от Edge
Команда браузера Edge разобрала сотни pull request'ов и собрала главные грабли, на которые наступают все.
❗Ключевые моменты лекции:
▶️ Передаёшь
▶️
▶️ Пишешь
▶️
▶️
▶️
📹 Лекция
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Команда браузера Edge разобрала сотни pull request'ов и собрала главные грабли, на которые наступают все.
❗Ключевые моменты лекции:
▶️ Передаёшь
std::string по значению? Используй std::string_view — без лишних аллокаций▶️
std::vector в параметрах? std::span справится без временных объектов▶️ Пишешь
return std::move(x)? Ты только что убил NRVO — компилятор умнее▶️
std::variant вместо нескольких std::optional — код станет безопаснее и чище▶️
emplace_back вместо push_back, contains вместо find — пора на современный STL▶️
clang-tidy выловит всё вышеперечисленное автоматически — просто включи нужные проверки📹 Лекция
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
😁6❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👩💻 Женщины в IT зарабатывают на 40% меньше мужчин — но дело не в дискриминации
Женщины в IT получают 99 тысяч рублей, мужчины — 156 тысяч. Разрыв в 40% выглядит пугающе, но объяснение не такое однозначное, как кажется.
Исследуем полный путь карьеры в IT через призму гендера — от выбора вуза до позиции CTO — и показываем, где заканчивается статистика и начинается реальное неравенство.
🐸 Библиотека программиста
Женщины в IT получают 99 тысяч рублей, мужчины — 156 тысяч. Разрыв в 40% выглядит пугающе, но объяснение не такое однозначное, как кажется.
Исследуем полный путь карьеры в IT через призму гендера — от выбора вуза до позиции CTO — и показываем, где заканчивается статистика и начинается реальное неравенство.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
Даже ИИ-агентам нужен жёсткий контроль ресурсов
Собрать Proof of Concept с вызовом LLM API легко. Заставить эту систему работать предсказуемо, без утечек контекста, бесконечных циклов и перерасхода вычислительных мощностей — задача для инженеров.
Мы пересобрали курс по AI-агентам под реалии 2026 года. Фокус смещён с обзора фич на суровый инжиниринг: тестирование, метрики производительности и управление затратами.
Что ждёт на глубоком техническом уровне:
— продвинутый RAG: оптимизация извлечения данных из таблиц, сканов и сырых источников;
— архитектура: внедрение
— профилирование: ограничение времени исполнения, контроль потребления токенов и кэш;
— изоляция доменов: управление legacy-интерфейсами с визуальными подтверждениями;
— комплаенс: интеграция ИИ с соблюдением юридических ограничений (152-ФЗ).
Используйте промокод
Сейчас активна акция «3 курса по цене 1» (ещё два курса в подарок).
Начать инженерную разработку AI
Собрать Proof of Concept с вызовом LLM API легко. Заставить эту систему работать предсказуемо, без утечек контекста, бесконечных циклов и перерасхода вычислительных мощностей — задача для инженеров.
Мы пересобрали курс по AI-агентам под реалии 2026 года. Фокус смещён с обзора фич на суровый инжиниринг: тестирование, метрики производительности и управление затратами.
Что ждёт на глубоком техническом уровне:
— продвинутый RAG: оптимизация извлечения данных из таблиц, сканов и сырых источников;
— архитектура: внедрение
LangGraph, human-in-the-loop, time-travel и средств восстановления;— профилирование: ограничение времени исполнения, контроль потребления токенов и кэш;
— изоляция доменов: управление legacy-интерфейсами с визуальными подтверждениями;
— комплаенс: интеграция ИИ с соблюдением юридических ограничений (152-ФЗ).
Используйте промокод
Agent до 28 февраля — это скидка 10 000 рублей на обучение.Сейчас активна акция «3 курса по цене 1» (ещё два курса в подарок).
Начать инженерную разработку AI
proglib.academy
Курс| Разработка AI-агентов
Курс про контролируемую разработку AI-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — практическая работа.
❤1😁1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🐛 Баг на выходные: порядок ASSERT vs EXPECT
Кажется, разница между ASSERT_* и EXPECT_* — мелочь. Но она меняет поведение теста кардинально.
Что произойдёт при выполнении теста? Какие строки выполнятся, а какие нет? Когда использование ASSERT_EQ вместо EXPECT_EQ — правильное решение, а когда — опасное?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Кажется, разница между ASSERT_* и EXPECT_* — мелочь. Но она меняет поведение теста кардинально.
TEST(VectorTest, CheckElements) {
std::vector<int> v = {1, 2, 3};
ASSERT_EQ(v.size(), 4u); // (1)
EXPECT_EQ(v[0], 1); // (2)
EXPECT_EQ(v[3], 4); // (3)
}Что произойдёт при выполнении теста? Какие строки выполнятся, а какие нет? Когда использование ASSERT_EQ вместо EXPECT_EQ — правильное решение, а когда — опасное?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
😁1👾1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• std::enable_if_t — зазбираем способ для проверки иерархии классов
• -Wdouble-promotion -Wfloat-equal — флаги помогающие найти неявные расширения float до double
• Измеряем время затрачиваемое блокировками — статья о том как дорого стоят блокировки
• Код-ревью от команды от Edge — разбор pull request'ов от команды Edge и описание основных проблем в коде
👺 Софт:
zvec — легковесная база данных in-process, предназначенная для встраивания в приложения
OrcaSlicer — бесплатный слайсер для 3D-печати на базе Bambu Studio
ESP32-Bus-Pirate — прошивка для ESP32, превращающая устройство в многофункциональный инструмент хакера с поддержкой протоколов (I2C, SPI, UART и др.)
Geode — современный загрузчик модов и SDK для моддинга Geometry Dash
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• std::enable_if_t — зазбираем способ для проверки иерархии классов
• -Wdouble-promotion -Wfloat-equal — флаги помогающие найти неявные расширения float до double
• Измеряем время затрачиваемое блокировками — статья о том как дорого стоят блокировки
• Код-ревью от команды от Edge — разбор pull request'ов от команды Edge и описание основных проблем в коде
👺 Софт:
zvec — легковесная база данных in-process, предназначенная для встраивания в приложения
OrcaSlicer — бесплатный слайсер для 3D-печати на базе Bambu Studio
ESP32-Bus-Pirate — прошивка для ESP32, превращающая устройство в многофункциональный инструмент хакера с поддержкой протоколов (I2C, SPI, UART и др.)
Geode — современный загрузчик модов и SDK для моддинга Geometry Dash
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
👍3
⚙️ Низкоуровневый контроль над высокоуровневыми агентами: запуск в Production
Когда речь заходит об AI-агентах в 2026 году, на первый план выходят вопросы оптимизации ресурсов, изоляции доменов и стабильности функционирования. Наш курс переработан для тех, кто ценит управляемый инжиниринг и детальное управление системой.
📚 В обновлённой программе:
— управление ресурсами: токены, кэширование и оптимизация вычислительных затрат;
— инжиниринг качества: глубокое логирование, трассировка и устранение регрессий;
—
— промышленный
Подготовьтесь к обучению заранее — материалы для старта доступны сразу после покупки.
⏳ Специальные условия до 28 февраля:
— введите промокод
— участвуйте в **акции «3 курса по цене 1» — выберите два дополнительных курса.
👉 Получить доступ к курсу и подаркам
Когда речь заходит об AI-агентах в 2026 году, на первый план выходят вопросы оптимизации ресурсов, изоляции доменов и стабильности функционирования. Наш курс переработан для тех, кто ценит управляемый инжиниринг и детальное управление системой.
📚 В обновлённой программе:
— управление ресурсами: токены, кэширование и оптимизация вычислительных затрат;
— инжиниринг качества: глубокое логирование, трассировка и устранение регрессий;
—
LangGraph PRO: механизмы восстановления состояний и time-travel диагностика;— промышленный
RAG: продвинутые методы извлечения данных из сложных источников.Подготовьтесь к обучению заранее — материалы для старта доступны сразу после покупки.
⏳ Специальные условия до 28 февраля:
— введите промокод
Agent для получения скидки 10 000 рублей**; — участвуйте в **акции «3 курса по цене 1» — выберите два дополнительных курса.
👉 Получить доступ к курсу и подаркам
😁2
🤠 Что такое std::is_within_lifetime из C++26?
В статье автор разбирает новинку C++26 —
❗️Ключевые моменты статьи:
•
• мотивация пришла из задачи реализации
• решение элегантно совмещает compile-time корректность и runtime эффективность
Фокус статьи — на дизайне фичи: почему указатель вместо ссылки, почему consteval-only и почему такое обобщённое имя.
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
В статье автор разбирает новинку C++26 —
std::is_within_lifetime — и объясняет, зачем она вообще появилась в стандарте.❗️Ключевые моменты статьи:
•
is_within_lifetime — не union-специфичная функция, а общий механизм запроса времени жизни объекта• мотивация пришла из задачи реализации
OptBool с минимальным расходом памяти• решение элегантно совмещает compile-time корректность и runtime эффективность
Фокус статьи — на дизайне фичи: почему указатель вместо ссылки, почему consteval-only и почему такое обобщённое имя.
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
🤩2❤1👍1😁1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет программа?
Anonymous Quiz
20%
0
16%
99
39%
jumped
10%
Ошибка компиляции
15%
Неопределённое поведение
👍1
Роберт Мартин в "Чистом коде" написал жёстко: комментарий — это признак неудачи. Если вам нужно объяснять код словами, значит, вы написали его недостаточно ясно.
В C++ эта идея получила новое дыхание с приходом
[[nodiscard]], концептов из C++20 и строгой типизации. Тип std::expected<Result, Error> уже сообщает о возможной ошибке без единого слова.Но у этой философии есть тёмная сторона. Когда через год вы видите
static constexpr int MAGIC = 0x5F3759DF — никакое именование не объяснит, что это константа из алгоритма быстрого обратного квадратного корня Quake III. Здесь нужен комментарий и, желательно, ссылка на статью.Самодокументирующийся код работает для структуры. Комментарии работают для контекста и истории.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5😁2
📌 Хранение float в std::map: правильный способ
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
std::map требует strict weak ordering. float нарушает его при наличии NaN. std::strong_order спасает.#include <compare>
#include <map>
#include <iostream>
struct FloatCompare {
bool operator()(double a, double b) const {
// strong_order — total order, строго соответствует требованиям map
return std::strong_order(a, b) == std::strong_ordering::less;
}
};
int main() {
std::map<double, std::string, FloatCompare> m;
m[1.0] = "one";
m[-0.0] = "negative zero";
m[+0.0] = "positive zero"; // отдельный ключ! (strong_order различает)
m[std::numeric_limits<double>::quiet_NaN()] = "nan";
m[std::numeric_limits<double>::infinity()] = "inf";
// Все 5 ключей уникальны и упорядочены детерминированно
std::cout << m.size(); // 5
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
👍11