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

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

Открыть в Telegram

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

Больше
5 642
Подписчики
+324 часа
+57 дней
+1230 день
Архив постов
Какова разница между 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 Библиотека собеса по С#

Где вы читаете полезный IT-контент? Интересуют источники, где не только новости, но и практика, разборы и реальные кейсы. Поделитесь в комментариях, можно 1-2 канала/автора, где читаете (TG / Habr / блог / X / GitHub) и какая тематика?

В чем разница между кастомным контролем и пользовательским контролем? Кастомные элементы управления — это элементы управления скомпилированного кода (DLL), которые проще использовать и которые можно добавлять в набор инструментов. Разработчики могут добавлять элементы управления в свои веб-формы, перетаскивая их. Атрибуты можно добавлять в процессе проектирования. Кастомные элементы управления можно легко добавлять в несколько приложений (если это общие Dll). Поэтому, если они являются частными, мы можем скопировать dll в каталог bin веб-приложения, добавить ссылку и использовать их. Пользовательские элементы управления похожи на ASP, включая файлы, в том, что их просто создавать. Пользовательские элементы управления нельзя перетаскивать в набор инструментов. У них есть собственный дизайн и код. Ascx — это расширение файла для пользовательских элементов управления. Библиотека собеса по С#

Какими способами можно перегрузить метод? Методы могут быть перегружены с помощью различных типов данных для параметра, нескольких порядков параметров и различного количества параметров. Библиотека собеса по С#

Как работает async/await и роль SynchronizationContext? async/await преобразует метод в машину состояний. При await выполнение приостанавливается, а продолжение может быть запланировано на исходном SynchronizationContext (например, UI-поток). В ASP.NET Core его нет, и продолжение выполняется в ThreadPool. ConfigureAwait(false) отключает возврат в контекст. Библиотека собеса по С#

Что такое Span<T> и Memory<T> в C# и в чём между ними разница? Span<T> — это ref-структура, представляющая непрерывный участок памяти (массив, стек, неуправляемая память) без аллокаций в куче. Позволяет работать с подмассивами, строками и буферами без копирования. Так как это ref struct, Span<T> живёт только на стеке: его нельзя сохранять в полях класса, использовать в async-методах, итераторах или захватывать в лямбдах. Memory<T> — обычная структура с теми же возможностями по представлению участка памяти, но без ограничений ref-структуры. Её можно хранить в полях, передавать через await, использовать в асинхронном коде. Получить Span<T> из Memory<T> можно через свойство .Span. Правило выбора: Span<T> — для синхронного, горячего кода с максимальной производительностью; Memory<T> — когда нужно пересечь границы async/await или сохранить ссылку на буфер. Библиотека собеса по С#

Что делает ключевое слово var в C#? Компилятор выводит статический тип переменной по правой части выражения. Это не dynamic: тип фиксируется на этапе компиляции. Нельзя использовать без инициализации и менять тип этой переменной позже. Библиотека собеса по С#

Как можно использовать шаблон проектирования Singleton в C#? Шаблон проектирования Singleton используется в C# в ситуации, когда класс имеет один экземпляр и доступ предоставляется всем. 🐸Библиотека собеса по С#

Напишите программу для сложения всех чётных чисел в массиве Ответ: static long TotalAllNum(int[] intArray) { return intArray.Where(i => i % 2 == 0).Sum(i => (long)i); } Библиотека собеса по С#

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

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

Объясните, как работают асинхронные делегаты в C#, и как они могут быть использованы для улучшения производительности приложений? Асинхронные делегаты в C# позволяют выполнить метод асинхронно в отдельном потоке. Это делается с помощью методов BeginInvoke и EndInvoke. BeginInvoke запускает метод асинхронно, а EndInvoke ожидает завершения метода и возвращает результат. Асинхронные делегаты полезны для выполнения длительных операций, таких как I/O операции или сложные вычисления, без блокирования основного потока выполнения. Это улучшает отзывчивость приложения, особенно в GUI-приложениях, где важно поддерживать активный пользовательский интерфейс, в то время как выполняются фоновые задачи. Однако, следует управлять ресурсами и обрабатывать исключения при использовании асинхронных делегатов, чтобы избежать утечек памяти и других проблем. Библиотека собеса по С#

🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев Эмиль — эксперт с 8-летним опытом в разработке, который специализиру
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами. 🏃‍♀️ Уже 14 мая Эмиль проведет открытый вебинар! Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало». 🗓 Когда: 14 мая в 19:00 (Мск) Почему Эмиля стоит послушать: 🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
🟣 Международный исследовательский опыт
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
🟣 Преподаватель-практик
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
🟣 Мастер интеграции AI в Backend
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
🔗 Зарегистрироваться на вебинар

В Unity-проекте вы замечаете, что FPS резко проседает при активации новых объектов на сцене. Как вы будете искать и устранять проблему? Сначала проверю профайлером (Unity Profiler, Deep Profile), чтобы понять, тратится ли время на Instantiate, GC или загрузку ассетов. Для оптимизации — применю Object Pooling вместо частого создания/уничтожения объектов, использую Addressables для асинхронной подгрузки, а также разделю тяжёлые операции на несколько кадров (coroutines/Jobs). Библиотека собеса по С#

Когда выбирать struct/record struct вместо class? Для маленьких, неизменяемых и часто копируемых значений (≤ ~16–32 байт), где важна локальность и отсутствие аллокаций. Нужны структурное равенство/with — берите record struct. Если объект крупный/мутабельный/долго живёт — используйте class. Библиотека собеса по С#

🗓 14 мая в 19:00 (Мск) встречаемся в онлайне. Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало. В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать. Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM. - Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества. - Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы. 👉 Зарегистрироваться на вебинар

Видеосообщение00:40

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

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

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