TGViewer
Channel Public Channel
C# Development | YeaHub

C# Development | YeaHub

@yeahub_c_sharp_dev

Теория, подготовка к интервью и курсы для C# разработчиков

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

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

Для связи: @ruslan_kuyanets
Subscribers
743
Photos
303
Videos
33
Links
536

Showing posts older than #341 · Back to latest

Older Posts 20 shown
Post #340 336
#полезное
❤️‍🔥 .NET Channel Publisher — простой способ строить настоящий async messaging

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

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

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

👉Новости 👉База вопросов
Post #339 336
#ЛитКод
Задача: 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];
}
}


👉Новости 👉База вопросов
Post #338 308
#полезное
😐 Запуск программ с защитой PPL

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

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

👉Новости 👉База вопросов
Post #337 292
#Собес #git
🤔 Как восстановить удалённую ветку?

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #336 291
#полезное
😊 Топ-3 встроенных обобщённых делегата в C#: Func, Action и Predicate

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

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

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

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

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

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

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

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

👉Новости 👉База вопросов
Post #335 259
#статьи
😇 Новая C#-библиотека RCParsing, которая предлагает гибридный подход к обработке сложных синтаксисов с отступами.

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

👉Новости 👉База вопросов
Post #334 306
#полезное
🤓 Исключения не для управления потоком

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

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

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

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

👉Новости 👉База вопросов
Post #333 310
#Собес #CSharp
🤔 Чем отличаются интерфейсы IEnumerable ‹ T › и IQueryable ‹ Т › и для чего нужен QueryProvider?

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #332 297
#полезное
👋 Микросервисная платформа для страхования

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

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

👉Новости 👉База вопросов
Post #331 312

Forwarded from YeaHub

😎 Реальные собеседования + тренажёр = комплексная подготовка

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

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

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

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

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

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


👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
  • ❤ 1
  • 👍 1
  • 🔥 1
Post #329 353
#Собес #CSharp
🤔 Как работает Dictionary< TKey, TValue ›: как вычисляется bucket и как влияет коллизия на производительность?

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
  • 🔥 1
Post #328 335
#полезное
🏠 LLM в .NET проще, чем кажется

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

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

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

👉Новости 👉База вопросов
Post #327 319
Visual Studio 2026 показывает результаты условных операторов (if) прямо в коде во время отладки.
Скоро будет доступно

👉Новости 👉База вопросов
  • ❤ 3
Post #326 408
#полезное
😇 После сильного падения трафика StackOverflow наконец-то совершил камбэк

Он запустил собственного ИИ-агента — stackoverflow.ai. Он отвечает только на основе проверенных ответов сообщества, подбирая прямые цитаты из них.

👉Новости 👉База вопросов
  • ❤ 3
Post #325 333
#Собес #git
🤔 Как вы находите коммит, который что-то нарушил после операции слияния?

💬 Кратко:
Для поиска коммита, который нарушил код после слияния, можно использовать команду git bisect . Этот инструмент помогает найти коммит, который вызывает проблему, путем бинарного поиска.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #324 336
#полезное
👋 Нужна ли сервисная дискавери и зачем

В микросервисной архитектуре часто встает вопрос: как сервисы находят друг друга и надежно общаются

Хардкодить IP и порты — прямой путь к проблемам. Если сервис переезжает или запускается новый экземпляр, весь стек может сломаться

Сервисная дискавери позволяет обращаться к внешним сервисам по логическим именам, а не по физическим адресам и портам

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

Рабочий процесс выглядит так

1⃣ Сервис регистрируется в сервисном реестре
2⃣ Клиент обращается к реестру, чтобы узнать физический адрес сервиса
3⃣ Клиент отправляет запрос на этот физический адрес

В .NET это можно реализовать через Consul. Вот подробный туториал

Consul — популярное решение для распределенных систем

Есть более легковесное решение от Aspire, но там физические адреса задаются через конфигурацию приложения, поэтому оно менее надежное и гибкое

👉Новости 👉База вопросов
  • 🔥 1
Post #323 294
#полезное
😊 Появилось расширение, которое добавляет эффекты из Elden Ring в вашу почту, LeetCode и GitHub

Теперь пулл реквесты ощущаются как битва с боссом
Забираем с GitHub

👉Новости 👉База вопросов
Post #322 305
#полезное
😵‍💫 Обновление поддержки .NET STS

Начиная с .NET 9 (текущий STS), поддержка STS-релизов увеличена с 18 месяцев до 2 лет.

Теперь STS-релизы теряют поддержку в тот же день, что и предыдущий LTS-релиз.

Это значит, что обновление до STS-релиза больше не приведёт к потере поддержки

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

https://devblogs.microsoft.com/dotnet/dotnet-sts-releases-supported-for-24-months/

👉Новости 👉База вопросов
Post #321 307
#Собес #git
🤔 Что такое команды git reset -mixed и git merge - abort?

💬 Кратко:
git reset --mixed : отменяет изменения, которые были добавлены в индекс, но сохраняет изменения в рабочем каталоге.
git merge --abort : отменяет слияние, которое в данный момент находится в процессе, и возвращает репозиторий в состояние до начала слияния.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →