Библиотека собеса по C# | вопросы с собеседований
الذهاب إلى القناة على Telegram
Вопросы с собеседований по C# и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://clc.to/QRJIVw Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
إظهار المزيد5 642
المشتركون
+324 ساعات
+57 أيام
+1230 أيام
أرشيف المشاركات
Что такое деструктор в C# и когда он используется?
Деструктор — это специальный метод в C#, который автоматически вызывается при уничтожении объекта. Он используется для освобождения любых ресурсов, которые мог использовать объект, таких как память или файлы. Деструкторы обычно реализуются в классе и обозначаются ключевым словом ~, за которым следует имя класса. Например, если класс с именем MyClass должен иметь деструктор, он будет объявлен следующим образом: ~MyClass().
Библиотека собеса по С#
Можете ли вы рассказать, в чем разница между константой и значением, доступным только для чтения?
Переменная только для чтения — константа времени выполнения. Const — константа времени компиляции.
Библиотека собеса по С#
🏃♀️ Мы собрали бесплатный мега-гайд по ии-агентам 👇
В первой части постов навалили жесткой базы, чтобы вправить мозги на место. Во второй дали конкретные инструменты, фреймворки и пошаговые инструкции, что нужно кодить прямо сейчас.
Часть 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. «Как сделать, чтобы это не развалилось через неделю?»
👍 Сохраняйте пост в избранное, чтобы не потерять.
🤫 А завтра стартует наш курс по ии-агентам
Как осуществляется инкапсуляция в C#?
Спецификаторы доступа помогают реализовать инкапсуляцию в C#. Область действия и видимость члена класса определяются этими спецификаторами доступа.
С помощью спецификаторов открытого доступа класс может предоставлять свои переменные-члены и функции другим объектам и функциям. Как только член становится открытым, к нему можно получить доступ извне класса.
С помощью спецификаторов закрытого доступа класс может скрывать свои переменные-члены и функции от других объектов и функций. Доступ к закрытым членам класса могут получить только функции того же класса. Даже экземпляры того же класса не имеют доступа к его закрытым членам.
Защищенные спецификаторы доступа похожи на спецификаторы закрытого доступа, поскольку к ним нельзя получить доступ извне класса. Однако к защищенным членам класса может получить доступ и любой подкласс этого класса. Это позволяет реализовать наследование.
Библиотека собеса по С#
Почему в C# используются Async и Await?
Если у нас есть программа, которая требует, чтобы методы запускались независимо от основного процесса, нам нужно использовать асинхронное программирование. Это позволяет нам запускать процессы и, при необходимости, заставлять их ждать, не блокируя остальную часть программы.
Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.
Библиотека собеса по С#
🤖 Ваш ИИ-агент съедает бюджет на токены и падает при сбоях API?
Пора переходить на новый уровень. Открыли продажи курса по AgentOps — управлению ИИ-агентами в рабочих процессах.
Рынок требует инженеров, которые умеют:
• Контролировать метрики и качество ответов;
• Эффективно работать с RAG-архитектурой;
• Строить системы, готовые к реальным нагрузкам.
Обучение займет 6-12 недель под руководством практиков с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, МТС, Huawei, Raft и др.
🎁 Можно подождать, пока про AgentOps начнут говорить все. Или зайти сейчас — НА 30% ДЕШЕВЛЕ!
Работа с AI начинается с систем. Системы — с AgentOps.🔥 Забрать скидку и изучить программу.
Как поддерживать сессии в MVC ASP .NET?
Мы можем поддерживать сессии в MVC тремя различными способами:
— Временные данные
— Просмотр данных
— Просмотр сумки
Библиотека собеса по С#
В чем разница между понятиями namespace и assembly?
Namespace (пространство имен) является логическим соглашением, используемым во время разработки, в то время как assembly (сборка) устанавливает область видимости имени в процессе выполнения.
Библиотека собеса по С#
Что вы подразумеваете под массивом и какие типы массивов существуют в C#?
Коллекция схожих элементов, доступных через числовой индекс, называется массивом. Бывают одномерные массивы, двумерные массивы и jagged массивы.
Библиотека собеса по С#
❓ Как ViewModel взаимодействует с Model в паттерне MVVM
ViewModel взаимодействует с Model, запрашивая и преобразуя данные для отображения в UI. Она использует привязку данных для обновления UI и обрабатывает действия пользователя, инициируя изменения в Model. ViewModel служит посредником между View и Model, обеспечивая логику преобразования данных, но не содержащую логику представления. Это позволяет разделить ответственность: Model управляет данными, View — отображением, а ViewModel — взаимодействием между ними.
🐸Библиотека собеса по С#
Объясните, что такое локальные и глобальные ресурсы?
Локальный ресурс явно относится к определенной странице, которая является той, которая может получить к нему доступ, в то время как глобальные ресурсы могут быть доступны из любого места. Локальные ресурсы хранятся в органайзере App_LocalResources, в то время как глобальные хранятся в папке App_GlobalResources. Записи локальных и глобальных ресурсов будут выглядеть идентичными, поэтому единственным различием будет папка, в которой они находятся. Но они используются по-разному.
Библиотека собеса по С#
В проде на 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).
Библиотека собеса по С#
Как проектировать высокопроизводительные API без копий с Span<T>/ReadOnlySpan<T>?
Принимайте вход как ReadOnlySpan<T>/Span<T>, возвращайте данные через ReadOnlyMemory<T>/Memory<T> для async-границ, избегайте удержания Span вне стека, используйте ref readonly/scoped где уместно, не создавать лишних строк/массивов, использовать пулы буферов и инкрементальный парсинг/запись.
Библиотека собеса по С#
Что такое GAC? Возможно ли поместить два файла с одинаковым именем в Global Assembly Cache?
GAC (Global Assembly Cache) — глобальный кэш сборок, место где хранятся разделяемые сборки. В GAC нельзя помещать полностью одинаковые сборки (сборки с полностью совпадающим сложным именем). Сложное имя сборки состоит из нескольких частей:
✍🏻 Имя сборки без расширения
✍🏻 Номер версии. Благодаря разграничению по версии можно хранить разные версии одной и ой же сборки
✍🏻 Открытый ключ
✍🏻 Необязательное значение для культуры (при локализации сборки)
✍🏻 Цифровая подпись, которая создается с помощью хэш-значения содержимого сборки и значения секретного ключа. Секретный ключ представляет собой файл с расширением *.snk. Если совпадают у двух сборок только имена сборки, а все остальное отличается, то их можно помещать в GAC вместе.
Библиотека собеса по С#
Многопоточность работает, пока не появляется гонка данных. Код корректный, но периодически возникают ошибки, которые сложно воспроизвести и объяснить.
👩💻 Приглашаем на открытый урок «Облегчённые (Slim) примитивы синхронизации»
🗓 16 апреля в 20:00 МСК
🆓 На открытом уроке рассмотрим:
✔️ Проблему синхронизации доступа к общему ресурсу в многопоточном приложении в рамках внутрипроцессного взаимодействия;
✔️ Разберём классическую задачу читателей–писателей и её реализацию с использованием примитивов синхронизации из пространства имён System.Threading;
✔️ Отдельно обсудим, в каких случаях облегчённые версии примитивов (например, SemaphoreSlim и ReaderWriterLockSlim) оказываются эффективнее стандартных решений, таких как Monitor, Mutex и конструкция lock.
Для кого:
Вебинар будет полезен разработчикам, которые уже знакомы с базовыми механизмами синхронизации в .NET и хотят углубить понимание инструментов, предоставляемых стандартной библиотекой для построения безопасных и производительных многопоточных приложений.
🔗 Ссылка на регистрацию: https://clc.to/7taYGQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как ускорить EF Core под высокую нагрузку без лишних аллокаций и N+1?
Для чтения — AsNoTracking и проекции Select на DTO, избегайте широких Include; используйте compiled queries и параметризацию, дробите кардинальность AsSplitQuery, для массовых правок — ExecuteUpdate/Delete или bulk-библиотеки; объединяйте SaveChanges, держите DbContext краткоживущим (скоуп) и следите за N+1 через логирование.
Библиотека собеса по С#
Как правильно задавать таймауты и отмену в async-цепочке без конфликтов?
Держите один источник истины для отмены: передавайте общий CancellationToken вниз по стеку, избегайте вложенных таймаутов. Для HTTP вместо HttpClient.Timeout используйте Polly Timeout или CancellationTokenSource.CancelAfter, везде прокидывайте токен и корректно обрабатывайте OperationCanceledException.
Библиотека собеса по С#
Почему 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>>.
🐸Библиотека собеса по С#
Назовите различные способы передачи параметров методу в C#.
Существует три способа передачи параметров:
📌 Параметры значений
📌 Ссылочные параметры
📌 Выходные параметры
Библиотека собеса по С#
В чем разница в ключевых словах ref и out?
Основное различие между ключевыми словами ref и out в C# заключается в том, что ref требует, чтобы переменная была инициализирована перед передачей в метод, тогда как ключевое слово out не требует инициализации переменной перед передачей в метод.
Библиотека собеса по С#
