uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

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

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

Відкрити в Telegram

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

Показати більше
5 008
Підписники
-124 години
-37 днів
+1430 днів
Архів дописів
🤔 Чем отличается ссылочный и значимый тип? Ссылочные типы хранят адрес объекта в памяти, а значимые – непосредственно значение. Изменение значимого типа не затрагивает другие переменные, тогда как при изменении ссылочного типа модифицируется сам объект, доступный по ссылке. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Пример выполнения кода, когда возвращается объект интерфейса Iqueryable? IQueryable<T> — это интерфейс, который используется для отложенного выполнения запросов (deferred execution). Он позволяет строить SQL-запросы к базе данных или манипулировать данными в памяти, но сам запрос выполняется только в момент его итерации (ToList(), FirstOrDefault(), Count(), и т. д.). 🚩Пример работы с `IQueryable<T>` на Entity Framework Core Предположим, у нас есть сущность Product и контекст базы данных AppDbContext
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("YourConnectionString");
    }
}
Теперь создадим репозиторий, который возвращает IQueryable<Product>
public class ProductRepository
{
    private readonly AppDbContext _context;

    public ProductRepository(AppDbContext context)
    {
        _context = context;
    }

    public IQueryable<Product> GetProducts()
    {
        return _context.Products.Where(p => p.Price > 100); 
        // Запрос не выполняется здесь! Только формируется
    }
}
🚩Вызов метода и выполнение запроса Запрос к базе данных выполнится только при материализации (ToList(), FirstOrDefault(), Count(), и т. д.).
var repository = new ProductRepository(new AppDbContext());

// Создаём IQueryable-запрос
IQueryable<Product> query = repository.GetProducts();

// Добавляем дополнительное условие (запрос еще НЕ выполнен)
query = query.OrderBy(p => p.Name);

// Теперь выполняем запрос к БД
List<Product> products = query.ToList(); // SQL-запрос отправляется в базу
Ставь 👍 и забирай 📚 Базу знаний

Начните диджитал-карьеру: бесплатные уроки с практикой Десятки курсов по десяткам профессий: вводные части бесплатно, чтобы определиться. Попробовать #реклама start.practicum.yandex О рекламодателе

🤔 Какие паттерны GoF приходилось использовать? Паттерны GoF (Gang of Four) включают порождающие, структурные и поведенческие паттерны. Чаще всего используются Singleton, Factory, Observer, Adapter и Strategy, которые решают задачи управления зависимостями, расширяемости и инкапсуляции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Каковы преимущества и недостатки использования контейнеров, таких как Docker в .NET приожениях? Использование контейнеров, таких как Docker, в .NET приложениях имеет множество преимуществ, но также и некоторые недостатки. Вот основные из них: 🚩Плюсы ➕Портативность Контейнеры включают все необходимые зависимости и настройки, что позволяет легко переносить приложения между различными средами (разработка, тестирование, производство) без изменения кода. Пример: Docker-образ, созданный на локальной машине разработчика, может быть запущен на сервере производства без изменений. ➕Изолированность Контейнеры изолируют приложения и их зависимости, предотвращая конфликты между различными версиями библиотек и инструментов. Пример: Разные версии .NET Core могут сосуществовать на одной машине в разных контейнерах. ➕Легкость масштабирования Контейнеры легко масштабировать горизонтально, создавая новые экземпляры приложения в ответ на увеличивающуюся нагрузку. Пример: В Kubernetes можно легко добавить новые поды с контейнерами, чтобы справиться с повышенной нагрузкой. ➕Быстрое развертывание и запуск Контейнеры запускаются быстрее, чем виртуальные машины, так как они не требуют загрузки всей операционной системы. Пример: Docker-контейнер может быть запущен за несколько секунд, тогда как виртуальная машина может загружаться несколько минут. ➕Консистентность среды Контейнеры обеспечивают консистентность среды между разработкой, тестированием и продакшн-окружением. Пример: Одинаковая версия .NET Runtime и конфигурации могут быть гарантированы во всех средах. ➕Упрощенная CI/CD Контейнеры интегрируются с инструментами CI/CD, что упрощает автоматизацию сборки, тестирования и развертывания. Пример: Jenkins или GitHub Actions могут использовать Docker для создания и тестирования приложений в изолированных средах. 🚩Минусы ➖Изучение и сложность Понимание и настройка контейнеров и связанных инструментов требует времени и навыков. Пример: Изучение Docker, Docker Compose и Kubernetes может занять значительное время для команды. ➖Производительность Хотя контейнеры легче, чем виртуальные машины, они все равно добавляют некоторую накладную на производительность. Пример: Контейнеры могут использовать больше ресурсов, чем напрямую запущенные на хосте процессы, особенно при интенсивных I/O операциях. ➖Безопасность Контейнеры изолируют процессы, но изоляция не так сильна, как у виртуальных машин. Ошибки конфигурации могут привести к проблемам безопасности. Пример: Уязвимость в Docker или неправильная конфигурация сетевых правил могут привести к компрометации контейнера. ➖Ограничения хост-системы Контейнеры зависят от хост-операционной системы и её ядра. Это может вызвать проблемы совместимости. Пример: Windows-контейнеры не могут быть запущены на Linux-системах и наоборот. ➖Управление состоянием и данными Контейнеры лучше всего подходят для безгосударственных приложений. Управление состоянием и данными может быть сложным. Пример: Работа с постоянными данными требует настройки volume'ов или использование внешних систем хранения данных. Ставь 👍 и забирай 📚 Базу знаний

Обучение аналитике данных с поддержкой и скидкой 50% Освойте востребованную профессию за 5 месяцев! 🎓Чему научитесь: » испол
Обучение аналитике данных с поддержкой и скидкой 50% Освойте востребованную профессию за 5 месяцев! 🎓Чему научитесь: » использовать Python для анализа данных » составлять продвинутые SQL-запросы » самостоятельно извлекать данные из хранилищ » разрабатывать понятные отчеты и презентации 📊Практикуйтесь на реальных задачах бизнеса! ✨Кому подойдет обучение: » новичкам, решившим начать карьеру в Data Science » аналитикам с опытом для углубления знаний » маркетологам для оценки эффективности каналов » менеджерам для самостоятельного расчета бизнес-метрик ❤️Мы поможем подготовиться к поиску работы😊 Оставьте заявку прямо сейчас и сделайте первый шаг к успешной карьере в IT! Узнать больше #реклама 16+ karpov.courses О рекламодателе

🤔 Что делает OAuth-аутентификация? OAuth-аутентификация позволяет пользователям авторизовываться через сторонние сервисы без передачи паролей. Она основана на токенах доступа и обновления, которые предоставляют клиентам ограниченный доступ к ресурсам пользователя. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Пройди обучение и стань Middle Data Engineer в LEFT JOIN Инженерия данных: от проектирования до нетривиальной обработки 🎓Чем
Пройди обучение и стань Middle Data Engineer в LEFT JOIN Инженерия данных: от проектирования до нетривиальной обработки 🎓Чему научитесь: » использовать Python для анализа данных » составлять продвинутые SQL-запросы » самостоятельно извлекать данные из хранилищ » разрабатывать понятные отчеты и презентации 📊Научим правильно готовить данные любых размеров и сложности ✨Кому подойдет обучение: » аналитикам данных, которые хотят лучше разобраться в ETL-процессах » инженерам данных, которые уже работают с хранилищами и хотят систематизировать свои знания. » BI-разработчикам, освоить архитектуру современных хранилищ и научиться их проектировать ❤️Мы поможем подготовиться к поиску работы😊 И стань Middle Data Engineer в LEFT JOIN Узнать больше #реклама 16+ karpov.courses О рекламодателе

🤔 Как сейчас делается Singleton? В современном C# паттерн Singleton можно реализовать несколькими способами, каждый из которых имеет свои преимущества и предназначен для различных сценариев использования. Рассмотрим несколько распространенных подходов к реализации Singleton. 🟠Ленивый Singleton (Lazy Initialization) Ленивый Singleton инициализируется при первом обращении. Это обеспечивает отложенную инициализацию объекта и гарантирует потокобезопасность.
public class Singleton
{
    private static readonly Lazy<Singleton> lazyInstance = new Lazy<Singleton>(() => new Singleton());

    public static Singleton Instance => lazyInstance.Value;

    private Singleton()
    {
        // Приватный конструктор
    }
}
🟠Потокобезопасный Singleton (Thread-safe) Этот подход использует lock для обеспечения потокобезопасности при создании экземпляра.
public class Singleton
{
    private static Singleton instance;
    private static readonly object lockObj = new object();

    private Singleton()
    {
        // Приватный конструктор
    }

    public static Singleton Instance
    {
        get
        {
            if (instance == null)
            {
                lock (lockObj)
                {
                    if (instance == null)
                    {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
}
Eager Initialization (Инициализация при загрузке) Экземпляр Singleton создается при загрузке класса. Это гарантирует потокобезопасность за счет особенностей инициализации статических переменных в .NET.
public class Singleton
{
    private static readonly Singleton instance = new Singleton();

    public static Singleton Instance => instance;

    private Singleton()
    {
        // Приватный конструктор
    }
}
🟠Static Constructor (Статический конструктор) Использование статического конструктора для инициализации Singleton.
public class Singleton
{
    private static readonly Singleton instance;

    static Singleton()
    {
        instance = new Singleton();
    }

    public static Singleton Instance => instance;

    private Singleton()
    {
        // Приватный конструктор
    }
}
Singleton с внедрением зависимостей (Dependency Injection) В современных приложениях, особенно с использованием ASP.NET Core, Singleton часто регистрируется в контейнере внедрения зависимостей.
public class SingletonService
{
    public void DoWork()
    {
        // Выполнение работы
    }
}

// Регистрация в контейнере служб
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<SingletonService>();
}

// Использование в контроллере
public class MyController : ControllerBase
{
    private readonly SingletonService _singletonService;

    public MyController(SingletonService singletonService)
    {
        _singletonService = singletonService;
    }

    public IActionResult Index()
    {
        _singletonService.DoWork();
        return Ok();
    }
}
Ставь 👍 и забирай 📚 Базу знаний

UserGate Open Conf 17 / 04 / 2025 ⚡ ИТ-конференция про защиту в открытую. Здесь мы создаем площадку для открытого диалога между заказчиками, партнерами, экспертами и специалистами в сфере продуктов, технологий и услуг информационной безопасности. Что мы готовим для вас: - аналитические данные исследования рынка информационной безопасности; - обзор новых видов и эволюции киберугроз с разбором кейсов по борьбе с ними; - планы внедрения новых фич и обновлений продуктов экосистемы UserGate; - 30+ продуктовых, партнерских и клиентских докладов; - нетворкинг, продуктовые демо, обмен опытом и консультации экспертов ИБ; - ответы на любые вопросы и сбор обратной связи о работе продуктов и устройств UserGate. Зарегистрироваться #реклама openconf.usergate.com О рекламодателе

🤔 Для чего нужны методы service configuration? Методы конфигурации сервисов определяют, как создаются, настраиваются и управляются зависимости в приложении. Они используются в DI-контейнерах для регистрации singleton, transient и scoped зависимостей, что помогает управлять временем жизни сервисов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бесплатный проект для новичков в DevOps. Подписывайся! Сообщество для начинающих DevOps-инженеров. В канале собраны фишки Dev
Бесплатный проект для новичков в DevOps. Подписывайся! Сообщество для начинающих DevOps-инженеров. В канале собраны фишки DevOps. Как быстро стартануть в DevOps и внедрить методологию в свои проекты? Какие инструменты осваивать в первую очередь? Лекции, статьи и вебинары от ведущих практиков IT-рынка. Практические задания, еженедельные разборы и лайвы от наставника проекта Подписаться #реклама 16+ slurm.io О рекламодателе

🤔 Зачем сделали ref & out для ссылочных типов? В C# ключевые слова ref и out используются для передачи аргументов по ссылке, что позволяет методам изменять значения этих аргументов. Эти механизмы полезны как для значимых типов (структур), так и для ссылочных типов (объектов). Давайте рассмотрим более детально, зачем и как их используют для ссылочных типов. 🚩`ref` С помощью ref можно передавать ссылочные типы таким образом, чтобы метод мог изменять саму ссылку, то есть ссылаться на другой объект. 🚩`out` Ключевое слово out позволяет передавать аргумент, который не обязательно должен быть инициализирован до вызова метода. Метод, принимающий out аргумент, обязан присвоить ему значение до завершения работы. 🚩Как используются `ref` и `out`? Пример использования ref
class Program
{
    static void ChangeReference(ref MyClass obj)
    {
        obj = new MyClass { Value = 20 };
    }

    static void Main()
    {
        MyClass myObj = new MyClass { Value = 10 };
        ChangeReference(ref myObj);
        Console.WriteLine(myObj.Value); // Output: 20
    }
}

class MyClass
{
    public int Value { get; set; }
}
Пример использования out
class Program
{
    static void InitializeObject(out MyClass obj)
    {
        obj = new MyClass { Value = 30 };
    }

    static void Main()
    {
        MyClass myObj;
        InitializeObject(out myObj);
        Console.WriteLine(myObj.Value); // Output: 30
    }
}

class MyClass
{
    public int Value { get; set; }
}
🚩Почему это нужно? 🟠Гибкость ref и out добавляют гибкости при работе с методами, позволяя им изменять ссылки на объекты или создавать и возвращать новые объекты. 🟠Оптимизация Эти механизмы могут быть полезны для оптимизации, когда необходимо избежать лишнего копирования данных, особенно при работе с большими объектами. 🟠Логика инициализации out полезен для методов, которые должны вернуть несколько значений или инициализировать объекты, которые не могут быть инициализированы заранее. Ставь 👍 и забирай 📚 Базу знаний

Прокачаем ваш скилл по Java с junior до middle Научим писать код, который не стыдно показать Личный наставник. Актуальная про
Прокачаем ваш скилл по Java с junior до middle Научим писать код, который не стыдно показать Личный наставник. Актуальная программа. Попробуй! Узнать больше #реклама 16+ ykul.ru О рекламодателе

⌨️ Создание высоконагруженных систем на C#: инструменты и техники Приглашаем на открытый урок. 🗓 18 марта в 20:00 МСК 🆓 Бес
⌨️ Создание высоконагруженных систем на C#: инструменты и техники Приглашаем на открытый урок. 🗓 18 марта в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C# Developer Professional». На вебинаре: ✔️ Узнаем, как проектировать масштабируемые приложения с использованием современных подходов, таких как микросервисы и event-driven архитектура; ✔️ Рассмотрим Redis: как правильно кешировать данные, использовать Pub/Sub, шардирование и репликацию для повышения производительности; ✔️ Разберем gRPC и HTTP/2: как с их помощью обрабатывать огромное количество запросов с минимальной задержкой; ✔️ А также проведем практическую демонстрацию: - настройки Redis и реализации кеширования в приложении на C# - создания gRPC-сервиса для быстрой и надежной коммуникации между компонентами системы. 🔗 Ссылка на регистрацию: https://otus.pw/wqNd/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Что из себя представляет библиотека Dependency Injection? Библиотека Dependency Injection управляет созданием и внедрением зависимостей в объекты. Она позволяет сократить жесткие связи между компонентами, улучшить тестируемость кода и контролировать жизненный цикл объектов через контейнеры зависимостей. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Почему вы не используете Битрикс24 CRM с AI-помощником? 1- не знал 2- забыл Рассказываем и напоминаем! ✅Битрикс24 CRM с AI помогает увеличивать продажи, работать с постоянными клиентами и сохранять все важные данные. AI-помощник CoPilot внутри сервиса расшифрует телефонные разговоры и автоматически заполнит карточки клиента в CRM. Битрикс24 можно использовать бесплатно для всех команд, независимо от их размера. ⚡Не тратьте время на рутину. Узнать больше #реклама 16+ bitrix24.ru О рекламодателе

🤔 Для чего нужны методы service configuration? В ASP.NET Core методы Service Configuration используются для настройки и регистрации зависимостей в контейнере внедрения зависимостей (Dependency Injection, DI). Это позволяет управлять зависимостями в приложении, делая код более гибким, тестируемым и удобным для расширения. 🚩Где происходит настройка сервисов? Настройка сервисов выполняется в методе ConfigureServices(IServiceCollection services), который находится в классе Program.cs или Startup.cs (в зависимости от версии .NET).
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(); // Добавление контроллеров для API
    services.AddDbContext<ApplicationDbContext>(); // Регистрация контекста базы данных
    services.AddScoped<IMyService, MyService>(); // Внедрение зависимости
}
🚩Основные виды регистрации сервисов 🟠`AddSingleton<T>` создаёт единственный экземпляр объекта на всё время работы приложения.
services.AddSingleton<ILogger, ConsoleLogger>();
🟠`AddScoped<T>` создаёт один экземпляр объекта на каждый HTTP-запрос.
services.AddScoped<IUserService, UserService>();
🟠`AddTransient<T>` создаёт новый экземпляр объекта при каждом запросе.
services.AddTransient<IEmailSender, EmailSender>();
🚩Пример использования в контроллере
public class HomeController : Controller
{
    private readonly IMyService _myService;

    public HomeController(IMyService myService)
    {
        _myService = myService;
    }

    public IActionResult Index()
    {
        var data = _myService.GetData();
        return View(data);
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Встречайте весну в Абу-Даби! Сделайте эту весну незабываемой: отдыхайте, исследуйте богатую культуру и наполняйтесь яркими вп
Встречайте весну в Абу-Даби! Сделайте эту весну незабываемой: отдыхайте, исследуйте богатую культуру и наполняйтесь яркими впечатлениями #inAbuDhabi! Узнать больше #реклама visitabudhabi.ae О рекламодателе

🤔 Что такое работать с разными входными данными? Работа с разными входными данными подразумевает способность системы обрабатывать различные форматы и источники данных, такие как JSON, XML, CSV или параметры запроса. Это требует нормализации данных, валидации и адаптации под внутреннюю бизнес-логику. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний