uk
Feedback

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

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

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

Відкрити в Telegram

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

Показати більше
5 005
Підписники
+124 години
-97 днів
+530 днів
Архів дописів
🤔 Какие методы есть в Action фильтре? Используются для выполнения логики до и после выполнения метода действия контроллера. Они предоставляют механизм для выполнения кросс-секционных задач, таких как логирование, обработка исключений, валидация и т.д. Action фильтры реализуют интерфейс IActionFilter или IAsyncActionFilter. 🚩Методы в Action фильтре 🟠OnActionExecuting Этот метод вызывается перед выполнением метода действия. Здесь можно добавить логику, которая будет выполняться до вызова действия, например, логирование или проверка условий.
public void OnActionExecuting(ActionExecutingContext context)
{
    // Логика до выполнения действия
}
🟠OnActionExecuted Этот метод вызывается после выполнения метода действия. Здесь можно добавить логику, которая будет выполняться после вызова действия, например, логирование результатов или модификация ответа.
public void OnActionExecuted(ActionExecutedContext context)
{
    // Логика после выполнения действия
}
🟠OnActionExecutionAsync Этот метод объединяет функциональность OnActionExecuting и OnActionExecuted в одном асинхронном методе. Здесь можно определить логику, которая будет выполняться как до, так и после выполнения метода действия.
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    // Логика до выполнения действия
       
    var resultContext = await next();
       
    // Логика после выполнения действия
}
🚩Реализации Action фильтра Синхронный Action фильтр:
public class SampleActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // Логика до выполнения действия
        Console.WriteLine("Before executing action");
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // Логика после выполнения действия
        Console.WriteLine("After executing action");
    }
}
Асинхронный Action фильтр:
public class SampleAsyncActionFilter : IAsyncActionFilter
{
    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        // Логика до выполнения действия
        Console.WriteLine("Before executing action");
        
        var resultContext = await next();
        
        // Логика после выполнения действия
        Console.WriteLine("After executing action");
    }
}
🚩Применение Action фильтра Action фильтр можно применять к контроллерам или действиям контроллера с помощью атрибута [ServiceFilter] или [TypeFilter]. Также его можно зарегистрировать глобально в Startup.cs. Применение к контроллеру или действию:
[ServiceFilter(typeof(SampleActionFilter))]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
Глобальная регистрация:
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(config =>
    {
        config.Filters.Add(typeof(SampleActionFilter));
    });
}
Ставь 👍 и забирай 📚 Базу знаний

😂 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и
😂 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и хакинга Арсенал Безопасника - Проект по кибербезопасности - сборник лучших инструментов и утилит по OSINT, хакингу и деанону Бункер Хакера - Все что необходимо, для того чтобы начать свой путь в безопасности - инструменты, книги, справочники, гайды и ресурсы.

🤔 В чём разница между string и StringBuilder? `string` в C# — это неизменяемый тип данных, что означает, что каждое изменение строки создаёт новый объект в памяти. `StringBuilder` — это изменяемый тип, который позволяет эффективно манипулировать строками без создания новых объектов, что улучшает производительность при частых изменениях строк. `StringBuilder` предпочтительнее использовать для конкатенации строк в циклах или при выполнении множества операций со строками. `string` лучше подходит для случаев, когда строка не меняется. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Timetta — контроль проектов, ресурсов, финансов и задач Комплексное решение для проектно-ориентированного бизнеса. Приложение для контроля проектов, финансов, ресурсов, времени для средних и крупных команд. ✅Планируйте проекты ✅Оценивайте бюджеты ✅Подбирайте ресурсы ✅Контролируйте задачи Узнать больше #реклама 16+ timetta.com О рекламодателе

🤔 Что такое конвейер обработки запросов? Представляет собой последовательность компонентов middleware, через которые проходит HTTP-запрос, начиная с момента его получения сервером и до отправки ответа клиенту. Каждый компонент в конвейере выполняет определенные задачи, такие как аутентификация, авторизация, логирование, обработка ошибок и так далее. Конвейер позволяет легко управлять обработкой запросов, добавляя или удаляя компоненты middleware. 🚩Как работает 1⃣Получение запроса Когда сервер получает HTTP-запрос, он передается в первый компонент middleware в конвейере. 2⃣Последовательная обработка Запрос проходит через каждый компонент middleware последовательно. Каждый компонент может: 🟠Обрабатывать запрос и передать его следующему компоненту. 🟠Обрабатывать запрос и завершить его обработку, не передавая дальше. 🟠Внести изменения в запрос или ответ. 3⃣Передача управления Компонент middleware может передать управление следующему компоненту, вызывая метод next.Invoke(). После завершения обработки запроса следующим компонентом, управление возвращается обратно к предыдущему компоненту. 4⃣Формирование ответа Когда запрос доходит до конца конвейера и обработка завершается, ответ формируется и проходит обратно через все компоненты middleware в обратном порядке, что позволяет им вносить изменения в ответ перед его отправкой клиенту. Вот пример того, как можно настроить конвейер обработки запросов в ASP.NET Core:
public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Логирование запросов
        app.Use(async (context, next) =>
        {
            Console.WriteLine($"Request: {context.Request.Method} {context.Request.Path}");
            await next.Invoke();
            Console.WriteLine($"Response: {context.Response.StatusCode}");
        });

        // Обработка статических файлов
        app.UseStaticFiles();

        // Маршрутизация
        app.UseRouting();

        // Аутентификация
        app.UseAuthentication();

        // Авторизация
        app.UseAuthorization();

        // Конечные точки обработки запросов
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGet("/", async context =>
            {
                await context.Response.WriteAsync("Hello, World!");
            });
        });
    }
}
🚩Зачем нужен? 🟠Гибкость Конвейер позволяет легко добавлять и удалять компоненты, изменяя способ обработки запросов. 🟠Модульность Каждый компонент middleware выполняет свою задачу, что делает код более структурированным и легким для поддержки. 🟠Расширяемость Можно легко добавить новые компоненты для обработки различных аспектов запросов, таких как кэширование, компрессия и другие. 🟠Повторное использование Один и тот же компонент middleware может быть использован в разных приложениях, что снижает дублирование кода. Ставь 👍 и забирай 📚 Базу знаний

📺 Уникальная база записей IT собеседований 180+ записей реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы. Записи собесов от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство! У тебя есть запись собеседования? Мы готовы ее купить и заплатим до 3000 руб. за каждую

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

🤔 Что такое midleway? Это промежуточный этап или путь в каком-либо процессе, который служит связующим звеном между двумя основными этапами или состояниями. Этот термин часто используется в различных контекстах, таких как управление проектами, разработка программного обеспечения или личностный рост, обозначая стадию, на которой происходит переход или подготовка к финальному результату. 🟠Обработка запросов Middleware может перехватывать и изменять HTTP-запросы перед их передачей на основной сервер или конечную точку обработки. 🟠Обработка ответов Middleware также может перехватывать и изменять HTTP-ответы перед их отправкой клиенту. 🟠Аутентификация и авторизация Middleware может использоваться для проверки подлинности пользователей и определения их прав доступа. 🟠Логирование Middleware может записывать информацию о запросах и ответах для целей мониторинга и отладки. 🟠Обработка ошибок Middleware может перехватывать и обрабатывать ошибки, возникающие во время обработки запросов. 🟠Пример middleware в ASP.NET Core: Мiddleware компоненты добавляются в конвейер обработки запросов через метод Configure в классе Startup.
public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Пример простого middleware, который логирует каждый запрос
        app.Use(async (context, next) =>
        {
            Console.WriteLine($"Request: {context.Request.Method} {context.Request.Path}");
            await next.Invoke();
            Console.WriteLine($"Response: {context.Response.StatusCode}");
        });

        // Добавление стандартного middleware для обработки статических файлов
        app.UseStaticFiles();

        // Добавление стандартного middleware для маршрутизации
        app.UseRouting();

        // Конечная точка обработки запросов
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapGet("/", async context =>
            {
                await context.Response.WriteAsync("Hello, World!");
            });
        });
    }
}
🚩Зачем нужен? 🟠Разделение ответственности Middleware позволяет разбивать обработку запросов на отдельные компоненты, каждый из которых отвечает за свою часть логики. 🟠Повторное использование кода Один и тот же middleware может использоваться в разных частях приложения или даже в разных приложениях. 🟠Гибкость и расширяемость Middleware можно легко добавлять, удалять или заменять, что упрощает модификацию и расширение приложения. 🟠Поддерживаемость Разделение логики на отдельные компоненты делает код более структурированным и легким для поддержки. Ставь 👍 и забирай 📚 Базу знаний

Перец на канале «Записки необычного препода» делает невозможное! А именно — встраивает мышление на английском взрослым людям. Как обычно пытаются научить «думать на языке»? Методом «бери больше, кидай дальше». Слушайте песни, смотрите фильмы, читайте книги в оригинале, и оно само как-нибудь запустится. Тут всё совсем не так. Тут происходит встраивание языка на кардинально других принципах. В результате вы ощущаете грамматику и слова «изнутри». Так, как бы вы их ощущали, будь вы носителем английского языка. Почитать подробнее про эту технологию можно тут. Есть конкретный механизм мышления. Он состоит из визуального слоя, слоя смыслов и слоя слов. Механизм разбивается на элементы. Каждый элемент тренируется отдельно. Оттренированные элементы стыкуются друг с другом с помощью специальных упражнений. Здесь: - Пошаговая технология; - Разбор механик мышления на языке; - Простота — любое сложное упражнение должно быть разбито на простые. - Измеримость — все упражнения тренируются до норматива (как правило в секундах). Норматив гарантирует освоение упражнения на уровне навыка. - Сумма упражнений неизбежно приводит к мышлению на языке. Так же, как правильно собранные вместе детали создают автомобиль. Вот, например: - как найти английские артикли в русском; - как освоить что угодно в 10 раз быстрее; - как взломать английскую грамматику. Подписывайся, чтобы узнать больше.

🤔 Что такое полиморфизм? Полиморфизм — это принцип ООП, который позволяет объектам разных классов реагировать на одни и те же методы по-разному. В C# полиморфизм реализуется через наследование и интерфейсы, где один метод может работать с различными типами объектов. Полиморфизм позволяет создавать гибкие и расширяемые программы, где один интерфейс может быть реализован различными способами. Это делает код более универсальным и поддерживаемым. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как .NET 8 связан с async и await? Включает в себя ряд улучшений и нововведений, связанных с асинхронным программированием, а именно с использованием ключевых слов async и await. Эти изменения направлены на повышение производительности и удобства использования асинхронных методов. 🟠Улучшенная производительность Task-based API В .NET 8 были проведены оптимизации, которые улучшают производительность асинхронных операций. Это включает более эффективное управление задачами (Task), снижение накладных расходов на создание и завершение задач. 🟠Рефакторинг инфраструктуры асинхронных потоков Внутренние изменения в библиотеке обеспечивают более эффективное управление асинхронными потоками, что приводит к улучшению производительности приложений, активно использующих асинхронные операции. 🟠Новые инструменты диагностики и мониторинга В .NET 8 добавлены новые возможности для диагностики и мониторинга асинхронных операций, что помогает разработчикам лучше понимать и оптимизировать асинхронное выполнение в их приложениях. Асинхронные методы позволяют выполнять длительные операции, такие как ввод-вывод или сетевые запросы, без блокировки основного потока выполнения. Вот пример использования async и await:
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main(string[] args)
    {
        string url = "https://api.example.com/data";
        string result = await FetchDataAsync(url);
        Console.WriteLine(result);
    }

    public static async Task<string> FetchDataAsync(string url)
    {
        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            string responseData = await response.Content.ReadAsStringAsync();
            return responseData;
        }
    }
}
🚩Зачем нужны? 🟠Производительность Оптимизация асинхронных операций позволяет приложениям обрабатывать большее количество запросов и задач за единицу времени, что особенно важно для серверных приложений и веб-сервисов. 🟠Удобство разработки Улучшенные инструменты и библиотеки облегчают написание, отладку и мониторинг асинхронного кода, что делает разработку более продуктивной. 🟠Масштабируемость Асинхронные операции позволяют приложениям лучше масштабироваться, эффективно распределяя ресурсы и минимизируя задержки. Ставь 👍 и забирай 📚 Базу знаний

Программист — лекарство от больных тимлидов, тупых багов и тех самых митов в 10 утра ☠️ Здесь собирают лучшие мемы про айтишников, чтобы спасти вашу психику от died'осов на работе. Идеально зачиллить вечерком и скинуть друзьям: @progeri

🤔 Что такое ООП? ООП (Объектно-Ориентированное Программирование) — это парадигма программирования, основанная на концепции объектов, которые объединяют данные и методы для их обработки. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. ООП позволяет моделировать реальный мир с помощью классов и объектов, улучшая структуру и повторное использование кода. В C# все программы строятся на основе классов, что делает его строго объектно-ориентированным языком. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какой сейчас последний C#? 🚩Нововведения 🟠Primary Constructors для классов и структур Позволяют определять конструкторы прямо в объявлении класса или структуры, что упрощает код и улучшает его читаемость.
public class Person(string name, int age)
{
    public string Name { get; } = name;
    public int Age { get; } = age;
}
🟠Collection Literals Обеспечивает более удобный синтаксис для создания коллекций.
var numbers = [1, 2, 3, 4, 5];
🟠Default Values для auto-properties Теперь можно задавать значения по умолчанию для auto-properties, что делает код более лаконичным.
public string Name { get; set; } = "Unknown";
🟠Using aliases Позволяет использовать алиасы для пространств имен, улучшая читаемость кода.
using Text = System.Text;
🟠Improved Lambda Expressions: Улучшены возможности для работы с лямбда-выражениями, делая их более гибкими и мощными. 🚩Зачем нужны эти изменения? Эти нововведения направлены на упрощение синтаксиса языка, улучшение читаемости и поддерживаемости кода, а также на повышение производительности и удобства разработки.
public class Program
{
    public static void Main()
    {
        var person = new Person("John", 30);
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

        var numbers = [1, 2, 3, 4, 5];
        numbers.ForEach(n => Console.WriteLine(n));

        var name = new Name { Value = "Unknown" };
        Console.WriteLine(name.Value);
    }
}

public class Person(string name, int age)
{
    public string Name { get; } = name;
    public int Age { get; } = age;
}

public class Name
{
    public string Value { get; set; } = "Default Name";
}
Ставь 👍 и забирай 📚 Базу знаний

⚡️ Вся база знаний по IT в одном месте! 🧑‍💻 IT База — краткие разборы самого важного из мира IT. Сотни мастхев-ресурсов, каждый день новые материалы по работе и подготовке к собеседованиям. Подойдёт как новичкам, так и состоявшимся айтишникам; 🖥 Frontend База — всё для фронтенд разработчиков. Готовые решения для проектов, полезные курсы по JS/HTML/CSS, готовые роадмапы для комфортного освоения в профессии и дальнейшего развития; 👣 Backend База — самое важное для бэкендеров. Всё о работе с PHP, MySQL, MongoDB, Golang и Rust в одном месте, плюс полные курсы и лайфхаки для работы на каждый день; 🖥 База Знаний — склад полезных курсов и материалов, где легко найти что-то нужное по хэштегам. Если вам что-то интересно про IT, то оно уже лежит на Базе, проверяйте. ⏲ Успей подписаться, чтобы не потерять!

🤔 Когда инициируется сборка мусора? Сборка мусора в C# инициируется автоматически, когда система обнаруживает, что недостаточно доступной памяти или при достижении порогов работы сборщика. Также она может быть запущена вручную с помощью метода `GC.Collect()`. Garbage collector удаляет объекты, которые больше не используются программой, освобождая память. Сборка мусора помогает предотвратить утечки памяти и поддерживает эффективность приложения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое сайт машина? Это концепция из теории автоматов и программирования, которая описывает поведение системы на основе различных состояний и переходов между ними. Она позволяет моделировать сложные системы и процессы, управляя переходами между разными состояниями в зависимости от входных данных или событий. 🚩Зачем нужна 🟠Упрощения логики программы Позволяет разбить сложную логику на более простые, управляемые состояния. 🟠Четкого определения поведения системы Описывает, как система реагирует на различные события. 🟠Улучшения читабельности и поддержки кода Легче понять и изменить поведение системы, когда оно описано в виде состояний и переходов. 🚩Как используется 🟠Игровую разработку Для управления поведением персонажей. 🟠Системы управления В промышленной автоматике. 🟠Разработку пользовательских интерфейсов Для управления состояниями интерфейсов и переходами между ними. 🟠Протоколы связи Для управления последовательностью сообщений и реакцией на них.
using System;

public enum TrafficLightState
{
    Red,
    Green,
    Yellow
}

public class TrafficLight
{
    private TrafficLightState _state;

    public TrafficLight()
    {
        _state = TrafficLightState.Red;
    }

    public void ChangeState()
    {
        switch (_state)
        {
            case TrafficLightState.Red:
                _state = TrafficLightState.Green;
                break;
            case TrafficLightState.Green:
                _state = TrafficLightState.Yellow;
                break;
            case TrafficLightState.Yellow:
                _state = TrafficLightState.Red;
                break;
        }
        Console.WriteLine($"Состояние светофора: {_state}");
    }
}

class Program
{
    static void Main()
    {
        TrafficLight trafficLight = new TrafficLight();
        trafficLight.ChangeState(); // Состояние светофора: Green
        trafficLight.ChangeState(); // Состояние светофора: Yellow
        trafficLight.ChangeState(); // Состояние светофора: Red
    }
}
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие бывают типы? Существует несколько типов данных, которые можно разделить на основные категории: простые типы, ссылочные типы, и пользовательские типы. 🚩Основные типы данных: 🟠Простые типы (Value Types) Простые типы хранят значения непосредственно и включают примитивные типы, перечисления и структуры. 🟠Примитивные типы Целочисленные типы: byte (8-битный, от 0 до 255) sbyte (8-битный, от -128 до 127) short (16-битный, от -32,768 до 32,767) ushort (16-битный, от 0 до 65,535) int (32-битный, от -2,147,483,648 до 2,147,483,647) uint (32-битный, от 0 до 4,294,967,295) long (64-битный, от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807) ulong (64-битный, от 0 до 18,446,744,073,709,551,615) 🟠Типы с плавающей запятой: float (32-битный, ±1.5e−45 до ±3.4e38, 7 знаков точности) double (64-битный, ±5.0e−324 до ±1.7e308, 15-16 знаков точности) 🟠Десятичные типы: decimal (128-битный, ±1.0 × 10−28 до ±7.9 × 10^28, 28-29 знаков точности) 🟠Прочие простые типы: char (16-битный символ Unicode) bool (логический тип, принимает значения true или false) 🟠Структуры и перечисления Структуры (struct): Пользовательские типы данных, которые являются значимыми типами и могут содержать поля, методы, свойства и т.д. Перечисления (enum): Тип, представляющий набор именованных констант. 🟠Ссылочные типы (Reference Types) Ссылочные типы хранят ссылку на область памяти, где находятся данные. К ним относятся классы, интерфейсы, делегаты и массивы. 🚩Классы и интерфейсы 🟠Классы (class): Основной строительный блок объектно-ориентированного программирования, могут содержать поля, методы, свойства, события и т.д. 🟠Интерфейсы (interface): Контракты, определяющие набор методов и свойств, которые должны быть реализованы классами. 🚩Делегаты и события 🟠Делегаты (delegate): Типы, представляющие ссылку на методы. Используются для реализации обратных вызовов и событий. 🟠События (event): Механизм, через который объекты могут сообщать о произошедших действиях. 🚩Массивы и строки 🟠Массивы (Array): Коллекции элементов одного типа, доступ к которым осуществляется по индексу. 🟠Строки (string): Неизменяемые последовательности символов. 🚩Пользовательские типы Пользовательские типы могут быть созданы на основе простых и ссылочных типов. 🚩Кортежи и анонимные типы 🟠Кортежи (Tuple): Группировка значений различных типов. 🟠Анонимные типы: Типы, созданные для хранения наборов значений, определённых на лету. 🟠Nullable-типы Позволяют значимым типам принимать значение null.
int? nullableInt = null; // Nullable int
Пример использования простых типов:
int age = 30;
double salary = 50000.50;
bool isEmployed = true;
char grade = 'A';
Пример использования классов и интерфейсов:
public interface IAnimal
{
    void Speak();
}

public class Dog : IAnimal
{
    public void Speak()
    {
        Console.WriteLine("Bark");
    }
}
Пример использования структуры:
public struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}
Пример использования перечисления:
public enum DaysOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое middleware в ASP.NET core? Middleware — это компоненты, которые обрабатывают HTTP-запросы и ответы в ASP.NET Core. Каждый компонент middleware может либо обработать запрос, либо передать его следующему компоненту в конвейере. Они используются для выполнения задач, таких как аутентификация, логирование или обработка ошибок. Последовательность middleware определяет поведение приложения и порядок обработки запросов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний