cookie

Ми використовуємо файли cookie для покращення вашого досвіду перегляду. Натиснувши «Прийняти все», ви погоджуєтеся на використання файлів cookie.

avatar

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

Разбираем вопросы с собеседований на С# разработчика. Сайт: easyoffer.ru Реклама: @easyoffer_adv

Більше
Рекламні дописи
3 374
Підписники
+524 години
+2087 днів
+1 01230 днів

Триває завантаження даних...

Приріст підписників

Триває завантаження даних...

🤔 Что делает оператор `??` в C#?Anonymous voting
  • Сравнение
  • Конкатенация
  • Коалесценция
  • Инкремент
0 votes
1
Что такое стек ? Спросят с вероятностью 33% "стек" (stack) — это тип структуры данных, который работает по принципу "последний пришёл — первый вышел" (Last In, First Out — LIFO). Этот принцип означает, что последние добавленные элементы будут извлечены из стека первыми. Стек можно представить как стопку тарелок: вы можете добавлять новые тарелки на верх стопки и также снимать верхнюю тарелку, но доступ к тарелкам, находящимся в середине стопки, без снятия верхних слоёв, невозможен. Основные операции со стекомPush: добавление элемента на вершину стека. ✅Pop: удаление и возвращение элемента с вершины стека. ✅Peek: возвращает элемент на вершине стека без его удаления. ✅IsEmpty: проверка стека на пустоту. Стеки широко используются в программировании для решения множества задач, включая: ✅Обработка вызовов функций/процедур: Используется для отслеживания точек входа и выхода из функций во время выполнения программы. ✅Алгоритмы обратной полский нотации: Его использование для вычисления арифметических выражений, записанных в постфиксной форме. ✅Откат операций: в редакторах, где последние изменения можно отменить в обратном порядке.
using System;
using System.Collections.Generic;

public class SimpleStack
{
    private Stack<int> stack = new Stack<int>();

    public void Push(int number)
    {
        stack.Push(number);
        Console.WriteLine($"Pushed {number} to stack.");
    }

    public int Pop()
    {
        int number = stack.Pop();
        Console.WriteLine($"Popped {number} from stack.");
        return number;
    }

    public int Peek()
    {
        int number = stack.Peek();
        Console.WriteLine($"Peeked at {number} on stack.");
        return number;
    }

    public bool IsEmpty()
    {
        return stack.Count == 0;
    }
}

class Program
{
    static void Main()
    {
        var myStack = new SimpleStack();
        myStack.Push(1);
        myStack.Push(2);
        myStack.Push(3);
        myStack.Peek();
        myStack.Pop();
        myStack.Pop();
        myStack.Pop();
    }
}
Стек — это структура данных, работающая по принципу LIFO, что означает, что последний сохранённый элемент будет первым извлечённым. Этот тип структуры используется во многих аспектах программирования, включая управление памятью, парсинг выражений и откат изменений. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 3
Фото недоступнеДивитись в Telegram
⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе Вот отсортированная база с тонной материала(постепенно пополняется): 🔗 БАЗА (3385 видео): (343 видео, 87 книги) — Java (176 видео, 32 книги) — Git (293 видео, 63 книги) — C# (352 видео, 89 книги) — С++ (167 видео, 53 книги) — PHP (227 видео, 83 книги) — SQL (163 видео, 29 книги) — Linux (363 видео, 122 книги) — Python (415 видео, 168 книги) — Frontend (143 видео, 33 книги) — Flask (167 видео, 43 книги) — Django (197 видео, 49 книги) — Разработка ботов (137 видео, 93 книги) — Data Science (113 видео, 82 книги) — GameDev (129 видео, 73 книги) — QA Скачивать ничего не нужно — все выложили в Telegram и на YouTube с доступом по ссылке
Показати все...
🤔 Какой паттерн не применим напрямую в C#?Anonymous voting
  • Observer
  • Visitor
  • Singleton
  • Iterator
0 votes
👍 1
Что такое идентификация, аутентификация и авторизация ? Спросят с вероятностью 22% Идентификация, аутентификация и авторизация — это три ключевых компонента систем безопасности, используемые для защиты информации и ресурсов. Хотя эти термины часто используются взаимозаменяемо, они относятся к различным процессам и выполняют разные функции в контексте управления доступом. Идентификация Это процесс, в ходе которого пользователь или система предъявляет утверждение о своей личности. Например, когда пользователь вводит своё имя пользователя на веб-сайте, он проходит процесс идентификации. Это первый шаг в процессе управления доступом, который сообщает системе, кто пытается получить доступ. Идентификация сама по себе не доказывает личность пользователя, она только утверждает, кем этот пользователь является или представляется. Аутентификация Это процесс проверки утверждения идентификации. Этот процесс подтверждает, что пользователь или система действительно является тем, кем утверждается. Аутентификация часто требует предъявления одного или нескольких доказательств (факторов), которые могут включать: ✅Что-то, что знает пользователь (например, пароль, PIN-код) ✅Что-то, что имеет пользователь (например, смарт-карта, мобильное устройство) ✅Что-то, что является частью пользователя (например, биометрические данные, такие как отпечаток пальца или распознавание лица) Авторизация Это процесс предоставления или отказа в доступе к ресурсам после того, как пользователь успешно прошел идентификацию и аутентификацию. Это включает определение прав и привилегий пользователя к ресурсам, таким как файлы, базы данных, финансовые данные или функциональные возможности. Авторизация обычно настраивается через политики безопасности, которые определяют, какие ресурсы доступны для разных пользователей или групп. Пример: Представим, что вы хотите получить доступ к вашему банковскому аккаунту онлайн: 1️⃣Идентификация: Вы вводите своё имя пользователя на сайте банка. 2️⃣Аутентификация: Вы вводите свой пароль и, возможно, проходите двухфакторную аутентификацию через SMS-код, отправленный на ваш телефон. 3️⃣Авторизация: После успешной аутентификации банк проверяет, к каким функциям банковского аккаунта у вас есть доступ и разрешает вам совершать определенные операции. Эти три процесса обеспечивают безопасный и эффективный контроль доступа к информационным ресурсам и системам. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 13
🤔 Что делает оператор `??` в C#?Anonymous voting
  • Сравнивает значения
  • Возвращает левый операнд, если он не null
  • Складывает два значения
  • Генерирует случайное число
0 votes
Как работает сборка мусора на платформе .NET ? Спросят с вероятностью 33% Сборка мусора (Garbage Collection, GC) — это автоматический процесс управления памятью, который обеспечивает освобождение памяти, занимаемой объектами, которые больше не используются в программе. Она позволяет разработчикам не заботиться о ручном управлении памятью, что значительно уменьшает количество ошибок, связанных с утечками памяти и другими проблемами управления ресурсами. Как это работает? Система сборки мусора работает в несколько этапов: 1️⃣Маркировка (Marking): GC проходит по всем активным объектам (объекты, на которые существуют ссылки и которые ещё используются) и помечает их как "достижимые". Это делается с помощью трассировки, которая начинается с корневых объектов (например, локальных переменных и статических полей) и последовательно отслеживает все объекты, на которые эти корни ссылаются. 2️⃣Очистка (Sweeping): После маркировки всех доступных объектов, GC идентифицирует все непомеченные объекты как "недостижимые" и освобождает память, которую они занимали. 3️⃣Компактификация (Compacting): Необязательный шаг, который уменьшает фрагментацию памяти путём перемещения объектов, что оптимизирует производительность памяти и ускоряет доступ к объектам. .NET использует концепцию поколений для оптимизации процесса сборки мусора: ✅Поколение 0: Сюда попадают все новые объекты. Это поколение собирается чаще всего. ✅Поколение 1: Содержит объекты, которые пережили одну сборку мусора. Это промежуточное хранилище между часто и редко собираемыми объектами. ✅Поколение 2: Сюда попадают объекты, которые пережили две сборки мусора. Сборка мусора в этом поколении происходит реже, что позволяет снизить нагрузку на систему. Производительность и оптимизация Хотя сборка мусора упрощает управление памятью, она может привести к проблемам с производительностью, особенно если GC активируется слишком часто или занимает слишком много времени. Разработчики могут оптимизировать работу с памятью, например, используя пулы объектов, минимизируя выделения в критических по производительности участках кода или изменяя конфигурацию GC в соответствии с требованиями приложения. Сборка мусора в .NET — это автоматический процесс, который управляет памятью путем удаления объектов, которые больше не используются. Этот процесс помогает избежать утечек памяти и упрощает разработку за счёт автоматизации управления памятью. GC делает приложения более стабильными и уменьшает вероятность ошибок, связанных с памятью. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
🔥 10👍 1 1
🤔 Какой метод используется для сравнения строк в C#?Anonymous voting
  • Equals()
  • Compare()
  • Same()
  • IsEqual()
0 votes
🤔 8😁 3🤯 1
Для чего нужен интерфейс IDisposable ? Спросят с вероятностью 22% Интерфейс IDisposable предназначен для предоставления стандартного механизма освобождения неуправляемых ресурсов, таких как файловые дескрипторы, сетевые соединения, базы данных или графические ресурсы. Также он может быть использован для освобождения управляемых ресурсов, если это необходимо. Ключевые аспекты: 1️⃣Управление ресурсами: Неуправляемые ресурсы, такие как окна операционной системы, соединения с базой данных или файлы, не управляются сборщиком мусора .NET. Это означает, что сборщик мусора не может автоматически освободить эти ресурсы, когда они больше не нужны. IDisposable позволяет разработчику явно контролировать время освобождения этих ресурсов. 2️⃣Паттерн Dispose: Когда класс реализует IDisposable, он должен предоставить реализацию метода Dispose(). Этот метод должен освобождать все ресурсы, занимаемые объектом. После вызова Dispose() объект считается непригодным для использования, и попытка вызвать его методы или обратиться к его свойствам может привести к ошибке. 3️⃣Использование с конструкцией using: Конструкция using автоматически вызывает метод Dispose() для объектов, которые реализуют IDisposable. Это упрощает управление ресурсами, обеспечивая, что Dispose() будет вызван автоматически даже в случае возникновения исключений в блоке using.
public class ResourceHolder : IDisposable
{
    private bool disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Освобождение управляемых ресурсов
            }
            // Освобождение неуправляемых ресурсов
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

// Использование ResourceHolder с конструкцией using
using (var holder = new ResourceHolder())
{
    // работа с ресурсами
}
В этом примере класс ResourceHolder реализует IDisposable. Метод Dispose() освобождает ресурсы и вызывает GC.SuppressFinalize(), указывая сборщику мусора, что финализатор объекта не требуется вызывать. Интерфейс IDisposable необходим для того, чтобы обеспечить корректное и своевременное освобождение неуправляемых ресурсов, а также для управления управляемыми ресурсами, которые требуют освобождения до того, как сработает сборщик мусора. Это ключевой элемент для предотвращения утечек ресурсов и поддержания оптимальной производительности приложений. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 9
Что такое lock-еры ? Спросят с вероятностью 33% 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 для синхронизации доступа к балансу счета в классе Account. Благодаря lock, одновременные вызовы методов Deposit и Withdraw не приведут к "гонке", где два потока могут одновременно изменять balance и привести к некорректным результатам. Зачем это нужно? Без использования lock или других методов синхронизации, программы с многопоточным доступом к общим данным могут испытывать проблемы, такие как гонки и условия гонки (race conditions), когда порядок или время доступа к данным может привести к ошибкам или неожиданным результатам. lock гарантирует, что только один поток может исполнять определенный блок кода, работающий с критическими ресурсами, в любой момент времени. Используется для создания безопасной среды в многопоточных приложениях, обеспечивая, что только один поток может работать с определенной частью кода или данными в одно и то же время. Это помогает избежать проблем с одновременным доступом, которые могут привести к неправильной работе программы. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 9
Оберіть інший тариф

На вашому тарифі доступна аналітика тільки для 5 каналів. Щоб отримати більше — оберіть інший тариф.