❗ Сегодня премьера
В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусственного интеллекта».
В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.
⏰ Это прямой эфир: подключиться можно через лендинг курса.
В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусственного интеллекта».
В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.
⏰ Это прямой эфир: подключиться можно через лендинг курса.
👾1
Вы планируете вернуть из публичного API ValueTask<T> ради снижения аллокаций. Какие риски это несёт для потребителей и как правильно поступить?
ValueTask<T> допускает только одно ожидание и плохо сочетается с повторным await/композицией (WhenAll, кеширование результата). Его нельзя хранить в полях и возвращать повторно. В публичных API обычно оставляют Task<T>, а ValueTask<T> используют только на горячих путях, где >90% завершений синхронные; при необходимости многократно ждать/комбинировать — сразу делать .AsTask().
Библиотека собеса по С#
Библиотека собеса по С#
❤1👍1
Что такое LINQ и как он работает?
LINQ (Language Integrated Query) - это функция в C#, которая предоставляет единый способ запроса источников данных, таких как коллекции, массивы, XML-документы и базы данных. Он использует декларативный синтаксис, который позволяет вам выражать запросы более читаемым и кратким образом.
Библиотека собеса по С#
var evenNumbers = numbers.Where(x => x % 2 == 0);
Библиотека собеса по С#
❤1
В проде на HTTP/2 (TLS) под пиками растёт p99: при единичной потере пакета “проседают” сразу несколько параллельных запросов на одном соединении. Почему так происходит и как это смягчить без переписывания приложения?
Это TCP Head-of-Line blocking внутри одного HTTP/2-мультиплексированного TCP-соединения: ретрансмит одного сегмента задерживает все потоки. Смягчение: перейти на HTTP/3/QUIC (stream-level loss recovery) или шардировать запросы по нескольким TCP (connection pooling/limit concurrent streams), настроить приоритизацию, таймауты/keep-alive, включить современный congestion control (напр., BBR) и использовать CDN ближе к клиенту. Диагностика: метрики retransmits/RTT, pcap, qlog (для H3).
Библиотека собеса по С#
Библиотека собеса по С#
Можно ли разрешить наследование класса, но запретить переопределение метода?
Можно для второго класса в иерархии наследования, если переопределяем виртуальный метод как sealed override, тогда дальнейшее переопределение по цепочке наследования запрещено.
Библиотека собеса по С#
Библиотека собеса по С#
❤1
Что такое процесс JIT-компилятора?
Компилятор Just-In-Time (JIT) является частью Common Language Runtime (CLR) в .NET, которая отвечает за управление выполнением программ .NET независимо от языка программирования .NET. Специфичный для языка компилятор преобразует исходный код в промежуточный язык. Затем этот промежуточный язык преобразуется в машинный код компилятором Just-In-Time (JIT). Этот машинный код специфичен для компьютерной среды, в которой работает компилятор JIT.
Библиотека собеса по С#
Библиотека собеса по С#
🤖 Курс «ИИ-агенты для DS-специалистов»
Последняя возможность в этом году освоить ИИ-агентов — курс стартует уже 3 октября! Первый вебинар пройдёт в день старта, а подробности вебинара можно найти на сайте.
📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.
🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.
🔗 Записаться на курс и узнать подробности
Последняя возможность в этом году освоить ИИ-агентов — курс стартует уже 3 октября! Первый вебинар пройдёт в день старта, а подробности вебинара можно найти на сайте.
📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.
🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.
🔗 Записаться на курс и узнать подробности
🥱2
✍🏻 Запишите названия всех этапов жизненного цикла страницы ASP.NET
— Запрос страницы
— Начало жизненного цикла страницы
— Инициализация страницы
— Загрузка страницы
— Проверка
— Обработка событий постбэка
— Рендеринг страницы
— Выгрузка
Библиотека собеса по С#
— Начало жизненного цикла страницы
— Инициализация страницы
— Загрузка страницы
— Проверка
— Обработка событий постбэка
— Рендеринг страницы
— Выгрузка
Библиотека собеса по С#
🤔1
Объясните, что реально происходит при async/await в C#: как компилятор трансформирует метод, как выбирается поток для продолжения, что делает ConfigureAwait(false), и почему в UI/старом ASP.NET ловят дедлок при .Result/.Wait().
Компилятор разворачивает метод в IAsyncStateMachine: локальные и позиция сохраняются в полях, await берёт awaiter (обычно TaskAwaiter) и через OnCompleted/UnsafeOnCompleted регистрирует продолжение. По умолчанию продолжение постится в текущий SynchronizationContext (если он есть), иначе — в TaskScheduler.Current (обычно пул потоков). ConfigureAwait(false) отключает захват контекста, поэтому продолжение уходит в пул и не требует возвращения в UI-контекст. Дедлок появляется, когда однопоточный контекст (WinForms/WPF или классический ASP.NET ) блокируется .Result/.Wait(), а продолжение пытается вернуться в тот же контекст, который занят блокирующим ожиданием; ни то ни другое не сдвигается. Лекарство: не блокировать асинхронщину (“async all the way”), в библиотечном коде использовать ConfigureAwait(false) там, где не нужен контекст, и передавать CancellationToken.
Библиотека собеса по С#
Библиотека собеса по С#
❤3
Что делает lock(obj) под капотом и почему плохая идея — блокировать this или строку?
Компилятор разворачивает в try { Monitor.Enter(obj); } finally { Monitor.Exit(obj); }, монитор реентерабелен и висит на объекте. Блокировка this/публичных объектов/строк опасна: внешний код может их тоже залочить (строки интернируются) → риск дедлоков и лишнего контеншна.
Библиотека собеса по С#
Библиотека собеса по С#
Можно ли вызывать Unity API из Job System/дополнительных потоков и как правильно применить параллельно посчитанные результаты к объектам сцены?
Нельзя: UnityEngine.Object и большинство API — только с главного потока. Параллелим расчёты на NativeArray/NativeSlice/NativeHashMap (без managed-ссылок), помечаем [ReadOnly]/[WriteOnly], включаем Burst, Schedule/ScheduleParallel, сохраняем JobHandle, затем на главном потоке делаем Complete() и читаем Native*, применяя значения к Transform/Mesh в Update/LateUpdate. Контейнеры реюзаем с Allocator.Persistent, не аллоцируем каждый кадр.
Библиотека собеса по С#
Библиотека собеса по С#
Что вы подразумеваете под массивом и какие типы массивов существуют в C#?
Коллекция схожих элементов, доступных через числовой индекс, называется массивом. Бывают одномерные массивы, двумерные массивы и jagged массивы.
Библиотека собеса по С#
Библиотека собеса по С#