uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
5 016
Obunachilar
Ma'lumot yo'q24 soatlar
+47 kun
+2630 kun
Postlar arxiv
🤔 Что такое контекст синхронизации? "контекст синхронизации" (SynchronizationContext) — это класс, который предоставляет возможность управлять способом, которым операции переключаются обратно в основной поток или контекст для продолжения выполнения после асинхронной операции. Это важно для приложений с графическим пользовательским интерфейсом, таких как Windows Forms и WPF, где доступ к элементам пользовательского интерфейса разрешён только из основного потока. 🚩Как он работает Абстрагирует модель синхронизации для различных сред выполнения. Например, в приложениях Windows Forms и WPF управление элементами UI должно происходить в главном потоке. SynchronizationContext предоставляет методы для отправки (Send) и постановки (Post) задач, которые должны выполняться в правильном контексте. 🟠Send синхронно отправляет делегат на выполнение в контекст синхронизации. 🟠Post асинхронно отправляет делегат на выполнение в контекст синхронизации. 🚩Применение SynchronizationContext Используется для того, чтобы после асинхронной операции вернуться в правильный поток и безопасно обновить UI или выполнить код, который требует выполнения в определённом потоке.
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        LoadDataAsync();
    }

    private async void LoadDataAsync()
    {
        string data = await GetDataAsync();
        // Асинхронно получаем данные и обновляем UI
        Dispatcher.Invoke(() => DisplayData(data));
    }

    private Task<string> GetDataAsync()
    {
        return Task.Run(() =>
        {
            // Имитация долгой операции
            Thread.Sleep(5000);
            return "Data loaded";
        });
    }

    private void DisplayData(string data)
    {
        MyTextBox.Text = data;
    }
}
🚩Зачем он нужен 🟠Безопасность потоков Позволяет безопасно обращаться к элементам UI из асинхронных или вторичных потоков. 🟠Правильное управление потоками Обеспечивает выполнение кода в контексте, для которого он предназначен, что особенно важно в многопоточных и сетевых приложениях. Ставь 👍 и забирай 📚 Базу знаний

🤔 Два подхода проектирования баз данных и кода 1. Code First: - Сначала пишется модель в коде (Entity, классы). - Потом генерируется схема БД. - Гибкий, удобен для разработчиков. 2. Database First: - Сначала создаётся база данных, таблицы, связи. - Генерируются классы по схеме. - Используется, когда БД уже существует или управляется отдельно. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Про абстрактные классы, интерфейсы и в чем их разница и особенности? В C# абстрактные классы и интерфейсы используются для проектирования системы через наследование и полиморфизм, позволяя описывать общую функциональность, которую будут реализовывать конкретные классы. Однако у них есть свои особенности, ограничения и сферы применения. 🚩Абстрактный класс Абстрактный класс — это класс, который не может быть создан напрямую (нельзя создать объект этого класса). Он может содержать как абстрактные методы (без реализации), так и методы с реализацией.
public abstract class Animal
{
    public abstract void MakeSound(); // Абстрактный метод
    public void Sleep() // Метод с реализацией
    {
        Console.WriteLine("Sleeping...");
    }
}
Пример
public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark!");
    }
}
Использование
Animal myDog = new Dog();
myDog.MakeSound(); // Вывод: Bark!
myDog.Sleep();     // Вывод: Sleeping...
🚩Интерфейс Интерфейс — это контракт, который определяет только сигнатуры методов, свойств, событий и индексаторов. Реализацию этих членов должен предоставить класс, который реализует интерфейс.
public interface IMovable
{
    void Move();
    int Speed { get; set; }
}
Пример
public class Car : IMovable
{
    public int Speed { get; set; }

    public void Move()
    {
        Console.WriteLine($"Moving at speed: {Speed}");
    }
}
Использование
IMovable myCar = new Car { Speed = 60 };
myCar.Move(); // Вывод: Moving at speed: 60
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чем разница между Include и ThenInclude? - Include — загружает связанные сущности первого уровня (например, User -> Orders). - ThenInclude — используется для загрузки дочерних сущностей от уже включённой (Orders -> Products). То есть ThenInclude позволяет углубляться в иерархию вложенных объектов, продолжая цепочку Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое предикат? Это делегат, представляющий метод, который принимает один или несколько аргументов и возвращает логическое значение (true или false). Предикаты часто используются для фильтрации коллекций, поиска элементов и других операций, связанных с условными проверками. 🚩Особенности 🟠Тип делегата В C# предикат представлен делегатом Predicate<T>, который принимает один аргумент типа T и возвращает bool. 🟠Использование Предикаты обычно используются в методах стандартных коллекций, таких как List<T>, для поиска, удаления и фильтрации элементов. 🚩Пример использования предиката Определение предиката
public static bool IsEven(int number)
{
    return number % 2 == 0;
}
Использование предиката с методом коллекции
using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };

        // Использование предиката для поиска первого четного числа
        int firstEven = numbers.Find(IsEven);
        Console.WriteLine("First even number: " + firstEven);

        // Использование предиката для удаления всех четных чисел
        numbers.RemoveAll(IsEven);
        Console.WriteLine("Numbers after removing evens: " + string.Join(", ", numbers));
    }

    public static bool IsEven(int number)
    {
        return number % 2 == 0;
    }
}
🚩Лямбда-выражения как предикаты Лямбда-выражения часто используются для определения предикатов непосредственно в месте вызова метода. Это делает код более компактным и удобочитаемым. Пример использования лямбда-выражений
using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };

        // Использование лямбда-выражения для поиска первого четного числа
        int firstEven = numbers.Find(n => n % 2 == 0);
        Console.WriteLine("First even number: " + firstEven);

        // Использование лямбда-выражения для удаления всех четных чисел
        numbers.RemoveAll(n => n % 2 == 0);
        Console.WriteLine("Numbers after removing evens: " + string.Join(", ", numbers));
    }
}
🚩Сценарии использования предикатов 🟠Фильтрация коллекций Предикаты используются для определения условий фильтрации элементов в коллекциях.
List<int> evenNumbers = numbers.FindAll(IsEven);   
🟠Поиск элементов Предикаты помогают находить элементы, соответствующие определенному условию.
int firstEven = numbers.Find(IsEven);   
🟠Удаление элементов Предикаты используются для удаления элементов, соответствующих определенному условию.
numbers.RemoveAll(IsEven);
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как работает async/await? async/await — это механизм для асинхронного программирования, позволяющий писать асинхронный код, который выглядит как синхронный. Ключевое слово async указывает, что метод может содержать await, который приостанавливает выполнение до завершения задачи. Во время ожидания поток освобождается для других операций, что повышает производительность. После завершения задачи выполнение метода возобновляется с того же места. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что делает new 'имя объекта'()? Оператор new в C# создаёт новый экземпляр объекта и выделяет для него память в куче (Heap) или стеке (Stack), в зависимости от типа. 🚩Как работает `new`? Для классов (class) – выделяет память в куче (Heap) и возвращает ссылку на объект. Для структур (struct) – если структура создаётся без new, её поля остаются неинициализированными, но если использовать new, она получает значения по умолчанию. Для массивов (T[]) – выделяет память в куче, даже если T – это struct. Для делегатов – создаёт экземпляр делегата. Пример: new с классом (class)
class Person
{
    public string Name;

    public Person(string name)
    {
        Name = name;
    }
}

class Program
{
    static void Main()
    {
        Person p1 = new Person("Alice"); // Создаём новый объект в куче
        Console.WriteLine(p1.Name); // Alice
    }
}
Пример: new со структурой (struct)
struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}

class Program
{
    static void Main()
    {
        Point p1 = new Point(5, 10); // Создаёт структуру в стеке
        Console.WriteLine(p1.X); // 5
    }
}
Пример: new с массивом
int[] numbers = new int[5]; // Создаёт массив в куче
numbers[0] = 10;
Console.WriteLine(numbers[0]); // 10
🚩Что делает `new` за кулисами? Выделение памяти в куче (для классов) или в стеке (для структур). Вызов конструктора класса или структуры. Возвращение ссылки на объект (для классов) или самого объекта (для структур). Ставь 👍 и забирай 📚 Базу знаний

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

🤔 В чём разница между var и dynamic? - var — тип определяется на этапе компиляции. После компиляции он получает конкретный тип. Статическая типизация. - dynamic — тип определяется во время выполнения. Ошибки типа могут проявиться только в рантайме. var безопаснее, dynamic гибче, но требует осторожности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое аутентификация? Когда человек вводит логин и пароль, система аутентифицирует его, проверяя, действительно ли это тот, за кого он себя выдаёт. 🚩Как работает аутентификация? Пользователь вводит данные (например, логин и пароль). Система проверяет их в базе данных. Если данные верны → доступ разрешён. Если данные неверны → отказ в доступе.
public async Task<IActionResult> Login(string username, string password)
{
    var user = await _userManager.FindByNameAsync(username);
    if (user != null && await _userManager.CheckPasswordAsync(user, password))
    {
        await _signInManager.SignInAsync(user, isPersistent: false);
        return RedirectToAction("Index", "Home");
    }
    ModelState.AddModelError("", "Неверный логин или пароль");
    return View();
}
🚩Виды аутентификации 🟠По паролю Самый распространённый вариант. Минус: если пароль украден – доступ открыт. 🟠Двухфакторная (2FA) Например, SMS-код + пароль. Усложняет взлом аккаунта. 🟠Биометрическая Отпечаток пальца, Face ID. Удобно, но требует спецоборудования. 🟠OAuth (Google, Facebook, GitHub) Вход через соцсети. Удобно, не нужно запоминать пароль. 🟠Аутентификация по токену (JWT) Используется в API и микросервисах. Позволяет работать без сохранения сессий. Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Когда можно использовать using? Ключевое слово using используется в двух основных контекстах: для управления областью видимости объектов, реализующих интерфейс IDisposable, и для включения пространств имён. 🟠Управление областью видимости объектов (IDisposable) Можно использовать для создания блока кода, внутри которого объекты, реализующие интерфейс IDisposable, автоматически освобождаются по завершении блока. Это удобно для управления ресурсами, такими как файловые потоки, базы данных или другие ресурсы системы, которые требуют явного освобождения.
using (StreamWriter writer = new StreamWriter("example.txt"))
{
    writer.WriteLine("Hello, world!");
}
// Здесь объект writer уже автоматически закрыт и освобожден.
🟠Включение пространств имён Также используется для объявления пространств имен, которые будут использоваться в коде, позволяя обращаться к классам внутри этих пространств без полного указания их имён.
using System;
using System.IO;
using System.Text;

// Теперь можно использовать классы из System, System.IO и System.Text без полного указания имени.
🟠using для статических классов (C# 6.0 и выше) Для включения статических классов, что позволяет обращаться к статическим членам класса напрямую без указания имени класса.
using static System.Console;
using static System.Math;

class Program
{
    static void Main()
    {
        WriteLine(Sqrt(144)); // Использование метода WriteLine и Sqrt без указания классов Console и Math
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Вы чувствуете? Праздники совсем близко! Не выбирай подарки к 8 Марта 🏃‍♂️ Пока не увидишь это ❤️⚡ 990 ₽: SOKOLOV SURPRISE Те
+2
Вы чувствуете? Праздники совсем близко! Не выбирай подарки к 8 Марта 🏃‍♂️ Пока не увидишь это ❤️⚡ 990 ₽: SOKOLOV SURPRISE Те самые коробочки из ТикТока 9 990 ₽: золотое кольцо-сердце Специальная цена на хит праздничного сезона 49 990 ₽: кольцо с бриллиантом 1 карат Мечта в реальной жизни. Количество ограничено — успеют только самые быстрые Заказать #реклама sokolov.ru О рекламодателе

🤔 Что такое многопоточность и библиотека TPL? Это способность приложения выполнять несколько операций одновременно с использованием потоков. • TPL (Task Parallel Library) — библиотека в .NET для упрощения работы с асинхронным и параллельным программированием. • Она предоставляет классы, такие как Task и Parallel, которые позволяют управлять потоками, синхронизацией и обработкой задач. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сделать связь один к одному? В реляционных базах данных связь "один к одному" (one-to-one) подразумевает, что каждая запись в одной таблице соответствует ровно одной записи в другой таблице. Для реализации связи "один к одному" в SQL можно использовать несколько подходов, в зависимости от требований и архитектуры базы данных. 🚩Основные подходы 🟠Уникальные внешние ключи Используйте внешний ключ в одной таблице, который ссылается на первичный ключ другой таблицы, и сделайте этот внешний ключ уникальным. 🟠Одинаковые первичные ключи Используйте один и тот же первичный ключ в обеих таблицах, где одна таблица содержит внешний ключ, который является также первичным ключом. 🚩Уникальные внешние ключи Таблицы Users (пользователи) UserId (Primary Key) UserName Profiles (профили) ProfileId (Primary Key) UserId (Foreign Key, Unique) ProfileData Создание таблиц
CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    UserName VARCHAR(100)
);

CREATE TABLE Profiles (
    ProfileId INT PRIMARY KEY,
    UserId INT UNIQUE,
    ProfileData VARCHAR(255),
    FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Вставка данных
INSERT INTO Users (UserId, UserName) VALUES (1, 'John Doe');
INSERT INTO Profiles (ProfileId, UserId, ProfileData) VALUES (1, 1, 'Profile data for John Doe');
Запрос данных
SELECT Users.UserName, Profiles.ProfileData
FROM Users
JOIN Profiles ON Users.UserId = Profiles.UserId;
🚩Одинаковые первичные ключи Таблицы Users (пользователи) UserId (Primary Key) UserName Profiles (профили) UserId (Primary Key, Foreign Key) ProfileData Создание таблиц
CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    UserName VARCHAR(100)
);

CREATE TABLE Profiles (
    UserId INT PRIMARY KEY,
    ProfileData VARCHAR(255),
    FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Вставка данных
INSERT INTO Users (UserId, UserName) VALUES (1, 'John Doe');
INSERT INTO Profiles (UserId, ProfileData) VALUES (1, 'Profile data for John Doe');
Запрос данных
SELECT Users.UserName, Profiles.ProfileData
FROM Users
JOIN Profiles ON Users.UserId = Profiles.UserId;
🚩Плюсы и минусы 🟠Уникальные внешние ключи ➕Четкая семантика внешнего ключа. ➕Легкость добавления дополнительных данных в связанную таблицу. ➖Необходимо следить за уникальностью внешнего ключа. 🟠Одинаковые первичные ключи ➕Единый идентификатор для связанных данных. ➕Простота конструкции при обеспечении связи. ➖Необходимость синхронизации идентификаторов в обеих таблицах. Ставь 👍 и забирай 📚 Базу знаний

Новая коллаборация уже в Tanks Blitz! Качай в Rustore! Галя из «Кибердеревни 2» захватила технику в Tanks Blitz! Робогозин, к
Новая коллаборация уже в Tanks Blitz! Качай в Rustore! Галя из «Кибердеревни 2» захватила технику в Tanks Blitz! Робогозин, конечно, уже включил Эпизод «Галя, отмена!», но ему нужна помощь игроков — тех, кто управится с Кибертехнолоджией, Космобуханкой и Жужиком. Играть #реклама 16+ apps.rustore.ru О рекламодателе

🤔 Как работает ThreadPool? - Имеется ограниченное количество потоков, заранее подготовленных. - Когда приходит задача — она ставится в очередь. - Свободный поток из пула берёт задачу и исполняет её. - По завершению поток возвращается обратно в пул, а не уничтожается. Это позволяет эффективно обрабатывать множество мелких задач без перегрузки системы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Если в двух переменных хранится одинаковое значение, то будут ли они равны? Сравнение значений переменных может зависеть от типа данных, хранящихся в этих переменных, и от способа их сравнения. 🟠Примитивные типы (Value Types) Для примитивных типов (например, int, float, char, bool) значение хранятся непосредственно в переменных, и их сравнение выполняется по значению.
int a = 5;
int b = 5;

bool areEqual = (a == b); // True
🟠Ссылочные типы (Reference Types) Для ссылочных типов (например, классы, строки) переменные содержат ссылки на объекты в куче. Сравнение ссылочных типов по умолчанию выполняется по ссылке, а не по значению.
class Person
{
    public string Name { get; set; }
}

Person person1 = new Person { Name = "Alice" };
Person person2 = new Person { Name = "Alice" };

bool areEqual = (person1 == person2); // False, потому что сравниваются ссылки
🟠Строки (Strings) Строки являются ссылочными типами, но переопределяют операторы сравнения == и Equals для сравнения по значению.
string str1 = "Hello";
string str2 = "Hello";

bool areEqual = (str1 == str2); // True, строки сравниваются по значению
🟠Кастомные классы Для кастомных классов можно переопределить методы Equals и GetHashCode, чтобы сравнивать объекты по значению.
class Person
{
    public string Name { get; set; }

    public override bool Equals(object obj)
    {
        if (obj == null || GetType() != obj.GetType())
            return false;

        Person other = (Person)obj;
        return Name == other.Name;
    }

    public override int GetHashCode()
    {
        return Name.GetHashCode();
    }
}

Person person1 = new Person { Name = "Alice" };
Person person2 = new Person { Name = "Alice" };

bool areEqual = person1.Equals(person2); // True
Ставь 👍 и забирай 📚 Базу знаний

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