Можете ли вы определить разницу между перегрузкой и переопределением?
Перегрузка — когда у вас есть два или более методов в одной области действия с одинаковым именем, но разными параметрами.
Переопределение — позволяет вам изменить поведение метода в подклассе или дочернем классе.
Библиотека собеса по С#
Переопределение — позволяет вам изменить поведение метода в подклассе или дочернем классе.
Библиотека собеса по С#
Какой параметр можно использовать для возврата нескольких значений из функции?
Ссылочные или выходные параметры можно использовать для возврата нескольких значений из функции.
Библиотека собеса по С#
Библиотека собеса по С#
В чем разница в ключевых словах ref и out?
Основное различие между ключевыми словами ref и out в C# заключается в том, что ref требует, чтобы переменная была инициализирована перед передачей в метод, тогда как ключевое слово out не требует инициализации переменной перед передачей в метод.
Библиотека собеса по С#
Библиотека собеса по С#
Назовите различные способы передачи параметров методу в C#.
Существует три способа передачи параметров:
📌 Параметры значений
📌 Ссылочные параметры
📌 Выходные параметры
Библиотека собеса по С#
📌 Параметры значений
📌 Ссылочные параметры
📌 Выходные параметры
Библиотека собеса по С#
Почему Span<T>/ReadOnlySpan<T> — это ref struct, что это запрещает (heap/async/итераторы/лямбды), и как передавать “срезы” через async-границы?
ref struct → только стек: нельзя боксить, хранить в полях классов, захватывать в замыканиях, использовать в async/итераторах — их состояния живут в куче, что небезопасно для byref-типов.
Используйте Span<T> локально и синхронно; создавайте через stackalloc, слайсинг O(1).
Для перехода через async/долгоживущего хранения берите Memory<T>/ReadOnlyMemory<T>; по месту обратно получайте .Span.
Нельзя возвращать/принимать Task<Span<T>>; нужно Task<Memory<T>>.
🐸 Библиотека собеса по С#
Используйте Span<T> локально и синхронно; создавайте через stackalloc, слайсинг O(1).
Для перехода через async/долгоживущего хранения берите Memory<T>/ReadOnlyMemory<T>; по месту обратно получайте .Span.
Нельзя возвращать/принимать Task<Span<T>>; нужно Task<Memory<T>>.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Как правильно задавать таймауты и отмену в async-цепочке без конфликтов?
Держите один источник истины для отмены: передавайте общий CancellationToken вниз по стеку, избегайте вложенных таймаутов. Для HTTP вместо HttpClient.Timeout используйте Polly Timeout или CancellationTokenSource.CancelAfter, везде прокидывайте токен и корректно обрабатывайте OperationCanceledException.
Библиотека собеса по С#
Библиотека собеса по С#
Как ускорить EF Core под высокую нагрузку без лишних аллокаций и N+1?
Для чтения — AsNoTracking и проекции Select на DTO, избегайте широких Include; используйте compiled queries и параметризацию, дробите кардинальность AsSplitQuery, для массовых правок — ExecuteUpdate/Delete или bulk-библиотеки; объединяйте SaveChanges, держите DbContext краткоживущим (скоуп) и следите за N+1 через логировани е.
Библиотека собеса по С#
Для чтения — AsNoTracking и проекции Select на DTO, избегайте широких Include; используйте compiled queries и параметризацию, дробите кардинальность AsSplitQuery, для массовых правок — ExecuteUpdate/Delete или bulk-библиотеки; объединяйте SaveChanges, держите DbContext краткоживущим (скоуп) и следите за N+1 через логировани
Библиотека собеса по С#
👍2❤1
Что такое GAC? Возможно ли поместить два файла с одинаковым именем в Global Assembly Cache?
GAC (Global Assembly Cache) — глобальный кэш сборок, место где хранятся разделяемые сборки. В GAC нельзя помещать полностью одинаковые сборки (сборки с полностью совпадающим сложным именем). Сложное имя сборки состоит из нескольких частей:
✍🏻 Имя сборки без расширения
✍🏻 Номер версии. Благодаря разграничению по версии можно хранить разные версии одной и ой же сборки
✍🏻 Открытый ключ
✍🏻 Необязательное значение для культуры (при локализации сборки)
✍🏻 Цифровая подпись, которая создается с помощью хэш-значения содержимого сборки и значения секретного ключа. Секретный ключ представляет собой файл с расширением *.snk. Если совпадают у двух сборок только имена сборки, а все остальное отличается, то их можно помещать в GAC вместе.
Библиотека собеса по С#
GAC (Global Assembly Cache) — глобальный кэш сборок, место где хранятся разделяемые сборки. В GAC нельзя помещать полностью одинаковые сборки (сборки с полностью совпадающим сложным именем). Сложное имя сборки состоит из нескольких частей:
✍🏻 Имя сборки без расширения
✍🏻 Номер версии. Благодаря разграничению по версии можно хранить разные версии одной и ой же сборки
✍🏻 Открытый ключ
✍🏻 Необязательное значение для культуры (при локализации сборки)
✍🏻 Цифровая подпись, которая создается с помощью хэш-значения содержимого сборки и значения секретного ключа. Секретный ключ представляет собой файл с расширением *.snk. Если совпадают у двух сборок только имена сборки, а все остальное отличается, то их можно помещать в GAC вместе.
Библиотека собеса по С#
Как проектировать высокопроизводительные API без копий с Span<T>/ReadOnlySpan<T>?
Принимайте вход как ReadOnlySpan<T>/Span<T>, возвращайте данные через ReadOnlyMemory<T>/Memory<T> для async-границ, избегайте удержания Span вне стека, используйте ref readonly/scoped где уместно, не создавать лишних строк/массивов, использовать пулы буферов и инкрементальный парсинг/запись.
Библиотека собеса по С#
Библиотека собеса по С#
В проде на 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).
Библиотека собеса по С#
Библиотека собеса по С#
👍3🤔1
Объясните, что такое локальные и глобальные ресурсы?
Локальный ресурс явно относится к определенной странице, которая является той, которая может получить к нему доступ, в то время как глобальные ресурсы могут быть доступны из любого места. Локальные ресурсы хранятся в органайзере App_LocalResources, в то время как глобальные хранятся в папке App_GlobalResources. Записи локальных и глобальных ресурсов будут выглядеть идентичными, поэтому единственным различием будет папка, в которой они находятся. Но они используются по-разному.
Библиотека собеса по С#
Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что вы подразумеваете под массивом и какие типы массивов существуют в C#?
Коллекция схожих элементов, доступных через числовой индекс, называется массивом. Бывают одномерные массивы, двумерные массивы и jagged массивы.
Библиотека собеса по С#
Библиотека собеса по С#
В чем разница между понятиями namespace и assembly?
Namespace (пространство имен) является логическим соглашением, используемым во время разработки, в то время как assembly (сборка) устанавливает область видимости имени в процессе выполнения.
Библиотека собеса по С#
Библиотека собеса по С#
❤1
Как поддерживать сессии в MVC ASP .NET?
Мы можем поддерживать сессии в MVC тремя различными способами:
— Временные данные
— Просмотр данных
— Просмотр сумки
Библиотека собеса по С#
— Временные данные
— Просмотр данных
— Просмотр сумки
Библиотека собеса по С#
🌚5
🤖 Ваш ИИ-агент съедает бюджет на токены и падает при сбоях API?
Пора переходить на новый уровень. Открыли продажи курса по AgentOps — управлению ИИ-агентами в рабочих процессах.
Рынок требует инженеров, которые умеют:
• Контролировать метрики и качество ответов;
• Эффективно работать с RAG-архитектурой;
• Строить системы, готовые к реальным нагрузкам.
Обучение займет 6-12 недель под руководством практиков с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, МТС, Huawei, Raft и др.
🎁 Можно подождать, пока про AgentOps начнут говорить все. Или зайти сейчас — НА 30% ДЕШЕВЛЕ!
🔥 Забрать скидку и изучить программу.
Пора переходить на новый уровень. Открыли продажи курса по AgentOps — управлению ИИ-агентами в рабочих процессах.
Рынок требует инженеров, которые умеют:
• Контролировать метрики и качество ответов;
• Эффективно работать с RAG-архитектурой;
• Строить системы, готовые к реальным нагрузкам.
Обучение займет 6-12 недель под руководством практиков с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, МТС, Huawei, Raft и др.
🎁 Можно подождать, пока про AgentOps начнут говорить все. Или зайти сейчас — НА 30% ДЕШЕВЛЕ!
Работа с AI начинается с систем.
Системы — с AgentOps.
🔥 Забрать скидку и изучить программу.
Почему в C# используются Async и Await?
Если у нас есть программа, которая требует, чтобы методы запускались независимо от основного процесса, нам нужно использовать асинхронное программирование. Это позволяет нам запускать процессы и, при необходимости, заставлять их ждать, не блокируя остальную часть программы.
Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.
Библиотека собеса по С#
Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.
Библиотека собеса по С#
🥱6👍1🌚1👾1
Как осуществляется инкапсуляция в C#?
Спецификаторы доступа помогают реализовать инкапсуляцию в C#. Область действия и видимость члена класса определяются этими спецификаторами доступа.
С помощью спецификаторов открытого доступа класс может предоставлять свои переменные-члены и функции другим объектам и функциям. Как только член становится открытым, к нему можно получить доступ извне класса.
С помощью спецификаторов закрытого доступа класс может скрывать свои переменные-члены и функции от других объектов и функций. Доступ к закрытым членам класса могут получить только функции того же класса. Даже экземпляры того же класса не имеют доступа к его закрытым членам.
Защищенные спецификаторы доступа похожи на спецификаторы закрытого доступа, поскольку к ним нельзя получить доступ извне класса. Однако к защищенным членам класса может получить доступ и любой подкласс этого класса. Это позволяет реализовать наследование.
Библиотека собеса по С#
С помощью спецификаторов открытого доступа класс может предоставлять свои переменные-члены и функции другим объектам и функциям. Как только член становится открытым, к нему можно получить доступ извне класса.
С помощью спецификаторов закрытого доступа класс может скрывать свои переменные-члены и функции от других объектов и функций. Доступ к закрытым членам класса могут получить только функции того же класса. Даже экземпляры того же класса не имеют доступа к его закрытым членам.
Защищенные спецификаторы доступа похожи на спецификаторы закрытого доступа, поскольку к ним нельзя получить доступ извне класса. Однако к защищенным членам класса может получить доступ и любой подкласс этого класса. Это позволяет реализовать наследование.
Библиотека собеса по С#
❤1
В первой части постов навалили жесткой базы, чтобы вправить мозги на место. Во второй дали конкретные инструменты, фреймворки и пошаговые инструкции, что нужно кодить прямо сейчас.
Часть 1. Введение, юзкейсы и реальность
Разбираемся с терминами, снимаем розовые очки и смотрим, где ИИ реально приносит бабки, а где только жжет нервы:
1. «Так что вообще считается AI-агентом?»
2. «Где тут бот, а где уже AI-агент?»
3. «Не надо пихать AI-агента в каждую задачу»
4. «Что уже можно спокойно делать через AI-агентов?»
5. «А что через AI-агентов пока лучше не трогать?»
Часть 2. Изнанка, ошибки и архитектура
Как всё это устроено под капотом, чтобы не слить бюджет и не наломать дров на старте:
6. «Можно ли просто сесть вечером и собрать себе AI-агента?»
7. «С чего вообще начать, если хочется попробовать AI-агентов»
8. «Почему AI-агент может внезапно начать творить дичь»
9. «Где AI-агенты реально экономят время, а где только добавляют возни»
10. «Почему они жрут столько денег?»
Часть 3. Хардкорная практика (Что делать руками)
Хватит теории. Открываем ноут, запускаем Cursor и делаем нормальные, отказоустойчивые системы:
11. «Почему одного промпта мало?»
12. «Почему AI-агенту мало просто “дать доступ к данным”»
13. «Если не следить за AI-агентом, он быстро начинает жить своей жизнью»
14. «Собрать демку легко. Но как же сделать нормально»
15. «Как сделать, чтобы это не развалилось через неделю?»
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1🤔1
Можете ли вы рассказать, в чем разница между константой и значением, доступным только для чтения?
Переменная только для чтения — константа времени выполнения. Const — константа времени компиляции.
Библиотека собеса по С#
Библиотека собеса по С#