en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

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

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

Open in Telegram

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

Show more
5 003
Subscribers
-324 hours
-97 days
-730 days
Posts Archive
🤔 Какое ключевое слово в C# используется для создания метода, который может быть переопределён в производном классе?
Anonymous voting

👨‍💻 Джун: Слушай, вот стажировку я прошел, где теперь можно чекнуть вакансии на работу? 🍷 Мидл: Ооо, тебе помогут ребята с
👨‍💻 Джун: Слушай, вот стажировку я прошел, где теперь можно чекнуть вакансии на работу? 🍷 Мидл: Ооо, тебе помогут ребята с канала Джун работает 💯 Карьеру нужно начинать с хорошими работодателями. Твое резюме будет ликовать, ведь контент выходит каждый день, работа ждет тебя, мой друг! 😏 Не упускай возможность и подписывайся, чтобы не потерять

📌 Что такое принцип подстановки Барбары Лисков? 💬 Спрашивают в 22% собеседований Принцип подстановки Барбары Лисков (Liskov Substitution Principle, LSP) - это один из пяти принципов SOLID, который гласит, что объекты подтипов должны быть заменяемы объектами базового типа без нарушения правильности работы программы. Это означает, что если класс B является подтипом класса A, то объекты класса A могут быть заменены объектами класса B без изменения желаемого поведения программы. 🤔 Основные понятия 1️⃣ Наследование: Подтипы должны наследовать не только интерфейс, но и поведение базовых типов. 2️⃣ Замена: Класс-наследник должен корректно работать в любом контексте, где ожидается объект базового класса. 3️⃣ Контракт: Подтип должен соблюдать контракт базового типа, что включает предусловия, постусловия и инварианты. 🤔 Почему это нужно ➕ Упрощение понимания и поддержки кода: Код, который следует LSP, более предсказуем и понятен, что облегчает его поддержку. ➕ Повышение надежности: Соблюдение принципа помогает избежать неожиданных ошибок при замене объектов базового класса на объекты подклассов. ➕ Расширяемость: Принцип способствует созданию гибкой и расширяемой архитектуры, в которой новые подтипы можно добавлять без риска нарушения существующего кода. 🤔 Пример нарушения LSP Рассмотрим пример, где нарушение LSP приводит к некорректному поведению программы:
public class Rectangle
{
    public virtual int Width { get; set; }
    public virtual int Height { get; set; }

    public int GetArea()
    {
        return Width * Height;
    }
}

public class Square : Rectangle
{
    public override int Width
    {
        set { base.Width = base.Height = value; }
    }

    public override int Height
    {
        set { base.Width = base.Height = value; }
    }
}
🤔 Проблема В этом примере Square (квадрат) наследует от Rectangle (прямоугольник). Однако, квадрат имеет особое свойство: его ширина и высота всегда равны. При попытке установить ширину или высоту квадрата, изменяется и другое значение, что нарушает поведение прямоугольника. 🤔 Исправление Лучше использовать композицию вместо наследования для избежания такой проблемы:
public interface IShape
{
    int GetArea();
}

public class Rectangle : IShape
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int GetArea()
    {
        return Width * Height;
    }
}

public class Square : IShape
{
    public int SideLength { get; set; }

    public int GetArea()
    {
        return SideLength * SideLength;
    }
}
🤔 Объяснение 1️⃣ Интерфейс IShape: Определяем общий интерфейс для всех форм. 2️⃣ Реализация прямоугольника и квадрата: Классы Rectangle и Square реализуют интерфейс IShape, но теперь они не наследуются друг от друга и имеют свои собственные свойства и методы. 🤔 Краткий ответ Принцип подстановки Лисков гласит, что объекты подтипов должны быть заменяемы объектами базового типа без нарушения работы программы. Это необходимо для повышения предсказуемости, надежности и расширяемости кода. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

📕 Прогер, как ты расширяешь свой кругозор в сфере IT? Не достаточно знать что-то одно, мысля глобально и изучая смежные отра
📕 Прогер, как ты расширяешь свой кругозор в сфере IT? Не достаточно знать что-то одно, мысля глобально и изучая смежные отрасли, ты не только становишься умнее, но и увеличиваешь свою востребованность и свой заработок. 🗿 Не обязательно читать заумные книги и смотреть подкасты - это долго. У нас есть решение: 🔥 Полезные статьи - концентрат знаний. 🔥 Советы - короткие сообщения, которые будут увеличивать твою эффективность. 🔥 Инструменты - tool-сайты в разы упростят и ускорят твою работу. 🧑‍💻 Время, силы, желание - ресурсы, которые нужно использовать с умом. Подпишись на канал Заметки прогера, IT ниша скажет "спасибо" за такого специалиста.

Начните карьеру в IT в Яндексе, VK, Сбере или МТС В канале собраны самые актуальные стажировки в крупнейших компаниях. Не упу
Начните карьеру в IT в Яндексе, VK, Сбере или МТС В канале собраны самые актуальные стажировки в крупнейших компаниях. Не упустите возможность найти: — вакансии для джунов и кандидатов без опыта у лучших работодателей; — хакатоны, на которых можно получить сертификаты и кейсы для резюме; — карьерные ивенты, где можно прокачать свои скиллы и заработать денег Подписаться #реклама О рекламодателе

🤔 Какой из следующих методов C# используется для явного указания, что объект должен быть собран сборщиком мусора?
Anonymous voting

😭 Джун: Как мне найти работу в IT, если опыта нет? 🧑‍💻 Мидл: Просто зайди на канал Джун стажер и подбери стажировку по душ
😭 Джун: Как мне найти работу в IT, если опыта нет? 🧑‍💻 Мидл: Просто зайди на канал Джун стажер и подбери стажировку по душе. 📕 Админы отбирают самые сочные вакансии от ведущих компаний, к тому же контент выходит каждый день. 🔥 Не упускай возможность и подписывайся, чтобы не потерять

ТОП-4 Курса по Программированию ⚡Tutortop — маркетплейс курсов №1 по количеству школ-партнеров, курсов и реальных отзывов сту
ТОП-4 Курса по Программированию ⚡Tutortop — маркетплейс курсов №1 по количеству школ-партнеров, курсов и реальных отзывов студентов. ✅Хотите стать программистом, но не знаете с какого языка начать? Помогаем разобраться в самых популярных и востребованных языках программирования. Подарок в конце подборки! Выбрать #реклама 16+ tutortop.ru О рекламодателе

📌 Что такое IoC-контейнеры? 💬 Спрашивают в 22% собеседований IoC (Inversion of Control) контейнеры – это фреймворки или библиотеки, которые управляют созданием и внедрением зависимостей в приложении. Они помогают реализовать принцип внедрения зависимостей (Dependency Injection), что делает код более гибким, тестируемым и легко расширяемым. 🤔 Основные понятия 1️⃣ Inversion of Control (IoC): IoC – это принцип, при котором управление объектами и их зависимостями передается внешней системе или фреймворку, вместо того чтобы объекты самостоятельно управляли своими зависимостями. 2️⃣ Dependency Injection (DI): DI – это метод внедрения зависимостей, при котором зависимости (объекты, от которых зависит другой объект) предоставляются внешним источником (например, IoC-контейнером) вместо того, чтобы объект создавал их самостоятельно. 🤔 Почему это нужно ➕ Упрощение тестирования: Легко заменять зависимости на заглушки или моки, что облегчает тестирование. ➕ Снижение связности кода: Объекты не зависят от конкретных реализаций своих зависимостей, а зависят от абстракций (интерфейсов), что упрощает изменение и расширение кода. ➕ Централизованное управление зависимостями: IoC-контейнеры управляют жизненным циклом объектов и их зависимостей, что делает код более организованным и понятным. 🤔 Пример использования IoC-контейнера Рассмотрим простой пример использования популярного IoC-контейнера Autofac в C#: 1️⃣ Установка Autofac: Добавляем пакет Autofac через NuGet Package Manager. 2️⃣ Создание интерфейсов и классов:
public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine(message);
    }
}

public interface IService
{
    void Serve();
}

public class Service : IService
{
    private readonly ILogger _logger;

    public Service(ILogger logger)
    {
        _logger = logger;
    }

    public void Serve()
    {
        _logger.Log("Service Called");
    }
}
3️⃣ Настройка и использование IoC-контейнера:
using Autofac;

class Program
{
    static void Main(string[] args)
    {
        var builder = new ContainerBuilder();
        
        // Регистрируем зависимости
        builder.RegisterType<ConsoleLogger>().As<ILogger>();
        builder.RegisterType<Service>().As<IService>();

        // Строим контейнер
        var container = builder.Build();

        // Разрешаем зависимости
        var service = container.Resolve<IService>();
        service.Serve();
    }
}
🤔 Объяснение кода 1️⃣ Интерфейсы и реализации: Мы создаем интерфейсы ILogger и IService, а также их реализации ConsoleLogger и Service. 2️⃣ Регистрация зависимостей: С помощью ContainerBuilder регистрируем классы ConsoleLogger и Service как реализации соответствующих интерфейсов. 3️⃣ Разрешение зависимостей: С помощью контейнера разрешаем зависимости и вызываем метод Serve у объекта Service, который использует ConsoleLogger для логирования. 🤔 Краткий ответ IoC-контейнеры управляют созданием и внедрением зависимостей в приложении, упрощая тестирование и организацию кода. Они позволяют регистрировать и разрешать зависимости, делая код более гибким и легко расширяемым. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

👨‍💻 Будущий специалист, ты знаешь, какая самая частая ошибка новичка в сфере IT? Отсутствие практики убивает в тебе потенциал ✈️ Как с этим бороться, мой друг? Найди работу и прокачивай свои скилы на конкретных задачах 🔥 У нас ты будешь находить большое количество вакансий каждый день. Понятие работы перестанет быть для тебя размытым. Подпишись на канал и не откладывай свой прогресс в долгий ящик.

Jobski - твой помощник при поиске работы в IT Сервис индивидуально подбирает вакансии, учитывая ваш опыт, навыки и стек техно
Jobski - твой помощник при поиске работы в IT Сервис индивидуально подбирает вакансии, учитывая ваш опыт, навыки и стек технологий. Узнать больше #реклама jobski.ru О рекламодателе

🤔 Какое ключевое слово в C# используется для объявления блока кода, который гарантированно выполнится после завершения блока try?
Anonymous voting

🧑‍💻 Если твой английский позволяет ответить только на вопрос "Do you speak English", то с этим нужно что-то делать, будучи программистом. 🫤 Ты в курсе, что ... - говорят по-английски — 20% из всех людей. - Большое кол-во IT документации написано на английском. Хочешь понимать код лучше? Изучи язык, который используется в его основе. 📕 На нашем канале ты постепенно будешь набираться опыта, в этом тебе помогут: - Тесты для изучения английского: проверьте свои знания на практике. - Английский через мемы: учите язык весело и с интересом. - Шпаргалки для повторения: закрепите знания быстро и эффективно. - Английский сленг программиста: станьте настоящим профи в коммуникации. 🔥 Маленький шаг в изучении иностранного откроет перед тобой большие возможности будущего специалиста и значительно повысит твое зп. 🌸 Подпишись, do it!

📌 Что такое мультикаст-делегат? 💬 Спрашивают в 22% собеседований Мультикаст-делегат в C# - это тип делегата, который может ссылаться на несколько методов. Это позволяет вызывать несколько методов в одном вызове делегата. Такая возможность полезна для выполнения последовательности действий, таких как уведомление нескольких подписчиков о событии. 🤔 Основные понятия 1️⃣ Делегат: Делегат - это тип, который определяет сигнатуру метода и может ссылаться на любой метод с совместимой сигнатурой. Делегаты похожи на указатели на функции в C++, но являются типобезопасными и встроены в систему типов C#. 2️⃣ Мультикаст-делегат: Это делегат, который может содержать список методов. Когда вызывается мультикаст-делегат, все методы в его списке вызываются в порядке их добавления. 🤔 Почему это нужно ➕ Уведомление нескольких объектов: Мультикаст-делегаты широко используются в системе событий .NET. Например, когда происходит какое-то событие (например, изменение состояния объекта), все подписчики на это событие могут быть уведомлены через мультикаст-делегат. ➕ Легкость добавления и удаления методов: Методы могут быть легко добавлены или удалены из списка вызовов делегата, что делает их гибким инструментом для динамического управления логикой программы. 🤔 Использование мультикаст-делегатов Создадим простой пример, где мультикаст-делегат используется для уведомления нескольких методов:
using System;

public class Program
{
    // Определяем делегат, который принимает строку и ничего не возвращает
    public delegate void Notify(string message);

    // Метод, который соответствует сигнатуре делегата
    public static void SendEmail(string message)
    {
        Console.WriteLine($"Email sent: {message}");
    }

    // Другой метод, который соответствует сигнатуре делегата
    public static void LogMessage(string message)
    {
        Console.WriteLine($"Log entry: {message}");
    }

    public static void Main()
    {
        // Создаем экземпляр делегата и добавляем методы
        Notify notifyDel = SendEmail;
        notifyDel += LogMessage;

        // Вызываем делегат
        notifyDel("System update available.");

        // Удаляем метод из делегата
        notifyDel -= LogMessage;

        // Вызываем делегат снова
        notifyDel("Security patch applied.");
    }
}
🤔 Объяснение кода 1️⃣ Определение делегата: Мы объявляем делегат Notify, который принимает строку в качестве параметра и не возвращает значение. 2️⃣ Создание методов: Два метода SendEmail и LogMessage, которые соответствуют сигнатуре делегата Notify. 3️⃣ Создание экземпляра делегата: Мы создаем экземпляр делегата и добавляем методы в список вызовов. 4️⃣ Вызов делегата: Когда мы вызываем делегат, он вызывает все методы в своем списке. 5️⃣ Удаление метода из делегата: Мы удаляем метод LogMessage из списка вызовов делегата. 🤔 Краткий ответ Мультикаст-делегат - это делегат, который может ссылаться на несколько методов и вызывать их последовательно. Это полезно для выполнения нескольких действий в одном вызове, таких как уведомление нескольких подписчиков о событии. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

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

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

Срочно требуются Веб-Дизайнеры в Figma. Обучим с нуля. Онлайн-программа с наставником и чатом. Осторожно! 80% практики. По результату обучения у вас будет портфолио из нескольких работ. Сертификат о прохождении курса. Возможность пройти полное обучение и получить гарантированное трудоустройство! Учитесь дизайну у профессионалов. Переходи по кнопки: "Узнать больше" и начинай свое обучение. Доступ 0 руб. Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

📌 Где мы используем интерфейсы? 💬 Спрашивают в 22% собеседований Интерфейсы в C# используются для определения контрактов, которые классы должны реализовать, и играют важную роль в создании гибких и масштабируемых приложений. Вот основные случаи их использования: 🤔 Основные случаи использования интерфейсов 1️⃣ Определение контрактов: ➕ Интерфейсы определяют набор методов и свойств, которые классы должны реализовать, обеспечивая консистентность. ➕ Пример:
     public interface ILogger
     {
         void Log(string message);
     }

     public class ConsoleLogger : ILogger
     {
         public void Log(string message)
         {
             Console.WriteLine(message);
         }
     }
     
2️⃣ Поддержка полиморфизма: ➕ Интерфейсы позволяют обрабатывать объекты разных классов одинаково, если они реализуют один и тот же интерфейс. ➕ Пример:
     public interface IShape
     {
         double Area();
     }

     public class Circle : IShape
     {
         public double Radius { get; set; }
         public double Area() => Math.PI * Radius * Radius;
     }

     public class Square : IShape
     {
         public double Side { get; set; }
         public double Area() => Side * Side;
     }
     
3️⃣ Ослабление связей (Decoupling): ➕ Интерфейсы помогают ослабить связи между компонентами, делая систему более модульной и легко модифицируемой. ➕ Пример:
     public interface IDataAccess
     {
         void SaveData(string data);
     }

     public class DatabaseAccess : IDataAccess
     {
         public void SaveData(string data)
         {
             // Сохранение данных в базу данных
         }
     }

     public class FileAccess : IDataAccess
     {
         public void SaveData(string data)
         {
             // Сохранение данных в файл
         }
     }

     public class DataService
     {
         private readonly IDataAccess _dataAccess;

         public DataService(IDataAccess dataAccess)
         {
             _dataAccess = dataAccess;
         }

         public void Save(string data)
         {
             _dataAccess.SaveData(data);
         }
     }
     
4️⃣ Поддержка множественного наследования: ➕ Классы могут реализовывать несколько интерфейсов, что позволяет реализовать множественное наследование поведения. ➕ Пример:
     public interface IFlyable
     {
         void Fly();
     }

     public interface IWalkable
     {
         void Walk();
     }

     public class Bird : IFlyable, IWalkable
     {
         public void Fly()
         {
             // Логика полета
         }

         public void Walk()
         {
             // Логика ходьбы
         }
     }
     
5️⃣ Инъекция зависимостей (Dependency Injection): ➕ Интерфейсы часто используются в паттерне инъекции зависимостей для внедрения зависимостей и улучшения тестируемости кода. ➕ Пример:
     public interface IEmailService
     {
         void SendEmail(string to, string subject, string body);
     }

     public class EmailService : IEmailService
     {
         public void SendEmail(string to, string subject, string body)
         {
             // Логика отправки email
         }
     }

     public class Notification
     {
         private readonly IEmailService _emailService;

         public Notification(IEmailService emailService)
         {
             _emailService = emailService;
         }

         public void NotifyUser(string userEmail)
         {
             _emailService.SendEmail(userEmail, "Notification", "You have a new notification.");
         }
     }
     
🤔 Краткий ответ Интерфейсы используются для определения контрактов, поддержки полиморфизма, ослабления связей между компонентами, реализации множественного наследования, инъекции зависимостей и упрощения тестирования. Они помогают создать гибкую и поддерживаемую архитектуру приложений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Познакомься с миром IT Привет, меня зовут Андрей, я работаю в IT уже 7 лет. Все необходимые знания для знакомства с IT я собр
Познакомься с миром IT Привет, меня зовут Андрей, я работаю в IT уже 7 лет. Все необходимые знания для знакомства с IT я собрал в канале Первая строчка кода. Это сборник моего опыта, который будет интересно и полезно читать любому, кто хочет познакомиться со сферой и думает о карьере в IT. Пишу максимально простым языком, делюсь полезными материалами и показываю жизнь айтишников. Мой канал станет отличной стартовой точкой для входа в новую профессию. Подписаться #реклама О рекламодателе

🤔 Какая из концепций ООП описывает способность метода работать с объектами разных типов?
Anonymous voting