C# Development | YeaHub
743 subscribers
304 photos
33 videos
1 file
537 links
Теория, подготовка к интервью и курсы для C# разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#ЛитКод
Задача: 724. Find Pivot Index

Если задан массив целых чисел nums, вычислите поворотный индекс этого массива. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю массива, то сумма слева равна 0, так как слева нет элементов. Это относится и к правому краю массива. Возвращается самый левый поворотный индекс. Если такого индекса не существует, возвращается -1.

Пример:
Input: nums = [1,7,3,6,5,6]
Output: 3


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

1⃣Вычислите сумму всех элементов массива.

2⃣Пройдите по массиву, вычисляя текущую сумму элементов слева и проверяя, равна ли она разности между общей суммой и текущей суммой справа.

3⃣Если текущий индекс удовлетворяет условию, верните его; если нет, продолжайте проверку. Если такой индекс не найден, верните -1.

😎 Решение:
public class Solution {
public int PivotIndex(int[] nums) {
int totalSum = 0;
foreach (int num in nums) {
totalSum += num;
}
int leftSum = 0;
for (int i = 0; i < nums.Length; i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1
#полезное
😬 Что такое Queue<T>?

Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).

То есть первый добавленный элемент будет извлечён первым.

Когда использовать?

🟠 Планирование задач
🟠 Очереди на печать
🟠 Обработка сообщений
🟠 Поиск в ширину (BFS) в графах

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Что такое модификаторы доступа в С#?

В С# модификаторы доступа определяют, какие части кода могут взаимодействовать с определенными классами, методами и переменными.
Существует 4 основных модификатора:
public - доступен отовсюду.
private - доступен только внутри своего класса.
protected - доступен внутри своего класса и наследников.
internal - доступен в пределах одной сборки.
Дополнительно есть составные модификаторы:
protected internal - доступен в пределах сборки и в классах-наследниках.
private protected - доступен только в классах-наследниках внутри одной сборки.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Если ты до сих пор считаешь, что EF Core медленный в 2025 году — ты застрял в прошлом

Одна из его новых фич — поддержка bulk-удалений

Теперь ты можешь удалить любое количество записей за один запрос к базе.

Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.

С ExecuteDelete это делается эффективно: выполняется один SQL-запрос DELETE, который сразу удаляет все старые корзины.

Но помни: bulk-операции обходят EF Change Tracker.

EF Core предлагает много мощных фич для написания чистого и производительного кода.

Вот 5, которые ты обязан знать: readme

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Совет по Microsoft Visual Studio

Условная компиляция — отличный способ включать или исключать функциональность в зависимости от сценария деплоя.

Обычно используют #if DEBUG, но что если условие не связано с режимом отладки или релиза?

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

В этом примере используется пользовательский символ, чтобы определить — наследоваться от абстрактного класса или нет.

Важно иметь чёткие инструкции, в каких случаях применять такие символы, как в этом примере

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 99% разработчиков ошибаются в обработке исключений

А вот что делает оставшийся 1%:

Они используют глобальный обработчик исключений.

Начиная с .NET 8, можно создать класс, реализующий IExceptionHandler, чтобы перехватывать все необработанные исключения.

Внутри обработчика можно залогировать исключение и вернуть ProblemDetails клиенту API.

Можно также зарегистрировать несколько реализаций IExceptionHandler — они будут вызываться в порядке регистрации.

Предсказать все исключения невозможно.

Но можно перехватить их все в одном месте.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 Что такое цепочка конструкторов в С#?

Цепочка конструкторов (constructor chaining) позволяет одному конструктору вызывать другой внутри одного класса с помощью this . Это сокращает дублирование кода.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 В ASP.NET 10 появится поддержка Passkey

Passkey — это новый способ входа в систему без пароля, основанный на стандартах FIDO2/WebAuthn.

Вместо ввода пароля, пользователь подтверждает вход с помощью:

🟠 Face ID или Touch ID (на телефоне или ноутбуке)
🟠 PIN-кода
🟠 внешнего ключа безопасности (например, YubiKey)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😇 Clean Architecture by Pedro Constantino

Clean Architecture — это не только про принципы, но и про ясную структуру, которая делает проект масштабируемым, тестируемым и удобным в поддержке
источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😇 Времена жизни (Lifetimes) в .NET DI:

🟠 Singleton — один экземпляр на всё приложение
🟠 Scoped — один экземпляр на каждый запрос
🟠 Transient — новый экземпляр каждый раз при запросе

Важно помнить:

– Нельзя внедрять Scoped/Transient в Singleton — это может привести к утечкам памяти
– Используй Singleton только для безсостояний или потокобезопасных сервисов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что означает команда enable-debug в PostgreSQL?

Команда enable-debug в PostgreSQL для включения дополнительных параметров отладки при компиляции. Она необходима разработчикам и администраторам баз данных для диагностики проблем и улучшения производительности.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Какой максимальный размер таблицы в PostgreSQL?

B PostgreSQL максимальный размер таблицы ограничен размером базы данных - до 32 ТБ, если используется стандартный блок данных размером 8 КБ. Это ограничение связано с максимальной длиной идентификатора блока в системе.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
📞 Создание кастомного GPT в ChatGPT может быть крайне полезным.

Например, разработчик хочет заменить SqlClient-операции на Dapper и ему предстоит проделать это множество раз.
С помощью кастомного GPT можно избежать постоянного ввода промптов — достаточно просто вставить код и получить результат.

В этом случае я создал инструкцию в Microsoft Word, сохранил её в PDF и загрузил в кастомного GPT

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😵‍💫 В .NET 10 снижена «надбавка» за использование IEnumerable с 83% до 10%

В .NET 9 перебор массива через IEnumerable обходился на 83% дороже, чем прямой перебор массива, тогда как в .NET 10 эта разница составила всего 10%

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#полезное
👋 𝗛𝘆𝗯𝗿𝗶𝗱𝗖𝗮𝗰𝗵𝗲 в .𝗡𝗘𝗧 𝟵

В .NET 9 появился новый API для кэширования — HybridCache.

Он решает ограничения IMemoryCache и IDistributedCache

Что он предлагает:

🟠 Единый API (и для in-process, и для out-of-process кэша)
🟠 Настраиваемую сериализацию
🟠 Защиту от «штамповки» (stampede protection)
🟠 Очистку кэша по тегам

Метод GetOrCreateAsync проверяет и основной, и вторичный кэш. Если значения нет — вызывает фабрику, сохраняет результат и возвращает его.

Stampede protection означает: на один ключ — только один вызов фабрики одновременно.

Вот как можно начать использовать HybridCache уже сегодня: read

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 IServiceScopeFactory vs IServiceProvider — что использовать для создания пользовательских скоупов?

Оба могут создавать скоупы, но ключевой момент в следующем:

IServiceProvider.CreateScope() просто получает IServiceScopeFactory и вызывает у него CreateScope()

Так что использование IServiceScopeFactory — более прямой подход.

Обычно пользовательские скоупы нужны, когда вы работаете с root-провайдером.

Вот решение на практике: тык

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🏠 В режиме Ask в VScode ты можешь общаться напрямую с экспертами — так называемыми участниками (participants). Например, участник Remote-SSH может ответить на вопросы о разработке по SSH, помочь с настройкой окружения и даже разобраться с ошибками подключения

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😊 Думаешь, хорошо разбираешься в ASP.NET Core middleware?

Этот пост поменяет твой взгляд на перехват HTTP-запросов

Middleware в ASP.NET Core — это компонент, участвующий в конвейере обработки HTTP-запросов и ответов.

Есть три подхода: на делегатах (inline), по соглашению (класс), и через IMiddleware для кастомной логики.

1⃣Сначала можно использовать метод Use напрямую в конфигурации WebApplication.
Такое middleware на основе делегата выполняется до и после следующего компонента в конвейере.

2⃣Если логика растёт — вынеси её в отдельный класс middleware по соглашению.
Класс должен иметь конструктор с RequestDelegate и метод InvokeAsync.

3⃣ Либо реализуй интерфейс IMiddleware — это более безопасный, проверяемый компилятором способ.
Зарегистрируй класс IMiddleware в DI-контейнере, и фреймворк сам будет его разрешать.

Но есть важные нюансы:

🟠 Middleware по умолчанию живёт как singleton, поэтому внедряй только singleton-зависимости.
🟠 Если нужны scoped-сервисы — передавай их через параметры InvokeAsync в middleware по соглашению.

Кастомные middleware используют для:

• логирования
• авторизации
• валидации
• модификации ответов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Диаграмма последовательности выполнения запроса в Entity Framework

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес #postgres
🤔 Что такое функции в PostgreSQL?

Функции в PostgreSQL - это блоки кода, которые выполняют заданную последовательность SQL или процедурных команд. Они позволяют выполнять вычисления, возвращать значения и обрабатывать данные более эффективно. Их можно использовать для вызова сложной логики в SQL-запросах или триггерах.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😱 Скриптинг на C# это круто

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

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