C# | Вопросы собесов
رفتن به کانال در Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
نمایش بیشتر5 050
مشترکین
+324 ساعت
-147 روز
-2630 روز
آرشیو پست ها
5 050
🤔 Чем отличается метод Equal от ==?
Equals проверяет логическое равенство объектов, а == сравнивает ссылки для объектов и значения для примитивов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
Как экономить с Low-code от СберТеха
5 декабря в 11:00 приглашаем на бесплатный вебинар «Полный цикл low-code разработки под ключ: от базы данных до бизнес-процессов» от СберТеха.
Поделимся реальным опытом low-code разработки. Разберем кейсы для банковского, финтех-сегментов и не только. Покажем в реальном времени возможности продуктов Platform V Flow и Platform V DataSpace для low-code разработки. Расскажем о лучших практиках использования low-code инструментов.
А еще вы узнаете:
✅ Как решения, созданные с использованием low-code инструментов, выдерживают highload-нагрузки
✅ Как сэкономить ресурсы senior-разработчиков
✅ Как быстро и дешево создать прототип готового решения / enterprise-grade бэкенда приложений
Регистрируйтесь и приходите!
Зарегистрироваться
#реклама 16+
platformv.sbertech.ru
О рекламодателе
5 050
🤔 Как сравнить содержимое классов?
Сравнение содержимого объектов классов в C# можно выполнить несколькими способами. Наиболее распространенные методы включают переопределение методов
Equals и GetHashCode, а также реализацию интерфейса IEquatable<T> и использование библиотек для глубокого сравнения.
🟠Переопределение методов Equals и GetHashCode
Для сравнения содержимого классов можно переопределить методы Equals и GetHashCode. Это позволяет определить логику сравнения объектов на основе их полей.
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);
}
}
🟠Реализация интерфейса IEquatable<T>
Позволяет улучшить производительность сравнения и сделать код более читаемым.
public class Person : IEquatable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public bool Equals(Person other)
{
if (other == null)
return false;
return Name == other.Name && Age == other.Age;
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
return Equals((Person)obj);
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}
🟠Использование библиотек для глубокого сравнения
Существуют библиотеки, такие как DeepEqual или Json.NET, которые позволяют выполнять глубокое сравнение объектов, автоматически сравнивая все их поля и свойства.
using KellermanSoftware.CompareNetObjects;
public class Program
{
public static void Main()
{
Person person1 = new Person { Name = "Alice", Age = 30 };
Person person2 = new Person { Name = "Alice", Age = 30 };
var compareLogic = new CompareLogic();
ComparisonResult result = compareLogic.Compare(person1, person2);
Console.WriteLine(result.AreEqual); // True
}
}
🟠Сравнение через сериализацию
Ещё один способ сравнить содержимое объектов - это сериализовать их в JSON и затем сравнить полученные строки.
using Newtonsoft.Json;
public class Program
{
public static void Main()
{
Person person1 = new Person { Name = "Alice", Age = 30 };
Person person2 = new Person { Name = "Alice", Age = 30 };
string json1 = JsonConvert.SerializeObject(person1);
string json2 = JsonConvert.SerializeObject(person2);
bool areEqual = json1 == json2;
Console.WriteLine(areEqual); // True
}
}
Ставь 👍 и забирай 📚 Базу знаний5 050
🤔 Есть ref out и boxing unboxing в чем их разница?
ref передаёт переменные по ссылке, out требует их инициализации в методе, boxing/unboxing преобразуют тип значения в объект и обратно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
Яндекс Директ
Только этой осенью Яндекс Директ добавит до 20 000 ₽ на рекламу для вашего бизнеса ⚡
Узнать больше
#реклама
yandex.ru
О рекламодателе
5 050
🤔 Чем String отличается от других типов?
🟠Ссылочный тип
string является ссылочным типом, хотя по поведению он похож на значимый тип. Это означает, что переменная типа string содержит ссылку на объект строки, хранящийся в памяти, а не непосредственно данные.
🟠Иммутабельность (неизменяемость)
Объекты типа string неизменяемы. Это означает, что после создания строки её содержимое нельзя изменить. Любые операции, которые кажутся изменяющими строку (например, Replace, Substring), на самом деле создают новую строку.
string original = "Hello";
string modified = original.Replace('H', 'J'); // Создаётся новая строка "Jello"
🟠Поддержка операторов и методов
string поддерживает различные операторы и методы для работы с текстом. Например, оператор + для конкатенации строк, метод Substring для извлечения подстрок, метод Split для разбиения строки и т.д.
string hello = "Hello";
string world = "World";
string concatenated = hello + " " + world; // "Hello World"
🟠Интернирование строк
Для оптимизации памяти строки могут интернироваться. Это означает, что строки с одинаковым содержимым могут храниться в единственном экземпляре в пуле строк.
string a = "test";
string b = "test";
bool areEqual = object.ReferenceEquals(a, b); // True, потому что строки интернированы
🟠Специальная поддержка в языке
string имеет специальную поддержку на уровне языка. Например, строковые литералы в коде автоматически рассматриваются как объекты типа string.
string greeting = "Hello, world!";
Ставь 👍 и забирай 📚 Базу знаний5 050
🤔 Что такое стек?
Стек — это структура данных LIFO, где последний добавленный элемент извлекается первым, используется для вызовов функций и хранения локальных данных.
Чем отличается метод Equal от ==? Equals проверяет логическое равенство объектов, а == сравнивает ссылки для объектов и значения для примитивов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
Цены на все Серверы онлайн! Удобный конфигуратор!
Серверы STSS Flagman✅
Огромный выбор решений 👍
Консультации лучших экспертов 👌
Непревзойденный сервис ❤️
Получить предложение
#реклама
stss.ru
О рекламодателе
5 050
🤔 Как хранить типы данных без unboxing`а?
Существует два способа избежать упаковки и распаковки (boxing и unboxing) значимых типов при их хранении в коллекциях или использовании в других ситуациях, где тип данных не должен быть упакован в объект.
🟠Использование обобщений (generics)
Обобщения позволяют создавать коллекции и методы, которые работают с любыми типами данных без необходимости упаковки.
// Пример использования обобщённого списка для значимого типа int
List<int> numbers = new List<int>();
numbers.Add(10); // Добавление без упаковки
int number = numbers[0]; // Чтение без распаковки
🟠Использование специальных структур
В некоторых случаях для избежания упаковки можно создать специальные структуры, которые содержат необходимые данные и методы.
// Обобщённый метод для работы с любыми типами данных без упаковки
public T FindMax<T>(T a, T b) where T : IComparable<T>
{
return a.CompareTo(b) > 0 ? a : b;
}
// Использование метода для значимого типа int
int max = FindMax(3, 5);
Console.WriteLine(max); // Выведет: 5
Ставь 👍 и забирай 📚 Базу знаний5 050
Пишешь на C#?
Стань частью трансформации на хакатоне ЕВРАЗа 3.0 и создай реальный инструмент для одной из крупнейшей металлургической компании!
🦾 Создай будущее Code Review с ИИ!
Участвуй в нашем уникальном хакатоне по созданию ИИ-чатбота, который станет незаменимым помощником для разработчиков ЕВРАЗа! Выбери одно из направлений — Python, TypeScript или C#, и разработай решение для анализа кода на соответствие нашим стандартам.
Дата: 29 ноября – 1 декабря 2024.
Формат: онлайн.
Призовой фонд: 500.000 рублей.
🧑💻 Почему стоит принять участие:
– Прокачаешь свои скиллы и получишь обратную связь от ведущих экспертов отрасли.
– Разработаешь прорывное решение для автоматического Code Review с помощью ИИ.
– Получишь возможность стать частью масштабной команды ЕВРАЗа.
Если нет команды — поможем ее собрать!
🔸 Подай заявку до 25 ноября 23:59 МСК по ссылке.
5 050
🤔 Что такое ООП?
ООП (Объектно-Ориентированное Программирование) — это парадигма программирования, основанная на концепции объектов, которые объединяют данные и методы для их обработки. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. ООП позволяет моделировать реальный мир с помощью классов и объектов, улучшая структуру и повторное использование кода. В C# все программы строятся на основе классов, что делает его строго объектно-ориентированным языком.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
Yandex DataLens Festival, 2-18 декабря
Для аналитиков, тимлидов, разработчиков, продактов и маркетологов.
Эксперты Яндекса поделятся опытом.
Онлайн и бесплатно
Зарегистрироваться
#реклама 16+
yandex.cloud
О рекламодателе
5 050
🤔 Где могут храниться значимые типы?
🚩Стек
Значимые типы обычно хранятся на стеке, когда они объявлены внутри метода. Это происходит потому, что стек обеспечивает быстрый доступ и автоматическое управление памятью.
void MyMethod()
{
int localVar = 10; // localVar хранится на стеке
}
🚩Куча
Значимые типы могут храниться в куче, если они являются частью объекта ссылочного типа. Например, если структура или переменная типа int является полем класса, то она будет храниться в куче вместе с объектом класса.
class MyClass
{
public int Number; // Number хранится в куче, потому что MyClass - ссылочный тип
}
MyClass obj = new MyClass();
obj.Number = 42;
Ставь 👍 и забирай 📚 Базу знаний5 050
Погрузитесь в мир высокотехнологичных решений и узнайте, как создать интерактивные веб-приложения с помощью SignalR! Регистрируйтесь на бесплатный вебинар: https://clck.ru/3EidYt?erid=LjN8KLnQv
1. Зачем использовать SignalR: Узнайте, какие задачи решает эта мощная технология и почему она необходима для современных приложений.
2. Концепции и работа SignalR: Поймем, как работают хабы, соединения, клиенты и серверы, а также механизмы протоколов WebSocket и Long Polling.
3. Создание интерактивного чата: Построим структуру простого чата. Напишем код для отправки и получения сообщений в реальном времени. Обработаем события, такие как подключение/отключение пользователей и оповещения о новых сообщениях.
Кому будет полезно:
1️⃣ .NET разработчикам: Расширьте свои навыки работы с ASP NET Core и создавайте интерактивные приложения.
2️⃣ Веб-разработчикам: Узнайте, как создавать быстро реагирующие и интерактивные веб-приложения.
🔥Не упустите шанс! Зарегистрируйтесь сейчас и станьте мастером создания интерактивных веб-приложений с SignalR!
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
5 050
– Помощь с pet-проектом
– Составление roadmap
– Общая консультация
– Проведение код-ревью и mock-собеседования
– Помощь с трудоустройством
Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT.
🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
5 050
– Помощь с pet-проектом
– Составление roadmap
– Общая консультация
– Проведение код-ревью и mock-собеседования
– Помощь с трудоустройством
Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT.
🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
5 050
🤔 В чём разница абстрактного класса и интерфейса?
Абстрактный класс может содержать как реализацию методов, так и абстрактные методы, а интерфейс — только определения методов без реализации. Абстрактные классы могут иметь поля и конструкторы, а интерфейсы — нет. Класс может наследовать только один абстрактный класс, но реализовать несколько интерфейсов. Интерфейсы предоставляют более гибкий способ организации контракта для классов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
5 050
🤔 Расскажи про классификацию типов?
Типы данных можно классифицировать по нескольким критериям, включая базовые категории, такие как значимые типы (value types) и ссылочные типы (reference types), а также другие характеристики, такие как встроенные типы, пользовательские типы и системы типов.
🚩Классификации типов
🟠Значимые типы (Value Types)
Значимые типы хранят свои значения непосредственно и обычно располагаются в стеке. При присваивании переменной значимого типа другой переменной создается копия значения.
int a = 10;
int b = a; // b получит копию значения a
🟠Структуры (struct)
Пользовательские типы, которые объединяют несколько значений.
struct Point
{
public int X;
public int Y;
}
Point p1 = new Point { X = 1, Y = 2 };
Point p2 = p1; // p2 получит копию значений p1
🟠Перечисления (enum)
Типы, представляющие набор именованных констант.
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
Days today = Days.Monday;
🟠Ссылочные типы (Reference Types)
Ссылочные типы хранят ссылки на объекты, которые располагаются в куче (heap). При присваивании переменной ссылочного типа другой переменной копируется ссылка на объект, а не сам объект.
🟠Классы (class)
Основные строительные блоки объектов.
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person p1 = new Person { Name = "Alice", Age = 30 };
Person p2 = p1; // p2 указывает на тот же объект, что и p1
🟠Интерфейсы (interface)
Контракты, определяющие набор методов и свойств, которые должны быть реализованы классами.
interface IAnimal
{
void Speak();
}
class Dog : IAnimal
{
public void Speak() => Console.WriteLine("Woof!");
}
🟠Делегаты (delegate)
Типы, представляющие ссылки на методы.
delegate void MyDelegate(string message);
MyDelegate del = Console.WriteLine;
del("Hello, World!");
🟠Массивы (arrays)
Коллекции элементов одного типа.
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
🟠Строки (string)
Последовательности символов.
string greeting = "Hello, World!";
🟠Nullable типы
Nullable типы позволяют значимым типам принимать значение null, что означает отсутствие значения.
int? nullableInt = null;
🟠Обобщенные типы (Generics)
Обобщенные типы позволяют создавать классы, методы и структуры, которые могут работать с любыми типами данных, обеспечивая типобезопасность и повторное использование кода.
class GenericClass<T>
{
public T Value { get; set; }
}
GenericClass<int> intInstance = new GenericClass<int> { Value = 10 };
GenericClass<string> stringInstance = new GenericClass<string> { Value = "Hello" };
🟠Неуправляемые типы (Unsafe Types)
Неуправляемые типы позволяют работать с указателями и выполнять низкоуровневые операции, которые обычно не разрешены в безопасном управляемом коде.
unsafe
{
int x = 10;
int* ptr = &x;
Console.WriteLine((int)ptr); // Вывод адреса переменной x
}
Ставь 👍 и забирай 📚 Базу знаний5 050
🤔 Что такое get?
get — это метод или функция, используемая для получения значения из объекта, коллекции или свойства.
В языке Python, например, метод get применяется к словарям для безопасного извлечения значения по ключу, возвращая None или значение по умолчанию, если ключ отсутствует.
В JavaScript get может быть геттером, определяющим, как получить значение свойства объекта при его доступе.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
+9
Помощь в трудоустройстве в IT-сфере!
В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!
Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.
Для этого нужно:
- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать
Перейти на сайт
#реклама 16+
urban-university.ru
О рекламодателе
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
