Про какой учебный проект вы рассказывали/показывали его на первом собеседовании?
#интерактив
#интерактив
move constructor
Move-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных. Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.
Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.
Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
#код
Move-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных. Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.
Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.
Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
#код
Как работает оператор new в C++ и почему используется именно этот оператор для выделения динамической памяти?
Оператор new используется в C++ для выделения динамической памяти (heap memory), которая выделяется во время выполнения программы. При его вызове, сначала выделяется необходимое количество памяти из операционной системы, а затем возвращается указатель на эту область памяти.
При исполнении оператора new происходит следующее:
1. Сначала он выделяет память в размере, указанном в аргументе оператора или размере типа данных, на который указывает указатель.
2. Затем он вызывает конструктор для создания объекта в выделенной области памяти.
3. Возвращает указатель на выделенную память.
В данном примере оператор new выделяет память под объект класса MyClass и вызывает его конструктор. Оператор delete используется для освобождения ранее выделенной памяти.
#вопросы_с_собеседований
Оператор new используется в C++ для выделения динамической памяти (heap memory), которая выделяется во время выполнения программы. При его вызове, сначала выделяется необходимое количество памяти из операционной системы, а затем возвращается указатель на эту область памяти.
При исполнении оператора new происходит следующее:
1. Сначала он выделяет память в размере, указанном в аргументе оператора или размере типа данных, на который указывает указатель.
2. Затем он вызывает конструктор для создания объекта в выделенной области памяти.
3. Возвращает указатель на выделенную память.
В данном примере оператор new выделяет память под объект класса MyClass и вызывает его конструктор. Оператор delete используется для освобождения ранее выделенной памяти.
#вопросы_с_собеседований
Что выведет код?
Anonymous Quiz
11%
(42, 1337)
15%
42, 1337
26%
42
5%
1337
31%
Compiler Error
13%
Поведение не определено
Передача адреса переменной в функцию в Си
По умолчанию параметры передаются по значению, то есть копируются. В десятиминутном видео разобраны основы этой логики.
Смотреть видео
По умолчанию параметры передаются по значению, то есть копируются. В десятиминутном видео разобраны основы этой логики.
Смотреть видео
Представьте, что вы за час можете научиться чему угодно — что бы это было?
#интерактив
#интерактив
std::tie
std::tie — это функция, которая создает кортеж ссылок на lvalue из своих аргументов или экземпляров std::ignore.
Она может использоваться для распаковки кортежей или пары значений в отдельные переменные. Например, если у вас есть функция, которая возвращает std::pair или std::tuple, вы можете использовать std::tie, чтобы присвоить значения этого кортежа отдельным переменным.
В этом примере мы используем std::tie для распаковки результата вызова set_of_s.insert(value) в две переменные: итератор iter и логическую переменную inserted.
Это позволяет нам проверить, было ли значение успешно вставлено в набор.
#код
std::tie — это функция, которая создает кортеж ссылок на lvalue из своих аргументов или экземпляров std::ignore.
Она может использоваться для распаковки кортежей или пары значений в отдельные переменные. Например, если у вас есть функция, которая возвращает std::pair или std::tuple, вы можете использовать std::tie, чтобы присвоить значения этого кортежа отдельным переменным.
В этом примере мы используем std::tie для распаковки результата вызова set_of_s.insert(value) в две переменные: итератор iter и логическую переменную inserted.
Это позволяет нам проверить, было ли значение успешно вставлено в набор.
#код
❗«Библиотека программиста» в поиске контент-менеджера для ведения телеграм-каналов
Ищем человека, который грамотно пишет, разбирается в контенте и в одной из этих трех тем:
👉Data Science
👉Frontend
👉мобильная разработка
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Подробнее о вакансии и форма для отклика — по ссылке.
Ждем вас в команде!
Ищем человека, который грамотно пишет, разбирается в контенте и в одной из этих трех тем:
👉Data Science
👉Frontend
👉мобильная разработка
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Подробнее о вакансии и форма для отклика — по ссылке.
Ждем вас в команде!
В чем разница между git fetch и git pull?
Разница между этими командами заключается в том, что когда вы используете команду git fetch, Git извлекает последние изменения из удаленного репозитория в ваш локальный репозиторий, но оставляет эти изменения в отдельной ветке git origin.
А команда git pull извлекает и интегрирует (скачивает и сливает) последние изменения из удаленного репозитория в вашу текущую ветку работы.
Разница между этими командами заключается в том, что когда вы используете команду git fetch, Git извлекает последние изменения из удаленного репозитория в ваш локальный репозиторий, но оставляет эти изменения в отдельной ветке git origin.
А команда git pull извлекает и интегрирует (скачивает и сливает) последние изменения из удаленного репозитория в вашу текущую ветку работы.
execution policy для параллельных алгоритмов
Execution policy в C++ — это новшество, введенное в стандарте языка C++17. Это механизм, который позволяет выбрать, как именно должны выполняться алгоритмы в стандартной библиотеке: последовательно или параллельно.
Существуют три варианта execution policy:
— seq: выполняет алгоритм последовательно.
— par: выполняет алгоритм параллельно, используя все доступные ядра процессора.
— par_unseq: выполняет алгоритм параллельно и может использовать неупорядоченное исполнение.
Execution policy может быть использован в комбинации с многими алгоритмами в стандартной библиотеке, такими как std::for_each, std::transform, std::reduce и другими. Например, код выше выполняет алгоритм std::for_each параллельно.
Execution policy в C++ — это новшество, введенное в стандарте языка C++17. Это механизм, который позволяет выбрать, как именно должны выполняться алгоритмы в стандартной библиотеке: последовательно или параллельно.
Существуют три варианта execution policy:
— seq: выполняет алгоритм последовательно.
— par: выполняет алгоритм параллельно, используя все доступные ядра процессора.
— par_unseq: выполняет алгоритм параллельно и может использовать неупорядоченное исполнение.
Execution policy может быть использован в комбинации с многими алгоритмами в стандартной библиотеке, такими как std::for_each, std::transform, std::reduce и другими. Например, код выше выполняет алгоритм std::for_each параллельно.
Задача
Найти среднее арифметическое в трех рядах.
Для начала продумаем наше решение. Сразу условимся, что длина ряда у нас будет 5. Нам надо найти среднее арифметическое в трех рядах, и в каждом по отдельности, т.е. мы сначала сделаем цикл для рядов, а потом в этом цикле сделаем еще один цикл, только уже для чисел этого ряда.
Теперь подумаем, какие переменные нам понадобятся:
Переменная summa — для суммы чисел каждого ряда;
Переменная average — для среднего арифметического каждого ряда;
Переменная number — обычное число которое мы будем постоянно прибавлять;
Переменные i и j — для циклов, перпенные у нас будут локальные, т.е. использоваться и объявляться в цикле.
#вопросы_с_собеседований
Найти среднее арифметическое в трех рядах.
Для начала продумаем наше решение. Сразу условимся, что длина ряда у нас будет 5. Нам надо найти среднее арифметическое в трех рядах, и в каждом по отдельности, т.е. мы сначала сделаем цикл для рядов, а потом в этом цикле сделаем еще один цикл, только уже для чисел этого ряда.
Теперь подумаем, какие переменные нам понадобятся:
Переменная summa — для суммы чисел каждого ряда;
Переменная average — для среднего арифметического каждого ряда;
Переменная number — обычное число которое мы будем постоянно прибавлять;
Переменные i и j — для циклов, перпенные у нас будут локальные, т.е. использоваться и объявляться в цикле.
#вопросы_с_собеседований
Внутри STL: строка
Вы можете подумать, что std::string (и все его друзья в семействе std::basic_string) внутри в основном представляют собой вектор символов. Но строки организованы по-другому из-за определенных оптимизаций, разрешенных для строк, но не для векторов.
Читать статью
Вы можете подумать, что std::string (и все его друзья в семействе std::basic_string) внутри в основном представляют собой вектор символов. Но строки организованы по-другому из-за определенных оптимизаций, разрешенных для строк, но не для векторов.
Читать статью
«Библиотека программиста» запустила два новых канала для C++ разработчиков и тех, кто хочет ими стать👨🏫
В них мы:
🔸тренируемся на практических задачах
🔸отвечаем на популярные вопросы с собеседований
🔸проверяем свои знания
Подписывайтесь:
👉Библиотека собеса по C++ — тут мы готовимся к интервью
👉Библиотека задач по C++ — тут решаем задачи, проходим тесты и изучаем код
В них мы:
🔸тренируемся на практических задачах
🔸отвечаем на популярные вопросы с собеседований
🔸проверяем свои знания
Подписывайтесь:
👉Библиотека собеса по C++ — тут мы готовимся к интервью
👉Библиотека задач по C++ — тут решаем задачи, проходим тесты и изучаем код
Dependency Injection
Dependency Injection (DI) — это паттерн проектирования, который позволяет управлять зависимостями между объектами. Он помогает разделить создание объектов от их использования и обеспечить более гибкую и тестируемую архитектуру программы.
В DI объекты получают свои зависимости не напрямую, а через внешний источник, который их предоставляет. Этот источник называется контейнером внедрения зависимостей. Контейнер отвечает за создание и управление зависимостями, а объекты получают их через конструкторы, методы или свойства.
#код
Dependency Injection (DI) — это паттерн проектирования, который позволяет управлять зависимостями между объектами. Он помогает разделить создание объектов от их использования и обеспечить более гибкую и тестируемую архитектуру программы.
В DI объекты получают свои зависимости не напрямую, а через внешний источник, который их предоставляет. Этот источник называется контейнером внедрения зависимостей. Контейнер отвечает за создание и управление зависимостями, а объекты получают их через конструкторы, методы или свойства.
#код
Очередной #дайджест по С++:
✍️ Визуализируйте расширение макроса для C++
Эта функция дает значительные преимущества, позволяя вам понимать и анализировать сложные многоуровневые расширения макросов шаг за шагом.
✍️ soagen: генератор и библиотека структуры массивов
Обзор soagen — новый генератор структуры массивов и библиотека для C++17 и более поздних версий.
✍️ Измерение производительности подсистемы памяти
Обширный материал об оптимизации.
✍️ Юникод сложнее, чем вы думаете
Unicode — это тема, которую многие разработчики часто упускают из виду. Существует много путаницы и неправильных ожиданий относительно того, что такое Unicode, и какие рекомендации следует соблюдать при работе со строками, которые могут содержать символы за пределами диапазона ASCII.
✍️ Визуализируйте расширение макроса для C++
Эта функция дает значительные преимущества, позволяя вам понимать и анализировать сложные многоуровневые расширения макросов шаг за шагом.
✍️ soagen: генератор и библиотека структуры массивов
Обзор soagen — новый генератор структуры массивов и библиотека для C++17 и более поздних версий.
✍️ Измерение производительности подсистемы памяти
Обширный материал об оптимизации.
✍️ Юникод сложнее, чем вы думаете
Unicode — это тема, которую многие разработчики часто упускают из виду. Существует много путаницы и неправильных ожиданий относительно того, что такое Unicode, и какие рекомендации следует соблюдать при работе со строками, которые могут содержать символы за пределами диапазона ASCII.
Какой сертификат вы бы посоветовали получить?
#интерактив
#интерактив
Использование Boost
Если ваш проект открыт для поддержки библиотеки, рассмотрите возможность использования boost::algorithm::join алгоритм. Он объединяет все элементы в указанном списке в строку, где сегменты объединяются заданным разделителем.
Другие способы преобразования вектора в строку можно найти здесь.
Если ваш проект открыт для поддержки библиотеки, рассмотрите возможность использования boost::algorithm::join алгоритм. Он объединяет все элементы в указанном списке в строку, где сегменты объединяются заданным разделителем.
Другие способы преобразования вектора в строку можно найти здесь.
Весь август бесплатный IT-интенсив про алгоритмы и структуры данных
👀 Ведущие эксперты из крупных IT-компаний поделятся опытом успешного прохождения собеседований на позицию разработчика. А также расскажут простым языком о NP-трудных задачах и графах.
Регистрируйтесь по ссылке
😎На вебинарах вас ждет много практики и интерактива!
Программа интенсива:
🗓️ 14 августа, «NP-трудные задачи: почему их плохо решают».
🎙️Спикер: Дмитрий Коротенко, ML specialist at Yandex, Ex BusDev at Alfa Bank.
🗓️ 22 августа, «Графы: алгоритмы и структуры данных на Python».
🎙️Спикер: Иван Потапов, Staff machine learning engineer at Sharechat.
🗓️ 29 августа, «Собеседование на разработчика: разбор задач и ошибок».
🎙️Спикер: Алексей Бочкарев, Engineering Manager at Meta*
Зарегистрироваться и ознакомится с подробной программой можно по ссылке: https://proglib.io/w/62ce6c0e
До встречи на вебинарах!!
*Компания Meta признана в РФ экстремистской и запрещена
👀 Ведущие эксперты из крупных IT-компаний поделятся опытом успешного прохождения собеседований на позицию разработчика. А также расскажут простым языком о NP-трудных задачах и графах.
Регистрируйтесь по ссылке
😎На вебинарах вас ждет много практики и интерактива!
Программа интенсива:
🗓️ 14 августа, «NP-трудные задачи: почему их плохо решают».
🎙️Спикер: Дмитрий Коротенко, ML specialist at Yandex, Ex BusDev at Alfa Bank.
🗓️ 22 августа, «Графы: алгоритмы и структуры данных на Python».
🎙️Спикер: Иван Потапов, Staff machine learning engineer at Sharechat.
🗓️ 29 августа, «Собеседование на разработчика: разбор задач и ошибок».
🎙️Спикер: Алексей Бочкарев, Engineering Manager at Meta*
Зарегистрироваться и ознакомится с подробной программой можно по ссылке: https://proglib.io/w/62ce6c0e
До встречи на вебинарах!!
*Компания Meta признана в РФ экстремистской и запрещена