ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

الذهاب إلى القناة على Telegram
5 012
المشتركون
-124 ساعات
+37 أيام
+2330 أيام
أرشيف المشاركات
Конструкционный профиль от производителя. Всё для алюминиевых конструкций любого масштаба: от станков до торгового оборудования. Алюминиевый конструкционный профиль от производителя. Варианты покрытия профиля: • Серебряное анодирование • Черное анодирование • Без покрытия ⚡ Любая длина и конфигурация! Режем точно в ваш размер. ⚡ Более 100 видов сечений на любой случай. ⚡ Собирайте быстро и чисто, без сварки, покраски и сверления! Идеально для: • 3D-принтеров и станков ЧПУ • Производственных линий • Стеллажей и рам 📞+7 (495) 236-95-55 💻 https://soberizavod.ru Перейти на сайт #реклама soberizavod.ru О рекламодателе

🤔 Какие есть способы (протоколы) обмена данными между сервером и клиентом? При взаимодействии клиента и сервера используются различные*протоколы обмена данными, в зависимости от задачи, скорости, надежности и реального времени. 🚩HTTP(S) – стандартный протокол веба Клиент (браузер, мобильное приложение) делает запрос к серверу. Сервер отправляет ответ с данными (HTML, JSON, XML). Использует методы: GET, POST, PUT, DELETE и т. д.
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data));
🚩WebSocket – двусторонняя связь в реальном времени Клиент устанавливает постоянное соединение с сервером. Сервер и клиент могут отправлять друг другу данные в любое время. Используется для чата, онлайн-игр, бирж, обновлений в реальном времени.
const socket = new WebSocket('wss://example.com/socket');

socket.onopen = () => socket.send('Привет, сервер!');
socket.onmessage = event => console.log('Сообщение от сервера:', event.data);
🚩SSE (Server-Sent Events) – поток данных от сервера Клиент делает HTTP-запрос, но соединение не закрывается. Сервер постепенно отправляет данные в виде событий (event-stream). Используется для новостей, биржевых данных, уведомлений.
const eventSource = new EventSource('/events');

eventSource.onmessage = event => console.log('Новое сообщение:', event.data);
🚩gRPC – быстрый RPC поверх HTTP/2 Клиент вызывает удаленные методы напрямую как обычные функции. Работает на HTTP/2, использует бинарный формат Protocol Buffers (быстрее, чем JSON). Используется для высокопроизводительных API, микросервисов.
import grpc
import my_service_pb2
import my_service_pb2_grpc

channel = grpc.insecure_channel('localhost:50051')
stub = my_service_pb2_grpc.MyServiceStub(channel)
response = stub.MyMethod(my_service_pb2.MyRequest(name="Alice"))
print(response.message)
🚩MQTT – лёгкий протокол для IoT Работает по модели издатель/подписчик. Клиент подписывается на тему (topic) и получает сообщения, когда кто-то публикует данные. Используется для умных устройств, датчиков, IoT.
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://broker.hivemq.com');

client.on('connect', () => {
    client.subscribe('myTopic');
    client.publish('myTopic', 'Привет, MQTT!');
});

client.on('message', (topic, message) => {
    console.log(`Сообщение из ${topic}: ${message.toString()}`);
});
Ставь 👍 и забирай 📚 Базу знаний

Новый HONOR X8d на Яндекс Маркете Новый HONOR X8d Стильный смартфон с мощным аккумулятором Перейти на сайт #реклама market.ya
Новый HONOR X8d на Яндекс Маркете Новый HONOR X8d Стильный смартфон с мощным аккумулятором Перейти на сайт #реклама market.yandex.ru О рекламодателе

🤔 Что такое многопоточность? Многопоточность — это возможность выполнения нескольких потоков (threads) одновременно в одной программе. В C# многопоточность поддерживается с помощью класса `Thread`, задач (`Task`) и `ThreadPool`. Многопоточность используется для выполнения параллельных операций, таких как обработка данных или выполнение задач, которые не должны блокировать основной поток. Она помогает повысить производительность, но требует осторожности для предотвращения гонок данных и взаимоблокировок. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое lock-еры? lock используется для управления доступом к ресурсам в многопоточных приложениях. Это предотвращает возникновение проблем, связанных с одновременным доступом нескольких потоков к одному и тому же ресурсу, что может привести к непредсказуемому поведению или коррупции данных. 🚩Как это работает? Принимает в качестве параметра объект, который используется в качестве мьютекса (взаимоисключающего объекта). Во время выполнения блока кода внутри lock, текущий поток "захватывает" мьютекс. Если другой поток попытается войти в заблокированный участок кода, используя тот же мьютекс, он будет приостановлен до тех пор, пока первый поток не завершит выполнение блока lock и не освободит мьютекс.
public class Account
{
    private decimal balance;
    private readonly object balanceLock = new object();

    public void Deposit(decimal amount)
    {
        lock (balanceLock)
        {
            balance += amount;
        }
    }

    public void Withdraw(decimal amount)
    {
        lock (balanceLock)
        {
            if (balance >= amount)
            {
                balance -= amount;
            }
        }
    }
}
🚩Зачем это нужно? Без использования lock или других методов синхронизации, программы с многопоточным доступом к общим данным могут испытывать проблемы, такие как гонки и условия гонки (race conditions), когда порядок или время доступа к данным может привести к ошибкам или неожиданным результатам. lock гарантирует, что только один поток может исполнять определенный блок кода, работающий с критическими ресурсами, в любой момент времени. Ставь 👍 и забирай 📚 Базу знаний

Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп до 150 000 рублей в месяц. Без опыта, нужен
Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп до 150 000 рублей в месяц. Без опыта, нужен только телефон, занятость 3-6 часов в день. Всему обучат на бесплатном курсе и после возьму на работу: ✅ 3 дня уроков по 30 минут ✅ Домашки с проверкой и оплатой бонусами ✅ Плачу 10 тыс за каждую выполненную домашку Все кто пройдет курс, получат сертификат от школы с образовательной лицензией. ⚡ Набор заканчивается завтра. 👍 Для регистрации жмите кнопку "Зарегистрироваться" Зарегистрироваться #реклама 16+ course.wildmanager.ru О рекламодателе

🤔 Для чего используются readonly поля? readonly поля: - могут быть присвоены только при инициализации или в конструкторе; - защищают от изменений после создания объекта; - полезны для неизменяемых зависимостей или константной конфигурации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое инверсия зависимостей? Инверсия зависимостей — это принцип SOLID, который говорит: > Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Это значит, что вместо жёстких зависимостей на конкретные классы, код должен работать через абстракции (interface или abstract class). 🚩Проблема без инверсии зависимостей Допустим, у нас есть класс EmailSender, который отправляет письма:
public class EmailSender
{
    public void Send(string message)
    {
        Console.WriteLine($"Отправка email: {message}");
    }
}

public class NotificationService
{
    private EmailSender _emailSender = new EmailSender();

    public void Notify(string message)
    {
        _emailSender.Send(message);
    }
}
🚩Решение: Инверсия зависимостей Чтобы избавиться от жёсткой зависимости, вводим абстракцию (IMessageSender):
public interface IMessageSender
{
    void Send(string message);
}

public class EmailSender : IMessageSender
{
    public void Send(string message)
    {
        Console.WriteLine($"Отправка email: {message}");
    }
}

public class SmsSender : IMessageSender
{
    public void Send(string message)
    {
        Console.WriteLine($"Отправка SMS: {message}");
    }
}
Теперь NotificationService зависит не от конкретного класса, а от интерфейса:
public class NotificationService
{
    private readonly IMessageSender _messageSender;

    public NotificationService(IMessageSender messageSender)
    {
        _messageSender = messageSender;
    }

    public void Notify(string message)
    {
        _messageSender.Send(message);
    }
}
Теперь мы можем подставлять любую реализацию IMessageSender:
var emailNotifier = new NotificationService(new EmailSender());
emailNotifier.Notify("Привет через Email!");

var smsNotifier = new NotificationService(new SmsSender());
smsNotifier.Notify("Привет через SMS!");
Вывод
Отправка email: Привет через Email!
Отправка SMS: Привет через SMS!
🚩Преимущества инверсии зависимостей Гибкость – можно легко заменять зависимости. Тестируемость – можно подставить Mock-объект вместо EmailSender. Меньше изменений в коде – можно добавить новые способы отправки сообщений без изменения NotificationService. Ставь 👍 и забирай 📚 Базу знаний

Звучит как идеальный старт карьеры в ИТ 6 месяцев работы в связке с топ-менеджером Т-Банка и участие в масштабных проектах компании — все это в программе развития «Мини-CEO». Здесь есть возможность влиять на продукты и получать фидбек от лидеров направлений. А еще построить индивидуальный трек развития карьеры и работать бок о бок с командой в офисе T-Space. Программа подойдет студентам и джуниор-специалистам, которые сильны в математике, аналитике и программировании. Успей подать заявку до 30 марта. Подать заявку #реклама 16+ t-miniceo.ru О рекламодателе

🤔 Какие есть виды привязок данных и когда применяются? 1. One-way binding — от источника к UI. Применяется при отображении. 2. Two-way binding — синхронизация UI и модели. Применяется в формах. 3. One-time binding — однократная установка значения при инициализации. 4. Event binding — привязка событий. Используется в WPF, Xamarin, Blazor и других MVVM-фреймворках. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Сегодня последний день, когда можно приобрести пожизненный PRO тариф easyoffer Акция до 20 февраля 00:00 Покупаешь сейчас оди
Сегодня последний день, когда можно приобрести пожизненный PRO тариф easyoffer Акция до 20 февраля 00:00 Покупаешь сейчас один раз — пользуешься всю жизнь без лимита, включая все будущие функции. 👉 Смотри подробности тарифа и покупай на https://easyoffer.ru/

🤔 Что такое Generic-и? Термин "Generic" (общий тип) относится к функциональности, позволяющей определять классы, интерфейсы или методы с использованием параметра типа, который определяется в момент создания экземпляра класса или вызова метода. Обобщённые типы широко используются для повышения повторного использования кода, типобезопасности и производительности. Как и во многих других языках программирования, generics представляют собой мощный инструмент, который устраняет необходимость в чрезмерном приведении типов и может уменьшить количество дублирующего кода. 🚩Основы Пример использования Generic-ов в классе
public class GenericList<T>
{
    private T[] elements;
    private int size;

    public GenericList(int size)
    {
        elements = new T[size];
        this.size = size;
    }

    public void Add(T element)
    {
        // Логика добавления элемента
    }

    public T this[int i]
    {
        get { return elements[i]; }
        set { elements[i] = value; }
    }
}
Пример использования Generic-ов в методе
public T GenericMax<T>(T x, T y) where T : IComparable
{
    return x.CompareTo(y) > 0 ? x : y;
}
🚩Плюсы ➕Повышение переиспользуемости кода Обобщённые классы и методы могут работать с любым типом данных, что позволяет разработчикам использовать один и тот же код для данных различных типов. ➕Типобезопасность Generics обеспечивают проверку типов на этапе компиляции. Это улучшает безопасность и стабильность кода, уменьшая риск возникновения ошибок во время выполнения программы из-за некорректного приведения типов. ➕Улучшение производительности Использование generics может помочь улучшить производительность, т.к. уменьшает необходимость в приведении типов, которое может быть дорогостоящим в плане ресурсов процессора. Ставь 👍 и забирай 📚 Базу знаний

IT-магистратура ИТМО, МИФИ в партнёрстве с Яндексом Освойте высокооплачиваемую IT-профессию. Актуальные программы ИТМО и МФТИ
IT-магистратура ИТМО, МИФИ в партнёрстве с Яндексом Освойте высокооплачиваемую IT-профессию. Актуальные программы ИТМО и МФТИ 2026 года, диплом гособразца, много практики от Яндекса. Гибкий график, обучение полностью онлайн, господдержка оплаты, отсрочка от армии Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Где используется IQueryable? IQueryable используется для создания запросов к источникам данных с возможностью отложенного выполнения. Оно позволяет строить сложные запросы, которые преобразуются в SQL-запросы или другие команды на этапе выполнения. Часто используется с ORM, такими как Entity Framework. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собе
Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собеседований, задач для live-coding, реальных интервью и тестовых заданий от топ-компаний, а также аналитику требований для резюме и тренажеры с режимом симуляции собеседования под конкретную компанию. Акция до 20 февраля (включительно) на PRO-тариф. Покупаешь сейчас один раз — пользуешься всю жизнь без лимита, включая все будущие функции. 👉 Смотри подробности тарифа и покупай на https://easyoffer.ru/

🤔 Что такое примитив синхронзиации semaphore? Это механизм синхронизации, который используется для управления доступом к ограниченному ресурсу. Он позволяет ограниченному количеству потоков одновременно использовать общий ресурс. 🚩Как работает семафор? Семафор использует счётчик для отслеживания доступных "разрешений": Когда поток запрашивает доступ к ресурсу, семафор уменьшает счётчик. Если счётчик больше нуля, поток получает доступ. Если счётчик равен нулю, поток блокируется, пока другой поток не освободит ресурс (увеличив счётчик). 🚩Пример использования `SemaphoreSlim` В .NET часто используется SemaphoreSlim, так как он более лёгкий и эффективный, чем Semaphore.
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(2); // Разрешаем максимум 2 потока одновременно

    static async Task AccessResource(int id)
    {
        Console.WriteLine($"Поток {id} ждёт доступа...");
        await semaphore.WaitAsync(); // Захватываем семафор
        try
        {
            Console.WriteLine($"Поток {id} получил доступ!");
            await Task.Delay(2000); // Имитация работы с ресурсом
        }
        finally
        {
            Console.WriteLine($"Поток {id} освобождает ресурс.");
            semaphore.Release(); // Освобождаем семафор
        }
    }

    static async Task Main()
    {
        Task[] tasks = new Task[5];
        for (int i = 0; i < 5; i++)
        {
            tasks[i] = AccessResource(i);
        }
        await Task.WhenAll(tasks);
    }
}
🚩Обычный `Semaphore` Если нужна синхронизация между разными процессами, можно использовать Semaphore
Semaphore semaphore = new Semaphore(2, 2, "MyGlobalSemaphore");
Ставь 👍 и забирай 📚 Базу знаний

Нужны 7 желающих для работы с искусственным интеллектом. Работа из дома. График свободный. Пришло задание — изучили — выполни
Нужны 7 желающих для работы с искусственным интеллектом. Работа из дома. График свободный. Пришло задание — изучили — выполнили — получили свои деньги. Деньги вы получаете в зависимости от сложности задания. Например: За задание могут платить 500-10.000 рублей. 500 рублей — это около 5-30 минут. 10 000 руб. это 5-6 часов. Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д. 💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т. Мы обучим вас сами: — 3 дня уроков по 30 минут — Домашки с проверкой и оплатой бонусами — Платим 10 тыс за каждую выполненную домашку ⚡ Набор заканчивается завтра. Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ ganstaagency.com О рекламодателе

🤔 Пример паттерна Строитель? Например, при создании объекта типа "Отчёт": - У объекта много параметров (заголовок, дата, содержимое, автор, таблицы). - С помощью билдера можно поочерёдно вызывать методы SetTitle(), SetContent(), SetFooter() и получить готовый объект методом Build(). Этот подход улучшает читаемость и гибкость кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое исключения? Исключения в программировании — это механизмы обработки ошибок и необычных ситуаций, которые возникают во время выполнения программы. В C# и других языках программирования исключения позволяют отделить код обработки ошибок от основного кода программы, что упрощает его чтение и поддержку. 🚩Основные понятия 🟠Исключение (Exception) Событие, которое прерывает нормальный поток выполнения программы. 🟠Блок try Содержит код, который может вызвать исключение. 🟠Блок catch Содержит код, который выполняется, если возникает исключение. В catch блок можно передать параметр — экземпляр исключения, которое произошло. 🟠Блок finally Содержит код, который выполняется в любом случае, независимо от того, произошло исключение или нет. Обычно используется для освобождения ресурсов. 🟠Бросание исключения (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("Возраст не может быть отрицательным.");
    }
    // Логика установки возраста
}
Ставь 👍 и забирай 📚 Базу знаний

Wildberries: Сезон скидок для него Как выбрать подарок к мужскому дню? Кто-то считает, что нет подарка лучше, чем носки. А мы считаем, что все подарки хороши со скидками до 80% на Wildberries. Перейти на сайт #реклама wildberries.ru О рекламодателе