Forwarded from Proglib.academy | IT-курсы
Математика в действии — как уравнения, придуманные века назад, сегодня управляют интернетом, медициной, космосом и вашими финансами.
— Как египтяне строили пирамиды с помощью математики
— Почему Wi-Fi и JPEG невозможны без преобразования Фурье
— Что объединяет кота Шредингера и квантовые компьютеры
— Как формула Гаусса управляет фондовыми рынками
— И при чём тут Джеймс Гарфилд и i² = –1
🔗 Читайте статью
Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произойдет, если не определить виртуальный деструктор в базовом классе?
👾 — Компилятор выдаст ошибку
👍 — Код скомпилируется, но будет предупреждение
🥰 — Возможно неопределённое поведение при удалении объектов через указатель на базовый класс
👻 — Деструктор базового класса не вызовется
Библиотека C/C++ разработчика
👾 — Компилятор выдаст ошибку
👍 — Код скомпилируется, но будет предупреждение
🥰 — Возможно неопределённое поведение при удалении объектов через указатель на базовый класс
👻 — Деструктор базового класса не вызовется
Библиотека C/C++ разработчика
Что происходит при использовании оператора decltype?
👾 — Возвращает инициализированный тип переменной
👍 — Выводит тип выражения во время компиляции
🥰 — Создает новый тип на основе существующего
👻 — Преобразует тип выражения
Библиотека C/C++ разработчика
👾 — Возвращает инициализированный тип переменной
👍 — Выводит тип выражения во время компиляции
🥰 — Создает новый тип на основе существующего
👻 — Преобразует тип выражения
Библиотека C/C++ разработчика
👻 Что такое предкомпилированные заголовки (PCH)?
Принцип работы:
PCH позволяют компилятору обработать заголовочные файлы один раз и сохранить промежуточное представление. При последующих компиляциях используется уже готовый результат вместо повторной обработки.
Необходимые изменения:
• Создание специального заголовочного файла со всеми часто используемыми включениями
• Настройка системы сборки для использования PCH
• Обновление PCH при изменении включенных в него заголовков
Совместимость:
• GCC: -include pch.h с флагом -x c++-header для создания
• Clang: аналогично GCC
• MSVC: директивы #pragma hdrstop и /Yu
Forwarded from IT Job Hub | Работа и вакансии в IT
Если вы следили за нашим мини-сериалом о валютной удаленке, то уже знаете:
И вот финальная часть — потому что оффер это только начало.
Что в статье:
Читать гайд по выживанию айтишника в валютных джунглях
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем разница между std::atomic::load() и std::atomic::exchange()?
👍 load() атомарно читает значение, exchange() атомарно заменяет и возвращает старое
🤔 load() блокирует потоки, exchange() не блокирует
👏 load() работает быстрее, exchange() безопаснее
🌚 load() не имеет побочных эффектов, exchange() изменяет все копии объекта
👍 load() атомарно читает значение, exchange() атомарно заменяет и возвращает старое
🤔 load() блокирует потоки, exchange() не блокирует
👏 load() работает быстрее, exchange() безопаснее
🌚 load() не имеет побочных эффектов, exchange() изменяет все копии объекта
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет код?
❤️ 1 4 8
🔥 1 4 4
🙏 Зависит от платформы
🌚 Ошибка компиляции
Библиотека C/C++ разработчика
❤️ 1 4 8
🔥 1 4 4
🙏 Зависит от платформы
🌚 Ошибка компиляции
Библиотека C/C++ разработчика
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💼⌛️ ТОП-5 причин, почему программист не может долго найти работу
Почему некоторые разработчики остаются "между работами" месяцы?
Не всегда дело в нехватке вакансий или «рынок просел». Часто дело в подходе к поиску проекта. Вроде бы есть опыт, стек, даже pet-проекты, но офферов всё нет.
Часто корень проблемы — неумение продать себя правильно. Отказ выполнять тестовые задания, считая их ненужными или обидными. Кроме того, нежелание рассматривать стажировки как стартовую площадку для получения опыта и расширения профессиональных связей также может замедлить процесс трудоустройства. И это далеко не все возможные причины.
🔗 Подробнее в статье
🐸 Библиотека джависта
Почему некоторые разработчики остаются "между работами" месяцы?
Не всегда дело в нехватке вакансий или «рынок просел». Часто дело в подходе к поиску проекта. Вроде бы есть опыт, стек, даже pet-проекты, но офферов всё нет.
Часто корень проблемы — неумение продать себя правильно. Отказ выполнять тестовые задания, считая их ненужными или обидными. Кроме того, нежелание рассматривать стажировки как стартовую площадку для получения опыта и расширения профессиональных связей также может замедлить процесс трудоустройства. И это далеко не все возможные причины.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произойдет при использовании memcpy для копирования объекта с виртуальными функциями?
❤️ Объект будет правильно скопирован
🔥 Виртуальная таблица не будет скопирована правильно
🙏 Компилятор выдаст ошибку
🌚 Это неопределенное поведение
Библиотека C/C++ разработчика
❤️ Объект будет правильно скопирован
🔥 Виртуальная таблица не будет скопирована правильно
🙏 Компилятор выдаст ошибку
🌚 Это неопределенное поведение
Библиотека C/C++ разработчика
📚 Загадочная библиотека setjmp.h — неочевидный инструмент для управления потоком выполнения
Библиотека setjmp.h предоставляет два необычных макроса:
• setjmp — сохраняет текущее состояние программы (регистры, стек) в буфер jmp_buf
• longjmp — «откатывает» выполнение к сохранённому состоянию, как прыжок во времени
⚠️ Осторожно!
• Не заменяет исключения — нет вызова деструкторов (как в C++)
• Опасность утечек — если между setjmp и longjmp выделялась память, она не освободится
• Портит стек — может сломать логику функций
🛠 Где может пригодиться?
• Обработка критических ошибок (а-ля «аварийный выход»)
• Код для встраиваемых систем, где нужно быстро восстановить состояние
• Нестандартные хаки (но лучше так не делать 😈)
Библиотека C/C++ разработчика
Библиотека setjmp.h предоставляет два необычных макроса:
• setjmp — сохраняет текущее состояние программы (регистры, стек) в буфер jmp_buf
• longjmp — «откатывает» выполнение к сохранённому состоянию, как прыжок во времени
#include <stdio.h>
#include <setjmp.h>
jmp_buf jump_buffer;
void risky_function() {
printf("Готовимся к прыжку...\n");
longjmp(jump_buffer, 42); // Прыжок обратно в setjmp!
}
int main() {
int ret = setjmp(jump_buffer);
if (ret == 0) {
printf("Первая инициализация...\n");
risky_function();
} else {
printf("Вернулись с кодом: %d\n", ret); // Выведет 42!
}
return 0;
}
⚠️ Осторожно!
• Не заменяет исключения — нет вызова деструкторов (как в C++)
• Опасность утечек — если между setjmp и longjmp выделялась память, она не освободится
• Портит стек — может сломать логику функций
🛠 Где может пригодиться?
• Обработка критических ошибок (а-ля «аварийный выход»)
• Код для встраиваемых систем, где нужно быстро восстановить состояние
• Нестандартные хаки (но лучше так не делать 😈)
Библиотека C/C++ разработчика
Что означает выражение alignof(T)?
❤️ Размер типа T в байтах
🔥 Требуемое выравнивание для типа T
🙏 Смещение типа T в структуре
🌚 Количество байт, которое нужно добавить для выравнивания T
Ответ: 🔥 — возвращает требуемое выравнивание для типа T в байтах.
❤️ Размер типа T в байтах
🔥 Требуемое выравнивание для типа T
🙏 Смещение типа T в структуре
🌚 Количество байт, которое нужно добавить для выравнивания T
alignof(T)