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

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

رفتن به کانال در Telegram

Вопросы с собеседований по C# и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/4c2f1c3b Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

نمایش بیشتر
5 658
مشترکین
+324 ساعت
+37 روز
+6730 روز
آرشیو پست ها
В чем разница между понятиями 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 не требует инициализации переменной перед передачей в метод. Библиотека собеса по С#

Какой параметр можно использовать для возврата нескольких значений из функции? Ссылочные или выходные параметры можно использовать для возврата нескольких значений из функции. Библиотека собеса по С#

Можете ли вы определить разницу между перегрузкой и переопределением? Перегрузка — когда у вас есть два или более методов в одной области действия с одинаковым именем, но разными параметрами. Переопределение — позволяет вам изменить поведение метода в подклассе или дочернем классе. Библиотека собеса по С#

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

Как защитить внешний API от перегрузки в .NET 7+ с предсказуемым throttling? Используйте System.Threading.RateLimiting (Token/Fixed/Sliding/ConcurrencyLimiter) и middleware UseRateLimiter. Для per-user/per-key — политику с partitioner; задайте QueueProcessingOrder и длину очереди, чтобы получить backpressure или немедленные отказы. Оборачивайте вызовы Polly-политиками (timeouts/ретраи с джиттером). Библиотека собеса по С#

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

Как проектировать высокопроизводительные API без копий с Span<T>/ReadOnlySpan<T>? Принимайте вход как ReadOnlySpan<T>/Span<T>, возвращайте данные через ReadOnlyMemory<T>/Memory<T> для async-границ, избегайте удержания Span вне стека, используйте ref readonly/scoped где уместно, не создавать лишних строк/массивов, использовать пулы буферов и инкрементальный парсинг/запись. Библиотека собеса по С#

😱 Если ваш продукт не умеет отдавать данные в формате, понятном AI-агенту, то вас просто не существует Скрипт не будет кликать по красивым кнопкам в браузере, он уйдёт к конкуренту с нормальным API. Перестроить архитектуру под машинных клиентов — это уже не хайп, а необходимое условие сохранения конкурентоспособности. Как адаптировать продукт и не исчезнуть из выдачи: — интегрировать MCP и A2A-взаимодействие, чтобы агенты могли вас читать; — научиться контролировать стоимость (лимиты, кэш, роутинг между моделями); — настроить AgentOps: трейсинг, логирование и отлов регрессий. Всё это ждёт вас на обновлённом курсе «Разработка AI-агентов». Мы специально сделали фокус на утилитарном инжиниринге и production-ready решениях. Кстати, до 29 марта можно забрать курс с большой скидкой, и стоит поторопиться — мест на потоке всё меньше. Зафиксировать цену и начать деплоить агентов без слива бюджета 👈