C# | Вопросы собесов
Kanalga Telegram’da o‘tish
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish5 006
Obunachilar
-124 soatlar
-107 kun
-230 kun
Postlar arxiv
5 006
📌 Что такое middleware в ASP.NET core?
💬 Спрашивают в 67% собеседований
Middleware — это программные компоненты, которые выполняются при каждом запросе к приложению и обрабатываются в определенном порядке в виде конвейера. Эти компоненты могут выполнять различные задачи, такие как аутентификация, логирование, обработка ошибок, управление сессиями, и многое другое. Он позволяет добавлять и настраивать функциональность приложения в точках, через которые проходит HTTP-запрос или ответ.
🤔 Как он работает?
Каждый его компонент имеет возможность обработать запрос перед тем, как он будет передан следующему компоненту в конвейере, а также может изменять ответ после выполнения последующих компонентов. Такая архитектура позволяет создавать легко расширяемые и модульные приложения.
Middleware конфигурируется в методе
Configure класса Startup. Порядок, в котором компоненты middleware добавляются в конвейер с помощью метода Use..., определяет порядок их выполнения при обработке запроса и ответа.
🤔 Пример:
public class MyMiddleware
{
private readonly RequestDelegate _next;
public MyMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// До вызова следующего компонента в конвейере
Console.WriteLine("Before");
await _next(context); // Передача управления следующему middleware
// После возвращения управления от следующих компонентов
Console.WriteLine("After");
}
}
// Регистрация middleware в Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiddleware<MyMiddleware>();
// Другие компоненты middleware
}
Middleware часто используют для следующих задач:
➕Аутентификация и авторизация:
проверка пользовательских данных и определение прав доступа.
➕Логирование:
запись информации о запросах и ответах для последующего анализа.
➕Обработка ошибок:
централизованная обработка исключений и формирование соответствующих ответов клиенту.
➕Управление сессиями и куками:
поддержка пользовательских сессий и управление куками.
➕Статические файлы:
обработка запросов к статическим файлам, таким как HTML, CSS, изображения.
Middleware обеспечивает гибкую и мощную систему для управления потоком HTTP-запросов и ответов, позволяя разработчикам легко добавлять и настраивать необходимую функциональность в своих веб-приложениях.
🤔 Краткий ответ:
Middleware в ASP.NET Core — это компоненты, которые работают с каждым запросом и ответом в приложении, формируя конвейер для обработки HTTP-сообщений. Они позволяют добавлять нужную функциональность, например, для логирования, аутентификации или обработки ошибок, делая приложение модульным и легко поддерживаемым.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 006
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает?
Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам.
✔️ Как научиться отвлекаться от работы и отдыхать?
✔️ Как совместить кучу рабочих задач и время с семьей?
✔️ Как справиться с прокрастинацией?
✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит?
Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни!
👨🏻💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.
https://t.me/+_f2HiZ99wxswZGRi
5 006
Окупите внедрение CRM Битрикс24 - за несколько месяцев!
За счет чего вырастит Ваша прибыль после настройки Битрикс24 в KISELEV GROUP?
1. Понятная аналитика для отдела продаж в режиме online:
Руководитель отдела продаж и собственник получают понятную аналитику, которая позволяет видеть слабые места и вовремя принимать управленческие решения.
2. 3-х точечная система контроля менеджеров:
Сконцентрируем фокус менеджеров на продажах и дадим руководителям готовые инструменты для контроля за сделками и задачами.
3. Совместим работу всех отделов в одной системе:
Выстроим коммуникацию внутри компании между отделами с хранением базы данных. Ускорим согласование документов и счетов.
Запишитесь на экскурсию в нашу - идеально настроенную - CRM Битрикс24!
Забронировать
#реклама 16+
kiselevgroup.com
О рекламодателе
5 006
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
5 006
📌 Что такое лямбда выражения в С#?
💬 Спрашивают в 56% собеседований
🤔 Лямбда-выражения — это сокращённый способ записи анонимных методов, то есть методов без имени. Эти выражения особенно полезны для создания небольших функций, которые можно передавать в качестве аргументов или использовать в качестве типов делегатов. Они упрощают код и делают его более читаемым, особенно когда речь идёт о работе с коллекциями или асинхронном программировании.
🤔 Основной синтаксис лямбда-выражения:
параметры => выражение
Где => называется лямбда оператором, который можно прочесть как "переходит к".
🤔 Пример без параметров:
() => Console.WriteLine("Привет, мир!");
🤔 Пример с одним параметром:
x => x * x; // Возвращает квадрат x
🤔 Пример с несколькими параметрами:
(x, y) => x + y; // Складывает x и y
🤔 Зачем они нужны?
Лямбда-выражения особенно полезны в LINQ (Language Integrated Query), где они используются для создания кратких и выразительных запросов к данным. Например, чтобы выбрать все положительные числа из списка, можно использовать лямбда-выражение следующим образом:
List<int> числа = new List<int> { -1, 0, 1, 2, 3, 4, 5 };
var положительныеЧисла = числа.Where(x => x > 0).ToList();
foreach (var число in положительныеЧисла)
{
Console.WriteLine(число);
}
Лямбда-выражения также могут быть использованы для создания делегатов в событийно-ориентированных или асинхронных программах, делая код более лаконичным и легко читаемым.
🤔 Краткий ответ:
Лямбда-выражения предоставляют мощный и гибкий способ работы с функциями, позволяя писать компактный и выразительный код. Они идеально подходят для выполнения операций с коллекциями, асинхронного программирования и везде, где требуется краткость и выразительность.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 006
🥰 Как улучшить свой код 🥰
Настрой среду, в которой ты работаешь!
🥰 Многие программисты пишут код на настройках по умолчанию - ошибка.
🥰 Не подключают плагины, которые ускорят работу и увеличат эффективность - фатальная ошибка.
👩💻 Канал Visual Studio Сode | Плагины сделает твою рабочую среду универсальным и мощным инструментом.
🥰 Повышай свою эффективность и подписывайся на канал Visual Studio Сode | Плагины
5 006
Регистрируйтесь на Yandex Scale 2024!
25 сентября состоится главная конференция Yandex Cloud для тех, кто создаёт цифровые продукты и решения. В этом году мероприятие пройдёт в МХАТ имени М. Горького в Москве и онлайн.
5 технологических треков, 31 доклад, 50 спикеров, нетворкинг — разве это не лучший способ продуктивно провести день?
Зарегистрироваться
#реклама 16+
scale.yandex.cloud
О рекламодателе
5 006
🤔 Что из перечисленного нельзя использовать в методе с модификатором async?
5 006
📌 Что такое сервис локатор?
💬 Спрашивают в 33% собеседований
Сервис локатор (Service Locator) — это шаблон проектирования, используемый в программировании для управления зависимостям между компонентами. Шаблон сервис локатора предоставляет централизованный реестр, где компоненты могут регистрировать свои сервисы и услуги, а другие части приложения — искать их по необходимости. Это отличается от инъекции зависимостей, где зависимости передаются компонентам через конструкторы или свойства.
🤔 Ключевые характеристики
1️⃣ Централизованный реестр сервисов:
Сервис локатор содержит реестр всех доступных сервисов. Каждый сервис ассоциируется с уникальным ключом или идентификатором.
2️⃣ Получение сервиса по требованию:
Компоненты приложения могут запрашивать нужные сервисы из локатора, предоставляя соответствующий ключ или идентификатор.
3️⃣ Управление зависимостями:
Сервис локатор помогает управлять зависимостями в приложении, позволяя компонентам работать независимо от конкретных реализаций сервисов, с которыми они взаимодействуют.
🤔 Пример:
public interface IService
{
void Execute();
}
public class ServiceLocator
{
private IDictionary<object, IService> services;
public ServiceLocator()
{
services = new Dictionary<object, IService>();
}
public void RegisterService<T>(IService service)
{
services.Add(typeof(T), service);
}
public IService GetService<T>()
{
return services[typeof(T)];
}
}
public class ConcreteService : IService
{
public void Execute()
{
Console.WriteLine("Service Executed");
}
}
class Program
{
static void Main()
{
ServiceLocator locator = new ServiceLocator();
locator.RegisterService<IService>(new ConcreteService());
IService service = locator.GetService<IService>();
service.Execute(); // Output: Service Executed
}
}
🤔 Преимущества:
➕Гибкость:
Компоненты не зависят от способов создания их зависимостей, что упрощает изменения и тестирование.
➕Универсальность:
Легко добавить новый сервис или изменить существующий без изменения потребляющих его компонентов.
🤔 Недостатки:
➕ Скрытая связанность:
Зависимости между компонентами и их сервисами не всегда ясны, что может привести к более сложному коду и затруднить его понимание и поддержку.
➕ Сложность управления:
По мере роста приложения управление всеми сервисами через локатор может стать сложным и неудобным.
🤔 Краткий ответ:
Сервис локатор может быть полезен в ситуациях, когда нужна высокая степень гибкости и динамичности в управлении зависимостями, но его использование должно быть оправдано требованиями проекта, так как оно вносит дополнительную сложность в архитектуру приложения.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 006
🤔 Какое ключевое слово используется для объявления неявно типизированной локальной переменной?
5 006
📌 Какая разница между структурой и классом?
💬 Спрашивают в 33% собеседований
Структуры (struct) и классы (class) являются двумя основными конструкциями, используемыми для определения типов данных. Хотя на первый взгляд они могут казаться похожими, между ними есть несколько ключевых различий:
1️⃣ Семантика хранения
➕ Классы:
Классы в C# являются ссылочными типами. Это означает, что при присваивании объекта класса переменной или передаче его методу создается ссылка на объект, а не копия самого объекта. Все переменные класса указывают на один и тот же экземпляр в памяти.
➕ Структуры:
Структуры — это значимые типы. Когда структура присваивается другой переменной или передается методу, создается копия всей структуры. Изменения одной копии не влияют на другую.
2️⃣ Наследование
➕ Классы:
Классы поддерживают как интерфейсное, так и классовое наследование, то есть класс может наследовать поведение другого класса.
➕ Структуры:
Структуры могут реализовывать интерфейсы, но не могут наследовать от других структур или классов. Также структуры не могут быть базовыми для других структур или классов.
3️⃣ Конструкторы
➕ Классы:
Классы могут иметь конструкторы с параметрами и без параметров.
➕ Структуры:
Структуры не могут иметь явно определенного конструктора без параметров, так как автоматически предоставляется конструктор по умолчанию, который инициализирует все поля значениями по умолчанию. Структуры могут иметь конструкторы с параметрами.
4️⃣ По умолчанию null
➕Классы:
Переменные класса могут быть
null, если им не присвоен экземпляр объекта.
➕ Структуры:
Структуры не могут иметь значение null, поскольку они всегда содержат значение.
5️⃣ Память и производительность
➕ Классы:
Так как объекты класса хранятся в куче, работа с классами может привести к дополнительным затратам на управление памятью и сборку мусора.
➕ Структуры:
Поскольку структуры хранятся в стеке и не требуют сборки мусора, работа с ними может быть более быстрой, особенно когда они маленькие и используются в кратковременных или локальных контекстах.
🤔 Пример:
public struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
public class Circle
{
public Point Center;
public double Radius;
public Circle(int x, int y, double radius)
{
Center = new Point(x, y);
Radius = radius;
}
}
➕ Используйте структуры, когда вам нужно создать небольшой тип данных, который будет использоваться в большом количестве и не требует наследования.
➕ Используйте классы, когда вам нужно создать более сложные объекты, которые потенциально могут быть наследованы другими классами или когда необходимо управление жизненным циклом объекта через сборку мусора.
🤔 Краткий ответ:
Выбор между структурой и классом зависит от требований к производительности, использования памяти и функциональности программы.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 006
🤔 Что произойдет, если у класса есть два интерфейса с одинаковыми методами и они реализованы явно?
5 006
📌 Когда инициируется сборка мусора?
💬 Спрашивают в 56% собеседований
Сборка мусора (Garbage Collection, GC) автоматически управляет выделением и освобождением памяти в управляемом куче. Сборка мусора инициируется автоматически в следующих ситуациях:
1️⃣ Недостаток памяти:
Если приложению требуется больше памяти для выделения объектов в управляемой куче и доступной памяти недостаточно, CLR (Common Language Runtime) автоматически инициирует сборку мусора для освобождения памяти, занятой неиспользуемыми объектами.
2️⃣ Достигнут порог выделения памяти:
.NET Framework использует алгоритм, который основывается на объеме выделенной памяти. Для каждого поколения объектов (0, 1, и 2) определен пороговый объем выделенной памяти. Когда приложение выделяет память и этот порог достигается, происходит сборка мусора соответствующего поколения.
3️⃣ Вызов GC.Collect():
Разработчики могут явно запросить сборку мусора, вызвав метод
GC.Collect(). Однако использовать этот метод нужно осторожно, так как его неправильное использование может привести к снижению производительности приложения. В большинстве случаев следует избегать явного вызова сборки мусора и полагаться на автоматическое управление памятью CLR.
4️⃣ Завершение работы приложения:
При завершении работы приложения .NET Framework автоматически выполняет сборку мусора для очистки всех управляемых объектов, даже если они еще доступны.
5️⃣ Низкий уровень памяти в системе:
Если операционная система сообщает о низком уровне доступной памяти, CLR может инициировать сборку мусора в попытке освободить память для системы.
🤔 Краткий ответ:
Сборка мусора проектировалась таким образом, чтобы минимизировать необходимость вмешательства программиста в процесс управления памятью. Она позволяет автоматически решать большинство задач по освобождению памяти, что значительно упрощает разработку и повышает надежность программ на .NET.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 006
🤔 Что произойдет, если вызвать метод Dispose() у объекта, который реализует интерфейс IDisposable, дважды?
5 006
Партнёрская программа рекрутинга в Яндекс Еду
Станьте партнёром Яндекс Еды по привлечению курьеров и получите кучу преимуществ:
💰Платим до 25 000 ₽ за успешного кандидата
📞Поддержка на всех этапах
📅Свободное расписание
📊Удобные инструменты для работы
Приводите новых курьеров и получайте в среднем 187 000 ₽ в месяц!
Зарегистрироваться
#реклама
eda.yandex.ru
О рекламодателе
5 006
📌 Что такое индексы, какие типы бывают, использовал ли их на практике?
💬 Спрашивают в 33% собеседований
🤔 Индексы — это структуры данных, которые улучшают скорость операций выборки данных, но могут снижать производительность операций вставки, удаления и обновления из-за необходимости поддержания индекса в актуальном состоянии. Могут быть построены на одном или нескольких столбцах таблицы и позволяют быстро находить строки без необходимости сканирования всей таблицы.
🤔 Типы:
1️⃣ Одиночные индексы (Single-column indexes):
Индексируют значения одного столбца таблицы. Это основной тип индекса, используемый для ускорения запросов, фильтрующих или сортирующих данные по одному столбцу.
2️⃣ Составные индексы (Composite indexes):
Индексируют значения, основанные на нескольких столбцах. Они полезны, когда операции выборки, сортировки или объединения таблиц часто используют одни и те же комбинации столбцов.
3️⃣ Уникальные индексы (Unique indexes):
Гарантируют, что индексируемые значения уникальны. Они часто используются для обеспечения уникальности столбцов или набора столбцов в таблице.
4️⃣ Полнотекстовые индексы (Full-text indexes):
Позволяют проводить полнотекстовый поиск по текстовым данным в базе данных. Они оптимизированы для поиска слов в больших текстовых полях и часто используются в системах, где требуется поиск по содержимому статей, блогов и других текстовых документов.
5️⃣ Пространственные индексы (Spatial indexes):
Используются для индексации пространственных данных, таких как географические объекты. Они оптимизируют запросы, включающие пространственные операции, такие как нахождение объектов внутри заданной области.
На практике индексы — это мощный инструмент для оптимизации производительности баз данных. Однако они должны использоваться осмысленно.
🤔 Осмысленное использование:
➕ Анализ запросов:
Использование индексов должно начинаться с анализа наиболее часто выполняемых запросов и понимания структуры данных. Профилирование и анализ планов выполнения запросов помогут определить, где индексы могут быть полезны.
➕ Сбалансированное использование:
Несмотря на преимущества ускорения чтения, индексы добавляют накладные расходы на операции записи. Каждая операция вставки, удаления или изменения данных требует обновления индексов, что может замедлить эти операции.
➕ Обслуживание индексов:
С течением времени индексы могут фрагментироваться, особенно в активно изменяемых базах данных. Регулярное обслуживание, такое как реорганизация и перестроение индексов, помогает поддерживать их производительность на оптимальном уровне.
🤔 Краткий ответ:
Индексы особенно полезны в больших базах данных, где правильно построенные индексы могут сократить время ответа запросов с нескольких минут до секунд. Важно помнить о затратах на поддержание индексов и влиянии на производительность операций записи. Поэтому перед созданием индекса всегда следует тщательно анализировать и тестировать его влияние на систему.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
5 006
Jobski - твой помощник при поиске работы в IT
Сервис индивидуально подбирает вакансии, учитывая ваш опыт, навыки и стек технологий.
Узнать больше
#реклама
jobski.ru
О рекламодателе
5 006
🤔 Что произойдет, если вызвать await внутри метода, который не помечен как async?
5 006
📌 Что такое EF?
💬 Спрашивают в 33% собеседований
🤔 Entity Framework (EF) — это объектно-реляционный маппер (ORM), разработанный компанией Microsoft, позволяющий работать с данными на высоком уровне абстракции, оперируя объектами и классами вместо прямых запросов к базе данных. Предоставляет мощные возможности для моделирования, запросов, сохранения и обработки данных в различных базах данных, таких как SQL Server, MySQL, SQLite и других.
🤔 Основные компоненты и возможности:
1️⃣DbContext:
Это основной класс в EF, который управляет взаимодействием с базой данных. Он предоставляет доступ к функциональности, такой как выполнение запросов, сохранение данных и настройка моделей.
2️⃣ DbSet:
Это коллекции объектов определенного класса, которые представляют собой таблицы в базе данных. Классы, которые представляют данные в таблицах, обычно называются сущностями.
3️⃣ LINQ to Entities:
EF позволяет использовать LINQ (Language Integrated Query) для написания запросов к базе данных, которые затем транслируются в SQL-запросы. Это позволяет разработчикам писать запросы к данным в объектно-ориентированном стиле на C#.
4️⃣ Миграции:
EF поддерживает механизм миграций для управления изменениями в структуре базы данных по мере развития приложения. Миграции позволяют автоматически обновлять схему базы данных в соответствии с изменениями в моделях данных.
5️⃣ Конвенции и настройки:
Entity Framework использует набор конвенций для автоматического маппинга классов на таблицы и их свойств на столбцы. Разработчики могут переопределить и дополнить эти конвенции с помощью аннотаций данных или Fluent API.
🤔 Версии:
➕ Entity Framework 6 (EF6):
Последняя версия для .NET Framework. EF6 продолжает поддерживаться и развиваться, включая новые функции и исправления ошибок.
➕ Entity Framework Core (EF Core):
Современная, легковесная, расширяемая и кросс-платформенная версия Entity Framework, разработанная для .NET Core. EF Core предназначен для использования в модернизированных и масштабируемых приложениях и поддерживает широкий спектр баз данных.
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://blogs.msdn.com/adonet" };
context.Blogs.Add(blog);
context.SaveChanges();
var blogs = context.Blogs
.Where(b => b.Url.Contains("msdn"))
.ToList();
foreach (var b in blogs)
{
Console.WriteLine(b.Url);
}
}
В этом примере создается новый объект Blog, добавляется в контекст и сохраняется в базе данных. Затем выполняется запрос для извлечения блогов с определенным URL.
🤔 Краткий ответ:
Entity Framework значительно упрощает работу с реляционными базами данных, позволяя разработчикам сосредоточиться на бизнес-логике, вместо деталей реализации доступа к данным. Он предлагает мощные инструменты для абстракции доступа к данным, что делает код чище, проще для понимания и поддержки.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых