fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

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

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

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

نمایش بیشتر
5 006
مشترکین
+124 ساعت
-97 روز
+530 روز
آرشیو پست ها
🤔 Что такое ООП? ООП (Объектно-Ориентированное Программирование) — это парадигма программирования, основанная на концепции объектов, которые объединяют данные и методы для их обработки. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. ООП позволяет моделировать реальный мир с помощью классов и объектов, улучшая структуру и повторное использование кода. В C# все программы строятся на основе классов, что делает его строго объектно-ориентированным языком. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Yandex DataLens Festival, 2-18 декабря Для аналитиков, тимлидов, разработчиков, продактов и маркетологов. Эксперты Яндекса по
Yandex DataLens Festival, 2-18 декабря Для аналитиков, тимлидов, разработчиков, продактов и маркетологов. Эксперты Яндекса поделятся опытом. Онлайн и бесплатно Зарегистрироваться #реклама 16+ yandex.cloud О рекламодателе

🤔 Где могут храниться значимые типы? 🚩Стек Значимые типы обычно хранятся на стеке, когда они объявлены внутри метода. Это происходит потому, что стек обеспечивает быстрый доступ и автоматическое управление памятью.
void MyMethod()
{
   int localVar = 10; // localVar хранится на стеке
}   
🚩Куча Значимые типы могут храниться в куче, если они являются частью объекта ссылочного типа. Например, если структура или переменная типа int является полем класса, то она будет храниться в куче вместе с объектом класса.
class MyClass
{
   public int Number; // Number хранится в куче, потому что MyClass - ссылочный тип
}

MyClass obj = new MyClass();
obj.Number = 42;   
Ставь 👍 и забирай 📚 Базу знаний

Погрузитесь в мир высокотехнологичных решений и узнайте, как создать интерактивные веб-приложения с помощью SignalR! Регистри
Погрузитесь в мир высокотехнологичных решений и узнайте, как создать интерактивные веб-приложения с помощью SignalR! Регистрируйтесь на бесплатный вебинар: https://clck.ru/3EidYt?erid=LjN8KLnQv 1. Зачем использовать SignalR: Узнайте, какие задачи решает эта мощная технология и почему она необходима для современных приложений. 2. Концепции и работа SignalR: Поймем, как работают хабы, соединения, клиенты и серверы, а также механизмы протоколов WebSocket и Long Polling. 3. Создание интерактивного чата: Построим структуру простого чата. Напишем код для отправки и получения сообщений в реальном времени. Обработаем события, такие как подключение/отключение пользователей и оповещения о новых сообщениях. Кому будет полезно: 1️⃣ .NET разработчикам: Расширьте свои навыки работы с ASP NET Core и создавайте интерактивные приложения. 2️⃣ Веб-разработчикам: Узнайте, как создавать быстро реагирующие и интерактивные веб-приложения. 🔥Не упустите шанс! Зарегистрируйтесь сейчас и станьте мастером создания интерактивных веб-приложений с SignalR! Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с тру
– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с тру
– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

🤔 В чём разница абстрактного класса и интерфейса? Абстрактный класс может содержать как реализацию методов, так и абстрактные методы, а интерфейс — только определения методов без реализации. Абстрактные классы могут иметь поля и конструкторы, а интерфейсы — нет. Класс может наследовать только один абстрактный класс, но реализовать несколько интерфейсов. Интерфейсы предоставляют более гибкий способ организации контракта для классов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу Знаний

🤔 Расскажи про классификацию типов? Типы данных можно классифицировать по нескольким критериям, включая базовые категории, такие как значимые типы (value types) и ссылочные типы (reference types), а также другие характеристики, такие как встроенные типы, пользовательские типы и системы типов. 🚩Классификации типов 🟠Значимые типы (Value Types) Значимые типы хранят свои значения непосредственно и обычно располагаются в стеке. При присваивании переменной значимого типа другой переменной создается копия значения.
int a = 10;
int b = a; // b получит копию значения a  
🟠Структуры (struct) Пользовательские типы, которые объединяют несколько значений.
struct Point
{
    public int X;
    public int Y;
}

Point p1 = new Point { X = 1, Y = 2 };
Point p2 = p1; // p2 получит копию значений p1
🟠Перечисления (enum) Типы, представляющие набор именованных констант.
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
Days today = Days.Monday;
🟠Ссылочные типы (Reference Types) Ссылочные типы хранят ссылки на объекты, которые располагаются в куче (heap). При присваивании переменной ссылочного типа другой переменной копируется ссылка на объект, а не сам объект. 🟠Классы (class) Основные строительные блоки объектов.
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

Person p1 = new Person { Name = "Alice", Age = 30 };
Person p2 = p1; // p2 указывает на тот же объект, что и p1
🟠Интерфейсы (interface) Контракты, определяющие набор методов и свойств, которые должны быть реализованы классами.
interface IAnimal
{
    void Speak();
}

class Dog : IAnimal
{
    public void Speak() => Console.WriteLine("Woof!");
}
🟠Делегаты (delegate) Типы, представляющие ссылки на методы.
delegate void MyDelegate(string message);
MyDelegate del = Console.WriteLine;
del("Hello, World!");
🟠Массивы (arrays) Коллекции элементов одного типа.
int[] numbers = new int[] { 1, 2, 3, 4, 5 };  
🟠Строки (string) Последовательности символов.
string greeting = "Hello, World!";  
🟠Nullable типы Nullable типы позволяют значимым типам принимать значение null, что означает отсутствие значения.
int? nullableInt = null;  
🟠Обобщенные типы (Generics) Обобщенные типы позволяют создавать классы, методы и структуры, которые могут работать с любыми типами данных, обеспечивая типобезопасность и повторное использование кода.
class GenericClass<T>
{
    public T Value { get; set; }
}

GenericClass<int> intInstance = new GenericClass<int> { Value = 10 };
GenericClass<string> stringInstance = new GenericClass<string> { Value = "Hello" };
🟠Неуправляемые типы (Unsafe Types) Неуправляемые типы позволяют работать с указателями и выполнять низкоуровневые операции, которые обычно не разрешены в безопасном управляемом коде.
unsafe
{
    int x = 10;
    int* ptr = &x;
    Console.WriteLine((int)ptr); // Вывод адреса переменной x
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое get? get — это метод или функция, используемая для получения значения из объекта, коллекции или свойства. В языке Python, например, метод get применяется к словарям для безопасного извлечения значения по ключу, возвращая None или значение по умолчанию, если ключ отсутствует. В JavaScript get может быть геттером, определяющим, как получить значение свойства объекта при его доступе. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Какие есть базовые сущности RabbitMQ? Это популярный брокер сообщений, который используется для обмена сообщениями между различными компонентами системы. В RabbitMQ есть несколько базовых сущностей, которые нужно понимать для эффективного использования этой технологии. 🚩Базовые сущности 🟠Сообщения (Messages) Это данные, которые отправляются от отправителя к получателю через RabbitMQ. Сообщения могут содержать любые данные: текст, JSON, XML, двоичные данные и т.д. 🟠Очереди (Queues) Это места, где сообщения хранятся до тех пор, пока их не заберет получатель. Очереди обеспечивают надежную доставку сообщений и поддерживают множество получателей. Создание очереди
rabbitmqadmin declare queue name=my_queue durable=true
🟠Обменники (Exchanges) Принимают сообщения от отправителей и направляют их в соответствующие очереди на основе правил маршрутизации. Существует несколько типов обменников: Direct: Сообщения направляются в очередь с ключом маршрутизации, точно соответствующим ключу, указанному в обменнике. Fanout: Сообщения направляются во все очереди, связанные с этим обменником, без учета ключа маршрутизации. Topic: Сообщения направляются в очереди на основе шаблонов ключей маршрутизации. Headers: Сообщения направляются в очереди на основе соответствия заголовков. Создание обменника:
rabbitmqadmin declare exchange name=my_exchange type=direct durable=true
🟠Связи (Bindings) Определяют правила маршрутизации между обменниками и очередями. Они указывают, какие ключи маршрутизации должны использоваться для доставки сообщений из обменника в очередь. Создание связи
rabbitmqadmin declare binding source=my_exchange destination=my_queue routing_key=my_key
🟠Ключи маршрутизации (Routing Keys) Ключи маршрутизации используются обменниками для определения, в какие очереди направлять сообщения. Они играют ключевую роль при использовании direct и topic обменников. 🟠Потребители (Consumers) Это приложения или службы, которые получают сообщения из очередей и обрабатывают их. Пример производителя на Python
import pika

def callback(ch, method, properties, body):
    print(f"Received {body}")

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='my_queue')

channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)

print('Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
🟠Производители (Producers) Это приложения или службы, которые отправляют сообщения в обменники RabbitMQ. Пример производителя на Python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='my_queue')

channel.basic_publish(exchange='', routing_key='my_queue', body='Hello World!')

print(" [x] Sent 'Hello World!'")
connection.close()
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое сервис локатор? Сервис-локатор — это паттерн проектирования, который предоставляет центральный реестр для поиска и получения экземпляров зависимостей или сервисов. Класс сервис-локатора хранит ссылки на сервисы и позволяет запрашивать их по идентификатору, что упрощает управление зависимостями. Однако этот паттерн критикуют за скрытые зависимости и нарушение принципа инверсии зависимостей (SOLID). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Обучение на Frontend-разработчика. С нуля за 9 месяцев. На курсе вы получите все навыки, необходимые для старта в профессии Frontend-разработчика. Персональный наставник middle/senior уровня. 14 проектов, лайвкодинг, хакатоны, репетиции техсобеседования. Освоите JavaScript, React, TypeScript Официальный диплом и сертификат школы. Поддержка наставника по JS в течение 3-х месяцев после диплома. Гарантия трудоустройства. Если вы не устроитесь, вернём деньги. Это закреплено в договоре п. 6.14 С 9 по 30 ноября 2024 г. скидка 40% на все программы Result School Узнать больше #реклама 16+ result.school О рекламодателе

🤔 Как можно не используя middleware выполнить действие перед обработкой запроса и после? В ASP.NET Core можно выполнять действия до и после обработки запроса, не используя middleware, с помощью фильтров действий (Action Filters). Фильтры позволяют выполнять код до и после вызова метода контроллера. 🚩Фильтры действий (Action Filters) 🟠Создание фильтра действия Создадим фильтр, который выполняет код до и после метода действия контроллера.
using Microsoft.AspNetCore.Mvc.Filters;
using System;

public class MyActionFilter : Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // Код, выполняемый до действия контроллера
        Console.WriteLine("До выполнения действия контроллера.");
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // Код, выполняемый после действия контроллера
        Console.WriteLine("После выполнения действия контроллера.");
    }
}
🟠Применение фильтра к контроллеру или действию Фильтр можно применить к конкретному методу контроллера или ко всему контроллеру.
using Microsoft.AspNetCore.Mvc;

public class MyController : Controller
{
    [MyActionFilter]
    public IActionResult MyAction()
    {
        // Логика действия контроллера
        return Ok("Action executed");
    }
}
Применение ко всему контроллеру
using Microsoft.AspNetCore.Mvc;

[MyActionFilter]
public class MyController : Controller
{
    public IActionResult MyAction1()
    {
        // Логика действия контроллера
        return Ok("Action 1 executed");
    }

    public IActionResult MyAction2()
    {
        // Логика действия контроллера
        return Ok("Action 2 executed");
    }
}
🟠Применение глобального фильтра Фильтр также можно зарегистрировать глобально, чтобы он применялся ко всем контроллерам и действиям. Регистрация глобального фильтра в Startup.cs
using Microsoft.AspNetCore.Mvc;

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(options =>
    {
        options.Filters.Add<MyActionFilter>();
    });
}
🚩Пример выполнения действий до и после запроса Создание фильтра
using Microsoft.AspNetCore.Mvc.Filters;
using System;

public class LoggingActionFilter : Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // Логика до выполнения действия контроллера
        Console.WriteLine("Запрос начался: " + context.HttpContext.Request.Path);
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // Логика после выполнения действия контроллера
        Console.WriteLine("Запрос завершился: " + context.HttpContext.Request.Path);
    }
}
Применение фильтра к контроллеру
using Microsoft.AspNetCore.Mvc;

[LoggingActionFilter]
public class UsersController : Controller
{
    public IActionResult GetUser(int id)
    {
        // Логика действия контроллера
        return Ok(new { Id = id, Name = "User" + id });
    }
}
Регистрация в Startup.cs
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Стоит ли учить сегодня ASP NET и можно ли на этом заработать? 1. Это уже достаточно зрелый фреймворк, на котором работает мно
Стоит ли учить сегодня ASP NET и можно ли на этом заработать? 1. Это уже достаточно зрелый фреймворк, на котором работает много серьезных проектов (таких, как StackOverflow) и которая востребована на рынке как в России, так и в мире. 2. Есть возможность разрабатывать компактные кроссплатформенные приложения, которые можно развертывать самостоятельно, без огромного сервера за спиной. 3. Сам C# достаточно интересный, активно развивающийся язык. Поэтому предлагаем пройти короткий тест и оценить свой уровень навыков: https://clck.ru/3EdFjw   А прокачать и получить востребованную специальность, либо повышение на текущей работе можно уже будет с серьезной скидкой на курсе C# ASP NET Core разработчик. Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🤔 Как работает сборка мусора на платформе .NET? Сборка мусора (.NET Garbage Collector) автоматически управляет памятью, удаляя объекты, к которым нет ссылок. GC работает в нескольких поколениях, чтобы оптимизировать производительность, очищая короткоживущие объекты чаще. Он запускается, когда система нуждается в памяти или при достижении определённых условий. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! По всей России объявили бесплатную программу на шестимесячное обучение по IT-cпециальнос
+9
Помощь в трудоустройстве в IT-сфере! По всей России объявили бесплатную программу на шестимесячное обучение по IT-cпециальностям. Запись на участие в программе продлится до конца июля, но чтобы туда попасть, нужно пройти специальный профтест. По результату тестирования сразу узнаете, какая профессия вам подойдет, и проходите ли вы на бесплатное обучение. Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Что бывает, когда количества подключений не хватает? 🟠Отказы в подключении Новые запросы к базе данных не могут быть обработаны, так как нет доступных подключений. Это приводит к тому, что запросы отклоняются или истекает время ожидания (timeout). 🟠Задержки и снижение производительности Запросы могут быть помещены в очередь и ждать доступного подключения, что увеличивает время отклика и снижает производительность системы. 🟠Ошибки и исключения Приложение может выбрасывать исключения, такие как TimeoutException, SqlException (например, Cannot open connection), указывающие на невозможность установления соединения. 🚩Примеры исключений
try
{
    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Выполнение операций с базой данных
    }
}
catch (SqlException ex)
{
    Console.WriteLine("Ошибка подключения к базе данных: " + ex.Message);
}
catch (TimeoutException ex)
{
    Console.WriteLine("Превышено время ожидания подключения: " + ex.Message);
}
🚩Причины исчерпания подключений 🟠Плохое управление подключениями Неосвобождение ресурсов: Пул подключений может исчерпаться, если подключения не закрываются и не возвращаются в пул после использования. Длительное удержание подключений: Подключения удерживаются слишком долго, например, при выполнении долгих операций в одной сессии. 🟠Высокая нагрузка Чрезмерное количество одновременно выполняемых запросов, превышающее максимальное количество доступных подключений в пуле. 🟠Неправильная настройка пула подключений Недостаточное количество максимальных подключений в пуле или слишком большое время ожидания подключения. 🚩Способы решения проблемы 🟠Правильное управление подключениями Всегда закрывайте соединения после использования, чтобы они возвращались в пул.
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Выполнение операций с базой данных
    connection.Close(); // Явно закрываем подключение
}
Используйте конструкцию using для автоматического закрытия соединений.
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Выполнение операций с базой данных
} // Подключение автоматически закрывается здесь
🟠Настройка пула подключений Увеличьте максимальное количество подключений в пуле.
var connectionString = "Data Source=server;Initial Catalog=database;User ID=user;Password=password;Max Pool Size=100;";
Настройте время ожидания подключения.
var connectionString = "Data Source=server;Initial Catalog=database;User ID=user;Password=password;Connection Timeout=30;";
🟠Оптимизация запросов и транзакций Минимизируйте время удержания соединений. Используйте транзакции эффективно, чтобы не блокировать соединения на долгое время.
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (var transaction = connection.BeginTransaction())
    {
        try
        {
            // Выполнение операций с базой данных
            transaction.Commit();
        }
        catch
        {
            transaction.Rollback();
            throw;
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое lock-еры? Lock-еры — это объекты или механизмы, такие как lock в C#, которые предотвращают одновременный доступ к критическим участкам кода из нескольких потоков. Они обеспечивают безопасное выполнение кода в многопоточной среде, исключая гонки данных. Например, lock блокирует выполнение других потоков, пока текущий поток не завершит работу с ресурсом. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи про метод ASP/Query? Не является стандартным термином в ASP.NET или ASP.NET Core. Возможно, имеется в виду подход к созданию запросов или API-методов в ASP.NET Core для обработки HTTP-запросов. Рассмотрим, как создавать и обрабатывать запросы в ASP.NET Core. 🚩Создание и Обработка Запросов 🟠Создание контроллера Контроллеры в ASP.NET Core отвечают за обработку HTTP-запросов и возврат ответов. Контроллеры обычно наследуются от класса ControllerBase или Controller.
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    private readonly IUserService _userService;

    public UsersController(IUserService userService)
    {
        _userService = userService;
    }

    [HttpGet("{id}")]
    public IActionResult GetUser(int id)
    {
        var user = _userService.GetUserById(id);
        if (user == null)
        {
            return NotFound();
        }
        return Ok(user);
    }

    [HttpPost]
    public IActionResult CreateUser([FromBody] User user)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        _userService.CreateUser(user);
        return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
    }
}
🟠Создание сервиса Сервисы содержат бизнес-логику приложения. Обычно они регистрируются в контейнере зависимостей.
public interface IUserService
{
    User GetUserById(int id);
    void CreateUser(User user);
}

public class UserService : IUserService
{
    private readonly List<User> _users = new List<User>();

    public User GetUserById(int id)
    {
        return _users.FirstOrDefault(u => u.Id == id);
    }

    public void CreateUser(User user)
    {
        user.Id = _users.Count + 1;
        _users.Add(user);
    }
}
🟠Модель данных Модель данных представляет структуру данных, с которой работает приложение.
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
🟠Регистрация сервисов в контейнере зависимостей Регистрация сервисов в Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddScoped<IUserService, UserService>();
}
🟠Настройка маршрутизации Настройка маршрутизации для контроллеров в Startup.cs.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
🚩Пример вызова API GET-запрос для получения пользователя
GET /api/users/1
POST-запрос для создания пользователя
POST /api/users
Content-Type: application/json

{
    "name": "Alice",
    "age": 30
}
Ставь 👍 и забирай 📚 Базу знаний