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

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

Открыть в Telegram
5 049
Подписчики
+324 часа
-147 дней
-2630 день
Архив постов
Обучение на Frontend-разработчика. С нуля за 9 месяцев. На курсе вы получите все навыки, необходимые для старта в профессии Frontend-разработчика. Дистанционное обучение. Персональный наставник middle/senior уровня. 14 проектов, лайвкодинг, хакатоны, репетиции техсобеседования. Освоите JavaScript, React, TypeScript Официальный диплом и сертификат школы. Гарантия трудоустройства. Если вы не устроитесь, вернём деньги. Это закреплено в договоре п. 6.14. До 22 сентября скидка 30% на все курсы Result University Узнать больше #реклама 16+ result.school О рекламодателе

🤔 Какой из следующих интерфейсов определяет метод MoveNext()?
Anonymous voting

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

📌 Что такое принципы SOLID? 💬 Спрашивают в 78% собеседований 🤔 Принципы SOLID — это набор из пяти основных принципов ООП и проектирования, направленных на повышение гибкости, поддерживаемости и масштабируемости программного обеспечения. Эти принципы помогают разработчикам предотвращать проблемы, связанные с плохим проектированием, такие как жесткая связанность компонентов, слабая коэзия и чрезмерная сложность системы. Они были введены Робертом Мартином и являются акронимом, образованным от первых букв названий этих принципов: 1️⃣ Single Responsibility Principle (Принцип единственной ответственности): Класс должен иметь только одну причину для изменения. Это означает, что в идеале класс должен решать только одну задачу или иметь одну область ответственности. Разделение обязанностей помогает сделать систему более гибкой и упрощает тестирование и поддержку кода. 2️⃣ Open/Closed Principle (Принцип открытости/закрытости): Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для модификации. Это значит, что можно легко добавлять новую функциональность без изменения существующего кода, что делает систему более модульной и устойчивой к изменениям. 3️⃣ Liskov Substitution Principle (Принцип подстановки Барбары Лисков): Объекты в программе должны быть заменяемы на экземпляры их подтипов без изменения правильности выполнения программы. Проще говоря, производные классы должны быть способны заменять свои базовые классы без нарушения работы программы. 4️⃣ Interface Segregation Principle (Принцип разделения интерфейса): Клиенты не должны быть вынуждены зависеть от интерфейсов, которые они не используют. Этот принцип подразумевает создание специализированных интерфейсов вместо одного, "делающего всё". Такой подход упрощает управление зависимостями и обеспечивает большую гибкость в разработке. 5️⃣ Dependency Inversion Principle (Принцип инверсии зависимостей): Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба типа модулей должны зависеть от абстракций. Кроме того, абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Этот принцип направлен на уменьшение зависимостей между компонентами программы, что упрощает модификацию и тестирование системы. Применение принципов SOLID в процессе разработки помогает создавать более чистый, понятный и легко поддерживаемый код, улучшает его масштабируемость и облегчает внесение изменений. 🤔 Краткий ответ: Принципы SOLID — это пять правил для создания хорошо структурированного и легко поддерживаемого кода. Они помогают делать программы гибкими и открытыми для расширения, но закрытыми для изменений, уменьшая при этом взаимозависимость между различными частями программы. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

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

🤔 Какое из утверждений верно для метода, помеченного как static?
Anonymous voting

📌 Что такое делегат? 💬 Спрашивают в 78% собеседований Делегат — это тип, который безопасно инкапсулирует метод, подобно указателю на функцию в других языках программирования, но с проверкой типов во время компиляции. Делегаты могут ссылаться на метод, который принимает параметры и возвращает значение. Они используются для реализации обратных вызовов и событий, а также для определения пользовательских операций, которые могут быть выполнены методом, принимаемым в качестве параметра. 🤔 Зачем они нужны? Делегаты предоставляют способ передачи методов в качестве аргументов другим методам. Это полезно для реализации шаблонов проектирования, таких как наблюдатель (Observer), стратегия (Strategy), и для создания асинхронных вызовов. Они позволяют абстрагироваться от конкретных методов, передавая вместо этого ссылку на метод, что делает код более гибким и масштабируемым. 🤔 Пример:
// Определение делегата
public delegate int Operation(int x, int y);

class Program
{
    static void Main(string[] args)
    {
        // Создание экземпляра делегата, ссылающегося на метод Add
        Operation op = Add;

        // Вызов метода через делегат
        int result = op(5, 5);
        Console.WriteLine(result); // Вывод: 10

        // Делегат теперь ссылается на метод Subtract
        op = Subtract;

        // Повторный вызов метода через делегат
        result = op(10, 5);
        Console.WriteLine(result); // Вывод: 5
    }

    static int Add(int x, int y)
    {
        return x + y;
    }

    static int Subtract(int x, int y)
    {
        return x - y;
    }
}
В этом примере делегат Operation может ссылаться на любой метод, который принимает два целочисленных параметра и возвращает целое число. Сначала делегат ссылается на метод Add, затем на Subtract. Это демонстрирует, как можно динамически изменять методы, на которые указывает делегат, обеспечивая гибкость в выборе выполняемой операции. 🤔 Краткий ответ: Делегаты — мощный инструмент для создания гибких и масштабируемых приложений, позволяющий передавать методы как параметры, использовать их для определения событий и реализовывать асинхронные операции. Они обеспечивают безопасный и типобезопасный способ работы с методами в качестве объектов первого класса. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Какое значение по умолчанию имеет тип bool в C#?
Anonymous voting

📌 Что такое 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-сообщений. Они позволяют добавлять нужную функциональность, например, для логирования, аутентификации или обработки ошибок, делая приложение модульным и легко поддерживаемым. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человек
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ✔️ Как научиться отвлекаться от работы и отдыхать? ✔️ Как совместить кучу рабочих задач и время с семьей? ✔️ Как справиться с прокрастинацией? ✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс. https://t.me/+_f2HiZ99wxswZGRi

Окупите внедрение CRM Битрикс24 - за несколько месяцев! За счет чего вырастит Ваша прибыль после настройки Битрикс24 в KISELE
Окупите внедрение CRM Битрикс24 - за несколько месяцев! За счет чего вырастит Ваша прибыль после настройки Битрикс24 в KISELEV GROUP? 1. Понятная аналитика для отдела продаж в режиме online: Руководитель отдела продаж и собственник получают понятную аналитику, которая позволяет видеть слабые места и вовремя принимать управленческие решения. 2. 3-х точечная система контроля менеджеров: Сконцентрируем фокус менеджеров на продажах и дадим руководителям готовые инструменты для контроля за сделками и задачами. 3. Совместим работу всех отделов в одной системе: Выстроим коммуникацию внутри компании между отделами с хранением базы данных. Ускорим согласование документов и счетов. Запишитесь на экскурсию в нашу - идеально настроенную - CRM Битрикс24! Забронировать #реклама 16+ kiselevgroup.com О рекламодателе

🤔 Что означает ключевое слово sealed в объявлении класса?
Anonymous voting

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

📌 Что такое лямбда выражения в С#? 💬 Спрашивают в 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(число);
}
Лямбда-выражения также могут быть использованы для создания делегатов в событийно-ориентированных или асинхронных программах, делая код более лаконичным и легко читаемым. 🤔 Краткий ответ: Лямбда-выражения предоставляют мощный и гибкий способ работы с функциями, позволяя писать компактный и выразительный код. Они идеально подходят для выполнения операций с коллекциями, асинхронного программирования и везде, где требуется краткость и выразительность. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🥰 Как улучшить свой код 🥰 Настрой среду, в которой ты работаешь! 🥰 Многие программисты пишут код на настройках по умолчани
🥰 Как улучшить свой код 🥰 Настрой среду, в которой ты работаешь! 🥰 Многие программисты пишут код на настройках по умолчанию - ошибка. 🥰 Не подключают плагины, которые ускорят работу и увеличат эффективность - фатальная ошибка. 👩‍💻 Канал Visual Studio Сode | Плагины сделает твою рабочую среду универсальным и мощным инструментом. 🥰 Повышай свою эффективность и подписывайся на канал Visual Studio Сode | Плагины

Регистрируйтесь на Yandex Scale 2024! 25 сентября состоится главная конференция Yandex Cloud для тех, кто создаёт цифровые пр
Регистрируйтесь на Yandex Scale 2024! 25 сентября состоится главная конференция Yandex Cloud для тех, кто создаёт цифровые продукты и решения. В этом году мероприятие пройдёт в МХАТ имени М. Горького в Москве и онлайн. 5 технологических треков, 31 доклад, 50 спикеров, нетворкинг — разве это не лучший способ продуктивно провести день? Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе

🤔 Что из перечисленного нельзя использовать в методе с модификатором async?
Anonymous voting

📌 Что такое сервис локатор? 💬 Спрашивают в 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
    }
}
🤔 Преимущества: ➕Гибкость: Компоненты не зависят от способов создания их зависимостей, что упрощает изменения и тестирование. ➕Универсальность: Легко добавить новый сервис или изменить существующий без изменения потребляющих его компонентов. 🤔 Недостатки: ➕ Скрытая связанность: Зависимости между компонентами и их сервисами не всегда ясны, что может привести к более сложному коду и затруднить его понимание и поддержку. ➕ Сложность управления: По мере роста приложения управление всеми сервисами через локатор может стать сложным и неудобным. 🤔 Краткий ответ: Сервис локатор может быть полезен в ситуациях, когда нужна высокая степень гибкости и динамичности в управлении зависимостями, но его использование должно быть оправдано требованиями проекта, так как оно вносит дополнительную сложность в архитектуру приложения. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Какое ключевое слово используется для объявления неявно типизированной локальной переменной?
Anonymous voting

📌 Какая разница между структурой и классом? 💬 Спрашивают в 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;
    }
}
➕ Используйте структуры, когда вам нужно создать небольшой тип данных, который будет использоваться в большом количестве и не требует наследования. ➕ Используйте классы, когда вам нужно создать более сложные объекты, которые потенциально могут быть наследованы другими классами или когда необходимо управление жизненным циклом объекта через сборку мусора. 🤔 Краткий ответ: Выбор между структурой и классом зависит от требований к производительности, использования памяти и функциональности программы. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых