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

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

Open in Telegram
5 058
Subscribers
-524 hours
-77 days
-1730 days
Posts Archive
Ищу желающих выполнять задачи с помощью ИИ! Работа полностью на удаленке с зп до 150 000 рублей в месяц. Без опыта, нужен тол
Ищу желающих выполнять задачи с помощью ИИ! Работа полностью на удаленке с зп до 150 000 рублей в месяц. Без опыта, нужен только телефон, занятость 3-6 часов в день. Всему обучат на бесплатном курсе и после возьму на работу: ✅ 3 дня уроков по 30 минут ✅ Домашки с проверкой и оплатой бонусами ✅ Плачу 10 тыс за каждую выполненную домашку Все кто пройдет курс, получат сертификат от школы с образовательной лицензией. ⚡ Набор заканчивается завтра. 👍 Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ ganstaagency.com О рекламодателе

🤔 ConcurrentDictionary — для чего его используют? Используется для: - Параллельного доступа к словарю без блокировок. - Поддержки безопасных операций чтения и записи (например, TryAdd, TryUpdate, AddOrUpdate). - Повышения производительности при работе с данными в многопоточном приложении (например, при кэшировании, обработке запросов и событий). Это ключевая структура в системах с высокой конкурентной нагрузкой. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть методы запросов жизненного цикла в asp.net Core? В ASP.NET Core жизненный цикл запроса проходит несколько этапов — от получения HTTP-запроса до отправки ответа. В этом процессе участвуют Middleware, контроллеры, фильтры и обработчики событий. 🚩Основные этапы жизненного цикла запроса Получение запроса (HttpContext создаётся) Обработка через Middleware (передача запроса вниз) Маршрутизация (Routing) — определение контроллера Фильтры (например, аутентификация) Вызов контроллера и метода (Action) Обратный проход через Middleware (формирование ответа) Отправка ответа клиенту 🚩Методы Middleware (Промежуточное ПО) Middleware — это основной механизм обработки запросов. Где регистрируются? → В Program.csapp.Use...) Методы Middleware
app.Use(async (context, next) =>
{
    Console.WriteLine("Перед обработкой запроса");
    await next(); // Передаём запрос дальше
    Console.WriteLine("После обработки запроса");
});
🚩Методы в контроллерах (`Controller`) Контроллер обрабатывает запросы после маршрутизации. Основные методы
public class HomeController : Controller
{
    // Метод вызывается при GET-запросе
    public IActionResult Index()
    {
        return View();
    }

    // Метод вызывается при POST-запросе
    [HttpPost]
    public IActionResult SubmitForm(FormModel model)
    {
        return RedirectToAction("Index");
    }
}
🚩Фильтры (`Filters`) Фильтры выполняются до и после вызова контроллера. Методы фильтров
public class MyActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        Console.WriteLine("Перед вызовом метода контроллера");
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        Console.WriteLine("После вызова метода контроллера");
    }
}
🚩Методы жизненного цикла в `Program.cs` В ASP.NET Core 6+ вся конфигурация находится в Program.cs. Методы инициализации
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews(); // Подключаем MVC

var app = builder.Build();

app.UseRouting(); // Включаем маршрутизацию
app.UseAuthorization(); // Проверка прав
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers(); // Подключаем контроллеры
});

app.Run();
Ставь 👍 и забирай 📚 Базу знаний

Бесплатный курс Digital-дизайна На бесплатном курсе ты сможешь: ✨попробовать себя в digital-дизайне: афиши, сайты, UX/UI ✨сде
Бесплатный курс Digital-дизайна На бесплатном курсе ты сможешь: ✨попробовать себя в digital-дизайне: афиши, сайты, UX/UI ✨сделать 3 проекта для портфолио с фидбэком от наставника ✨понять, как устроена работа дизайнера ✨получить доступ к «секретной базе» и гайдам по профессии Попробовать #реклама 16+ study.logomachine.ru О рекламодателе

🤔 В чём разница между Count и Capacity? - Count — фактическое количество элементов, хранящихся в коллекции. - Capacity — внутренняя ёмкость, то есть сколько элементов может поместиться до перераспределения памяти. Capacity всегда больше или равно Count. Увеличение Count сверх Capacity приводит к перераспределению памяти. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие объекты живут в нулевом поколении? В C# и .NET память управляется сборщиком мусора (Garbage Collector, GC), который делит объекты на три поколения 🟠Generation 0 (Gen 0, нулевое поколение) самые "молодые" объекты. 🟠Generation 1 (Gen 1, первое поколение) промежуточные объекты. 🟠Generation 2 (Gen 2, второе поколение) "долгоживущие" объекты. 🚩Какие объекты попадают в Generation 0? В Gen 0 живут "короткоживущие" объекты которые создаются и быстро уничтожаются. Это новые объекты, которые только что были выделены в управляемой куче (Heap). Обычно это локальные переменные внутри методов, если они не выходят за их пределы. Пример объектов в Gen 0
class Program
{
    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            var obj = new object(); // Этот объект создаётся в Gen 0
        }

        GC.Collect(); // Принудительный запуск GC для проверки
    }
}
🚩Когда объекты остаются в Gen 0, а когда переходят в следующее поколение? Если объект быстро умирает → удаляется из Gen 0 при первой же очистке. Если объект выжил после первой очистки GC → переходит в Gen 1. Если объект живёт долго → может попасть в Gen 2. Ставь 👍 и забирай 📚 Базу знаний

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

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

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

🤔 Что такое аутентификация? Когда человек вводит логин и пароль, система аутентифицирует его, проверяя, действительно ли это тот, за кого он себя выдаёт. 🚩Как работает аутентификация? Пользователь вводит данные (например, логин и пароль). Система проверяет их в базе данных. Если данные верны → доступ разрешён. Если данные неверны → отказ в доступе.
public async Task<IActionResult> Login(string username, string password)
{
    var user = await _userManager.FindByNameAsync(username);
    if (user != null && await _userManager.CheckPasswordAsync(user, password))
    {
        await _signInManager.SignInAsync(user, isPersistent: false);
        return RedirectToAction("Index", "Home");
    }
    ModelState.AddModelError("", "Неверный логин или пароль");
    return View();
}
🚩Виды аутентификации 🟠По паролю Самый распространённый вариант. Минус: если пароль украден – доступ открыт. 🟠Двухфакторная (2FA) Например, SMS-код + пароль. Усложняет взлом аккаунта. 🟠Биометрическая Отпечаток пальца, Face ID. Удобно, но требует спецоборудования. 🟠OAuth (Google, Facebook, GitHub) Вход через соцсети. Удобно, не нужно запоминать пароль. 🟠Аутентификация по токену (JWT) Используется в API и микросервисах. Позволяет работать без сохранения сессий. Ставь 👍 и забирай 📚 Базу знаний

Гайд по эффективным онлайн-встречам для отделов закупок Как специалистам по закупкам и тендерам экономить время на онлайн-сов
Гайд по эффективным онлайн-встречам для отделов закупок Как специалистам по закупкам и тендерам экономить время на онлайн-совещаниях, сократить время на подготовку ТЗ и ускорить цикл закупок? Гайд МТС Линк — чек-листы, кейсы и подходы для упрощения коммуникации закупщиков с внутренними заказчиками и подрядчиками с помощью онлайн-встреч. ✅ В гайде: - Как создать постоянную ссылку на синки с коллегами или поставщиками и подключаться в 2 клика; - Как ускорить сбор требований без долгих переписок и конфликтов с юр.отделом; - Как обсуждать ТЗ и сразу фиксировать договоренности с помощью ИИ; - Как вести переговоры с подрядчиками и оперативно согласовать ключевые этапы сделки; - Как отслеживать выполнение условий контракта. Бонус внутри: 5 способов не выгореть от бесконечных синков. ✨ Скачайте гайд бесплатно по ссылке Скачать #реклама 16+ mts-link.ru О рекламодателе

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

🤔 Есть ли разница в какой последовательности писать catch-и? Да, порядок catch имеет значение! Исключения проверяются сверху вниз, и первый подходящий catch будет выполнен. 🚩Как работает `catch`? 1. Исключение проверяется по порядку catch-блоков. 2. Если catch подходит → он выполняется, остальные игнорируются. 3. Специфичные исключения (DivideByZeroException) нужно ставить выше общих (Exception). 🚩Ошибка: общий `catch` выше специфичных Так делать нельзя!
try
{
    int x = 5 / 0; // Ошибка
}
catch (Exception ex) // Ловит все исключения
{
    Console.WriteLine("Общая ошибка");
}
catch (DivideByZeroException ex) // Никогда не выполнится!
{
    Console.WriteLine("Деление на ноль!");
}
Правильный порядок catch
try
{
    int x = 5 / 0;
}
catch (DivideByZeroException ex) // Специфичный `catch` первым
{
    Console.WriteLine("Ошибка: деление на ноль!");
}
catch (Exception ex) // Общий `catch` внизу
{
    Console.WriteLine("Произошла ошибка!");
}
Ставь 👍 и забирай 📚 Базу знаний

Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеро
Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеров и IT-руководителей, чтобы обменяться опытом и увидеть, как работают технологии, которые меняют индустрии. 7 тематических треков, 50+ докладов, реальные бизнес-кейсы и нетворкинг! ✨Участие бесплатное, нужно только зарегистрироваться!✨ Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе Реклама на Яндексе

🤔 Какие типы данных можно использовать у Dictionary в качестве ключа? Ключи должны быть: - Уникальными - Иметь устойчивую реализацию GetHashCode() и Equals() Подходящие типы: - Примитивы (int, string, GUID и т.п.) - Структуры (например, кастомные value types) - Объекты (если правильно переопределены Equals и GetHashCode) Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем отличие slim версий от обычных семафоров? Semaphore – классический семафор, использующий ядро операционной системы для синхронизации потоков. SemaphoreSlim – более лёгкая и быстрая версия, работающая в основном на уровне управляемого кода без вызовов ядра ОС. 🚩Когда использовать `Semaphore`, а когда `SemaphoreSlim`? Используйте Semaphore, если: Вам нужно разделение ресурсов между разными процессами. Вы работаете с нативным кодом или сторонними API, использующими семафоры ОС. Используйте SemaphoreSlim, если: Вам нужна быстрая блокировка между потоками в одном процессе. Вы хотите использовать асинхронный код (async/await). Вам важна производительность. 🚩Пример использования `Semaphore` (между процессами и потоками)
using System;
using System.Threading;

class Program
{
    static Semaphore semaphore = new Semaphore(2, 2); // Макс. 2 потока могут войти одновременно

    static void Main()
    {
        for (int i = 1; i <= 5; i++)
        {
            new Thread(DoWork).Start(i);
        }
    }

    static void DoWork(object id)
    {
        Console.WriteLine($"Поток {id} ждёт семафор...");
        semaphore.WaitOne(); // Захватываем семафор

        Console.WriteLine($"Поток {id} выполняет работу...");
        Thread.Sleep(2000); // Симуляция работы

        Console.WriteLine($"Поток {id} освобождает семафор");
        semaphore.Release(); // Освобождаем семафор
    }
}
🚩Пример использования `SemaphoreSlim` (быстрее, поддерживает `async/await`)
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2); // 2 потока одновременно

    static async Task Main()
    {
        Task[] tasks = new Task[5];
        for (int i = 0; i < 5; i++)
        {
            tasks[i] = DoWork(i);
        }
        await Task.WhenAll(tasks);
    }

    static async Task DoWork(int id)
    {
        Console.WriteLine($"Задача {id} ждёт семафор...");
        await semaphoreSlim.WaitAsync(); // Асинхронное ожидание

        Console.WriteLine($"Задача {id} выполняет работу...");
        await Task.Delay(2000); // Симуляция работы

        Console.WriteLine($"Задача {id} освобождает семафор");
        semaphoreSlim.Release(); // Освобождаем семафор
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие объекты живут в нулевом поколении? Нулевое поколение (Generation 0) — это область памяти, куда помещаются все новые объекты, когда они только создаются. Туда попадают: - Все новые экземпляры классов. - Краткоживущие объекты (например, временные строки, коллекции и т.п.). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое метод set? Метод set в контексте чаще всего используется в свойствах (properties) класса и служит для установки значения свойства. Он работает как часть автоматического или пользовательского свойства, позволяя контролировать, что происходит, когда свойству присваивается значение. 🚩Что такое свойство? Свойство (property) в C# – это синтаксический сахар, который позволяет обращаться к полям класса как к переменным, но при этом добавляет возможность добавлять логику для получения (get) и установки (set) значений.
public class Person
{
    private string name; // Закрытое поле

    public string Name // Свойство
    {
        get { return name; } // Получить значение
        set { name = value; } // Установить значение
    }
}
🚩Зачем нужен метод `set`? 🟠Контролировать логику установки значений Например, вы можете ограничить, какие значения можно присваивать. 🟠Выполнять дополнительные действия при присваивании Например, логирование или обновление других полей. 🟠Защищать данные Вы можете использовать метод set для проверки значений на валидность или ограничения доступа (например, сделать его приватным). 🚩Пример использования `set` Проверка входных данных:
public class Person
{
    private int age;

    public int Age
    {
        get { return age; }
        set
        {
            if (value < 0)
            {
                throw new ArgumentException("Возраст не может быть отрицательным.");
            }
            age = value;
        }
    }
}
Только для чтения Вы можете сделать set приватным, чтобы свойство можно было только читать извне:
public class Person
{
    public string Name { get; private set; }

    public Person(string name)
    {
        Name = name;
    }
}
Автоматические свойства Если вам не нужна дополнительная логика, можно использовать автоматические свойства
public class Person
{
    public string Name { get; set; } // Автоматически создаются get и set
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как отменить Task? Используется CancellationToken: 1. Создаётся CancellationTokenSource. 2. В метод передаётся токен. 3. При отмене — токен сигнализирует завершение задачи. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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