uk
Feedback

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

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

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

Відкрити в Telegram

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

Показати більше
5 014
Підписники
Немає даних24 години
+67 днів
+2430 днів
Архів дописів
malloc - устройство памяти в системном программировании Поймёте, как устроено динамическое выделение памяти в системных программах Зарегистрироваться #реклама 16+ otus.ru О рекламодателе

🤔 Какие проблемы могут быть при многопоточности и как их избежать? Многопоточное программирование позволяет улучшить производительность программ за счет параллельной обработки данных, но это также влечет за собой ряд специфических проблем. Понимание этих проблем и способы их предотвращения или управления ими критически важны для создания надежных и эффективных многопоточных приложений. 🚩Основные проблемы 🟠Гонки данных (Race Conditions) Проблема: Два или более потоков пытаются одновременно изменить общие данные или один поток читает данные во время их изменения другим потоком, что приводит к непредсказуемым результатам. Решение: Использование механизмов синхронизации, таких как блокировки (locks), мьютексы (mutexes) и семафоры (semaphores), для контроля доступа к общим ресурсам. 🟠Взаимная блокировка (Deadlock) Проблема: Два или более потоков бесконечно ожидают ресурсы, заблокированные друг другом, в результате чего они не могут продолжить выполнение. Решение: Разработка программы таким образом, чтобы потоки запрашивали ресурсы всегда в одном и том же порядке, использование таймаутов для блокировок, чтобы потоки могли выйти из состояния ожидания. 🟠Голодание (Starvation) Проблема: Один или несколько потоков не могут получить доступ к необходимым ресурсам, потому что другие потоки постоянно занимают их. Решение: Применение справедливых блокировок (fair locks) или алгоритмов планирования, которые обеспечивают всем потокам равный доступ к ресурсам. 🟠Переключение контекста (Context Switching) Проблема: Частое переключение контекста между потоками может значительно снизить производительность системы, особенно если потоки часто блокируются и разблокируются. Решение: Оптимизация количества потоков, уменьшение зависимостей между потоками и уменьшение использования блокировок. 🟠Проблемы с проектированием Проблема: Неправильное проектирование многопоточной архитектуры может привести к сложностям в поддержке и расширении программного обеспечения. Решение: Использование абстракций высокого уровня для работы с потоками, таких как пулы потоков, параллельные библиотеки (например, TPL в .NET) и модели акторов.
private static readonly object _lock = new object();
private static int _sharedResource;

public static void UpdateResource()
{
    lock (_lock)
    {
        _sharedResource++;
        // Выполнение некоторой работы с общим ресурсом
    }
}
Избегание взаимной блокировки
private static readonly object _lock1

 = new object();
private static readonly object _lock2 = new object();

public static void Method1()
{
    lock (_lock1)
    {
        // Некоторые действия
        lock (_lock2)
        {
            // Дополнительные действия
        }
    }
}

public static void Method2()
{
    lock (_lock1)
    {
        // Аналогичные действия
        lock (_lock2)
        {
            // Дополнительные действия
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Онлайн-магистратура для IT: ИТМО, МИФИ + Яндекс Программы онлайн-магистратуры ИТМО и МИФИ в партнёрстве с Яндексом. Актуальные знания, практическое обучение и гибкий график. Учитесь, совмещая с работой. Доступна господдержка оплаты, отсрочка от армии Перейти на сайт #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Является ли POST идемпотентным? Нет, метод POST не является идемпотентным. Каждый повторный вызов POST может создавать новые ресурсы или изменять состояние системы, что приводит к разным результатам. Это типичный метод для операций создания или изменения, и его повторение может вызвать дублирование или непредсказуемый эффект. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое контекст синхронизации? "контекст синхронизации" (SynchronizationContext) — это класс, который предоставляет возможность управлять способом, которым операции переключаются обратно в основной поток или контекст для продолжения выполнения после асинхронной операции. Это важно для приложений с графическим пользовательским интерфейсом, таких как Windows Forms и WPF, где доступ к элементам пользовательского интерфейса разрешён только из основного потока. 🚩Как он работает Абстрагирует модель синхронизации для различных сред выполнения. Например, в приложениях Windows Forms и WPF управление элементами UI должно происходить в главном потоке. SynchronizationContext предоставляет методы для отправки (Send) и постановки (Post) задач, которые должны выполняться в правильном контексте. 🟠Send синхронно отправляет делегат на выполнение в контекст синхронизации. 🟠Post асинхронно отправляет делегат на выполнение в контекст синхронизации. 🚩Применение SynchronizationContext Используется для того, чтобы после асинхронной операции вернуться в правильный поток и безопасно обновить UI или выполнить код, который требует выполнения в определённом потоке.
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        LoadDataAsync();
    }

    private async void LoadDataAsync()
    {
        string data = await GetDataAsync();
        // Асинхронно получаем данные и обновляем UI
        Dispatcher.Invoke(() => DisplayData(data));
    }

    private Task<string> GetDataAsync()
    {
        return Task.Run(() =>
        {
            // Имитация долгой операции
            Thread.Sleep(5000);
            return "Data loaded";
        });
    }

    private void DisplayData(string data)
    {
        MyTextBox.Text = data;
    }
}
🚩Зачем он нужен 🟠Безопасность потоков Позволяет безопасно обращаться к элементам UI из асинхронных или вторичных потоков. 🟠Правильное управление потоками Обеспечивает выполнение кода в контексте, для которого он предназначен, что особенно важно в многопоточных и сетевых приложениях. Ставь 👍 и забирай 📚 Базу знаний

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

Освой многопоточность в Java: вебинар с от Otus! Хочешь писать быстрый Java код? Приходи на открытый урок: разберём основы многопоточности - узнаешь, как ускорить приложения! Узнать больше #реклама 16+ otus.ru О рекламодателе

🤔 Какие есть виды привязок данных и когда применяются? Привязка данных (Data Binding) — это механизм, который позволяет автоматически синхронизировать данные между источником (например, моделью) и интерфейсом (например, элементами UI). 🚩Односторонняя привязка (One-Way Binding) Данные идут только в одном направлении: из модели в UI. - Для вывода данных, которые не должны изменяться пользователем - Например, для отображения текущего времени Пример в WPF
<TextBlock Text="{Binding UserName}" />
🚩Двусторонняя привязка (Two-Way Binding) Данные синхронизируются в обе стороны: UI ↔️ Модель - В формах ввода (например, TextBox), чтобы обновлять данные в модели - Используется в MVVM Пример в WPF
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
🚩Привязка к событиям (Event Binding) Позволяет связывать UI с методами обработки событий. - Для обработки кнопок (Button.Click) - В реактивных фреймворках (Blazor, WinForms) Пример в Blazor
<button @onclick="IncrementCount">Добавить</button>

@code {
    private int count = 0;
    private void IncrementCount() => count++;
}
🚩Привязка к командам (Command Binding) Используется в паттерне MVVM вместо событий - В WPF и Xamarin - Позволяет отделить логику от UI Пример в WPF
<Button Content="Сохранить" Command="{Binding SaveCommand}" />
🚩Привязка к коллекциям (ItemsSource Binding) Позволяет привязывать списки к элементам UI (ListBox, DataGrid) - В списках, таблицах, дропдаунах Пример в WPF
<ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Name" />
Ставь 👍 и забирай 📚 Базу знаний

Как стать QA с нуля и выйти на оффер от 150 К/мес За годы в IT я прошёл путь от первых шагов до Senior QA. И знаю, как это вы
Как стать QA с нуля и выйти на оффер от 150 К/мес За годы в IT я прошёл путь от первых шагов до Senior QA. И знаю, как это выглядит изнутри: Сначала не знаешь, с чего начать, и тонешь в инфе Потом учишься, стараешься, но на собесах всё равно валишься А дальше работа вроде есть, а зарплата годами стоит на месте И всё время кажется, что проблема в тебе. Но чаще всего проблема не в мотиваци, а в отсутствии системы. Именно её я и выстраивал все эти годы: через ошибки, отказы и набитые шишки — пока не дошёл до офферов от X5, .bank, Bars Group и VL Projects. А теперь собрал этот опыт в понятный маршрут и делюсь им в канале: – как стартовать и расти в QA – как наработать опыт для резюме – как готовиться к собеседованиям – как проходить отбор увереннее – как выйти на оффер от 150К/мес Подписывайся, пройдём этот путь вместе Подписаться #реклама 16+ edqa.ru О рекламодателе

🤔 Что такое индексы, какие типы бывают, использовал ли их на практике? Индексы в контексте баз данных — это структуры, которые помогают ускорить операции выборки данных, предоставляя быстрые пути к данным в таблицах. Виды индексов включают кластерные, некластерные, полнотекстовые и другие. Кластерные индексы определяют физический порядок хранения данных в таблице, в то время как некластерные индексы хранят только указатели на данные. Я использовал индексы на практике для улучшения производительности запросов в базах данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие методы есть в 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));
    });
}
Ставь 👍 и забирай 📚 Базу знаний

Директ возвращает 10% бюджета за рекламу в мессенджерах Запускайте кампании в Telegram и МАКС с 1 июня по 31 августа — получа
Директ возвращает 10% бюджета за рекламу в мессенджерах Запускайте кампании в Telegram и МАКС с 1 июня по 31 августа — получайте кешбэк 10%. Его можно потратить на новые кампании. 💰 Как получить кешбэк: — Заполните форму: укажите логин в Директе и что продвигаете (сайт или канал); — Запустите рекламу в МАКС, Telegram или сразу на двух площадках с оплатой за клики; — В сентябре начислим кешбэк. Получить предложение #реклама yandex.ru О рекламодателе

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

И вы знаете Поэтому просто ещё раз обозначим, что промокод NETSIL скинет 5000 рублей при бронировании жилья на Яндекс Путешес
И вы знаете Поэтому просто ещё раз обозначим, что промокод NETSIL скинет 5000 рублей при бронировании жилья на Яндекс Путешествиях. Забронировать #реклама travel.yandex.ru О рекламодателе

🤔 Какие есть модификаторы доступа? Есть модификаторы доступа, которые определяют, кто может использовать классы, методы и переменные. Они помогают скрыть внутренние детали кода и контролировать доступ к данным. 🚩Подробное объяснение с примерами 🟠`public` (Открытый доступ) Открытый доступ означает, что элемент можно использовать везде.
public class Car
{
    public string Model = "Tesla";
}

class Program
{
    static void Main()
    {
        Car car = new Car();
        Console.WriteLine(car.Model); // Доступ открыт
    }
}
🟠`private` (Только внутри класса) Самый закрытый модификатор. Поля и методы невидимы за пределами класса.
class Car
{
    private string model = "Tesla";

    private void PrintModel()
    {
        Console.WriteLine(model);
    }
}

class Program
{
    static void Main()
    {
        Car car = new Car();
        // car.model = "BMW";   Ошибка! Поле `model` — private
        // car.PrintModel();  Ошибка! Метод `PrintModel` — private
    }
}
🟠`protected` (Доступен в наследниках) Доступен только внутри класса и его наследников.
class Car
{
    protected string Model = "Tesla";
}

class ElectricCar : Car
{
    public void ShowModel()
    {
        Console.WriteLine(Model); //  Можно, потому что наследуемый класс
    }
}

class Program
{
    static void Main()
    {
        ElectricCar eCar = new ElectricCar();
        // eCar.Model  Ошибка! Поле `Model` доступно только в наследниках
    }
}
🟠`internal` (Только внутри проекта) Элементы с internal можно использовать только внутри одной сборки (проекта).
internal class Engine
{
    public void Start() => Console.WriteLine("Двигатель запущен");
}

class Program
{
    static void Main()
    {
        Engine engine = new Engine();
        engine.Start(); //  Работает, потому что внутри того же проекта
    }
}
🟠`protected internal` (В сборке и у наследников) Этот модификатор разрешает доступ внутри сборки, а также в классах-наследниках за её пределами.
public class Car
{
    protected internal string Model = "Tesla";
}

class ElectricCar : Car
{
    public void ShowModel()
    {
        Console.WriteLine(Model); //  Можно, потому что наследник
    }
}
🟠`private protected` (Только в классе и наследниках из той же сборки) Этот модификатор ещё жёстче, чем protected internal: - Доступ внутри класса – да - В наследниках – только внутри той же сборки - В других проектах – нет доступа!
class Car
{
    private protected string Model = "Tesla";
}

class ElectricCar : Car
{
    public void ShowModel()
    {
        Console.WriteLine(Model); //  Можно, потому что наследник в той же сборке
    }
}

class Program
{
    static void Main()
    {
        ElectricCar eCar = new ElectricCar();
        // eCar.Model  Ошибка! `Model` доступен только в наследниках из этой сборки
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес. Преимущества аренды: - Выделенные ресурсы без переплаты; - KVM-виртуализация; - Быстрые NVMe SSD; - Соответствие 152-ФЗ, PCI DSS; - Бесплатная защита от DDoS; - Управление через панель, API и Terraform; - Техподдержка 24/7. Запустите сервер за несколько минут! Попробовать #реклама 16+ selectel.ru О рекламодателе

🤔 Что помнишь об авторизации? Авторизация в контексте веб-разработки и программирования — это процесс, который проверяет, имеет ли пользователь права на выполнение определенных действий или доступ к конкретным ресурсам. В C# и .NET, это может быть реализовано через различные механизмы, такие как ролевая модель доступа (Role-based Access Control - RBAC) или претензионное управление доступом (Claims-based Access Control). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в мультиподписке
Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в мультиподписке Плюс. Попробуйте бесплатно❤️ Слушать #реклама 18+ music.yandex.ru О рекламодателе

🤔 Про абстрактные классы, интерфейсы и в чем их разница и особенности? В C# абстрактные классы и интерфейсы используются для проектирования системы через наследование и полиморфизм, позволяя описывать общую функциональность, которую будут реализовывать конкретные классы. Однако у них есть свои особенности, ограничения и сферы применения. 🚩Абстрактный класс Абстрактный класс — это класс, который не может быть создан напрямую (нельзя создать объект этого класса). Он может содержать как абстрактные методы (без реализации), так и методы с реализацией.
public abstract class Animal
{
    public abstract void MakeSound(); // Абстрактный метод
    public void Sleep() // Метод с реализацией
    {
        Console.WriteLine("Sleeping...");
    }
}
Пример
public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark!");
    }
}
Использование
Animal myDog = new Dog();
myDog.MakeSound(); // Вывод: Bark!
myDog.Sleep();     // Вывод: Sleeping...
🚩Интерфейс Интерфейс — это контракт, который определяет только сигнатуры методов, свойств, событий и индексаторов. Реализацию этих членов должен предоставить класс, который реализует интерфейс.
public interface IMovable
{
    void Move();
    int Speed { get; set; }
}
Пример
public class Car : IMovable
{
    public int Speed { get; set; }

    public void Move()
    {
        Console.WriteLine($"Moving at speed: {Speed}");
    }
}
Использование
IMovable myCar = new Car { Speed = 60 };
myCar.Move(); // Вывод: Moving at speed: 60
Ставь 👍 и забирай 📚 Базу знаний

Натяжные потолки в Перми от "Потолкового" Бесплатный замер. Работаем без выходных. Скидка пенсионерам и новосёлам -10%. Расср
Натяжные потолки в Перми от "Потолкового" Бесплатный замер. Работаем без выходных. Скидка пенсионерам и новосёлам -10%. Рассрочка 0%. Переходи! Перейти на сайт #реклама perm.potolochnik24.ru О рекламодателе