es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

C# | Вопросы собесов

C# | Вопросы собесов

Ir al canal en Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

Mostrar más
5 015
Suscriptores
+224 horas
+37 días
+2330 días
Archivo de publicaciones
🤔 Что такое принцип подстановки Барбары Лисков? Принцип подстановки Лисков (LSP) гласит, что объект производного класса должен быть взаимозаменяем с объектом базового класса без нарушения корректности программы. 1. Наследники не должны изменять поведение, ожидаемое от базового класса. 2. Нарушение LSP приводит к труднообнаруживаемым ошибкам и нарушению принципов SOLID. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница между асинхронностью и многопоточностью? Это два различных, но часто связанных понятия, которые используются для управления выполнением задач таким образом, чтобы повысить эффективность и отзывчивость приложений. Хотя они оба направлены на оптимизацию выполнения программ, между ними есть ключевые различия в подходах и использовании. 🟠Асинхронность Это подход, при котором задача может выполняться независимо от основного потока программы, и не блокирует его выполнение в ожидании завершения. Это позволяет программе продолжать работу, пока выполняется асинхронная операция, например, доступ к файлу или сетевой запрос. Ключевая особенность асинхронности заключается в том, что она позволяет обрабатывать задачи без блокировки, улучшая отзывчивость и производительность приложения, особенно в средах с графическим интерфейсом пользователя или в серверных приложениях. 🟠Многопоточность Это подход, при котором несколько потоков исполнения работают параллельно, что позволяет выполнять несколько операций одновременно. Это может быть реализовано как на одном процессоре с использованием временной мультиплексированной многозадачности, так и на многоядерных процессорах, где каждый поток может выполняться фактически одновременно на своем ядре. Многопоточность идеально подходит для задач, требующих тяжелых вычислений, и может значительно ускорить выполнение программы за счет распараллеливания работы. 🚩Ключевые различия 🟠Цели использования Асинхронность обычно используется для улучшения отзывчивости приложений и эффективного использования ожидания (например, I/O операции), тогда как многопоточность применяется для ускорения выполнения вычислительно сложных задач за счет параллелизма. 🟠Управление ресурсами Асинхронные операции часто управляются операционной системой и могут использовать меньше ресурсов, поскольку не требуют постоянного выделения отдельного потока. Многопоточность требует более активного управления потоками, что может привести к большему потреблению памяти и процессорного времени. 🟠Сложность разработки Работа с многопоточностью часто более сложна из-за необходимости синхронизации доступа к общим ресурсам и управления состоянием, что может привести к ошибкам, таким как взаимные блокировки и состояния гонки. Асинхронное программирование также требует понимания, но оно более структурировано и часто управляется с помощью высокоуровневых паттернов и библиотек. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что если покрыть код контроллера тестами? 1. Это повысит уверенность в правильности работы контроллера, проверяя маршруты, валидацию и ответы. 2. Однако это не заменяет тестирование бизнес-логики, которая должна тестироваться на уровне сервисов. 3. Тесты контроллера полезны для проверки интеграции, но их переизбыток может затруднить обслуживание. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

ВитаМишки - мощный заряд детского иммунитета! 📅 Осень — время возвращаться к привычному ритму: школа, секции, ранние подъёмы
ВитаМишки - мощный заряд детского иммунитета! 📅 Осень — время возвращаться к привычному ритму: школа, секции, ранние подъёмы. Для ребёнка это серьёзная адаптация: новый график, стресс, тесные помещения, контакт с большим количеством людей. Помогите иммунитету справиться с нагрузкой — начните приём ВитаМишки Smart Fruits IMMUNO+. ✅ Витамины С, D3 и цинк участвуют в выработке иммунных клеток и поддерживают защитные силы. ✅ Витамин Е и селен — мощные антиоксиданты, защищающие организм изнутри. ✅ Экстракт облепихи укрепляет и оказывает общеоздоравливающее действие. Сделано на основе натуральных соков, без красителей и ароматизаторов. Забота, которую дети принимают с удовольствием. ВитаМишки Smart Fruits — дети обожают, мамы — доверяют! Перейти на сайт Не является лекарством #реклама vitamishki.ru О рекламодателе

🤔 Возможно ли как-нибудь ограничить типы, которые пользователь будет передавать через шаблон? Можно ограничить типы, которые передаются в шаблоны (generics), с помощью ключевого слова where. Это позволяет указать, какие типы подходят для использования, обеспечивая безопасность и предсказуемость кода. Вот основные виды ограничений: 🟠Класс или структура where T : class — только классы. where T : struct — только структуры. 🟠Интерфейс Указание интерфейса, который должен реализовать тип:
   public class MyClass<T> where T : IDisposable { }
   
🟠Базовый класс Указание, что тип должен быть наследником определённого класса:
   public class MyClass<T> where T : Exception { }
   
🟠Конструктор Ограничение на наличие конструктора без параметров:
   public class MyClass<T> where T : new() { }
   
🟠Комбинированные ограничения Можно объединять несколько условий:
   public class MyClass<T> where T : class, IDisposable, new() { }
Ставь 👍 и забирай 📚 Базу знаний

🤔 Использовал ли абстрактные классы? Да, абстрактные классы применяются, когда: - Нужно задать базовое поведение для всех наследников. - Частичная реализация может быть общей. - Требуется реализация по умолчанию с возможностью переопределения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какова концепция сборки мусора в С#? Это автоматический процесс управления памятью, который освобождает память, занятую объектами, которые больше не используются приложением. Этот механизм помогает разработчикам избежать ошибок, связанных с управлением памятью вручную, таких как утечки памяти и неправильное использование освобожденных ресурсов. 🚩Основные концепции сборки мусора 🟠Управляемая куча (Managed Heap) Управляемая куча — это область памяти, в которой размещаются объекты, созданные в управляемой среде .NET. Когда создается новый объект, память для него выделяется в управляемой куче. 🟠Корни (Roots) Корни — это переменные и ссылки, которые являются начальными точками для сборки мусора. Они включают глобальные и статические переменные, локальные переменные в стеке, а также ссылки из регистров процессора. 🟠Алгоритм маркировки и сжатия (Mark-and-Compact) GC использует алгоритм маркировки и сжатия для определения объектов, которые больше не используются. Сначала он помечает все доступные объекты (те, до которых можно добраться из корней), а затем удаляет все непомеченные объекты, освобождая их память. 🟠Поколения (Generations) Память управляемой кучи разделена на три поколения: поколение 0, поколение 1 и поколение 2. Это позволяет оптимизировать процесс сборки мусора: Поколение 0: Содержит новые объекты. Сборка мусора здесь происходит чаще всего, так как большинство объектов живут недолго. Поколение 1: Содержит объекты, которые пережили одну сборку мусора. Поколение 2: Содержит объекты, которые пережили несколько сборок мусора. Сборка мусора здесь происходит реже всего, так как такие объекты считаются долгоживущими. 🚩Этапы сборки мусора 🟠Инициализация сборки мусора Когда выделяется новая память и управляемая куча достигает определенного порога, запускается процесс сборки мусора. 🟠Маркировка (Mark) GC проходит по всем корням и помечает все объекты, которые могут быть достигнуты. 🟠Удаление (Sweep) После маркировки все непомеченные объекты считаются недоступными и могут быть удалены. 🟠Сжатие (Compact) Для улучшения производительности и уменьшения фрагментации памяти, сборщик мусора может переместить оставшиеся объекты, чтобы освободить блоки памяти.
class Program
{
    static void Main()
    {
        for (int i = 0; i < 1000; i++)
        {
            CreateObject();
        }

        // Явный вызов сборщика мусора (не рекомендуется для обычного использования)
        GC.Collect();
    }

    static void CreateObject()
    {
        MyClass obj = new MyClass();
        // Объект obj будет собран сборщиком мусора, когда он больше не будет использоваться
    }
}

class MyClass
{
    // Поля и методы класса
}
Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что такое Box/Unbox и как этого можно избежать? Boxing — это преобразование значимого типа (int, float и т.д.) в ссылочный тип (object), т.е. упаковка значения в объект. Unboxing — это обратное преобразование: из object обратно в value-type. Проблема: это создаёт накладные расходы на память и производительность. Избежать можно следующим образом: - Использовать обобщённые коллекции (List<int> вместо ArrayList). - Не использовать object, если можно указать конкретный тип. - Избегать приведения типов без необходимости. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие принципы и практики используешь для обеспечения безопасности приложений? 🟠Валидация и Санитизация Входных Данных Валидация входных данных помогает предотвратить атаки, такие как SQL-инъекции, XSS (межсайтовый скриптинг) и другие. SQL-инъекции: Используйте параметризованные запросы или ORM (например, Entity Framework).
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @username", conn))
{
    cmd.Parameters.AddWithValue("@username", username);
    // Выполнение команды
}
XSS: Используйте библиотеку для экранирования HTML, например, AntiXSS.
string safeContent = Microsoft.Security.Application.Encoder.HtmlEncode(userInput);
🟠Использование Аутентификации и Авторизации Обеспечьте надежную аутентификацию и разграничение доступа к ресурсам. Аутентификация: Используйте современные методы аутентификации, такие как OAuth, OpenID Connect. Авторизация: Применяйте ролевую или заявочную (claims-based) авторизацию.
[Authorize(Roles = "Admin")]
public IActionResult AdminOnly()
{
    return View();
}
🟠Защита от CSRF (Межсайтовая подделка запросов) Используйте анти-CSRF токены для защиты от CSRF атак.
<form asp-action="Create">
    <input type="hidden" name="__RequestVerificationToken" value="@Antiforgery.GetTokens(HttpContext).RequestToken" />
    <!-- Другие поля формы -->
</form>
🟠Шифрование и Защита Данных Шифруйте чувствительные данные как при передаче, так и при хранении. При передаче: Используйте HTTPS для шифрования данных, передаваемых через сеть. При хранении: Используйте библиотеки для шифрования, такие как System.Security.Cryptography.
using (Aes aes = Aes.Create())
{
    aes.Key = key;
    aes.IV = iv;
    // Шифрование данных
}
🟠Логирование и Мониторинг Внедрите логирование и мониторинг для обнаружения и анализа подозрительной активности. Логирование: Логируйте важные действия, такие как входы в систему, изменения данных. Мониторинг: Используйте инструменты мониторинга, такие как Application Insights, для отслеживания состояния приложения.
_logger.LogInformation("User {UserId} logged in.", userId);
🟠Управление Ошибками и Исключениями Не показывайте подробные сообщения об ошибках пользователям, чтобы не раскрывать внутреннюю структуру приложения. Обработка исключений: Ловите и корректно обрабатывайте исключения, предоставляя пользователю дружелюбные сообщения.
try
{
    // Код, который может вызвать исключение
}
catch (Exception ex)
{
    _logger.LogError(ex, "Произошла ошибка.");
    return View("Error");
}
🟠Обновления и Патчи Регулярно обновляйте используемые библиотеки и фреймворки, чтобы закрывать уязвимости. 🟠Минимизация Поверхности Атаки Удалите или отключите ненужные функции и сервисы, чтобы минимизировать возможные точки входа для атак. 🟠Защита Конфигурации Защитите конфигурационные файлы, содержащие чувствительную информацию. Секреты и ключи: Используйте секреты и безопасное хранилище для конфиденциальной информации.
var connectionString = Configuration["ConnectionStrings:DefaultConnection"];
Ставь 👍 и забирай 📚 Базу знаний

Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - с
Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - создание инфографики и карточек для маркетплейсов - работа в графическом редакторе Figma и др. Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе

🤔 Что такое нормализация в базе данных? Это процесс организации данных в БД с целью устранения избыточности и обеспечения целостности. Осуществляется путём разбиения таблиц и установления связей между ними. Применяются нормальные формы (1NF, 2NF, 3NF и выше). Оптимизация под read-heavy нагрузки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

ИИ-революция в вашей карьере: бесплатный вебинар 2025 год: нейросети — это must-have навык для карьерного роста. 👌 ✅Приглашаем на бесплатный живой вебинар, где вы: --- Поймете, какие нейросети существуют и как их применять в работе. --- Научитесь писать эффективные промпты и автоматизировать рутину. --- Узнаете, как делегировать ИИ задачи и экономить от 20 часов в неделю! --- Создадите своего первого ИИ-ассистента в прямом эфире. Получите руководство «Как создать цифровой аватар» сразу после регистрации! Подойдет новичкам. Онлайн-формат с ответами на вопросы. ⚡ Жмите «Зарегистрироваться», чтобы прокачать свой скилл-сет и освободить время для главного! Зарегистрироваться #реклама 16+ ed.bonnieandslide.com О рекламодателе

🤔 Что такое .NET стандарт? .NET Standard — это спецификация API, которая определяет набор базовых библиотек, доступных во всех реализациях .NET (например, .NET Framework, .NET Core, Xamarin, Unity и других). Она была создана для обеспечения совместимости между разными платформами .NET. 🚩Зачем нужен .NET Standard? До появления .NET Standard существовало несколько отдельных реализаций .NET: .NET Framework (для Windows-приложений) .NET Core (кроссплатформенная версия .NET) Mono/Xamarin (для мобильных и игровых приложений) Каждая из них имела свои особенности и набор доступных API. Из-за этого разработчики, создавая библиотеку, сталкивались с проблемой совместимости: приходилось писать несколько версий кода под разные платформы или использовать Portable Class Library (PCL), которая имела ограниченный функционал. .NET Standard решил эту проблему, введя единый набор API, который обязаны поддерживать все реализации .NET. 🚩Как это работает? .NET Standard представляет собой абстрактную спецификацию API, которая реализуется разными версиями .NET. Например, .NET Standard 2.0 поддерживается в .NET Framework 4.6.1, .NET Core 2.0 и выше. Если библиотека написана под .NET Standard 2.0, её можно использовать во всех этих средах. 🚩Версии .NET Standard Существуют разные версии .NET Standard, каждая из которых включает больше API, чем предыдущая. Чем выше версия, тем больше возможностей, но и тем меньше совместимость с более старыми реализациями .NET. 🚩Пример использования Создаём Class Library с таргетом .NET Standard 2.0:
   namespace MyLibrary
   {
       public class MathHelper
       {
           public static int Add(int a, int b)
           {
               return a + b;
           }
       }
   }
Ставь 👍 и забирай 📚 Базу знаний

REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызо
REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения. С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры. Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

🤔 Почему требуется API между базой данных и клиентским приложением? API (например, REST или GraphQL) обеспечивает прослойку между клиентом и базой данных, потому что: 1. Безопасность — база данных не должна быть напрямую доступна клиенту. 2. Инкапсуляция логики — в API можно реализовать бизнес-логику и валидации. 3. Гибкость — можно изменять структуру базы, не затрагивая клиента. 4. Масштабируемость — API может обрабатывать нагрузку, кешировать данные и распределять запросы. 5. Контроль доступа — через API проще реализовать авторизацию и аутентификацию. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопаснос
+5
Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопасности. Стиль: разный. Собрали несколько характерных портретов участников! А каким участником планируете быть вы? - целеустремленным - основательным - многозадачным - тусовщиком - расслабленным И все это не выходя из дома. Зарегистрируйтесь, и мы напомним о старте трансляции и пришлем ссылку, чтобы вы ничего не пропустили. Записаться онлайн #реклама 16+ registration.forumsoc.ru О рекламодателе

🤔 Что в себе может хранить делегат? Делегат (delegate) — это указатель на метод(ы). Он может хранить: 1. Ссылку на один метод (одиночный делегат) 2. Ссылки на несколько методов (групповой делегат / multicast) 3. Анонимные методы и лямбда-выражения 🚩Делегат хранит ссылку на метод Делегаты позволяют вызвать метод, даже если его имя заранее неизвестно. Пример с одиночным делегатом
public delegate void MyDelegate(string message); // Объявляем делегат

public class Program
{
    public static void ShowMessage(string msg) => Console.WriteLine($"Сообщение: {msg}");

    public static void Main()
    {
        MyDelegate del = ShowMessage; // Делегат хранит ссылку на метод
        del("Привет, делегаты!"); // Вызывает ShowMessage
    }
}
🚩Делегат может хранить несколько методов (Multicast) Делегаты можно связывать с несколькими методами с помощью +=. Пример группового делегата
public delegate void MyDelegate(string message);

public class Program
{
    public static void Method1(string msg) => Console.WriteLine($"Метод 1: {msg}");
    public static void Method2(string msg) => Console.WriteLine($"Метод 2: {msg}");

    public static void Main()
    {
        MyDelegate del = Method1;
        del += Method2; // Добавляем второй метод

        del("Привет!"); 
        // Выведет:
        // Метод 1: Привет!
        // Метод 2: Привет!
    }
}
🚩Делегат может хранить анонимные методы и лямбды Делегаты могут хранить "встроенные" методы (без отдельного определения). Пример с анонимным методом
MyDelegate del = delegate (string msg) 
{
    Console.WriteLine($"Анонимный метод: {msg}");
};
del("Привет!");
Пример с лямбда-выражением
MyDelegate del = msg => Console.WriteLine($"Лямбда: {msg}");
del("Привет!");
Ставь 👍 и забирай 📚 Базу знаний

Университет искусственного интеллекта приглашает 💰 Стоимость вебинара: Бесплатно! Освойте искусственный интеллект для профес
Университет искусственного интеллекта приглашает 💰 Стоимость вебинара: Бесплатно! Освойте искусственный интеллект для профессионального роста: создавайте нейросети, автоматизируйте бизнес-задачи и зарабатывайте на AI-решениях. 💻 Программа вебинара: 1) Классификация входящих/выходящих из автобуса людей 2) Классификация отзывов на Tesla 3) Оценка выброса CO2 по параметрам машины 4) Прогнозирование тренда цены доллара 5) Сегментация изображения для робота-доставщика 6) Обнаружение людей без касок на стройке/производстве 7) Трекинг людей на видео 8) Распознавание речи 9) Генерация изображения с помощью Stable Diffusion Хотите отучиться на передовой научного прогресса? Тогда скорее регистрируйтесь! Зарегистрироваться #реклама 16+ neural-university.ru О рекламодателе