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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
🏠 LLM в .NET проще, чем кажется

Создавать AI-приложения на .NET теперь легко. Примеры применения:

- чат-приложения
- суммаризация текста
- категоризация
- распознавание изображений
- семантический поиск

LLM можно запускать локально или через облачное API. Отличный способ не отставать в практическом использовании AI.
Подробнее: тык

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Как работает Dictionary< TKey, TValue ›: как вычисляется bucket и как влияет коллизия на производительность?

💬 Кратко:
Dictionary хранит элементы в массивах bucket 'ов. Для ключа вычисляют хэш-код key .GetHashCode() , берут bucketIndex = hash % buckets.Length, и если в этом бакете уже есть запись, сравнивают ключи на равенство, переходя по связному списку (или дереву в новых версиях). При небольшой нагрузке lookup — О (1), но при многих коллизиях (одинаковых хэших) может деградировать до О(п) в худшем случае.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
LeetCode только что добавил AI, который решает задачи за тебя.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣2👎1
Forwarded from YeaHub
😎 Реальные собеседования + тренажёр = комплексная подготовка

На нашей платформе мы собираем собеседования вместе с сообществом: Guru, участниками, менторами и партнёрами.

Один из наших партнёров — Аня и её проект «Авось Прорвёмся», экосистема чатов для кандидатов, которые ищут работу и готовятся к собеседованиям.

Прорвёмся вместе — анонимный канал для самостоятельной подготовки:
- 1000+ записей реальных собеседований с разбором задач и вопросов;
- контакты рекрутеров;
- гайды по резюме, трудоустройству и стратегиям поиска работы.
- задачи и вопросы с собеседований

📚 Сначала смотри записи реальных собеседований, а потом изучай эти же вопросы в нашем тренажёре.
Мы цифровизуем все собесы из чатов «Авось Прорвёмся» и добавляем их в текстовом виде в коллекцию. Так можно не только услышать, как это проходит вживую, но и отработать те же самые вопросы уже в интерактивном формате.

📌 Направления, которые доступны в чатах:
iOS, Android, Frontend, Python, Go, Java, C#, QA, Analytics.

Подключение — только по инвайту от действующего участника, или YeaHub.


👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
❤1👍1🔥1
#полезное
👋 Микросервисная платформа для страхования

Yosef — это открытая микросервисная платформа для финансовой страховой отрасли, разработанная на .NET, Python, TypeScript и Golang. Она обеспечивает масштабируемость, гибкость и высокую наблюдаемость для современных страховых приложений.

Основные моменты:
🟠 Микросервисная архитектура для легкости масштабирования
🟠 Централизованное управление идентификацией и доступом
🟠 Полный цикл страхования от оценки до создания полиса
🟠 Высокая наблюдаемость с использованием Grafana и Prometheus
🟠 Интеграция с современными инструментами безопасности
GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Чем отличаются интерфейсы IEnumerable ‹ T › и IQueryable ‹ Т › и для чего нужен QueryProvider?

💬 Кратко:
IEnumerable<T> выпоЛняет LINQ-запросы в памяти, а IQueryable‹T› строит выражение ( Expression Tree ), которое провайдер (QueryProvider ) переводит в запрос к внешнему источнику (БД, API). QueryProvider отвечает за парсинг выражения, генерацию SQL (или другого формата) и получение данных, обеспечивая deferred execution и оптимизацию выполнения на стороне источника.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Исключения не для управления потоком

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

Решение — использовать Result Pattern. Возврат объекта с полями IsSuccess или IsError, Value и Error делает API предсказуемым, код чище, тесты проще и повышает производительность.

Уже есть готовые NuGet-пакеты вроде FluentResults, CSharpFunctionalExtensions, Ardalis Result и error-or, но реализовать такой паттерн можно и самостоятельно.

Здесь лучший гайд по тому, как использовать Result Pattern в реальных приложениях

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😇 Новая C#-библиотека RCParsing, которая предлагает гибридный подход к обработке сложных синтаксисов с отступами.

Разработчики отмечают, что традиционные инструменты часто не справляются с такими задачами, а использование барьерных токенов значительно улучшает качество парсинга. В качестве примера приводится разбор YAML.
Подробнее в статье

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Топ-3 встроенных обобщённых делегата в C#: Func, Action и Predicate

Делегаты — это указатели на функции. Они помогают в коммуникации и колбэках

В .NET есть три встроенных обобщённых делегата:

1⃣ Func: принимает обобщённый вход и возвращает обобщённый выход
2⃣ Action: принимает обобщённый вход и ничего не возвращает
3⃣ Predicate: принимает обобщённый вход и всегда возвращает Boolean

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

Хотите увидеть их на реальном примере?

🟠 Создаём класс Student с некоторыми свойствами
🟠 Формируем список объектов типа Student
🟠 Добавляем данные

Некоторые методы LINQ используют делегаты:

🟡 Метод Select принимает Func
🟡 Метод ForEach принимает Action
🟡 Метод FindAll принимает Predicate

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Как восстановить удалённую ветку?

💬 Кратко:
Если ветка была удалена локально, её можно восстановить, используя команду git reflog . Если ветка была удалена удалённо, можно восстановить еёс помощью git push origin ‹ branch_name›.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Запуск программ с защитой PPL

CreateProcessAsPPL — инструмент для запуска приложений с включенной защитой PPL. Позволяет выбирать уровень защиты для повышения безопасности выполнения программ.

Основные моменты:
🔵 Поддержка нескольких уровней защиты PPL.
🔵 Удобный интерфейс командной строки.
🔵 Полезен для разработчиков и исследователей безопасности.
GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 730. Count Different Palindromic Subsequences

Поскольку ответ может быть очень большим, верните его по модулю 109 + 7. Подпоследовательность строки получается путем удаления из нее нуля или более символов. Последовательность является палиндромной, если она равна последовательности, обращенной назад. Две последовательности a1, a2, ... и b1, b2, ... различны, если существует некоторое i, для которого ai != bi.

Пример:
Input: s = "bccb"
Output: 6


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

1⃣Используйте динамическое программирование для подсчета количества палиндромных подпоследовательностей.

2⃣Введите двумерный массив dp, где dp[i][j] представляет количество палиндромных подпоследовательностей в подстроке от i до j.

3⃣Итерируйте по длине подстрок от 1 до длины строки и обновляйте значения в dp на основе состояния предыдущих подстрок.

😎 Решение:
public class Solution {
public int CountPalindromicSubsequences(string s) {
const int MOD = 1000000007;
int n = s.Length;
int[,] dp = new int[n, n];

for (int i = 0; i < n; i++) {
dp[i, i] = 1;
}

for (int length = 2; length <= n; length++) {
for (int i = 0; i <= n - length; i++) {
int j = i + length - 1;
if (s[i] == s[j]) {
int l = i + 1, r = j - 1;
while (l <= r && s[l] != s[i]) l++;
while (l <= r && s[r] != s[j]) r--;

if (l > r) {
dp[i, j] = dp[i + 1, j - 1] * 2 + 2;
} else if (l == r) {
dp[i, j] = dp[i + 1, j - 1] * 2 + 1;
} else {
dp[i, j] = dp[i + 1, j - 1] * 2 - dp[l + 1, r - 1];
}
} else {
dp[i, j] = dp[i + 1, j] + dp[i, j - 1] - dp[i + 1, j - 1];
}

dp[i, j] = (dp[i, j] + MOD) % MOD;
}
}

return dp[0, n - 1];
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 .NET Channel Publisher — простой способ строить настоящий async messaging

Как это работает:
- Использует System.Threading.Channels для асинхронной публикации событий
- Сообщения пишутся в канал и обрабатываются в фоне, не блокируя поток
- Поддержка CancellationToken для безопасной отмены

Плюсы:
- Минимум кода — максимум гибкости
- Высокая производительность и низкая задержка
- Удобно для event-driven архитектуры и микросервисов

На скриншоте:
🔴 Пример класса ChannelPublisher для отправки нотификаций
🔴 Трейсинг вызова Order.Service: POST orders показывает прозрачную обработку и асинхронность

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from YeaHub
🚀 Прокачиваем подготовку к собеседованиям на максимум!

Если ты ещё не заглядывал(а) в 👍 «Авось Прорвёмся» — самое время.
Это проект Ани для самостоятельной подготовки, где есть:
- 1000+ записей реальных собеседований с разбором задач и вопросов;
- контакты рекрутеров;
- гайды по резюме, трудоустройству и стратегиям поиска работы.
- задачи и вопросы с собеседований

Мы в YeaHub продолжаем добавлять собеседования из этих чатов — теперь их можно проходить в тренажёре, тренируя ответы на реальные вопросы работодателей.

🎧 Сначала слушай, как проходят настоящие собесы,
💡 потом — разбирай и практикуй те же кейсы в тренажёре.


Направления: iOS, Android, Frontend, Python, Go, Java, C#, QA, Analytics.

👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1🤝1
#Собес #CSharp
🤔 Как лямбда-выражения транслируются в SQL в контексте IQueryable‹ Т ›?

💬 Кратко:
При работе с IQueryable‹T› лямбда-выражение представляется как Expression Tree , которое QueryProvider анализирует, разбивая на части (методы, условия, проекции). Затем строится SQL-команда, где части Expression соответствуют WHERE, SELECT, ORDER BY . Фактическое выполнение происходит при перечислении, и в запрос включаются только поддерживаемые операции.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😱 Как упаковать RPM на Linux через GitLab CI/CD?

В материале детально разбирается разработка службы на .NET Core, конфигурация spec-файла, применение макросов и запуск GitLab Runner внутри Docker. Полезные рекомендации для DevOps по автоматизации билда и контролю версий.

Читать подробнее: https://habr.com/ru/articles/952748/

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Чистим NuGet и освобождаем десятки гигабайт

Со временем NuGet накапливает огромные объёмы кэша:

- http-cache может весить 10+ ГБ

- global-packages легко разрастается до 50 ГБ и больше

Если места на диске не хватает — кэши можно безопасно почистить:

Очистка глобальных пакетов:

dotnet nuget locals global-packages --clear


Очистка http-кэша:

dotnet nuget locals http-cache --clear


Очистка временных файлов:

dotnet nuget locals temp --clear


Полная зачистка всего:

dotnet nuget locals all --clear


После очистки пакеты будут скачаны заново при следующем dotnet restore, но на диске станет намного свободнее.

Проверить текущие кэши можно так:

dotnet nuget locals all --list


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🛞 MauiReactor — MVU для .NET MAUI

Открытая библиотека, реализующая паттерн Model View Update для .NET MAUI.

Она упрощает разработку кроссплатформенных приложений, ускоряет hot reload и повышает производительность.

MauiReactor предлагает альтернативу XAML и позволяет описывать интерфейс на C#. Поддерживаются темы, условный рендеринг и интеграция сторонних компонентов.
Подробнее

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