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

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

Открыть в Telegram
5 045
Подписчики
-124 часа
-157 дней
-2530 день
Архив постов
🤔 Что такое ORM? Это технология для работы с базами данных, преобразующая данные между объектами приложения и реляционной БД. 1. Упрощает выполнение CRUD-операций без написания SQL-запросов. 2. Примеры: Entity Framework, Hibernate, SQLAlchemy. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужны поколения для сборщика мусора в JS? В JavaScript (как и в C#) сборщик мусора (Garbage Collector, GC) использует поколения (generational GC) для оптимизации работы с памятью. Это помогает быстрее и эффективнее очищать ненужные объекты, минимизируя задержки в работе программы. 🚩Зачем нужны поколения в GC? 🟠Большинство объектов "живут" недолго В среднем, переменные и объекты в JS создаются и быстро перестают использоваться. Например, временные объекты в функциях. 🟠Некоторые объекты "живут" долго Например, глобальные переменные, кэш данных или объекты в setInterval. 🟠Очистка памяти должна быть быстрой Проверять всю память каждый раз — дорого по времени. GC должен быстро убирать "мусор", не замедляя выполнение кода. 🚩Как работают поколения? JS-движки, например V8 (Chrome, Node.js), используют Generational Garbage Collection — деление объектов на молодые (new generation) и старые (old generation). 🟠Молодое поколение (Young Generation) Сюда попадают новые объекты. GC часто проверяет эту область и быстро очищает. Если объект "выжил" несколько проверок, он переносится в старшее поколение. 🟠Старое поколение (Old Generation) Здесь хранятся "долгоживущие" объекты. Проверяется реже, так как здесь объекты реже становятся мусором. Очистка более сложная и дорогая по времени. Пример работы GC в V8
function createObjects() {
    let obj1 = { name: "temp" }; // попадает в Young Generation
    let obj2 = { data: new Array(1000).fill(0) }; // тоже в Young Generation
}

// После выхода из функции obj1 и obj2 становятся мусором и очищаются GC.
Ставь 👍 и забирай 📚 Базу знаний

Дизайн в FIGMA с нуля. Бесплатный курс + портфолио ✅ Личный наставник ✅ Подойдет новичкам ✅ Разбор всех ваших Д/З ✅ 4+ работы
Дизайн в FIGMA с нуля. Бесплатный курс + портфолио ✅ Личный наставник ✅ Подойдет новичкам ✅ Разбор всех ваших Д/З ✅ 4+ работы себе в портфолио Попробуй себя в дизайне это бесплатно! Узнать больше #реклама 16+ yudaevschool.com О рекламодателе

🤔 Что такое SignalR? SignalR — это библиотека от Microsoft для обеспечения двусторонней связи в реальном времени между клиентом и сервером. Она использует протоколы, такие как WebSockets, для высокой производительности, а в случае их недоступности — другие технологии, например, long polling. SignalR упрощает разработку чатов, уведомлений и других динамичных приложений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Сколько приложений нужно вашей команде для работы? Всего один сервис — Битрикс24! А внутри десятки инструментов для совместно
+7
Сколько приложений нужно вашей команде для работы? Всего один сервис — Битрикс24! А внутри десятки инструментов для совместной работы и бизнеса. Читайте подробнее в карточках. Регистрируйтесь сейчас, чтобы забрать их все себе бесплатно😊 Зарегистрироваться #реклама 16+ office-online.bitrix24.ru О рекламодателе

🤔 Что такое Dispose? Dispose метод является частью паттерна управления ресурсами, известного как "Dispose Pattern". Этот метод реализуется в классах через интерфейс IDisposable. Цель — явное освобождение неуправляемых ресурсов и, по желанию, управляемых ресурсов, прежде чем сборщик мусора освободит объект. Это важно для эффективного управления памятью и другими системными ресурсами. 🚩Неуправляемые и управляемые ресурсы 🟠Неуправляемые ресурсы включают в себя ресурсы, которые не управляются средой CLR (Common Language Runtime), например, файловые дескрипторы, сетевые соединения или указатели на память, выделенную вне .NET среды. 🟠Управляемые ресурсы это объекты .NET, которые занимают память и потенциально удерживают ссылки на неуправляемые ресурсы. 🚩Как он работает Должен освобождать все неуправляемые ресурсы, занимаемые объектом, а также должен иметь возможность освобождать управляемые ресурсы, если это необходимо. Как правило, управляемые ресурсы освобождаются сами сборщиком мусора, но если управляемый ресурс включает в себя неуправляемые ресурсы, тогда Dispose может быть вызван для их явного освобождения.
public class ResourceHolder : IDisposable
{
    private bool disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Освобождение управляемых ресурсов
            }
            // Освобождение неуправляемых ресурсов
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}
Пример использования Dispose
using (var resource = new ResourceHolder())
{
    // Использование ресурса
}
// Метод Dispose автоматически вызывается при выходе из блока using
Ставь 👍 и забирай 📚 Базу знаний

Бесплатное льготное обучение: 3 месяца Ищем людей, которые хотят обучиться и работать в IT-сфере из дома В конце обучения вы
Бесплатное льготное обучение: 3 месяца Ищем людей, которые хотят обучиться и работать в IT-сфере из дома В конце обучения вы пройдете стажировку и устроитесь на работу с зп от 150.000 рублей Образование, место жительства, трудовой стаж — не важны! Для старта нужно: — пройти короткий тест — заполнить анкету На что можно рассчитывать, после обучения: ✅ удаленная работа ✅ зп от 150.000 рублей (потолка нет) ✅ стабильная подработка, если не хотите уходить с основной работы ⚡ Осталось всего 47 бесплатных мест. Успейте пройти тест и оставить заявку: Узнать больше #реклама 16+ technolium.ru О рекламодателе

🤔 Чем Action отличается от Func? Action<T> представляет метод, который ничего не возвращает (void), а Func<T, TResult> – метод, который возвращает значение. Func всегда имеет возвращаемый тип, а Action – нет. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Онлайн-магистратура «Управление IT-продуктами» от МФТИ День открытых дверей 2 апреля в 19:00 мск | Онлайн Эксперты Яндекса и МФТИ расскажут об очной онлайн-магистратуре для карьеры в IT. Всё о поступлении и обучении, выступления экспертов, ответы на вопросы. Записаться онлайн #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Какие бывают типы данных? В 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 О рекламодателе