C# | Вопросы собесов
Відкрити в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Показати більше5 048
Підписники
-124 години
-177 днів
-2630 день
Архів дописів
5 048
Начните обучение в магистратуре в Центральном университете уже на 3-м курсе бакалавриата!
Центральный университет — современный вуз, созданный при поддержке ведущих компаний России: Т-Банка, Авито и других.
Учебу реально совместить с последними курсами бакалавриата или действующей работой. Обучение занимает 20 часов в неделю в вечернее время в первый год, а занятия проводят в центре Москвы профессоры из МГУ, МФТИ, РЭШ и практики из индустрии. Обучение в университете построено по принципам ИТ-компаний, со средой, способствующей росту и развитию.
У каждого студента будет:
- личный ментор по траектории обучения;
- доступ к карьерному центру с коучами и консультантами;
- опыт работы в проектах 30+ компаний-партнеров уже во время обучения;
- диплом гособразца.
Участвуйте в онлайн-отборе, чтобы выиграть грант на обучение до 1,2 млн рублей. Больше подробностей про университет и конкурс грантов по ссылке!
erid:2Vtzqvtn12b
Реклама, АНО ВО «Центральный университет», ИНН 7743418023
5 048
📌 Какие есть виды полиморфизмов?
💬 Спрашивают в 22% собеседований
Полиморфизм в объектно-ориентированном программировании (ООП) — это способность объектов разного типа обрабатывать данные через единый интерфейс. В C# существует несколько видов полиморфизма, которые можно разделить на две основные категории: компиляторный (статический) полиморфизм и временный (динамический) полиморфизм. Рассмотрим каждый из них более подробно.
🤔 Компиляторный (статический) полиморфизм
Этот тип полиморфизма определяется на этапе компиляции. К нему относятся:
1️⃣ Перегрузка методов (Method Overloading):
➕ Это возможность создавать несколько методов с одним и тем же именем, но с разными параметрами (типами и/или количеством параметров).
➕ Пример:
class MathOperations
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
2️⃣ Перегрузка операторов (Operator Overloading):
➕ Позволяет определять поведение стандартных операторов (например, +, -, *, /) для пользовательских типов (классов или структур).
➕ Пример: class Complex
{
public double Real { get; set; }
public double Imaginary { get; set; }
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex { Real = c1.Real + c2.Real, Imaginary = c1.Imaginary + c2.Imaginary };
}
}
🤔 Временный (динамический) полиморфизм
Этот тип полиморфизма определяется на этапе выполнения программы. К нему относятся:
1️⃣ Переопределение методов (Method Overriding):
➕ Позволяет подклассу предоставлять специфическую реализацию метода, который уже определен в его суперклассе.
➕ Использует ключевые слова virtual в базовом классе и override в производном классе.
➕ Пример: class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal sound");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
2️⃣ Интерфейсы (Interfaces):
➕ Позволяют разным классам реализовывать одно и то же поведение через контракт (интерфейс).
➕ Пример: interface IShape
{
void Draw();
}
class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing Circle");
}
}
class Square : IShape
{
public void Draw()
{
Console.WriteLine("Drawing Square");
}
}
🤔 Примеры использования полиморфизма
🤔 Перегрузка методов (статический полиморфизм) class Printer
{
public void Print(string message)
{
Console.WriteLine(message);
}
public void Print(int number)
{
Console.WriteLine(number);
}
}
class Program
{
static void Main()
{
Printer printer = new Printer();
printer.Print("Hello, world!");
printer.Print(123);
}
}
🤔 Переопределение методов (динамический полиморфизм) class Program
{
static void Main()
{
Animal myDog = new Dog();
myDog.MakeSound(); // Output: Bark
}
}
🤔 Интерфейсы (динамический полиморфизм) class Program
{
static void Main()
{
IShape circle = new Circle();
IShape square = new Square();
circle.Draw(); // Output: Drawing Circle
square.Draw(); // Output: Drawing Square
}
}
🤔 Краткий ответ
Полиморфизм в C# бывает двух видов: статический и динамический. Статический включает перегрузку методов и операторов, а динамический включает переопределение методов и использование интерфейсов. Полиморфизм позволяет использовать единый интерфейс для работы с объектами разных типов.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
ТОП-4 Курса по Управлению проектами
Tutortop — маркетплейс курсов №1 по количеству школ-партнеров, курсов и реальных отзывов студентов.
⚡Проджект-менеджер выстраивает процессы и управляет проектом целиком.
✅Получите одну из самых востребованных профессий и станьте тем специалистом, от которого будет зависеть успех всего проекта.
📱Научитесь контролировать все этапы работы, распределять задачи между участниками команды и грамотно оценивать результаты.
Выбрать
#реклама 16+
tutortop.ru
О рекламодателе
5 048
🤔 Вопрос: Какой атрибут в C# используется для указания, что метод должен быть переопределен в производном классе?
5 048
📌 Какова концепция сборки мусора в С#?
💬 Спрашивают в 22% собеседований
Сборка мусора (Garbage Collection, GC) в C# — это автоматический процесс управления памятью, который освобождает память, занятую объектами, которые больше не используются приложением. Этот механизм помогает разработчикам избежать ошибок, связанных с управлением памятью вручную, таких как утечки памяти и неправильное использование освобожденных ресурсов. Давайте рассмотрим концепцию сборки мусора в C# подробнее.
🤔 Основные концепции сборки мусора
1️⃣ Управляемая куча (Managed Heap):
➕ Управляемая куча — это область памяти, в которой размещаются объекты, созданные в управляемой среде .NET. Когда создается новый объект, память для него выделяется в управляемой куче.
2️⃣ Корни (Roots):
➕ Корни — это переменные и ссылки, которые являются начальными точками для сборки мусора. Они включают глобальные и статические переменные, локальные переменные в стеке, а также ссылки из регистров процессора.
3️⃣ Алгоритм маркировки и сжатия (Mark-and-Compact):
➕ GC использует алгоритм маркировки и сжатия для определения объектов, которые больше не используются. Сначала он помечает все доступные объекты (те, до которых можно добраться из корней), а затем удаляет все непомеченные объекты, освобождая их память.
4️⃣ Поколения (Generations):
➕ Память управляемой кучи разделена на три поколения: поколение 0, поколение 1 и поколение 2. Это позволяет оптимизировать процесс сборки мусора:
➕ Поколение 0: Содержит новые объекты. Сборка мусора здесь происходит чаще всего, так как большинство объектов живут недолго.
➕ Поколение 1: Содержит объекты, которые пережили одну сборку мусора.
➕ Поколение 2: Содержит объекты, которые пережили несколько сборок мусора. Сборка мусора здесь происходит реже всего, так как такие объекты считаются долгоживущими.
🤔 Этапы сборки мусора
1️⃣ Инициализация сборки мусора:
➕ Когда выделяется новая память и управляемая куча достигает определенного порога, запускается процесс сборки мусора.
2️⃣ Маркировка (Mark):
➕ GC проходит по всем корням и помечает все объекты, которые могут быть достигнуты.
3️⃣ Удаление (Sweep):
➕ После маркировки все непомеченные объекты считаются недоступными и могут быть удалены.
4️⃣ Сжатие (Compact):
➕ Для улучшения производительности и уменьшения фрагментации памяти, сборщик мусора может переместить оставшиеся объекты, чтобы освободить блоки памяти.
🤔 Пример кода с использованием сборки мусора
class Program
{
static void Main()
{
for (int i = 0; i < 1000; i++)
{
CreateObject();
}
// Явный вызов сборщика мусора (не рекомендуется для обычного использования)
GC.Collect();
}
static void CreateObject()
{
MyClass obj = new MyClass();
// Объект obj будет собран сборщиком мусора, когда он больше не будет использоваться
}
}
class MyClass
{
// Поля и методы класса
}
🤔 Краткий ответ
Сборка мусора в C# автоматически управляет памятью, освобождая её от объектов, которые больше не нужны. Она помечает используемые объекты и удаляет те, что не используются, что помогает избежать утечек памяти и ошибок управления памятью.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
Jobski - твой помощник при поиске работы в IT
Сервис индивидуально подбирает вакансии, учитывая ваш опыт, навыки и стек технологий.
Узнать больше
#реклама
jobski.ru
О рекламодателе
5 048
🤔 Какой атрибут в C# используется для определения, должен ли метод быть включен в XML-документацию?
5 048
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
5 048
📌 Какие бывают типы данных?
💬 Спрашивают в 22% собеседований
В C# существует множество различных типов данных, которые можно разделить на две основные категории: значимые типы (value types) и ссылочные типы (reference types). Рассмотрим каждую из этих категорий и их подтипы.
🤔 Значимые типы (Value Types)
Значимые типы хранят данные непосредственно в своей памяти. Они обычно располагаются в стеке и имеют фиксированный размер. К значимым типам относятся:
1️⃣ Простые типы (Simple Types)
➕ Числовые типы
➕ Целочисленные типы:
➕
byte (8 бит)
➕ sbyte (8 бит)
➕ short (16 бит)
➕ ushort (16 бит)
➕ int (32 бита)
➕ uint (32 бита)
➕ long (64 бита)
➕ ulong (64 бита)
➕ Вещественные типы:
➕ float (32 бита)
➕ double (64 бита)
➕ Десятичный тип:
➕ decimal (128 бит)
➕ Логический тип
➕ bool (1 бит, значения true или false)
➕ Символьный тип
➕ char (16 бит, символы в формате Unicode)
2️⃣ Структуры (Structs)
➕ Пользовательские типы, которые могут содержать поля, свойства и методы.
➕ Пример: struct Point { public int X; public int Y; }
3️⃣ Перечисления (Enums)
➕ Специальные типы, представляющие набор именованных констант.
➕ Пример: enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
4️⃣ Nullable Types
➕ Типы, которые могут принимать значение null.
➕ Пример: int?, double?
🤔 Ссылочные типы (Reference Types)
Ссылочные типы хранят ссылки на данные, которые размещаются в куче. К ссылочным типам относятся:
1️⃣ Классы (Classes)
➕ Основные объекты в C#, могут содержать поля, свойства, методы и события.
➕ Пример: class Person { public string Name; public int Age; }
2️⃣ Интерфейсы (Interfaces)
➕ Определяют контракт, который должны реализовать классы.
➕ Пример: interface IMovable { void Move(); }
3️⃣ Массивы (Arrays)
➕ Коллекции однотипных элементов.
➕ Пример: int[] numbers = new int[5];
4️⃣ Делегаты (Delegates)
➕ Типы, которые представляют собой ссылки на методы.
➕ Пример: delegate void Process(int value);
5️⃣ Строки (Strings)
➕ Непосредственно представляют собой последовательность символов.
➕ Пример: string message = "Hello, World!";
6️⃣ Записи (Records)
➕ Новый тип в C# 9.0, предназначенный для неизменяемых объектов.
➕ Пример: record Person(string Name, int Age);
🤔 Примеры и использование
🤔 Значимые типы int a = 5;
float b = 3.14f;
bool isTrue = true;
char letter = 'A';
🤔 Ссылочные типы string message = "Hello, World!";
Person person = new Person { Name = "Alice", Age = 30 };
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
🤔 Краткий ответ
Типы данных в C# делятся на значимые и ссылочные. Значимые типы хранят данные непосредственно, а ссылочные типы хранят ссылки на данные в памяти.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
🔥 Битый код - канал для настоящих кодеров!
🔴 Тебе надоело сталкиваться с багами и ошибками в коде?
🔴 Хочешь прокачать свои навыки и узнать, как эффективно решать сложные задачи?
⭐️ Тогда тебе к нам! На канале Битый код ты найдешь:
🟡 Советы по оптимизации кода
🟡 Практические примеры и решения
🧠 Развивай свои навыки программирования вместе с нами и становись настоящим профессионалом!
🔥 Присоединяйся к Битому коду и учись исправлять ошибки как настоящий мастер.
5 048
Как предпринимателям продвигать свой бизнес в интернете
Узнайте на бесплатном интенсиве Яндекс Рекламы «Про движение малого бизнеса: настраиваем рекламу с нуля».
За 4 недели разберётесь в рекламных инструментах, научитесь рассчитывать бюджет, самостоятельно настраивать кампанию и анализировать результаты.
Стартуем 5 августа! Регистрируйтесь:
Зарегистрироваться
#реклама 16+
yandex.ru
О рекламодателе
5 048
🤔 Какое пространство имён в C# обычно используется для работы с веб-запросами?
5 048
🤯 Чтобы не сидеть в творческом беспорядке, структурируй его с помощью Куб прогресса.
Тут ты найдешь кучу советов для ITшника:
🟡 пользуйся полезными сайтами
🟡 подчеркивай интересные мысли
🛞 Начинай внедрять лайфхаки - создай структуру внутри себя
5 048
Repost from Backend
В приватной базе собесов уже больше 100 записей. Яндекс, Тиньков, Сбербанк, Самокат, Озон и другие крупные компании в базе.
5 048
📌 Зачем сделали ref & out для ссылочных типов?
💬 Спрашивают в 22% собеседований
В C# ключевые слова
ref и out используются для передачи аргументов по ссылке, что позволяет методам изменять значения этих аргументов. Эти механизмы полезны как для значимых типов (структур), так и для ссылочных типов (объектов). Давайте рассмотрим более детально, зачем и как их используют для ссылочных типов.
🤔 Зачем нужны `ref` и `out` для ссылочных типов?
🤔 `ref`
➕ Изменение самого объекта: С помощью ref можно передавать ссылочные типы таким образом, чтобы метод мог изменять саму ссылку, то есть ссылаться на другой объект.
➕ Пример: Представим себе метод, который принимает объект и может его заменить новым объектом.
🤔 `out`
➕ Передача непроинициализированных объектов: Ключевое слово out позволяет передавать аргумент, который не обязательно должен быть инициализирован до вызова метода. Метод, принимающий out аргумент, обязан присвоить ему значение до завершения работы.
➕ Пример: Метод, который инициализирует и возвращает объект.
🤔 Как используются `ref` и `out`?
🤔 Пример использования `ref`
class Program
{
static void ChangeReference(ref MyClass obj)
{
obj = new MyClass { Value = 20 };
}
static void Main()
{
MyClass myObj = new MyClass { Value = 10 };
ChangeReference(ref myObj);
Console.WriteLine(myObj.Value); // Output: 20
}
}
class MyClass
{
public int Value { get; set; }
}
В этом примере ref позволяет методу ChangeReference изменить ссылку myObj на новый объект MyClass.
🤔 Пример использования `out`
class Program
{
static void InitializeObject(out MyClass obj)
{
obj = new MyClass { Value = 30 };
}
static void Main()
{
MyClass myObj;
InitializeObject(out myObj);
Console.WriteLine(myObj.Value); // Output: 30
}
}
class MyClass
{
public int Value { get; set; }
}
В этом примере метод InitializeObject использует out для создания и инициализации нового объекта MyClass.
🤔 Почему это нужно?
1️⃣ Гибкость: ref и out добавляют гибкости при работе с методами, позволяя им изменять ссылки на объекты или создавать и возвращать новые объекты.
2️⃣ Оптимизация: Эти механизмы могут быть полезны для оптимизации, когда необходимо избежать лишнего копирования данных, особенно при работе с большими объектами.
3️⃣ Логика инициализации: out полезен для методов, которые должны вернуть несколько значений или инициализировать объекты, которые не могут быть инициализированы заранее.
🤔 Краткий ответ
ref и out используются для передачи объектов по ссылке, что позволяет методам изменять ссылки на объекты или инициализировать их. Это добавляет гибкости и позволяет оптимизировать работу с памятью.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
Реклама для бизнеса любого уровня в Яндекс Директе
Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌
Начните прямо сейчас ⚡
Зарегистрироваться
#реклама
direct.yandex.ru
О рекламодателе
5 048
👩💻 Программирование теперь в телеграм!
Вот обширная база материалов, которая ежедневно обновляется, выбирай своё направление:
Обучение JavaScript с нуля
Обучение Python с нуля
Обучение Java с нуля
Обучение HTML/CSS с нуля
Обучение C/С++ с нуля
Обучение С# с нуля
Обучение SQL/GO/PHP с нуля
Обучение Kotlin/Swift с нуля
⛓ Архив на 3489ГБ: Курсы, книги, шпаргалки, статьи, видео, ресурсы — всё собрано в одном месте: @roadmap_ready
5 048
Обучаем Java-разработчиков оплата после выхода на работу
В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты.
Если задуматься, то все в выигрыше:
— ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя;
— в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше;
— мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут;
— мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов.
Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку!
Узнать больше
#реклама 16+
kata.academy
О рекламодателе
5 048
🤔 Какое ключевое слово используется для определения асинхронного метода в C#?
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
