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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 7 архитектур, которые стоит знать каждому разработчику

> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.

> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)

> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.

> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко

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

> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.

> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Добавили метод UseKestrel() в WebApplicationFactory

Это появится в ASP.NET 10 Preview 4 и даст простой способ включить использование сервера Kestrel в WebApplicationFactory

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

Виртуальный метод ( virtual method ) - это метод в базовом классе, который можно переопределить в производном классе. Он объявляется с модификатором virtual, а его новая реализация в наследнике определяется с помощью override . Это позволяет изменять поведение методов в дочерних классах, не изменяя код базового класса. Виртуальные методы используются для реализации полиморфизма, когда общий интерфейс класса остается неизменным, но его поведение может отличаться в разных реализациях.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#полезное
👨‍💻 Метод-расширение для TagWith в Entity Framework

TagWith() очень полезен для добавления отладочной информации в логи запросов, но, конечно, мы также можем обернуть его и добавить дополнительную информацию через простой extension method, как в примере выше

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN 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