Библиотека собеса по C# | вопросы с собеседований
5.66K subscribers
271 photos
6 videos
1 file
640 links
Вопросы с собеседований по C# и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/4c2f1c3b

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
В .NET Core приложении под высокой нагрузкой вы замечаете, что ответы API начинают задерживаться. Профилирование показывает блокировки потоков в ThreadPool. Как будете искать и устранять проблему?

Проверю, нет ли синхронных вызовов внутри async-методов (.Result, .Wait()), проанализирую contention на lock и тяжёлые операции в основном потоке. Для оптимизации — вынесу CPU-bound задачи в Task.Run или ProcessPool, ограничу параллелизм через SemaphoreSlim, а для I/O оставлю async/await без блокировок.

Библиотека собеса по С#
😁2
Каковы различные типы операторов принятия решений в C#?

Существуют различные типы операторов принятия решений, включенные в C#. Типами операторов могут быть оператор if, оператор if-else, оператор switch и оператор if-else-if.

Библиотека собеса по С#
🥱9
Объясните модификаторы доступа в C#.

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

Библиотека собеса по С#
Как реализовать шаблон проектирования Singleton в C#?

Мы можем реализовать шаблон проектирования синглтона в C#, используя:

✍🏻 Непотокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон;
✍🏻 Потокобезопасный синглтон с двойной проверкой блокировки;
✍🏻Потокобезопасный без блокировки;
✍🏻 Используя тип Lazy .NET 4.

Библиотека собеса по С#
🏃‍♀️ Как провести вечер вторника с пользой для карьеры?

Включайте кружок там личное приглашение от спикера. 👆

Уже завтра в прямом эфире, разбираем архитектуру контекста в мультиагентных системах.

🤫 Секретный лут:
промик на 5.000₽. Он достанется только тем, кто придет на прямой эфир.

👉 Регистрируйтесь на трансляцию
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему алгоритм Дейкстры не работает с отрицательными рёбрами и что использовать вместо него?

Короткий ответ: жадный выбор «замораживает» вершины, предполагая, что найденные расстояния минимальны; с отрицательными рёбрами это нарушается. Используйте Беллмана–Форда (O(VE)) для отрицательных рёбер и детекции отрицательных циклов или Джонсона для всех пар на разреженных графах. Кстати, у нас сейчас действует 40% скидка на курс Алгоритмы и структуры данных.

🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля.
🔗
Успеть на обучение

Библиотека собеса по С#
Что такое делегаты в C#?

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

Библиотека собеса по С#
Осталось всего 4 места на курс по ИИ-агентам. 30 апреля закрываем набор окончательно.

В ГС честно рассказали:
— Кому курс не подойдет;
— Какой хардкор в программе (LangGraph, AutoGen, CrewAI);
— Как мы даем токены, чтобы вы не тратили свои деньги.

🏃‍♀️ Записаться, пока есть места
Please open Telegram to view this post
VIEW IN TELEGRAM
Можете ли вы использовать «this» в статическом методе C#?

Нет, потому что «this» возвращает ссылку на текущий экземпляр того же класса, а статические методы не принадлежат какому-либо конкретному экземпляру, поскольку их можно вызывать только по имени класса.

Единственным исключением являются методы расширения, поскольку мы можем использовать «this» с первым параметром метода.


🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля.
🔗
Успеть на обучение

Библиотека собеса по С#
👍5
Можно ли в рамках lock и использовать await

Нет, в рамках оператора lock нельзя использовать await.

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

Если вы хотите использовать асинхронные операции с ожиданием, следует использовать другие механизмы синхронизации, такие как SemaphoreSlim, которые поддерживают асинхронное ожидание.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В высоконагруженном .NET Core сервисе вы замечаете рост задержек при обработке запросов. Профилирование показывает большое количество асинхронных задач в состоянии WaitingForActivation. Что это может означать и как решать проблему?

Это часто указывает на блокирующий код внутри async-методов (например, вызовы .Result или .Wait()), либо на долгие операции без await. Нужно убрать синхронные блокировки, использовать полноценный async/await, добавить таймауты, проверить сторонние библиотеки на наличие блокирующих вызовов и при необходимости вынести тяжёлые операции в отдельные потоки/процессы.

Библиотека собеса по С#
👍42
В .NET Core сервисе под высокой нагрузкой вы замечаете рост задержек и частые блокировки потоков при работе с БД. Как будете искать и устранять проблему?

Проверить, не используются ли синхронные вызовы (.Result, .Wait()), профилировать async-цепочки. Убедиться, что пул подключений к БД настроен корректно, и что долгие операции не блокируют ThreadPool. Решение — переписать на полноценный async/await, оптимизировать запросы, при необходимости ограничить параллелизм через SemaphoreSlim или использовать кэширование.

Библиотека собеса по С#
🔥2😢1
В ASP.NET Core под нагрузкой растёт хвост задержек: CPU низкий, но наблюдаются пики длины очереди ThreadPool и таймауты HttpClient. Где искать корень проблемы и как её устранить?

Это типичный признак thread pool starvation из-за sync-over-async: блокировки .Result/.Wait(), синхронные I/O или тяжёлая синхронная работа в request-потоках. Диагностика — EventCounters/PerfView (ThreadPool QueueLength, Contentions), анализ async-стека. Решение — сделать путь запроса полностью асинхронным (DB/HTTP/FS), убрать блокировки, вынести CPU-bound в Task.Run/фоновые очереди, корректно использовать HttpClientFactory, и как временную меру — поднять ThreadPool.SetMinThreads.

Библиотека собеса по С#
Какой результат выдаст программа ниже?

Ответ:
Эта программа выведет число «10» десять раз.

И вот почему: delegate добавляется циклически, однако параметр i передаётся по ссылке. Поэтому, по окончании цикла i равно 10, и при каждом запуске delegate будет выводиться работать с этим значением.
9👍2😁1
Как используется property?

Свойство — это обёртка вокруг поля. Свойство используется как для присвоения, так и для чтения значения из поля с помощью методов set и get. Свойство можно создать для различных полей, таких как закрытые, открытые, защищённые и внутренние.

Библиотека собеса по С#
👍2🥱2
В ASP.NET Core у вас async-метод защищает кэш обычным lock и делает await внутри критической секции. Под нагрузкой — залипания и просадка RPS. В чём проблема и как починить?

await внутри lock держит монитор и блокирует потоки → contention/starvation и возможные deadlock’и. Решение: не делать await под lock; использовать ConcurrentDictionary (например, GetOrAdd с Lazy<Task<T>>) или асинхронную синхронизацию (SemaphoreSlim/AsyncLock, часто per-key), выносить await за пределы критической секции.

Библиотека собеса по С#
🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)?

Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало».

🗓 Когда: 14 мая в 19:00 МСК
⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы

🧑🏻‍💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы.

🎁 Главный бонус для онлайна:
Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps.

👉 Занять место на вебинаре
Что такое AJAX в ASP.NET?

Полная форма ASP.NET AJAX — это асинхронный JavaScript и XML. ASP.NET AJAX, также известный как AJAX, представляет собой набор дополнений ASP.NET. Он использует асинхронную передачу данных между браузером и веб-сервером, чтобы веб-страницы могли запрашивать небольшие фрагменты информации с сервера вместо целых страниц. Этот метод делает интернет-приложения меньше, быстрее и удобнее для пользователя. Он создан корпорацией Microsoft для выполнения функций AJAX в веб-приложениях. ASP.NET AJAX работает с библиотекой AJAX, которая использует объектно-ориентированное программирование (ООП) для более быстрых многофункциональных веб-приложений.

Библиотека собеса по С#
1
Как запускать один периодический джоб на весь кластер ASP.NET Core без внешнего планировщика?

Оберните BackgroundService в распределённый lock (Redis SET NX PX, Postgres advisory lock и т.п.) с heartbeats/TTL и авто-продлением; выполняйте работу только у лидера. Делайте задачи идемпотентными, держите дедлайны/отмену, при потере lock — немедленно завершайте цикл. Сохраняйте «курсор прогресса» в БД.

Библиотека собеса по С#
👍1
Как правильно реализовать освобождение ресурсов в IAsyncDisposable?

Короткий ответ: Реализуйте шаблон с охраной от повторного вызова: DisposeAsync() вызывает приватный DisposeAsyncCore() и синхронный Dispose(false), закрывает IAsyncDisposable ресурсы через await using, остальные — в Dispose. Используйте AsyncLazy/флаг disposed, прокидывайте CancellationToken только там, где это безопасно, и учитывайте, что await using всегда вызывает именно DisposeAsync().

Библиотека собеса по С#