Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🔮 Что такое обрезка объектов?
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
class Base {
int base_var;
};
class Derived: public Base {
int der_var;
};
int main () {
Base base;
Derived der = base;
}
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
🍔 В чём разница между std::endl и '\n'?
❗ Единственное существенное различие между std::endl и '\n' в том, что std::endl очищает буфер вывода и результат сразу выводится, а '\n' — это просто символ и сайдэффектов не имеет
❗ Если программа требовательная к ресурсам, то стоит пользоваться '\n' и изредка вызывать std::flush для очистки буфера
❗ Единственное существенное различие между std::endl и '\n' в том, что std::endl очищает буфер вывода и результат сразу выводится, а '\n' — это просто символ и сайдэффектов не имеет
❗ Если программа требовательная к ресурсам, то стоит пользоваться '\n' и изредка вызывать std::flush для очистки буфера
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🌳 Библеотека FTXUI
FTXUI — простая кроссплатформенная библиотека C++ для реализации пользовательских интерфейсов на основе терминала
🍒 Особенности
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
👉 Ссылочка
FTXUI — простая кроссплатформенная библиотека C++ для реализации пользовательских интерфейсов на основе терминала
🍒 Особенности
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
👉 Ссылочка
🍔 Дополнительный код
Дополнительный код (или two's complement) — это умный способ хранения целых чисел, позволяющий очень легко реализовать распространенные математические задачи. В основном используется потому что легко представлять отрицательные числа
🥝 Основные принципы
- для нуля используем 0
- для положительных целых чисел используем значения от 1 и до 2 в степени (количество битов-1) минус 1
- для отрицательных чисел инвертируем бинарное представление и добавляем единицу — это и есть дополнительный код
🍎 Примеры (бинарное представление = значение)
• 0000 = 0
• 0001 = 1
• 0010 = 2
• 1111 = -1
• 1110 = -2
• 1101 = -3
Дополнительный код (или two's complement) — это умный способ хранения целых чисел, позволяющий очень легко реализовать распространенные математические задачи. В основном используется потому что легко представлять отрицательные числа
🥝 Основные принципы
- для нуля используем 0
- для положительных целых чисел используем значения от 1 и до 2 в степени (количество битов-1) минус 1
- для отрицательных чисел инвертируем бинарное представление и добавляем единицу — это и есть дополнительный код
🍎 Примеры (бинарное представление = значение)
• 0000 = 0
• 0001 = 1
• 0010 = 2
• 1111 = -1
• 1110 = -2
• 1101 = -3
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🌳 Как объявить интерфейс в C ++?
В C++ интерфейсом можно считать класс с чисто виртуальными методами
Чисто виртуальный метод - это метод класса, который определяется как виртуальный и которому присваивается значение 0
В C++ интерфейсом можно считать класс с чисто виртуальными методами
Чисто виртуальный метод - это метод класса, который определяется как виртуальный и которому присваивается значение 0
class ITest
{
public:
virtual ~ITest() {}
virtual void Method() = 0;
};
class MainTest : public ITest
{
public:
virtual void Method() override
{
}
};
🧨 Как установить, очистить и переключить один бит?
❗️Установка бита
- Используется побитовый оператор OR (|), чтобы установить n-й бит number в 1 значение
- Стоит помнить, что сдвиг больше, чем на ширину типа, является неопределенным поведением
❗️Очистка бита
- Используется побитовый оператор AND (&) , чтобы установить n-й бит number в 0 значение
- Вы должны инвертировать битовую строку с помощью побитового оператора NOT (~) , затем оператор &
❗️Переключение бита
- Используйте побитовый оператор XOR (^) для переключения n-го бита number
❗️Проверка бита
- Чтобы проверить бит, сдвиньте number вправо на n бит , затем воспользуйтесь &
❗️Установка бита
- Используется побитовый оператор OR (|), чтобы установить n-й бит number в 1 значение
- Стоит помнить, что сдвиг больше, чем на ширину типа, является неопределенным поведением
typedef unsigned long ulong;
ulong bit_set(ulong number, ulong n) {
return number | ((ulong)1 << n);
}
❗️Очистка бита
- Используется побитовый оператор AND (&) , чтобы установить n-й бит number в 0 значение
- Вы должны инвертировать битовую строку с помощью побитового оператора NOT (~) , затем оператор &
ulong bit_clear(ulong number, ulong n) {
return number & ~((ulong)1 << n);
}
❗️Переключение бита
- Используйте побитовый оператор XOR (^) для переключения n-го бита number
ulong bit_toggle(ulong number, ulong n) {
return number ^ ((ulong)1 << n);
}
❗️Проверка бита
- Чтобы проверить бит, сдвиньте number вправо на n бит , затем воспользуйтесь &
bool bit_check(ulong number, ulong n) {
return (number >> n)& (ulong)1;
}
🍔 Библиотека алгоритмов вычислительной геометрии CGAL
CGAL — это программный проект с открытым исходным кодом, который обеспечивает легкий доступ к эффективным и надежным геометрическим алгоритмам в форме библиотеки C ++. CGAL используется в различных областях, требующих геометрических вычислений, таких как географические информационные системы, автоматизированное проектирование, молекулярная биология, медицинская визуализация, компьютерная графика и робототехника
👉 Сайт
👉 Github
CGAL — это программный проект с открытым исходным кодом, который обеспечивает легкий доступ к эффективным и надежным геометрическим алгоритмам в форме библиотеки C ++. CGAL используется в различных областях, требующих геометрических вычислений, таких как географические информационные системы, автоматизированное проектирование, молекулярная биология, медицинская визуализация, компьютерная графика и робототехника
👉 Сайт
👉 Github
🌟 Выведение размера массива
Для std::array размер в общем случае задаётся вручную
Начиная с C++17 можно оставить вывод размера компилятору
Но если необходимо использовать шаблоны, то можно воспользоваться шаблонной магией
Для std::array размер в общем случае задаётся вручную
std::array<int, 2> test{ 2,3 };
Начиная с C++17 можно оставить вывод размера компилятору
std::array test{ 2,3 };
Но если необходимо использовать шаблоны, то можно воспользоваться шаблонной магией
template<typename T, size_t N>
int size(const std::array<T, N>& types)
{
return N;
}
❓В каких случаях применяется инициализация нулями?
- Статические переменные (static), глобальные и thread_local
- Если мы инициализируем default значениями примитивных типов
- Для явно не инициализированных Си-массивов
- Статические переменные (static), глобальные и thread_local
thread_local int a; // thread_local
int b; // global
struct Test {
static int test; // static
};
int Test::test;
- Если мы инициализируем default значениями примитивных типов
void dunc(int t){}
f(int());
- Для явно не инициализированных Си-массивов
char a[5] = "123"; // a[3] = a[4] = 0
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🅾️ Что такое «О» большое: объясняем на простых примерах
«О» большое (Big O notation) — это математическая нотация, которая позволяет оценить, как изменяется время выполнения алгоритма или объём используемой памяти в зависимости от размера входных данных.
Мы написали подробный гайд по видам сложности, проиллюстрировав их понятными примерами.
🔗 Читать статью
🔗 Зеркало
«О» большое (Big O notation) — это математическая нотация, которая позволяет оценить, как изменяется время выполнения алгоритма или объём используемой памяти в зависимости от размера входных данных.
Мы написали подробный гайд по видам сложности, проиллюстрировав их понятными примерами.
🔗 Читать статью
🔗 Зеркало
❓ Как получить размер файла в байтах?
В C++17 была добавлена библиотека filesystem, которая упрощает работу с файловой системой
❗️Стоит учитывать, что если файл был открыт не только вами, то размер может быть изменён извне
В C++17 была добавлена библиотека filesystem, которая упрощает работу с файловой системой
#include <filesystem>
int main()
{
std::uintmax_t size = std::filesystem::file_size("file.txt");
}
❗️Стоит учитывать, что если файл был открыт не только вами, то размер может быть изменён извне
🌳 Разница между кучей и стеком
• Стек непрерывен, но куча не обязательно непрерывна
• Существуют разные способы применения.Стек автоматически выделяется операционной системой, а кучей приходится управлять вручную
• Стек растет от большего адреса к меньшему, куча растет от меньшего адреса к большему
• Временем жизни стека управляет система и в большинстве случаев доступ к нему более быстрый. Куча же может распределяться неравномерно по памяти и подвержена внутренней фрагментации
• Стек непрерывен, но куча не обязательно непрерывна
• Существуют разные способы применения.Стек автоматически выделяется операционной системой, а кучей приходится управлять вручную
• Стек растет от большего адреса к меньшему, куча растет от меньшего адреса к большему
• Временем жизни стека управляет система и в большинстве случаев доступ к нему более быстрый. Куча же может распределяться неравномерно по памяти и подвержена внутренней фрагментации
🔮 В чем разница между статическим выделением памяти и динамическим выделением памяти?
- Статическое выделение памяти выполняется во время компиляции и не потребляет ресурсов ЦП; динамическое выделение памяти выполняется во время выполнения, а для выделения и освобождения требуются ресурсы ЦП
- Динамическое выделение памяти может привести к утечке памяти
- Для выделения статической памяти не требуется поддержка указателей. Для динамического выделения памяти требуется
- Статическое выделение памяти выполняется по плану, и размер блока памяти определяется перед компиляцией. Динамическое выделение памяти выполняется по мере необходимости
- Статическое выделение памяти дает контроль над памятью компилятору. Динамическое выделение памяти дает контроль над памятью программисту
- Статическое выделение памяти выполняется во время компиляции и не потребляет ресурсов ЦП; динамическое выделение памяти выполняется во время выполнения, а для выделения и освобождения требуются ресурсы ЦП
- Динамическое выделение памяти может привести к утечке памяти
- Для выделения статической памяти не требуется поддержка указателей. Для динамического выделения памяти требуется
- Статическое выделение памяти выполняется по плану, и размер блока памяти определяется перед компиляцией. Динамическое выделение памяти выполняется по мере необходимости
- Статическое выделение памяти дает контроль над памятью компилятору. Динамическое выделение памяти дает контроль над памятью программисту
⭐🎤 Как не облажаться с докладом на IT-конференции
Готовитесь к докладу на IT-конференции? Не хотите оказаться в роли «того самого» докладчика, на которого все жалуются в кулуарах? Узнайте, как не облажаться и сделать свой доклад полезным и запоминающимся.
🔗 Читать статью
🔗 Зеркало
Готовитесь к докладу на IT-конференции? Не хотите оказаться в роли «того самого» докладчика, на которого все жалуются в кулуарах? Узнайте, как не облажаться и сделать свой доклад полезным и запоминающимся.
🔗 Читать статью
🔗 Зеркало
🌳 Разговор о производительности
Монолог и немного дискуссии с аудиторией о производительности, проблемах разработчиков, и вообще жизни🙂
Краткое содержание
• Обсуждение производительности кода
• Опыт оптимизации производительности
• Влияние компилятора и линковщика на производительность
• Поиск узких мест в коде
• Практические советы
• Обсуждение оптимизации кода
• Анекдоты и рефлексы программистов
• Обсуждение проблем с синтаксисом и управлением памятью
• Примеры из практики
👉 Ссылка
Монолог и немного дискуссии с аудиторией о производительности, проблемах разработчиков, и вообще жизни🙂
Краткое содержание
• Обсуждение производительности кода
• Опыт оптимизации производительности
• Влияние компилятора и линковщика на производительность
• Поиск узких мест в коде
• Практические советы
• Обсуждение оптимизации кода
• Анекдоты и рефлексы программистов
• Обсуждение проблем с синтаксисом и управлением памятью
• Примеры из практики
👉 Ссылка