cookie

Utilizamos cookies para mejorar tu experiencia de navegación. Al hacer clic en "Aceptar todo", aceptas el uso de cookies.

avatar

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

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

Mostrar más
Publicaciones publicitarias
3 383
Suscriptores
Sin datos24 horas
+1457 días
+98630 días

Carga de datos en curso...

Tasa de crecimiento de suscriptores

Carga de datos en curso...

Чем отличается метод Equal от == ? Спросят с вероятностью 33% Метод Equals и оператор == используются для сравнения объектов, но есть важные отличия в том, как они работают и когда их следует использовать. Оператор == Обычно используется для сравнения двух объектов на равенство. По умолчанию для ссылочных типов (классов) он проверяет равенство ссылок, то есть две переменные считаются равными, если они указывают на один и тот же объект в памяти. ✅Переопределение: Можно переопределить для классов, чтобы изменить его поведение по умолчанию и включить сравнение по значению или какой-либо другой критерий. Это делается путем определения метода оператора для == и, обычно, для !=. Метод EqualsОпределение: Предназначен для сравнения текущего объекта с другим объектом на предмет их эквивалентности. Для типов значений (например, int, double) Equals сравнивает значения. Для ссылочных типов базовая реализация Object.Equals также проверяет равенство ссылок. ✅Переопределение: Может быть переопределён, чтобы обеспечить сравнение по значению или другим критериям для классов. Это часто делается для классов, где семантическое "равенство" объектов определяется не только их идентичностью в памяти.
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

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

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

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, Age);
    }

    public static bool operator ==(Person left, Person right)
    {
        if (ReferenceEquals(left, right))
        {
            return true;
        }

        if (left is null || right is null)
        {
            return false;
        }

        return left.Equals(right);
    }

    public static bool operator !=(Person left, Person right)
    {
        return !(left == right);
    }
}
В этом примере Equals и == переопределены так, что они сравнивают объекты Person на основе их свойств Name и Age, а не по ссылкам. ✅Используйте == для проверки идентичности объектов или если нужно переопределить поведение сравнения для типов, определяемых пользователем. ✅Используйте Equals для более формального и потенциально различного в каждом классе определения равенства. ✅Всегда переопределяйте GetHashCode при переопределении Equals или ==, чтобы поддерживать согласованность поведения в коллекциях, основанных на хэш-таблицах. == — это оператор, который по умолчанию проверяет равенство ссылок для классов, но его можно переопределить. Equals — это метод, который можно переопределить для определения "равенства" в терминах значений или состояний объектов. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
🤔 Какой метод не существует в классе String?Anonymous voting
  • Substring
  • Remove
  • Delete
  • Replace
0 votes
👍 3
Для чего нужны не реаляционые базы данных ? Спросят с вероятностью 22% Нереляционные базы данных, часто называемые NoSQL (Not Only SQL), представляют собой тип систем управления базами данных, который отличается от традиционных реляционных баз данных управления (РБДУ) своим подходом к организации, хранению и управлению данными. Основные причины использования нереляционных баз данных включают следующие аспекты: 1️⃣Гибкость схемы Обычно не требуют фиксированной схемы данных, что делает их идеальными для случаев, когда данные неструктурированы или имеют различные структуры. Это позволяет разработчикам легко добавлять, удалять или модифицировать данные без необходимости менять всю структуру базы. 2️⃣Масштабируемость NoSQL базы данных часто обеспечивают лучшую горизонтальную масштабируемость, то есть способность базы данных расширяться путём добавления большего количества серверов в пул ресурсов. Это особенно полезно для приложений, работающих с большими объёмами данных и высоким уровнем запросов, например, в больших интернет-проектах. 3️⃣Производительность Благодаря оптимизации под конкретные типы запросов и данных, некоторые NoSQL системы могут обеспечить более высокую производительность по сравнению с реляционными базами данных, особенно когда речь идет о больших объемах данных и распределенных системах. 4️⃣Многообразие типов данных NoSQL предлагает различные типы хранилищ, такие как документо-ориентированные, ключ-значение, колоночные магазины и графовые базы данных, каждый из которых оптимизирован для специфических типов запросов и приложений. Примеры: 1️⃣Документо-ориентированные базы данных (например, MongoDB, CouchDB) хорошо подходят для хранения, извлечения и управления документо-ориентированной информацией как JSON или XML. 2️⃣Базы данных типа ключ-значение (например, Redis, DynamoDB) используются для хранения данных в виде словаря (ключ-значение), что идеально подходит для сессий пользователей, кэширования. 3️⃣Колоночные магазины (например, Cassandra, HBase) эффективны для аналитики больших данных, где необходимо быстро читать и записывать в огромные объёмы данных. 4️⃣Графовые базы данных (например, Neo4j, ArangoDB) оптимальны для данных, которые естественным образом представляют собой сети, например, социальные связи, сети доставки, системы рекомендаций. Нереляционные базы данных используются для обеспечения высокой гибкости, масштабируемости и производительности при работе с большими или сложными данными, которые трудно обрабатывать в стандартных реляционных СУБД. Эти системы особенно полезны в современных веб-приложениях, системах реального времени и в условиях, требующих эффективной работы с разнообразными или быстро изменяющимися данными. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 5🔥 1
🤔 Что делает оператор `??` в C#?Anonymous voting
  • Сравнение
  • Конкатенация
  • Коалесценция
  • Инкремент
0 votes
4
Что такое стек ? Спросят с вероятностью 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# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 6
Photo unavailableShow in 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 с доступом по ссылке
Mostrar todo...
🤔 Какой паттерн не применим напрямую в C#?Anonymous voting
  • Observer
  • Visitor
  • Singleton
  • Iterator
0 votes
👍 1
Что такое идентификация, аутентификация и авторизация ? Спросят с вероятностью 22% Идентификация, аутентификация и авторизация — это три ключевых компонента систем безопасности, используемые для защиты информации и ресурсов. Хотя эти термины часто используются взаимозаменяемо, они относятся к различным процессам и выполняют разные функции в контексте управления доступом. Идентификация Это процесс, в ходе которого пользователь или система предъявляет утверждение о своей личности. Например, когда пользователь вводит своё имя пользователя на веб-сайте, он проходит процесс идентификации. Это первый шаг в процессе управления доступом, который сообщает системе, кто пытается получить доступ. Идентификация сама по себе не доказывает личность пользователя, она только утверждает, кем этот пользователь является или представляется. Аутентификация Это процесс проверки утверждения идентификации. Этот процесс подтверждает, что пользователь или система действительно является тем, кем утверждается. Аутентификация часто требует предъявления одного или нескольких доказательств (факторов), которые могут включать: ✅Что-то, что знает пользователь (например, пароль, PIN-код) ✅Что-то, что имеет пользователь (например, смарт-карта, мобильное устройство) ✅Что-то, что является частью пользователя (например, биометрические данные, такие как отпечаток пальца или распознавание лица) Авторизация Это процесс предоставления или отказа в доступе к ресурсам после того, как пользователь успешно прошел идентификацию и аутентификацию. Это включает определение прав и привилегий пользователя к ресурсам, таким как файлы, базы данных, финансовые данные или функциональные возможности. Авторизация обычно настраивается через политики безопасности, которые определяют, какие ресурсы доступны для разных пользователей или групп. Пример: Представим, что вы хотите получить доступ к вашему банковскому аккаунту онлайн: 1️⃣Идентификация: Вы вводите своё имя пользователя на сайте банка. 2️⃣Аутентификация: Вы вводите свой пароль и, возможно, проходите двухфакторную аутентификацию через SMS-код, отправленный на ваш телефон. 3️⃣Авторизация: После успешной аутентификации банк проверяет, к каким функциям банковского аккаунта у вас есть доступ и разрешает вам совершать определенные операции. Эти три процесса обеспечивают безопасный и эффективный контроль доступа к информационным ресурсам и системам. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 466 вопроса на C# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 14
🤔 Что делает оператор `??` в 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# разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
🔥 10👍 1 1
Elige un Plan Diferente

Tu plan actual sólo permite el análisis de 5 canales. Para obtener más, elige otro plan.