C/C++ Development | YeaHub – Telegram
C/C++ Development | YeaHub
828 subscribers
228 photos
56 videos
1 file
379 links
Теория, подготовка к интервью и курсы для C/C++ разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
🥄 Напоминание: лучший способ чему-либо научиться — делать собственные проекты.

Этот репозиторий содержит большинство проектов, какие только можно представить, и множество языков для их реализации.

Многие из них — на C, другие — на Assembly, и каждый из них даст вам мощную прокачку.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #Cplus
🤔 Расскажите про стек в контексте С++

Стек в С++ - это адаптер контейнера, работающий по принципу LIFO (Last In, First Out), где последний элемент, добавленный в стек, будет первым, который из него извлечет.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😎 Представьте себе написание сложной разветвлённой логики без единого оператора if. Я уже некоторое время работаю с сопоставлением с образцом, но с новым языком, не C/C++

Можешь ознакомиться с этим гайдом о сопоставлении с образцом

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🥺 Сегодня получил интересный вопрос: что быстрее —
n++, ++n или n + 1 ?

Ответ: n++ читает стек 3 раза, в то время как ++n и n + 1 — 4 раза.

Тесты были проведены на следующем коде (смотри фото):

++n и n + 1

Для dummy = ++n и n = n + 1; dummy = n происходит следующее:

> n инкрементируется на стеке
> значение n загружается в регистр
> регистр сохраняется в dummy на стеке

n++

Для dummy = n++ происходит следующее:

> n загружается в регистр-1
> регистр-1 инкрементируется и результат сохраняется в регистр-2
> регистр-2 сохраняется обратно на стек (обновлённое значение n)
> регистр-1 сохраняется на стек в dummy (исходное значение n)

Может показаться, что код для n++ содержит больше инструкций и поэтому должен быть медленнее, но это не так.

На практике не существует такого понятия, как «инкремент на стеке» — значение фактически загружается в процессор, инкрементируется там, а затем записывается обратно.

Если посчитать обращения к стеку (чтения и записи):

> ++n и n + 1: чтение, запись, чтение, запись — 4 обращения к стеку

> n++: чтение, запись, запись — 3 обращения к стеку

Поскольку чтение из регистра значительно быстрее, чем из стека, это делает n++ более быстрым вариантом.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#видео
😐 Изучение ядра Linux с использованием трассировки

Отличное видео о трассировке системных вызовов и о том, как это работает под капотом
Источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Cplus
🤔 Что такое исключение в С++?

Исключение в С++ - это обьект, который выбрасывается во время выполнения программы, когда возникает необычная ситуация или ошибка. Исключения обрабатываются с помощью блока try-catch.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
#ЛитКод
Задача: 717. 1-bit and 2-bit Characters

У нас есть два специальных символа: первый символ может быть представлен одним битом 0. Второй символ может быть представлен двумя битами (10 или 11). Если задан двоичный массив bits, который заканчивается 0, верните true, если последний символ должен быть однобитным.

Пример:
Input: bits = [1,0,0]
Output: true


👨‍💻 Алгоритм:

1⃣Инициализируйте индекс для итерации по массиву.

2⃣Пройдите по массиву, увеличивая индекс на 1, если текущий бит равен 0, и на 2, если текущий бит равен 1.

3⃣Проверьте, достиг ли индекс последнего элемента массива, и верните результат.

😎 Решение:
bool isOneBitCharacter(vector<int>& bits) {
int i = 0;
while (i < bits.size() - 1) {
i += bits[i] + 1;
}
return i == bits.size() - 1;
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
#полезное
👋 Изучай разработку ОС, это реально увлекательно

Функция breakpoint_handler() устанавливает обработчик исключений, который перехватывает инструкции brk, выполняемые внутри целевого процесса. Здесь написана отдельная функция patch(), — она внедряет трамплин в исполняемую область памяти, и этот трамплин содержит инструкцию brk в качестве ловушки.

Когда выполнение доходит до brk, обработчик перехватывает исключение, получает доступ к регистрам потока, модифицирует x0, подставляя нужное значение возврата, продвигает счётчик инструкций, чтобы пропустить ловушку, и выполнение продолжается.

В комбинации с остальной частью моего кода это обеспечивает патчинг во время выполнения, интроспекцию ВМ и метаморфное выполнение кода.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
#полезное
❤️‍🔥 Чувак оптимизировал умножение матриц на C с использованием SIMD, блочной работы с кэшем и многопоточности, сократив время выполнения в 80 раз.
Репозиторий на GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😈32🔥1
#Собес #Cplus
🤔 Что такое аргумент по умолчанию в функции?

Аргумент по умолчанию в функции С++ — это параметр, которому присваивается значение по умолчанию. Если вызывающая сторона не передает значение для этого параметра, будет использовано значение по умолчанию.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👨‍💻 На заметку вам: roadmap.sh/cpp

Это интерактивная, модульная дорожная карта изучения C++: от азов до продвинутых практик, с упором на последовательность, прогресс и полезный контент

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 std::to_underlying()

std::to_underlying() (C++23) безопасно преобразует значение enum class в его базовый целочисленный тип. Это полезно для сериализации, логирования и битовых операций с strongly-typed enum'ами.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1💘1
#полезное
😊 Архитектура компьютера: Продвинутое проектирование процессоров

На основе базовых знаний о скалярном RISC-конвейере, эти видео последовательно развивают концепции, ведущие к технологиям, лежащим в основе современных динамических внеочередных (out-of-order) суперскалярных процессоров
Источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
3
#Собес #Cplus
🤔 Какой оператор нельзя перегрузить в С++?

Оператор разрешения области видимости (::) нельзя перегрузить в С++. Этот оператор используется для доступа к глобальным переменным, функциям и классам.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😵 Понимание управления файловой системой в операционных системах, подобных Unix

Этот блог рассматривает тонкости того, как такие системы отслеживают файлы, управляют файловыми дескрипторами и реализуют механизмы, такие как каналы (pipes) для межпроцессного взаимодействия.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM