C# | Вопросы собесов
Ir al canal en Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Mostrar más5 047
Suscriptores
-824 horas
-137 días
-2330 días
Archivo de publicaciones
5 047
🤔 Какие бывают типы данных?
В 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 };
Ставь 👍 и забирай 📚 Базу знаний5 047
Вебинар для бизнеса: как эффективно проводить пентесты
Комплексный пентест — надежное решение для бизнеса, чтобы от и до просканировать внутренний и внешний периметр ИТ-безопасности. На вебинаре 17 апреля расскажем о том, как эффективно использовать результаты пентестов, чтобы они работали на пользу бизнеса.
Главные темы вебинара:
- Как выявить реальные уязвимости и оценить их влияние.
- Какие методы используют злоумышленники и как пробивают защиту.
- Как на основе отчета о пентесте усилить кибербезопасность компании.
Вас ждут разборы более 200 реальных проектов по пентесту в различных секторах бизнеса.
Регистрируйтесь, чтобы обеспечить качественную защиту инфраструктуры своей компании.
Зарегистрироваться
#реклама 16+
rt-solar.ru
О рекламодателе
5 047
🤔 Что такое АУС-2?
Это автоматизированная управляющая система второго уровня (чаще встречается в контексте производств, ТЭК или крупных предприятий).
Конкретная расшифровка зависит от контекста (например, у «Газпрома» или РЖД может быть своя трактовка). Обычно речь о высокоуровневом управлении технологическими процессами, над АСУ ТП.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 047
Регистрация на Cloud Security Launch Day открыта
9 апреля пройдёт первый онлайн-запуск продуктов информационной безопасности от Yandex Cloud — Cloud Security Launch Day.
В программе сценарии эффективного решения задач информационной безопасности и запуски новых продуктов ИБ от Yandex Cloud. Мероприятие будет полезно CISO, менеджерам по информационной безопасности и руководителям SOC.
Присоединяйтесь, чтобы увидеть реальные сценарии управления безопасностью в облаке и получить возможность стать одним из первых пользователей новых сервисов.
Зарегистрироваться
#реклама 16+
yandex.cloud
О рекламодателе
Реклама на Яндексе
5 047
🤔 Что такое 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); // Ожидание с проверкой отмены
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 047
Почему вы не используете Битрикс24 CRM с AI-помощником?
1- не знал
2- забыл
Рассказываем и напоминаем!
✅Битрикс24 CRM с AI помогает увеличивать продажи, работать с постоянными клиентами и сохранять все важные данные. AI-помощник CoPilot внутри сервиса расшифрует телефонные разговоры и автоматически заполнит карточки клиента в CRM.
Битрикс24 можно использовать бесплатно для всех команд, независимо от их размера.
⚡Не тратьте время на рутину.
Узнать больше
#реклама 16+
bitrix24.ru
О рекламодателе
5 047
🤔 Как происходит загрузка связанных сущностей?
Entity Framework Core поддерживает три способа загрузки связанных данных:
- Жадная загрузка (Eager Loading) – связанные сущности загружаются сразу вместе с основной, используя оператор Include. Это снижает количество запросов, но может привести к загрузке лишних данных.
- Ленивая загрузка (Lazy Loading) – связанные данные загружаются только при первом обращении к ним. По умолчанию в EF Core отключена, но может быть включена с помощью прокси-объектов.
- Явная загрузка (Explicit Loading) – связанные сущности загружаются вручную с помощью отдельного запроса при необходимости.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 047
Крупнейший университет искусственного интеллекта
Приглашаем на бесплатный однодневный интенсив по AI!
Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
5 047
🤔 Какие типы данных можно использовать у 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();
}
Ставь 👍 и забирай 📚 Базу знаний5 047
❓Хотите стать C#-разработчиком, но боитесь, что будет сложно?
Подготовьтесь заранее и освойте Git — ключевой инструмент командной разработки!
На открытом вебинаре 31 марта в 20:00 мск разберем:
◽️ Систему контроля версий
◽️ Основные команды
◽️ Принципы работы с репозиториями
◽️ Эти знания помогут вам уверенно работать в команде и подготовиться к следующему этапу.
С Git вы сможете эффективно управлять кодом, вести проекты и двигаться к позиции Junior и Middle.
🔗 Регистрируйтесь на вебинар и 🎁 получите скидку на большое обучение «C# Developer»: https://otus.pw/6iRG/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
5 047
Стать бэкендером в Яндексе за несколько дней
12–17 апреля устраиваем Week Offer Backend: за несколько дней можно пройти технические секции и попасть в Яндекс. Для этого нужно зарегистрироваться и решить несколько задач в Контесте.
Ищем классных бэкенд-разработчиков с опытом работы от 3 лет на C++, Python, Java/Kotlin или Go, готовых работать в офисном или гибридном режиме в России.
Вы сможете выбрать одну из команд: Яндекс Пэй, Яндекс ID, Яндекс Плюс, Яндекс Сплит, Яндекс Сейвы, Яндекс 360. Можно пообщаться с нанимающими менеджерами и выбрать самый интересный проект. Если всё пройдёт хорошо, сразу же получите офер.
Зарегистрироваться
#реклама
yandex.ru
О рекламодателе
5 047
🤔 В какой момент отправляется запрос к базе данных?
Запрос отправляется к базе данных, когда приложение вызывает операции, такие как SaveChanges (в ORM) или выполняет SQL-команду напрямую.
1. В ORM запрос может быть отложен до реального использования данных (ленивая загрузка).
2. Это позволяет оптимизировать взаимодействие с базой, минимизируя количество запросов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 047
Получи грант на обучение в Центральном университете
Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе.
Для школьников 10-х и 11-х классов, СПО.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
5 047
🤔 Может ли 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("Основной обработчик");
});
Ставь 👍 и забирай 📚 Базу знаний5 047
В Антарктиду с RussiaDiscovery! Круиз на новый год 2026.
✅ Панорамные окна на лайнере SH Vega, бассейн-инфинити, спа, камины в каютах.
✅ Высадки на континент, каякинг у ледников, купание в термальных водах, киты и пингвины!
✅ Все включено: отель 5* в Буэнос-Айресе, перелет до точки отправления, алкоголь, экспедиционная одежда.
✅ Новогодний ужин среди льдов + экскурсия на станцию «Беллинсгаузен».
Встречайте Новый год там, где заканчивается карта мира!
— Самое теплое время (+15°C днем) и море света антарктического лета.
— Стабилизаторы качки, профессиональная команда и VIP-сервис.
— 12 дней для получения самых ярких впечатлений жизни.
Всего 152 места, забирайте свою каюту, пока есть места!
Бронь всего 20% от стоимости.
Нажиммайте «Забронировать»
Забронировать
#реклама 16+
russiadiscovery.ru
О рекламодателе
5 047
🤔 Что такое ссылочный тип и в чем их особенности?
Ссылочные типы (классы, интерфейсы, делегаты) хранятся в куче и передаются по ссылке. Их изменение внутри метода сохраняется после выхода из него, а сборщик мусора управляет их памятью.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 047
Проведите экспресс-аудит IT поддержки за 15 минут!
Ваша IT-поддержка может работать лучше.
✅ Оцените реальную эффективность вашей IT-поддержки.
✅ Найдите скрытые источники потерь времени и денег.
✅ Получите готовый план действий по улучшению сервиса.
✅ Сравните свои показатели со средними по рынку.
Получите персональный чек-лист, экспресс-диагностику и получите план оптимизации IT-поддержки уже сегодня!
Получить предложение
#реклама 16+
promo.itilium.ru
О рекламодателе
5 047
🤔 Что такое 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;
Ставь 👍 и забирай 📚 Базу знаний5 047
Когда подрядчик тележится, добавляйте его в Коллабу
Битрикс24 Коллабы – платформа для эффективной работы с подрядчиками. Тут обсуждения превращаются в задачи, а видео созвон можно собрать одной кнопкой. Любой проект можно разложить по полочкам с понятным ТЗ и обозначенными сроками.
Работайте в Битрикс24 и создавайте Коллабы с подрядчиками.
Начать
#реклама 16+
collabs.bitrix24.ru
О рекламодателе
5 047
🤔 Что такое перегрузка метода?
Это возможность объявлять методы с одинаковым именем, но с разными параметрами (типами, количеством или порядком).
• Она позволяет создавать более гибкий и удобный интерфейс класса.
• Пример:
void Print(string message) { ... }
void Print(int number) { ... }
Каждый из методов будет вызываться в зависимости от переданных аргументов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
