ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

الذهاب إلى القناة على Telegram
4 996
المشتركون
-224 ساعات
-47 أيام
-1230 أيام
أرشيف المشاركات
Бесплатный проект для новичков в 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 или параметры запроса. Это требует нормализации данных, валидации и адаптации под внутреннюю бизнес-логику. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое .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;
           }
       }
   }
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Bearer-аутентификация? Это механизм передачи токена в HTTP-заголовке Authorization. Клиент получает токен после успешной аутентификации и отправляет его в каждом запросе к защищённому ресурсу. Сервер проверяет токен и предоставляет доступ без необходимости передавать логин и пароль. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие тесты бывают? 🚩Виды 🟠Юнит-тесты Предназначены для проверки отдельных компонентов или модулей приложения в изоляции. Они помогают убедиться, что отдельные функции или методы работают правильно. Цель: Проверка логики отдельных методов или классов. Инструменты: xUnit, NUnit, MSTest.
using Xunit;

public class CalculatorTests
{
    [Fact]
    public void Add_SimpleValues_ReturnsSum()
    {
        var calculator = new Calculator();
        var result = calculator.Add(2, 3);
        Assert.Equal(5, result);
    }
}

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}
🟠Интеграционные тесты Проверяют взаимодействие между различными компонентами системы, убеждаясь, что они корректно работают вместе. Цель: Проверка взаимодействия между модулями. Инструменты: xUnit, NUnit, MSTest, плюс дополнительные библиотеки для тестирования баз данных или HTTP-запросов.
using System.Net.Http;
using System.Threading.Tasks;
using Xunit;

public class IntegrationTests
{
    private readonly HttpClient _client;

    public IntegrationTests()
    {
        var appFactory = new CustomWebApplicationFactory<Startup>();
        _client = appFactory.CreateClient();
    }

    [Fact]
    public async Task Get_EndpointReturnsSuccessAndCorrectContentType()
    {
        var response = await _client.GetAsync("/api/values");
        response.EnsureSuccessStatusCode();
        Assert.Equal("application/json; charset=utf-8", response.Content.Headers.ContentType.ToString());
    }
}
🟠Функциональные тесты Проверяют, что приложение выполняет свои функции в соответствии с требованиями. Эти тесты проверяют конкретные сценарии использования. Цель: Проверка функциональности приложения на уровне пользователя. Инструменты: Selenium, Playwright, Cypress.
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Xunit;

public class UiTests
{
    [Fact]
    public void LoadPage_CheckTitle()
    {
        using (IWebDriver driver = new ChromeDriver())
        {
            driver.Navigate().GoToUrl("https://example.com");
            Assert.Equal("Example Domain", driver.Title);
        }
    }
}
🟠Системные тесты Проверяют приложение в целом, включая взаимодействие с внешними системами и проверку всех требований. Цель: Проверка всей системы в интегрированном виде. Инструменты: JUnit, TestNG для Java, или те же инструменты, что и для функциональных тестов. 🟠Приемочные тесты Проводятся для проверки, что приложение соответствует требованиям и готово к использованию клиентом или конечным пользователем. Цель: Подтверждение соответствия приложения требованиям. Инструменты: Cucumber, SpecFlow (для BDD). 🟠Регрессионные тесты Проверяют, что недавние изменения в коде не нарушили существующую функциональность. Цель: Убедиться, что новые изменения не привели к новым багам. Инструменты: Все инструменты для юнит-тестирования и функционального тестирования. 🟠Нагрузочные тесты Проверяют, как приложение ведет себя под нагрузкой, например, при большом количестве одновременных пользователей или операций. Цель: Оценка производительности и устойчивости приложения под нагрузкой. Инструменты: JMeter, Gatling, Apache Bench. Ставь 👍 и забирай 📚 Базу знаний

Почему SWG и NGFW должны работать вместе NGFW — фундамент защиты сети. Но веб-трафик — сложная экосистема, где риски могут скрываться даже внутри разрешенных ресурсов. Чтобы увидеть больше, нужно заглянуть глубже. В этом поможет SWG-система. Вместе NGFW и SWG смогут обеспечить максимальную безопасность корпоративной сети: NGFW — на периметре, а SWG — в веб-трафике. Как грамотно построить комплексную защиту периметра сети, расскажут эксперты «Солара» на вебинаре «SWG и NGFW: почему вместе, а не вместо». Вы узнаете: - Какие задачи решает NGFW, а какие — SWG; - Почему SWG — не просто «еще один фильтр», а необходимость; - Как сбалансировать защиту без потерь в производительности. Вас ждут реальные кейсы совместного использования NGFW и SWG в компаниях. Регистрируйтесь, чтобы обеспечить защиту компании. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Какие типы аутентификации есть? Существует несколько типов аутентификации, включая базовую аутентификацию по логину и паролю, одноразовые коды, токены (OAuth, JWT) и биометрические методы. Выбор зависит от уровня безопасности и удобства для пользователя. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое исключения? Исключения в программировании — это механизмы обработки ошибок и необычных ситуаций, которые возникают во время выполнения программы. В C# и других языках программирования исключения позволяют отделить код обработки ошибок от основного кода программы, что упрощает его чтение и поддержку. 🚩Основные понятия 🟠Исключение (Exception) Событие, которое прерывает нормальный поток выполнения программы. 🟠Блок try Содержит код, который может вызвать исключение. 🟠Блок catch Содержит код, который выполняется, если возникает исключение. В catch блок можно передать параметр — экземпляр исключения, которое произошло. 🟠Блок finally Содержит код, который выполняется в любом случае, независимо от того, произошло исключение или нет. Обычно используется для освобождения ресурсов. 🟠Бросание исключения (throw) Механизм для явного вызова исключения. 🚩Пример использования Основные блоки
try
{
    // Код, который может вызвать исключение
    int divisor = 0;
    int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
    // Обработка исключения
    Console.WriteLine("Деление на ноль невозможно.");
}
finally
{
    // Код, который выполнится в любом случае
    Console.WriteLine("Блок finally выполнен.");
}
Создание и бросание собственного исключения
public class InvalidAgeException : Exception
{
    public InvalidAgeException(string message) : base(message) { }
}

public void SetAge(int age)
{
    if (age < 0)
    {
        throw new InvalidAgeException("Возраст не может быть отрицательным.");
    }
    // Логика установки возраста
}
Ставь 👍 и забирай 📚 Базу знаний

Нанимаете аутсорс, подрядчиков, фрилансеров? Попробуйте Битрикс24 Коллабы – платформа для эффективной работы с подрядчиками.
Нанимаете аутсорс, подрядчиков, фрилансеров? Попробуйте Битрикс24 Коллабы – платформа для эффективной работы с подрядчиками. Тут обсуждения превращаются в задачи, а видео созвон можно собрать одной кнопкой. Любой проект можно разложить по полочкам с понятным ТЗ и обозначенными сроками. Работайте в Битрикс24 и создавайте Коллабы с подрядчиками. Начать #реклама 16+ collabs.bitrix24.ru О рекламодателе

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

Работайте с базами 1С удаленно Плохая погода за окном — пора на удалёнку! 1С:Фреш позволяет работать со всеми привычными прог
Работайте с базами 1С удаленно Плохая погода за окном — пора на удалёнку! 1С:Фреш позволяет работать со всеми привычными программами 1С через интернет — а это значит, что можно работать с вашей базой 1С:Бухгалтерия 8 или 1С:Зарплата и управление персоналм 8 из любого удобного места. Подключайтесь к вашей базе из дома или в дороге, и продолжайте работать на том месте, где остановились. ❤️ Зарегистрируйтесь, чтобы получить 30 дней бесплатного доступа! Зарегистрироваться #реклама 16+ pcs.ru О рекламодателе

🤔 Что такое I/O bound и CPU bound? При выполнении программных задач можно выделить два типа нагрузок: I/O-bound (ограничение ввода-вывода) CPU-bound (ограничение процессора) 🚩I/O-bound (ограничение ввода-вывода) Основная проблема: программа ждет завершения операций ввода-вывода (диска, сети, базы данных, файловой системы и т. д.), а не загружает процессор. Примеры: - Чтение и запись файлов на диск - Запросы к базе данных - HTTP-запросы к API - Чтение данных из сети Решение: Использование асинхронного программирования (async/await), чтобы не блокировать поток.
public async Task<string> FetchDataAsync()
{
    using HttpClient client = new HttpClient();
    return await client.GetStringAsync("https://example.com");
}
🚩CPU-bound (ограничение процессора) Основная проблема: процессор сильно загружен вычислениями, и узким местом становится скорость обработки данных, а не ввод-вывод. Примеры: - Генерация больших отчетов - Кодирование/декодирование видео - Комплексные математические вычисления - Сортировка больших массивов
public static long CalculateFactorial(int number)
{
    return Enumerable.Range(1, number).Aggregate(1, (a, b) => a * b);
}

public async Task<long> ComputeAsync(int number)
{
    return await Task.Run(() => CalculateFactorial(number));
}
Ставь 👍 и забирай 📚 Базу знаний

Курс по мотивации сотрудников, которые ничего не хотят Сегодня в Школе Гендира открыт бесплатный трехдневный доступ к онлайн-
Курс по мотивации сотрудников, которые ничего не хотят Сегодня в Школе Гендира открыт бесплатный трехдневный доступ к онлайн-курсу Ежедневная мотивация. Основа курса – практика руководителей российских компаний. После обучения вы сможете: 👍 распознавать конфликты в коллективе на начальной стадии и вовремя принимать меры 👍 определить точки роста своего лидерского потенциала 👍 построить систему грейдов в компании 👍 внедрить метод OKR для мотивации ключевых сотрудников 👍 адаптировать для себя один из алгоритмов постановки задач Оставьте заявку на бесплатный доступ на странице курса. Подать заявку #реклама 16+ gd.ru О рекламодателе