C# собеседования
754 subscribers
104 photos
222 links
Подготовка к собеседованиям на позицию C#-разработчик

Еще больше на сайте https://frontview-it.ru

Backend собеседования - @frontview_backend
C# работа - @frontview_csharp_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
➡️ Полиморфизм позволяет объектам обрабатывать вызовы методов по-разному в зависимости от их конкретного типа. Это достигается через наследование и интерфейсы.

➡️ Ключевой механизм полиморфизма — виртуальные методы. Базовый класс объявляет метод как virtual, а производные классы могут переопределять его с помощью override.

public class Animal
{
public virtual void Speak()
{
// Базовая реализация
Console.WriteLine("Animal speaks");
}
}

public class Dog : Animal
{
public override void Speak()
{
// Переопределение метода
Console.WriteLine("Dog barks");
}
}


➡️ Полиморфизм позволяет использовать объекты производных классов через ссылки на базовые классы, сохраняя их уникальное поведение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14💯1
Array имеет фиксированный размер, определяемый при создании, и не может быть изменен, что делает его более эффективным по памяти, но менее гибким. List — это динамическая коллекция, которая автоматически изменяет свой размер при добавлении или удалении элементов, предоставляя больше гибкости и удобства в использовании.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🤔1
CLR (Common Language Runtime) — это виртуальная машина, являющаяся частью .NET Framework, которая управляет выполнением программ, написанных на языках, поддерживающих .NET, таких как C#. Основные функции CLR включают:

1️⃣ Управление памятью: автоматическое управление памятью через сборку мусора.
2️⃣ Обеспечение безопасности: проверка типов и защита кода.
3️⃣ Обработка исключений: централизованная обработка ошибок.
4️⃣ Поддержка многопоточности: управление потоками выполнения.

CLR позволяет разрабатывать приложения с высокой производительностью и безопасностью, абстрагируя детали низкоуровневого управления ресурсами.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Сборка мусора в .NET автоматически управляет памятью, освобождая её от объектов, которые больше не используются приложением, тем самым предотвращая утечки памяти. Этот процесс включает в себя три поколения объектов, где объекты, которые переживают сборку мусора, перемещаются в более высокое поколение, что оптимизирует производительность за счёт реже проводимой очистки для долгоживущих объектов.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
🖇 Делегат — это тип, который представляет ссылки на методы с определенной сигнатурой. Делегаты позволяют инкапсулировать метод в объект и передавать его как параметр другим методам. Это особенно полезно для реализации событий и обратных вызовов.


// Объявление делегата, который принимает два целых числа и возвращает целое число
public delegate int Operation(int x, int y);

// Метод, соответствующий делегату
public int Add(int a, int b)
{
return a + b;
}

// Использование делегата
Operation op = Add;
int result = op(3, 4); // Вызов метода через делегат


✔️ Делегаты обеспечивают гибкость и расширяемость кода, позволяя динамически изменять поведение программы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
⚡️ Паттерн Singleton гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к нему. Это полезно для управления ресурсами или состоянием, которые должны быть уникальными в приложении.


using System;

// Класс Singleton
public class Singleton {
private static Singleton instance;

// Приватный конструктор
private Singleton() {}

// Метод для получения единственного экземпляра
public static Singleton Instance {
get {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}

public void ShowMessage() {
Console.WriteLine("Singleton instance");
}
}

class Program {
static void Main() {
Singleton singleton = Singleton.Instance;
singleton.ShowMessage(); // Вывод: Singleton instance
}
}


🟢 Конструктор Singleton закрыт, чтобы предотвратить создание новых экземпляров. Метод Instance обеспечивает доступ к единственному экземпляру.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔2🤩1
CTS (Common Type System) в .NET определяет, как типы данных должны быть объявлены, использованы и управляемы в среде выполнения, обеспечивая совместимость между языками. CLS (Common Language Specification) представляет собой набор правил и ограничений, которые обеспечивают совместимость между различными языками .NET, позволяя им взаимодействовать друг с другом.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Boxing — это процесс преобразования значимого типа (например, int) в ссылочный тип object, что позволяет хранить значимые типы в структурах данных, предназначенных для объектов. Unboxing — это обратный процесс, когда объектный тип преобразуется обратно в значимый тип.


int number = 42; // Значимый тип
object boxed = number; // Boxing: преобразование в object
int unboxed = (int)boxed; // Unboxing: преобразование обратно в int


💡 Boxing и unboxing могут влиять на производительность, так как требуют дополнительных операций в памяти.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Entity Framework — это объектно-реляционный маппер (ORM) для .NET, который упрощает взаимодействие с базами данных, позволяя работать с данными в виде объектов C#. Он автоматизирует задачи, связанные с доступом к данным, такие как создание SQL-запросов и управление соединениями, что ускоряет разработку и снижает количество ошибок.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5
Array и List<T> — это коллекции, но они имеют ключевые различия.

1️⃣ Array — это фиксированная по размеру коллекция, которая хранит элементы одного типа. Размер массива задается при создании и не может быть изменен. Это делает массивы быстрыми и эффективными по памяти, но менее гибкими.

int[] numbers = new int[5]; // Массив фиксированного размера


2️⃣ List<T> — это динамическая коллекция, которая может изменять размер. Она предоставляет методы для добавления, удаления и управления элементами, что делает ее более гибкой, но с небольшими накладными расходами по сравнению с массивами.

List<int> numbers = new List<int>(); // Динамический список
numbers.Add(1); // Добавление элемента


Array подходит для сценариев, где известен размер данных, а List<T> — для работы с изменяющимися данными.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
Синхронное программирование выполняет задачи последовательно, блокируя выполнение до завершения каждой операции, что может приводить к задержкам при ожидании ресурсов. Асинхронное программирование позволяет выполнять задачи параллельно, не блокируя поток, что улучшает отзывчивость приложений, особенно при работе с вводом-выводом или сетевыми запросами.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
using выполняет две основные функции: импорт пространств имен и управление ресурсами.

1️⃣ Первая функция — импорт пространств имен, что позволяет использовать классы и методы без полного указания их путей. Например:


using System; // Импорт пространства имен System

Console.WriteLine("Hello, World!"); // Использование метода из System


2️⃣ Вторая функция — управление ресурсами. using создает блок, который автоматически освобождает ресурсы, реализующие интерфейс IDisposable, по завершении блока. Это полезно для работы с файлами, потоками и соединениями с базой данных:


using (var file = new StreamWriter("file.txt")) {
// Запись в файл
file.WriteLine("Hello, World!");
} // Автоматическое закрытие файла


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Наследование — это механизм объектно-ориентированного программирования, который позволяет одному классу (наследнику) унаследовать поля и методы другого класса (родителя). Это способствует повторному использованию кода и упрощает его поддержку, позволяя создавать более сложные структуры на основе существующих классов.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
1️⃣ Thread представляет собой поток выполнения, который может быть использован для выполнения кода параллельно. Потоки управляются операционной системой и требуют ручного управления.

Thread thread = new Thread(() => Console.WriteLine("Running in a thread"));
thread.Start();


2⃣ Task — это более высокоуровневый абстрактный класс для асинхронных операций. Он использует пул потоков для выполнения задач и упрощает управление асинхронностью.

Task task = Task.Run(() => Console.WriteLine("Running in a task"));
task.Wait();


✔️ Task предпочтительнее для асинхронных операций, так как он предоставляет более удобные средства управления и синхронизации.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥21
FileStream представляет собой поток, который используется для чтения и записи данных в файлы, обеспечивая доступ к файловой системе на уровне байтов. Он позволяет выполнять операции ввода-вывода с файлами, поддерживая асинхронные операции и управление буферизацией для повышения производительности.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21
Механизм обработки исключений позволяет управлять ошибками, возникающими во время выполнения программы, с помощью блоков try, catch и finally.

Блок try содержит код, который может вызвать исключение. Если исключение возникает, управление передаётся в соответствующий блок catch, где можно обработать ошибку.

try {
int result = 10 / 0; // Это вызовет исключение DivideByZeroException
} catch (DivideByZeroException ex) {
Console.WriteLine("Деление на ноль: " + ex.Message);
} finally {
Console.WriteLine("Этот блок выполняется всегда.");
}


Блок finally выполняется независимо от того, было ли исключение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
Юнит-тестирование — это процесс проверки отдельных модулей или функций программы на корректность их работы с использованием фреймворков, таких как NUnit или MSTest. Оно необходимо для выявления ошибок на ранних стадиях разработки, облегчения рефакторинга и обеспечения стабильности кода при внесении изменений.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
👉 SortedList<TKey, TValue> — это коллекция, которая хранит пары ключ-значение, отсортированные по ключу. Она реализует интерфейсы IDictionary<TKey, TValue> и ICollection<KeyValuePair<TKey, TValue>>.

👉 SortedList<TKey, TValue> использует массивы для хранения данных, что обеспечивает быструю сортировку и доступ по индексу. Однако вставка и удаление элементов могут быть менее эффективными, так как требуют сдвига элементов.

var sortedList = new SortedList<int, string>();
sortedList.Add(2, "два");
sortedList.Add(1, "один");

// Перебор элементов
foreach (var kvp in sortedList)
{
Console.WriteLine($"Ключ: {kvp.Key}, Значение: {kvp.Value}");
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
Файловый поток представляет собой объект, который предоставляет средства для чтения из файла и записи в файл, используя классы из пространства имен System.IO. Он позволяет работать с файлами на уровне байтов, обеспечивая управление доступом и обработку данных в файловой системе.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥31
StreamReader используется для чтения символов из потока данных, таких как файлы. Он предоставляет методы для чтения данных построчно или целиком.


using System;
using System.IO;

class Example {
static void Main() {
using (StreamReader reader = new StreamReader("example.txt")) {
string line;
while ((line = reader.ReadLine()) != null) {
Console.WriteLine(line); // Вывод каждой строки из файла
}
} // Автоматическое закрытие файла после использования
}
}


StreamReader поддерживает чтение текстовых данных в различных кодировках. Использование using гарантирует, что ресурсы будут освобождены после завершения работы с файлом.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2