es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

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

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

Ir al canal en Telegram

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

Mostrar más
5 006
Suscriptores
-124 horas
-107 días
-230 días
Archivo de publicaciones
😒 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и
😒 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и хакинга ZeroDay - Уроки по кибербезопасности и хакингу с нуля. Вирусы, взломы, OSINT, криптография и свежие новости Белый Хакер - программное обеспечение, утилиты, OSINT, инструменты, полезная литература и много другое. Совершенно новый формат непохожий на другие каналы.

Сообщество IT-специалистов в Telegram от Selectel. Канал крупнейшего независимого провайдера IT-инфраструктуры и облаков. Шес
Сообщество IT-специалистов в Telegram от Selectel. Канал крупнейшего независимого провайдера IT-инфраструктуры и облаков. Шесть причин подписаться на канал: - железные новости; - обзоры продуктов; - разборы кейсов; - актуальные IT-статьи; - анонсы митапов; - бесплатные курсы. Подписаться #реклама О рекламодателе

🤔 Как работает join в C#?
Anonymous voting

📌 Что такое асинхронное программирование? 💬 Спрашивают в 11% собеседований Асинхронное программирование — это метод программирования, при котором выполнение задач не блокирует основной поток приложения. Это позволяет улучшить производительность и отзывчивость приложений, особенно при выполнении длительных операций, таких как ввод-вывод (I/O), сетевые запросы или взаимодействие с базами данных. 🤔 Основные концепции 1️⃣ Асинхронные методы: Методы, которые выполняются асинхронно, часто обозначаются ключевыми словами async и await в C#. 2️⃣ Task: Основная единица работы в асинхронном программировании в C#. Объект Task представляет собой операцию, которая может выполняться асинхронно. 3️⃣ Await: Оператор, который указывает на то, что выполнение метода должно ожидать завершения асинхронной операции. 4️⃣ I/O Bound: Операции, которые зависят от ввода-вывода и обычно требуют времени ожидания (например, сетевые запросы, чтение/запись файлов). 5️⃣ CPU Bound: Операции, которые требуют значительных вычислительных ресурсов процессора. 🤔 Преимущества асинхронного программирования 1️⃣ Повышенная производительность: Основной поток не блокируется при выполнении длительных операций. 2️⃣ Отзывчивость интерфейса: Приложения остаются отзывчивыми, даже при выполнении длительных операций. 3️⃣ Лучшее использование ресурсов: Асинхронные операции позволяют более эффективно использовать ресурсы системы. 🤔 Пример асинхронного программирования в C# 🤔 Асинхронный метод
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "https://api.example.com/data";
        string result = await FetchDataAsync(url);
        Console.WriteLine(result);
    }

    static async Task<string> FetchDataAsync(string url)
    {
        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            return responseBody;
        }
    }
}
🤔 Объяснение кода 1️⃣ async: Ключевое слово, которое указывает, что метод является асинхронным. Методы Main и FetchDataAsync объявлены с async. 2️⃣ await: Оператор, который приостанавливает выполнение метода до завершения асинхронной операции. В методе FetchDataAsync await используется для ожидания завершения операций GetAsync и ReadAsStringAsync. 3️⃣ Task: Возвращаемый тип метода FetchDataAsync, представляющий асинхронную операцию, которая возвращает строку. 🤔 Асинхронное программирование с Task и Task<T> 🤔 Пример с Task
static async Task Main(string[] args)
{
    await Task.Run(() => DoWork());
}

static void DoWork()
{
    // Выполнение длительной операции
    Console.WriteLine("Работа выполнена.");
}
🤔 Асинхронное программирование с I/O Bound операциями 🤔 Пример с чтением файла
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string filePath = "example.txt";
        string content = await ReadFileAsync(filePath);
        Console.WriteLine(content);
    }

    static async Task<string> ReadFileAsync(string filePath)
    {
        using (StreamReader reader = new StreamReader(filePath))
        {
            return await reader.ReadToEndAsync();
        }
    }
}
🤔 Краткий ответ Асинхронное программирование позволяет выполнять длительные операции без блокировки основного потока, улучшая производительность и отзывчивость приложений. В C# это реализуется с использованием ключевых слов async и await, а также класса Task. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Регистрируйтесь на главную конференцию Yandex Cloud! Большая конференция Yandex Cloud для тех, кто создаёт цифровые продукты
Регистрируйтесь на главную конференцию Yandex Cloud! Большая конференция Yandex Cloud для тех, кто создаёт цифровые продукты и решения. Вас ждут 5 тематических треков, 31 доклад, 50 экспертов, нетворкинг и общение. Участие бесплатное! Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе

🤔 Как сборщик мусора в C# освобождает память?
Anonymous voting

📌 Что такое параллелизм? 💬 Спрашивают в 11% собеседований Параллелизм в программировании — это метод выполнения нескольких операций одновременно, что позволяет ускорить выполнение задач и эффективно использовать ресурсы компьютера, такие как многоядерные процессоры. Параллелизм отличается от многозадачности тем, что он предполагает одновременное выполнение задач, а не просто чередование выполнения. 🤔 Основные концепции параллелизма 1️⃣ Параллельное выполнение (Parallel Execution): Одновременное выполнение нескольких задач на разных процессорных ядрах. 2️⃣ Потоки (Threads): Наименьшие единицы выполнения, которые могут быть параллельно выполнены. 3️⃣ Задачи (Tasks): Абстракция над потоками, позволяющая проще управлять параллельными операциями. 4️⃣ Асинхронное программирование (Asynchronous Programming): Выполнение операций без блокировки основного потока, часто используется в сочетании с параллелизмом. 🤔 Пример использования параллелизма в C# 🤔 С использованием `Parallel.For`
using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Parallel.For(0, 10, i =>
        {
            Console.WriteLine($"Task {i} is running on thread {Task.CurrentId}");
        });
    }
}
🤔 С использованием `Task.Run`
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var task1 = Task.Run(() => DoWork("Task 1"));
        var task2 = Task.Run(() => DoWork("Task 2"));
        
        await Task.WhenAll(task1, task2);
    }

    static void DoWork(string taskName)
    {
        Console.WriteLine($"{taskName} is running on thread {Task.CurrentId}");
    }
}
🤔 Основные библиотеки и пространства имен в C# 1️⃣ System.Threading.Tasks: Основное пространство имен для работы с задачами (Task) и параллельным выполнением. 2️⃣ System.Threading: Предоставляет классы и интерфейсы для работы с потоками и задачами низкого уровня. 3️⃣ Parallel LINQ (PLINQ): Расширение LINQ для параллельного выполнения запросов. 🤔 Преимущества параллелизма 1️⃣ Ускорение выполнения задач: Позволяет значительно уменьшить время выполнения вычислительно интенсивных задач. 2️⃣ Эффективное использование ресурсов: Максимально использует мощности многоядерных процессоров. 3️⃣ Масштабируемость: Обеспечивает более плавную работу приложений при увеличении нагрузки. 🤔 Краткий ответ Параллелизм — это метод одновременного выполнения нескольких задач для ускорения процессов и эффективного использования ресурсов компьютера. В C# это реализуется через Parallel и Task классы, позволяя выполнять задачи на разных процессорных ядрах одновременно. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Что произойдет, если вызвать метод Equals() для двух различных объектов, которые содержат одинаковые данные?
Anonymous voting

📌 Что такое исключения? 💬 Спрашивают в 11% собеседований Исключения в программировании — это механизмы обработки ошибок и необычных ситуаций, которые возникают во время выполнения программы. В C# и других языках программирования исключения позволяют отделить код обработки ошибок от основного кода программы, что упрощает его чтение и поддержку. 🤔 Основные понятия 1️⃣ Исключение (Exception): Событие, которое прерывает нормальный поток выполнения программы. 2️⃣ Блок try: Содержит код, который может вызвать исключение. 3️⃣ Блок catch: Содержит код, который выполняется, если возникает исключение. В catch блок можно передать параметр — экземпляр исключения, которое произошло. 4️⃣ Блок finally: Содержит код, который выполняется в любом случае, независимо от того, произошло исключение или нет. Обычно используется для освобождения ресурсов. 5️⃣ Бросание исключения (throw): Механизм для явного вызова исключения. 🤔 Пример использования 🤔 Основные блоки
try
{
    // Код, который может вызвать исключение
    int divisor = 0;
    int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
    // Обработка исключения
    Console.WriteLine("Деление на ноль невозможно.");
}
finally
{
    // Код, который выполнится в любом случае
    Console.WriteLine("Блок finally выполнен.");
}
🤔 Создание и бросание собственного исключения
public class InvalidAgeException : Exception
{
    public InvalidAgeException(string message) : base(message) { }
}

public void SetAge(int age)
{
    if (age < 0)
    {
        throw new InvalidAgeException("Возраст не может быть отрицательным.");
    }
    // Логика установки возраста
}
🤔 Краткий ответ Исключения — это механизм обработки ошибок в C#, позволяющий отделить код обработки ошибок от основного кода программы. Основные элементы включают блоки try, catch, finally, а также оператор throw для явного вызова исключений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Прокачаем ваш frontend скилл с junior до middle Научим писать код, который не стыдно показать Первые 7 дней бесплатно. Попроб
Прокачаем ваш frontend скилл с junior до middle Научим писать код, который не стыдно показать Первые 7 дней бесплатно. Попробуй! Узнать больше #реклама 16+ ykul.ru О рекламодателе

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

📌 Какие бывают коллекции? 💬 Спрашивают в 11% собеседований В C# существует множество коллекций, каждая из которых предназначена для различных сценариев использования. Они предоставляются через стандартную библиотеку .NET и могут быть разделены на несколько категорий: 🤔 Основные категории коллекций 1️⃣ Коллекции общего назначения 2️⃣ Специализированные коллекции 3️⃣ Параллельные коллекции 🤔 Коллекции общего назначения 1️⃣ List<T>: Динамический массив, который автоматически изменяет свой размер по мере добавления элементов.
   List<int> numbers = new List<int> { 1, 2, 3, 4 };
   numbers.Add(5);
   
2️⃣ Dictionary<TKey, TValue>: Коллекция пар ключ-значение. Обеспечивает быстрый доступ к значению по ключу.
   Dictionary<string, int> ages = new Dictionary<string, int>
   {
       { "Alice", 30 },
       { "Bob", 25 }
   };
   int aliceAge = ages["Alice"];
   
3️⃣ HashSet<T>: Коллекция уникальных элементов. Используется для предотвращения дублирования.
   HashSet<string> fruits = new HashSet<string> { "Apple", "Banana" };
   fruits.Add("Apple"); // Не добавит дубликат
   
4️⃣ Queue<T>: Очередь, работающая по принципу FIFO (First In, First Out).
   Queue<string> queue = new Queue<string>();
   queue.Enqueue("first");
   queue.Enqueue("second");
   string item = queue.Dequeue(); // "first"
   
5️⃣ Stack<T>: Стек, работающий по принципу LIFO (Last In, First Out).
   Stack<string> stack = new Stack<string>();
   stack.Push("first");
   stack.Push("second");
   string item = stack.Pop(); // "second"
   
🤔 Специализированные коллекции 1️⃣ LinkedList<T>: Двусвязный список, позволяющий быстро вставлять и удалять элементы.
   LinkedList<int> linkedList = new LinkedList<int>();
   linkedList.AddLast(1);
   linkedList.AddLast(2);
   
2️⃣ SortedList<TKey, TValue>: Коллекция пар ключ-значение, отсортированная по ключам.
   SortedList<string, int> sortedList = new SortedList<string, int>
   {
       { "Alice", 30 },
       { "Bob", 25 }
   };
   
3️⃣ SortedDictionary<TKey, TValue>: Похож на SortedList, но использует бинарное дерево для хранения элементов.
   SortedDictionary<string, int> sortedDict = new SortedDictionary<string, int>
   {
       { "Alice", 30 },
       { "Bob", 25 }
   };
   
4️⃣ SortedSet<T>: Отсортированное множество уникальных элементов.
   SortedSet<int> sortedSet = new SortedSet<int> { 3, 1, 2 };
   
🤔 Параллельные коллекции 1️⃣ ConcurrentDictionary<TKey, TValue>: Параллельная версия Dictionary, предназначенная для безопасного использования в многопоточных приложениях.
   ConcurrentDictionary<string, int> concurrentDict = new ConcurrentDictionary<string, int>();
   concurrentDict.TryAdd("Alice", 30);
   
2️⃣ ConcurrentQueue<T>: Параллельная версия Queue.
   ConcurrentQueue<string> concurrentQueue = new ConcurrentQueue<string>();
   concurrentQueue.Enqueue("first");
   
3️⃣ ConcurrentStack<T>: Параллельная версия Stack.
   ConcurrentStack<string> concurrentStack = new ConcurrentStack<string>();
   concurrentStack.Push("first");
   
4️⃣ BlockingCollection<T>: Коллекция, поддерживающая операции добавления и извлечения с блокировкой и ограничением по емкости.
   BlockingCollection<int> blockingCollection = new BlockingCollection<int>(5);
   blockingCollection.Add(1);
   
🤔 Краткий ответ В C# есть множество коллекций для различных целей, включая List, Dictionary, HashSet, Queue, Stack, специализированные коллекции, такие как LinkedList, SortedList, и параллельные коллекции, такие как ConcurrentDictionary и BlockingCollection. Каждая коллекция имеет свои особенности и предназначена для определенных сценариев использования. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Обучение на 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