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

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

الذهاب إلى القناة على Telegram
5 047
المشتركون
-824 ساعات
-137 أيام
-2330 أيام
أرشيف المشاركات
🤔 Какие бывают типы данных? В C# существует множество различных типов данных, которые можно разделить на две основные категории: значимые типы (value types) и ссылочные типы (reference types). Рассмотрим каждую из этих категорий и их подтипы. 🚩Значимые типы (Value Types) Значимые типы хранят данные непосредственно в своей памяти. Они обычно располагаются в стеке и имеют фиксированный размер. К значимым типам относятся: 🟠Простые типы (Simple Types) Числовые типы Целочисленные типы: byte (8 бит) sbyte (8 бит) short (16 бит) ushort (16 бит) int (32 бита) uint (32 бита) long (64 бита) ulong (64 бита) Вещественные типы: float (32 бита) double (64 бита) Десятичный тип: decimal (128 бит) Логический тип bool (1 бит, значения true или false) Символьный тип char (16 бит, символы в формате Unicode) 🟠Структуры (Structs) Пользовательские типы, которые могут содержать поля, свойства и методы. Пример: struct Point { public int X; public int Y; } 🟠Перечисления (Enums) Специальные типы, представляющие набор именованных констант. Пример: enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } 🟠Nullable Types Типы, которые могут принимать значение null. Пример: int?, double? 🚩Ссылочные типы (Reference Types) 🟠Классы (Classes) Основные объекты в C#, могут содержать поля, свойства, методы и события. Пример: class Person { public string Name; public int Age; } 🟠Интерфейсы (Interfaces) Определяют контракт, который должны реализовать классы. Пример: interface IMovable { void Move(); } 🟠Массивы (Arrays) Коллекции однотипных элементов. Пример: int[] numbers = new int[5]; 🟠Делегаты (Delegates) Типы, которые представляют собой ссылки на методы. Пример: delegate void Process(int value); 🟠Строки (Strings) Непосредственно представляют собой последовательность символов. Пример: string message = "Hello, World!"; 🟠Записи (Records) Новый тип в C# 9.0, предназначенный для неизменяемых объектов. Пример: record Person(string Name, int Age); 🚩Примеры и использование Значимые типы
int a = 5;
float b = 3.14f;
bool isTrue = true;
char letter = 'A';
Ссылочные типы
string message = "Hello, World!";
Person person = new Person { Name = "Alice", Age = 30 };

int[] numbers = new int[] { 1, 2, 3, 4, 5 };
Ставь 👍 и забирай 📚 Базу знаний

Вебинар для бизнеса: как эффективно проводить пентесты Комплексный пентест — надежное решение для бизнеса, чтобы от и до прос
Вебинар для бизнеса: как эффективно проводить пентесты Комплексный пентест — надежное решение для бизнеса, чтобы от и до просканировать внутренний и внешний периметр ИТ-безопасности. На вебинаре 17 апреля расскажем о том, как эффективно использовать результаты пентестов, чтобы они работали на пользу бизнеса. Главные темы вебинара: - Как выявить реальные уязвимости и оценить их влияние. - Какие методы используют злоумышленники и как пробивают защиту. - Как на основе отчета о пентесте усилить кибербезопасность компании. Вас ждут разборы более 200 реальных проектов по пентесту в различных секторах бизнеса. Регистрируйтесь, чтобы обеспечить качественную защиту инфраструктуры своей компании. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Что такое АУС-2? Это автоматизированная управляющая система второго уровня (чаще встречается в контексте производств, ТЭК или крупных предприятий). Конкретная расшифровка зависит от контекста (например, у «Газпрома» или РЖД может быть своя трактовка). Обычно речь о высокоуровневом управлении технологическими процессами, над АСУ ТП. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Регистрация на Cloud Security Launch Day открыта 9 апреля пройдёт первый онлайн-запуск продуктов информационной безопасности
Регистрация на Cloud Security Launch Day открыта 9 апреля пройдёт первый онлайн-запуск продуктов информационной безопасности от Yandex Cloud — Cloud Security Launch Day. В программе сценарии эффективного решения задач информационной безопасности и запуски новых продуктов ИБ от Yandex Cloud. Мероприятие будет полезно CISO, менеджерам по информационной безопасности и руководителям SOC. Присоединяйтесь, чтобы увидеть реальные сценарии управления безопасностью в облаке и получить возможность стать одним из первых пользователей новых сервисов. Зарегистрироваться #реклама 16+ yandex.cloud О рекламодателе Реклама на Яндексе

🤔 Что такое cancellation token в многопоточности? CancellationToken в C# используется для координации отмены между потоками. Это механизм, позволяющий запрашивать отмену операции (например, задачи Task или асинхронного метода), не прерывая поток принудительно. 🚩Зачем нужен `CancellationToken`? В многопоточных или асинхронных операциях бывает необходимо отменить выполнение кода, например: Пользователь отменил загрузку файла. Истек тайм-аут выполнения операции. Нужно прервать выполнение нескольких связанных задач. 🚩Как работает `CancellationToken`? 🟠Создание `CancellationTokenSource` Источник токена (CancellationTokenSource) управляет токеном (CancellationToken), который передаётся в задачи. 🟠Передача токена в выполняемую операцию Код регулярно проверяет cancellationToken.IsCancellationRequested, чтобы определить, нужно ли остановиться. 🟠Запрос на отмену Если вызывается cts.Cancel(), все методы, использующие этот токен, получают сигнал об отмене. 🚩Пример использования
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var cts = new CancellationTokenSource();

        // Отменяем операцию через 3 секунды
        cts.CancelAfter(3000);

        try
        {
            await DoWorkAsync(cts.Token);
        }
        catch (OperationCanceledException)
        {
            Console.WriteLine("Операция отменена!");
        }
    }

    static async Task DoWorkAsync(CancellationToken cancellationToken)
    {
        for (int i = 0; i < 10; i++)
        {
            cancellationToken.ThrowIfCancellationRequested(); // Проверка отмены

            Console.WriteLine($"Работаем... {i}");
            await Task.Delay(1000, cancellationToken); // Ожидание с проверкой отмены
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Как происходит загрузка связанных сущностей? Entity Framework Core поддерживает три способа загрузки связанных данных: - Жадная загрузка (Eager Loading) – связанные сущности загружаются сразу вместе с основной, используя оператор Include. Это снижает количество запросов, но может привести к загрузке лишних данных. - Ленивая загрузка (Lazy Loading) – связанные данные загружаются только при первом обращении к ним. По умолчанию в EF Core отключена, но может быть включена с помощью прокси-объектов. - Явная загрузка (Explicit Loading) – связанные сущности загружаются вручную с помощью отдельного запроса при необходимости. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный инт
Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях. ✨ 8 000+ студентов со всего мира ✨ 600+ AI-проектов, созданных студентами ✨ Сборная Университета — победители крупнейших AI-хакатонов России ✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие) ✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие) Будем рады видеть тебя в наших рядах! Узнать больше #реклама 16+ neural-university.ru О рекламодателе

🤔 Какие типы данных можно использовать у Dictionary в качестве ключа? В C# ключ (TKey) в Dictionary<TKey, TValue> должен быть уникальным и поддерживать сравнение. Лучше всего использовать неизменяемые (immutable) типы, такие как: Примитивные типы (int, string, char, bool, Guid, enum) Кортежи (Tuple, ValueTuple) Неизменяемые структуры (struct, если переопределён Equals и GetHashCode) 🚩Какие типы подходят в качестве ключа? Числовые типы (int, double, long)
var dict = new Dictionary<int, string>
{
    {1, "Один"},
    {2, "Два"}
};
Console.WriteLine(dict[1]); // Вывод: Один
string (лучший выбор)
var dict = new Dictionary<string, int>
{
    {"apple", 10},
    {"banana", 5}
};
Console.WriteLine(dict["apple"]); // 10
Guid (уникальные идентификаторы)
var dict = new Dictionary<Guid, string>
{
    {Guid.NewGuid(), "User1"},
    {Guid.NewGuid(), "User2"}
};
enum (хороший вариант)
enum Status { New, Processing, Completed }

var dict = new Dictionary<Status, string>
{
    {Status.New, "Заказ создан"},
    {Status.Processing, "Заказ в обработке"}
};
Можно использовать несколько значений в качестве ключа:
var dict = new Dictionary<(int, string), string>
{
    {(1, "apple"), "Красное яблоко"},
    {(2, "banana"), "Жёлтый банан"}
};
Console.WriteLine(dict[(1, "apple")]); // Красное яблоко
🚩Какие типы нельзя использовать в качестве ключа? List<T> (и другие изменяемые коллекции)
var dict = new Dictionary<List<int>, string>(); // Ошибка при использовании в качестве ключа!
class, если не переопределён Equals и GetHashCode
class Person { public string Name; }
var dict = new Dictionary<Person, string>(); // Плохо!
Нужно переопределить Equals и GetHashCode
class Person
{
    public string Name { get; }

    public Person(string name) => Name = name;

    public override bool Equals(object? obj)
    {
        return obj is Person other && Name == other.Name;
    }

    public override int GetHashCode() => Name.GetHashCode();
}
Ставь 👍 и забирай 📚 Базу знаний

❓Хотите стать C#-разработчиком, но боитесь, что будет сложно? Подготовьтесь заранее и освойте Git — ключевой инструмент коман
❓Хотите стать C#-разработчиком, но боитесь, что будет сложно? Подготовьтесь заранее и освойте Git — ключевой инструмент командной разработки! На открытом вебинаре 31 марта в 20:00 мск разберем: ◽️ Систему контроля версий ◽️ Основные команды ◽️ Принципы работы с репозиториями ◽️ Эти знания помогут вам уверенно работать в команде и подготовиться к следующему этапу. С Git вы сможете эффективно управлять кодом, вести проекты и двигаться к позиции Junior и Middle. 🔗 Регистрируйтесь на вебинар и 🎁 получите скидку на большое обучение «C# Developer»: https://otus.pw/6iRG/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Стать бэкендером в Яндексе за несколько дней 12–17 апреля устраиваем Week Offer Backend: за несколько дней можно пройти технические секции и попасть в Яндекс. Для этого нужно зарегистрироваться и решить несколько задач в Контесте. Ищем классных бэкенд-разработчиков с опытом работы от 3 лет на C++, Python, Java/Kotlin или Go, готовых работать в офисном или гибридном режиме в России. Вы сможете выбрать одну из команд: Яндекс Пэй, Яндекс ID, Яндекс Плюс, Яндекс Сплит, Яндекс Сейвы, Яндекс 360. Можно пообщаться с нанимающими менеджерами и выбрать самый интересный проект. Если всё пройдёт хорошо, сразу же получите офер. Зарегистрироваться #реклама yandex.ru О рекламодателе

🤔 В какой момент отправляется запрос к базе данных? Запрос отправляется к базе данных, когда приложение вызывает операции, такие как SaveChanges (в ORM) или выполняет SQL-команду напрямую. 1. В ORM запрос может быть отложен до реального использования данных (ленивая загрузка). 2. Это позволяет оптимизировать взаимодействие с базой, минимизируя количество запросов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Получи грант на обучение в Центральном университете Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе. Для
Получи грант на обучение в Центральном университете Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе. Для школьников 10-х и 11-х классов, СПО. Подать заявку #реклама apply.centraluniversity.ru О рекламодателе

🤔 Может ли pipeline не обрабатывать HTTP запросы? Да, Pipeline может не обрабатывать HTTP-запросы, если: Запрос был остановлен раньше (например, с UseMiddleware или Use без вызова next()). Некорректная маршрутизация (запрос не соответствует ни одному маршруту). Фильтрация запроса (например, через UseWhen или MapWhen). Ошибка в middleware (исключение без обработки). 🚩Что такое `Pipeline` в ASP.NET Core? В ASP.NET Core конвейер обработки запросов (Pipeline) состоит из **middleware-компонентов, которые могут изменять или перенаправлять запрос.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.Use(async (context, next) =>
{
    Console.WriteLine("Middleware 1: До запроса");
    await next(); // Передача дальше
    Console.WriteLine("Middleware 1: После запроса");
});

app.Run(async (context) =>
{
    Console.WriteLine("Middleware 2: Обработка запроса");
    await context.Response.WriteAsync("Ответ от сервера");
});

app.Run();
🚩Как `Pipeline` может не обработать HTTP-запрос? Middleware останавливает запрос (next() не вызывается Если в Middleware не вызвать next(), то дальнейшие обработчики не выполнятся.
app.Use(async (context, next) =>
{
    await context.Response.WriteAsync("Запрос остановлен.");
    // next() НЕ вызывается, запрос не проходит дальше
});
🚩Запрос не попадает ни в один обработчик Если Pipeline настроен неправильно, запрос может не попасть ни в один обработчик.
app.UseRouting(); // Включает маршрутизацию, но маршруты не настроены!

app.UseEndpoints(endpoints =>
{
    // Здесь НЕТ ни одного маршрута!
});

app.Run();
🚩Использование `UseWhen` или `MapWhen` для фильтрации запросов Методы UseWhen и MapWhen позволяют разделять обработку запросов.
app.MapWhen(context => context.Request.Path == "/special", appBranch =>
{
    appBranch.Run(async context =>
    {
        await context.Response.WriteAsync("Специальный маршрут");
    });
});

// Основной обработчик
app.Run(async context =>
{
    await context.Response.WriteAsync("Обычный маршрут");
});
🚩Ошибка в Middleware Если в middleware возникает необработанное исключение, то Pipeline прерывается.
app.Use(async (context, next) =>
{
    throw new Exception("Ошибка!");
    await next(); // Код ниже не выполнится
});
Правильный способ
app.UseExceptionHandler("/error");

app.Run(async context =>
{
    await context.Response.WriteAsync("Основной обработчик");
});
Ставь 👍 и забирай 📚 Базу знаний

В Антарктиду с RussiaDiscovery! Круиз на новый год 2026. ✅ Панорамные окна на лайнере SH Vega, бассейн-инфинити, спа, камины в каютах. ✅ Высадки на континент, каякинг у ледников, купание в термальных водах, киты и пингвины! ✅ Все включено: отель 5* в Буэнос-Айресе, перелет до точки отправления, алкоголь, экспедиционная одежда. ✅ Новогодний ужин среди льдов + экскурсия на станцию «Беллинсгаузен». Встречайте Новый год там, где заканчивается карта мира! — Самое теплое время (+15°C днем) и море света антарктического лета. — Стабилизаторы качки, профессиональная команда и VIP-сервис. — 12 дней для получения самых ярких впечатлений жизни. Всего 152 места, забирайте свою каюту, пока есть места! Бронь всего 20% от стоимости. Нажиммайте «Забронировать» Забронировать #реклама 16+ russiadiscovery.ru О рекламодателе

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

Проведите экспресс-аудит IT поддержки за 15 минут! Ваша IT-поддержка может работать лучше. ✅ Оцените реальную эффективность в
Проведите экспресс-аудит IT поддержки за 15 минут! Ваша IT-поддержка может работать лучше. ✅ Оцените реальную эффективность вашей IT-поддержки. ✅ Найдите скрытые источники потерь времени и денег. ✅ Получите готовый план действий по улучшению сервиса. ✅ Сравните свои показатели со средними по рынку. Получите персональный чек-лист, экспресс-диагностику и получите план оптимизации IT-поддержки уже сегодня! Получить предложение #реклама 16+ promo.itilium.ru О рекламодателе

🤔 Что такое carbage collector? Garbage Collector (GC)** — это автоматический механизм управления памятью в .NET, который освобождает неиспользуемые объекты, предотвращая утечки памяти. 🚩Как работает GC? 🟠Объекты создаются в управляемой памяти (Heap) Когда мы создаём объект
var obj = new object();
🟠Когда объект больше не нужен, GC его удаляет Если на объект больше нет ссылок, он становится "мусором" и может быть удалён
void Test()
{
    var obj = new object(); // Создали объект
} // obj выходит из области видимости -> GC может его удалить
🚩Поколения GC (Generations) GC в .NET использует поколения (Generations), чтобы ускорить сборку мусора: 🚩Принудительный вызов GC (нежелательно) Обычно GC работает автоматически, но можно вызвать его вручную:
GC.Collect(); // Принудительный запуск GC (используйте осторожно!)
🚩Как уменьшить нагрузку на GC? Использовать using для очистки ресурсов:
using (var file = new StreamWriter("file.txt"))
{
    file.WriteLine("Hello, world!");
} // Файл автоматически закроется
Реализовать IDisposable для освобождения ресурсов вручную:
public class MyResource : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("Ресурс освобождён");
    }
}

using (var resource = new MyResource())
{
    // Используем ресурс
} // Вызовется Dispose()
Избегать ненужных ссылок – если переменная больше не нужна, лучше обнулять её
obj = null;
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое перегрузка метода? Это возможность объявлять методы с одинаковым именем, но с разными параметрами (типами, количеством или порядком). • Она позволяет создавать более гибкий и удобный интерфейс класса. • Пример: void Print(string message) { ... } void Print(int number) { ... } Каждый из методов будет вызываться в зависимости от переданных аргументов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний