TGViewer
Channel Public Channel
Библиотека собеса по C# | вопросы с собеседований

Библиотека собеса по C# | вопросы с собеседований

@csharp_interview_lib

Вопросы с собеседований по C# и ответы на них.

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

Учиться у нас: https://clc.to/QRJIVw

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

Наши каналы: https://t.me/proglibrary/9197
Subscribers
5.65K
Photos
309
Videos
7
Links
734

Showing posts older than #914 · Back to latest

Older Posts 20 shown
Post #913 1.52K
Как диагностировать в проде thread pool starvation и «sync-over-async» без перезапуска?

Снимайте EventPipe-метрики (dotnet-counters): ThreadPool Queue Length/Completed/Active, aspnetcore-критерии; берите короткий dotnet-trace CPU-сэмплинг, при необходимости дамп. Признаки — длинная очередь, мало воркеров, блокирующие стеки. Лечение: end-to-end async, убрать .Result/.Wait(), вынести долгие блокировки, при пиках поднять MinThread, но не маскировать корень.

Библиотека собеса по С#
Post #911 1.53K
Когда выбирать System.IO.Pipelines вместо Stream, и что важно для корректного парсинга?

Для высокопроизводительных протоколов/сокетов: PipeReader выдаёт ReadOnlySequence<byte> без копий, парсите инкрементально, учитывайте частичные сообщения, управляйте backpressure через AdvanceTo(consumed, examined), не требуйте непрерывной памяти, корректно завершайте Complete() и прокидывайте CancellationToken.

Библиотека собеса по С#
Post #910 1.63K
Как работать со временем и часовыми поясами без багов?

Храните время в UTC, наружу отдавайте DateTimeOffset. Избегайте DateTime.Now и Kind=Unspecified; для интервалов применяйте Stopwatch. Конвертацию делайте через TimeZoneInfo (с правилами DST), зависимости от времени инъецируйте через абстракцию часов (ISystemClock), время парсите/форматируйте в ISO-8601. Тестируйте переходы часовых поясов и «дырки» DST.

Библиотека собеса по С#
  • 👍 4
  • ❤ 1
Post #909 1.62K
Как защитить внешний API от перегрузки в .NET 7+ с предсказуемым throttling?

Используйте System.Threading.RateLimiting (Token/Fixed/Sliding/ConcurrencyLimiter) и middleware UseRateLimiter. Для per-user/per-key — политику с partitioner; задайте QueueProcessingOrder и длину очереди, чтобы получить backpressure или немедленные отказы. Оборачивайте вызовы Polly-политиками (timeouts/ретраи с джиттером).

Библиотека собеса по С#
  • ❤ 3
Post #908 1.81K
Как писать код, устойчивый к триммингу и AOT (NativeAOT/Blazor WASM)?

Избегайте неявной рефлексии/динамики; для JSON используйте source-generators (JsonSerializerContext), для DI — compile-time контейнеры или дескрипторы без сканирования. Помечайте необходимые члены DynamicallyAccessedMembers/DynamicDependency, держите TrimmerRootDescriptor/link.xml минимальным. Не делайте Assembly.GetTypes() без фильтров; проверяйте PublishTrimmed сборками и тестами.

Библиотека собеса по С#
Post #906 1.56K
Можете ли вы определить разницу между перегрузкой и переопределением?

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

Переопределение — позволяет вам изменить поведение метода в подклассе или дочернем классе.


Библиотека собеса по С#
  • 👍 1
Post #905 1.67K
Какова разница между IEnumerable и IQueryable при работе с удаленной базой данных?

IEnumerable представляет собой коллекцию данных, находящуюся в памяти, и позволяет перемещаться по этим данным только в одном направлении — вперед. В отличие от него, IQueryable находится в пространстве имен System.Linq и предоставляет возможность удаленного доступа к базе данных. Он позволяет перемещаться по данным как в прямом, так и в обратном порядке. При выполнении запроса происходит его оптимизация, что делает работу с данными более эффективной.

IEnumerable phoneIEnum = db.Phones;
var phones1 = phoneIEnum.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES, фильтрация на стороне клиента
IQueryable phoneIQuer = db.Phones;
int id = 3;
var phones2 = phoneIQuer.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES WHERE ID > 3

Библиотека собеса по С#
Post #904 1.39K
Что такое enum и когда его следует использовать?

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

Библиотека собеса по С#
  • 👍 1
Post #903 1.68K
Как правильно задавать таймауты и отмену в async-цепочке без конфликтов?

Держите один источник истины для отмены: передавайте общий CancellationToken вниз по стеку, избегайте вложенных таймаутов. Для HTTP вместо HttpClient.Timeout используйте Polly Timeout или CancellationTokenSource.CancelAfter, везде прокидывайте токен и корректно обрабатывайте OperationCanceledException.

Библиотека собеса по С#
  • 👍 2
Post #902 1.7K
Как запускать периодические задачи без дрейфа и гонок?

Используйте PeriodicTimer (.NET 6+) или цикл с Stopwatch и компенсацией дрейфа; исключайте реэнтрантность через SemaphoreSlim (single-flight); прокидывайте CancellationToken, пропускайте тик, если прошлый ещё идёт, и логируйте задержки.

Библиотека собеса по С#
Post #901 1.65K
✨ Halloween Special — последний день магии! 👻

Успевай сегодня купить курсы со скидкой 40%!

А также участвуй в розыгрыше MacBook Pro 14 💻

После полуночи останется только тыква 🎃

🔮 Открой портал и выбери курс
  • ❤ 1
Post #900 1.42K
Как запускать периодические задачи без дрейфа и гонок?

Используйте PeriodicTimer (.NET 6+) или цикл с Stopwatch и компенсацией дрейфа; исключайте реэнтрантность через SemaphoreSlim (single-flight); прокидывайте CancellationToken, пропускайте тик, если прошлый ещё идёт, и логируйте задержки.

Библиотека собеса по С#
Post #899 1.58K
Как спроектировать высокопроизводительную очередь задач без блокировок?

Используйте System.Threading.Channels: ограниченный Channel даёт backpressure, продюсеры пишут WriteAsync, консьюмеры читают ReadAllAsync параллельно, отмена через CancellationToken. Минимизируйте аллокации (ValueTask, пулы), избегайте глобальных lock, измеряйте throughput/latency и не перегружайте ThreadPool.

Библиотека собеса по С#
Post #898 1.53K
C#-навигация прямо в браузере? Да, теперь и такое есть! 👀

Для тех, кто работает с C#, приятные новости от SourceCraft. Платформа добавила умную навигацию, которая понимает связи между функциями и позволяет переходить по объявлениям прямо в веб-интерфейсе — как в вашей любимой IDE. 🔥

А ИИ-ассистент теперь дописывает методы на C
не изолированно, а в контексте всего проекта. Для команд с разнесёнными код-ревью или для быстрого онбординга новичков — просто находка. Можно даже коммитить правки из браузера, не теряя типизацию.
  • 🔥 2
  • 👍 1
  • 👏 1
Post #897 1.5K
Как устроить высокопроизводительную сериализацию JSON без лишних аллокаций?

Реюзайте один JsonSerializerOptions (кешируйте статически), используйте System.Text.Json с Utf8JsonWriter/IAsyncEnumerable<T> для стриминга, избегайте промежуточных строк, включайте source-generators (JsonSerializerContext) вместо рефлексии, буферизуйте через ArrayPool<byte> и пишите напрямую в PipeWriter/BodyWriter.

Библиотека собеса по С#
  • ❤ 1
Post #896 1.58K
Как стримить большие ответы в ASP.NET Core без лишних аллокаций и с backpressure?

Отдавайте поток через IAsyncEnumerable<T> или напрямую в HttpResponse.BodyWriter/PipeWriter, сериализуйте инкрементально (System.Text.Json + Utf8JsonWriter), везде прокидывайте CancellationToken, не буферизуйте весь ответ и контролируйте FlushAsync.

Библиотека собеса по С#
  • ❤ 1
Post #895 1.64K
Перечислите различные методы трассировки, представленные в ASP.NET?

Assert() проверяет условие и выводит сообщение, если условие ложно.
Close() очищает выходной буфер, а затем закрывает прослушиватели, чтобы они больше не получали отладочные выходные данные.
Fail() — этот метод выдает сообщение об ошибке.
GetType() используется для получения типа объекта.
ToString() возвращает строку, представляющую текущий объект.
GetHashCode() — метод работает как хэш-функция для определенного типа. Он подходит для использования в алгоритмах хэширования и структурах данных, таких как хэш-таблица.
Equals() определяет, является ли указанный объект тем же экземпляром, что и текущий объект.
Warn() имеет две формы. Первая форма записывает информацию трассировки в журнал трассировки, включая любые определенные пользователем категории.
Write() имеет две формы. Первая форма записывает информацию в журнал трассировки, включая любые определенные пользователем категории и сообщения.


Библиотека собеса по С#
  • 🤔 6
Post #894 1.4K
🤔 Как ускорить браузер

Закрой все вкладки со словами «MacBook», «купить ноутбук», «ноут в рассрочку». Потому что у нас есть решение лучше.

🔥 Proglib разыгрывает MacBook Pro 14. Формула простая: покупаешь любой курс до 15 ноября → учишься 2 недели → пишешь куратору #розыгрыш

Пока у тебя открыто 147 вкладок с ценами, кто-то уже прокачивает скилы и может забрать приз.

👉🏻 Выбрать курс для участия
  • 🥱 2
Post #893 1.47K
Почему алгоритм Дейкстры не работает с отрицательными рёбрами и что использовать вместо него?

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

Библиотека собеса по С#
Post #892 1.47K
Что вы подразумеваете под объектом в C#?

Реальная сущность, имеющая поведение и атрибуты, объект в C# представляет класс, к которому он принадлежит. Для своих функций-членов он выполняет распределение памяти.

Библиотека собеса по С#
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 →