Latest posts

Senior C++ Developer
22 Sept, 14:44
Что общего у Алисы, автономного грузовика и поиска лекарств?Все эти системы требуют сложного бэкенда.На конференции «Я про бэкенд» 3 октября инженеры расскажут: — как держать тысячи RPS на генеративных ответах Алисы; — как обрабатывать 100+ ГБ/с в реальном времени с помощью YTsaurus Flow; — как сделать агентную платформу надёжной; — как работать с векторным поиском; — как переживать отказы дата-центров; — как обрабатывать до 1200 ГБ данных в час от автономного транспорта.А свою backend-задачу, связанную с архитектурой поисковых систем, можно предложить уже сейчас — самую сложную из них выберут и решат в прямом эфире на конференции.3 октября · Москва + онлайн · бесплатноРегистрация


Senior C++ Developer
22 Sept, 14:43
#вопросы_с_собеседований Можно ли выбрасывать exception из конструктора? Какие поля будут сконструированы, какие поля будут разрушены?в C++ выбрасывать исключения из конструктора можно. Это обычно делается, когда в процессе инициализации объекта происходит ошибка, и объект не может быть корректно сконструирован.Если исключение выбрасывается из конструктора, то все поля, которые были успешно сконструированы до момента выброса исключения, будут корректно разрушены. Это гарантируется механизмом исключений в C++.Важно помнить, что только те поля, которые были успешно сконструированы, будут разрушены. Если исключение выбрасывается в процессе конструирования поля, то это поле не будет разрушено, так как его конструктор не был успешно завершен.
Senior C++ Developer
22 Sept, 10:32
Не отставайте от рынка — учитесь со скидкой 16%Если чувствуете, что стоите на месте, и хотите освоить востребованную профессию, — сейчас хороший момент начать.Потому что до 30 сентября на все курсы Практикума действует скидка 16%.Выбрать курсВы сможете:— получить актуальные навыки; — освоить ИИ-инструменты для работы; — перенять опыт экспертов, которые двигают индустрию; — попасть в сообщество выпускников, где можно попросить совета и, возможно, найти будущих коллег.Просто выберите курс, начните учиться бесплатно и получите скидку 16% — она автоматически появится в личном кабинете.Учиться!Erid: 2SDnjdsaJNX


Senior C++ Developer
21 Sept, 20:58
Глубокое копированиеТермин глубокое копирование подразумевает создание нового объекта и копирование всех значений полей исходного объекта в новый объект. Если поле является указателем, то вместо копирования самого указателя создается новый объект, на который указывает исходный указатель, и новый указатель на этот новый объект сохраняется в новом объекте.Это отличается от поверхностного копирования, при котором копируются только значения полей, включая указатели, но не объекты, на которые они указывают.В этом примере у нас есть класс Deep, который содержит указатель data. В копирующем конструкторе мы создаем новый объект Deep, копируя значение, на которое указывает data в исходном объекте, а не сам указатель. В функции main мы создаем объект obj1 и затем создаем obj2, используя копирующий конструктор. Затем мы меняем значение, на которое указывает data в obj2, и это не влияет на


Senior C++ Developer
20 Sept, 20:57
Pure virtual functionPure virtual function (чисто виртуальная функция) — это виртуальная функция, для которой мы можем иметь реализацию, но мы должны переопределить эту функцию в производном классе, иначе производный класс также станет абстрактным классом. Чисто виртуальная функция объявляется путем присваивания в объявлении.В этом примере у нас есть абстрактный базовый класс Shape, который содержит чисто виртуальную функцию draw(). Мы не можем создать объект класса Shape, так как он является абстрактным классом. Затем мы создаем два производных класса Circle и Rectangle, которые переопределяют функцию draw(). В функции main() мы создаем объекты circle и rectangle, а также указатель на базовый класс Shape. Мы устанавливаем указатель на объекты circle и rectangle и вызываем функцию draw() для каждого из них.


Senior C++ Developer
19 Sept, 19:07
Ленивые вычисления в С++lazy evaluation — это стратегия вычислений, при которой вычисления откладываются до тех пор, пока результат не станет действительно необходимым. Это позволяет оптимизировать производительность и ресурсоемкость программы, избегая ненужных вычислений.Ленивые вычисления могут быть реализованы с использованием различных подходов, таких как отложенное вычисление (deferred evaluation), вычисление по требованию (on-demand evaluation) и мемоизация (memoization).В этом примере вычисления выполняются только при первом обращении к числу Фибоначчи с определенным индексом, после чего результат сохраняется в контейнере memo для последующего использования. Это позволяет избежать повторных вычислений и оптимизировать производительность программы.


Senior C++ Developer
18 Sept, 20:29
#вопросы_с_собеседований Как работает RTTI?RTTI расшифровывается как "Run-Time Type Information" и является функцией в C++, которая предоставляет информацию о типе объекта во время выполнения. Она позволяет вам динамически запрашивать и манипулировать информацией о типе объекта.В C++ информация о типе объектов обычно представлена механизмом, называемым классом type_info. Класс type_info является частью стандартной библиотеки C++ и определяется в заголовке <typeinfo>.Чтобы использовать RTTI в C++, необходимо включить функцию RTTI, указав флаг компилятора -frtti или включив его в настройках проекта.RTTI особенно полезен, когда у вас есть указатель на базовый класс или ссылка на объект производного класса. RTTI обеспечивает безопасную передачу указателя базового класса в производный класс и выполнение определенных операций. Для этого используется оператор dynamic_cast, который
Senior C++ Developer
17 Sept, 20:43
Алгоритм partial_sortИспользуется для сортировки не всего диапазона, а только его части.Он переставляет элементы в диапазоне [first, last) таким образом, что элементы до середины сортируются в порядке возрастания, тогда как элементы после середины остаются без какого-либо определенного порядка.


Senior C++ Developer
15 Sept, 20:57
std::reference_wrapperstd::reference_wrapper — это класс в C++, предоставляемый стандартной библиотекой, который оборачивает ссылку на объект. Этот класс полезен, когда вам нужно передать или хранить ссылку на объект, но вы хотите избежать неявного копирования объекта.Основное назначение std::reference_wrapper заключается в том, чтобы позволить передавать ссылки как аргументы функций, которые обычно ожидают копии объектов. Это особенно полезно, например, при использовании алгоритмов из стандартной библиотеки, которые могут копировать элементы контейнера, если не явно указано иначе.#для_начинающих
1,130Open in Telegram
Senior C++ Developer
14 Sept, 20:55
#вопросы_с_собеседований Что будет выведено и почему?Ответ: 4294967271, предполагая 32-битные целые числа.Почему так происходит?Существует иерархия: long double, double, float, unsigned long int, long int, unsigned int, int. И когда два операнда определены как 25u (unsigned int) и 50 (int), 50 также будет интерпретироваться как беззнаковое целое число, то есть 50u.Кроме того, результат операции также будет иметь тип операндов. Следовательно, результат 25u - 50u и сам является беззнаковым целым числом. Таким образом, результат -25 преобразуется в 4294967271.
1,110Open in Telegram
Senior C++ Developer
13 Sept, 20:58
Алгоритм reverse_copyАлгоритм копирует элементы из заданного диапазона, но в обратном порядке.Принимает три параметра. Первые два параметра — это диапазон копируемых элементов, а третий параметр — начальная точка, из которой элементы копируются в обратном порядке.


Senior C++ Developer
12 Sept, 20:36
Генерация случайных числе в C++Чтобы сгенерировать случайное число используется функция rand(), которая размещается в библиотечном файле stdlib.h.Функция возвращает случайное целочисленное значение, которое лежит в пределах от 0 до 32767.
1,030Open in Telegram
Senior C++ Developer
11 Sept, 21:01
move constructorMove-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных. Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
1,020Open in Telegram
Senior C++ Developer
11 Sept, 15:51
Запрограммируй робота на C++ и поборись за призовой фонд трека 7 500 000 руб на True Tech Champ 2026.Попробуй себя в треке по программированию роботов. Начать проще, чем кажется: зарегистрируйся, собери команду или объединись с другими участниками на платформе и пройди квалификационный этап до 13 сентября. В онлайн-симуляторе тебе предстоит запрограммировать робособаку для доставки груза через полосу препятствий. Количество попыток не ограничено, а еще тебя будет ждать серия обучающих вебинаров.Лучшие команды пройдут в финал и будут программировать реальных роботов на офлайн-полигоне 22 октября на большой сцене. Масштабный финал объединит борьбу за призовой фонд, выступления хедлайнеров, доклады спикеров и активности для всех гостей мероприятия.Рекомендуемые стеки: Go, Java, Python, C#, C++, JS.Успей зарегистрироваться и пройти квалификацию до 13 сентября.Erid: 2VSb5z8QrR8
Senior C++ Developer
10 Sept, 20:38
VisitorVisitor является поведенческим паттерном проектирования, который позволяет добавлять новые операции к классам объектов, не изменяя их структуру. Он достигается путем выделения операций в отдельный класс-посетитель, который посещает объекты классов и выполняет необходимые операции.Основная идея паттерна Visitor заключается в том, чтобы объекты классов принимали "посетителя" и передавали себя в качестве аргумента методам "посетителя", соответствующим своему классу. "Посетитель", в свою очередь, реализует различные методы для обработки разных типов объектов.
1,040Open in Telegram
Senior C++ Developer
9 Sept, 20:53
std::setПредставляет собой контейнер, который содержит уникальные элементы, расположенные в отсортированном порядке. Он реализован в виде сбалансированного дерева (обычно красно-черного дерева), что обеспечивает высокую эффективность операций вставки, удаления и поиска элементов.Некоторые особенности std::set:- Уникальность элементов: Каждый элемент в std::set является уникальным, в контейнере не может быть несколько одинаковых элементов.- Сортировка элементов: std::set автоматически сортирует элементы по их значениям при вставке, это позволяет эффективно выполнять операции поиска.- Динамическое изменение: std::set позволяет добавлять и удалять элементы из контейнера в любое время.
1,120Open in Telegram
Senior C++ Developer
7 Sept, 20:48
std::mapПредставляет собой ассоциативный контейнер, который содержит пары ключ-значение, где каждый ключ уникален.Особенности std::map в сравнении с std::set:- std::map является контейнером, который хранит пары ключ-значение, где каждый ключ уникален, в отличие от std::set, который хранит уникальные значения без дополнительных значений. - В std::map операции вставки, удаления, поиска элементов, а также автоматической сортировки, осуществляются по ключу, а в std::set это происходит по самому значению. - В std::map вы можете обновлять значения элементов, используя их ключи. В std::set невозможно обновить значение элемента, поскольку значениями являются сами элементы.
1,350Open in Telegram
Senior C++ Developer
6 Sept, 19:08
PipesВ C++ пайпы (pipes) представляют собой механизм для односторонней связи между процессами. Они позволяют передавать данные из одного процесса в другой, где один процесс выступает в роли писателя (write end), а другой процесс выступает в роли читателя (read end) пайпа.Для работы с пайпами вы можете использовать системные вызовы, такие как pipe, fork и функции чтения/записи (read и write), доступные в POSIX-совместимых операционных системах.Обратите внимание, что дескрипторы чтения и записи пайпа должны быть закрыты в соответствующих процессах с помощью close, чтобы гарантировать правильное завершение операций чтения и записи.
1,390Open in Telegram
Senior C++ Developer
4 Sept, 21:00
SocketsСокеты используются для обмена данными между процессами на разных узлах в сети. Они предоставляют низкоуровневый интерфейс для передачи данных через сетевое соединение.Для работы с сокетами в C++ вы можете использовать библиотеку сокетов, такую как BSD Sockets или Boost.Asio.Этот код демонстрирует простой обмен данными между сервером и клиентом с использованием сокетов в C++. Обратите внимание, что в реальной сетевой разработке вам также может понадобиться обработка ошибок, управление соединениями и другие детали. Однако данный пример дает представление о базовых принципах использования сокетов в C++.

1,450Open in Telegram
Senior C++ Developer
3 Sept, 20:38
#вопросы_с_собеседований Можно ли использовать exceptions в конструкторе / деструкторе?Да, в C++ можно использовать исключения (exceptions) в конструкторе и деструкторе класса. Однако, следует быть внимательным при использовании исключений в этих частях кода и учитывать некоторые особенности.В конструкторе:- Если конструктор выбрасывает исключение, объект не будет полностью сконструирован, и память, выделенная под него, не будет освобождена автоматически. Это может привести к утечке ресурсов или некорректному состоянию программы. В таких случаях следует использовать RAII (Resource Acquisition Is Initialization), чтобы гарантировать правильное освобождение ресурсов при исключениях. - Конструкторы должны быть безопасными в отношении исключений. Если конструктор может выбросить исключение, стоит использовать try-catch в самом конструкторе или передать исключение дальше в коде.В дест1,280Open in Telegram
Related Channels
Other channels in the same section of the catalogue.
