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

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

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

Для связи: @ruslan_kuyanets
Download 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
#полезное
🛞 Visual Studio теперь отображает возвращаемые значения методов прямо в коде

Фича появилась в версии 17.12 (выпущена в ноябре).

Я всегда считал, что временные переменные помогают снизить когнитивную нагрузку при работе с возвратами методов, но, похоже, теперь игра изменилась

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#полезное
🥄 NBomber — нагрузочное тестирование на .NET без привязки к протоколам. Этот фреймворк позволяет описывать сценарии нагрузочного тестирования на чистом C#/F#, без изучения специализированного DSL.

Ключевая особенность проекта в распределённом режиме для имитации реалистичной нагрузки и интеграция с Grafana/InfluxDB для мониторинга в реальном времени. При этом сценарии можно запускать как консольное приложение или даже как xUnit-тесты в CI/CD.
Гитхаб

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