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
⚡️ Паттерн 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
Метод Finalize() используется для выполнения очистки ресурсов перед сборкой мусора объекта, но его использование не рекомендуется из-за неопределённого времени вызова. Вместо этого рекомендуется использовать интерфейс IDisposable и метод Dispose() для явного освобождения ресурсов.

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

OAuth работает через токены доступа, которые выдаются после успешной аутентификации пользователя. Эти токены позволяют приложению выполнять действия от имени пользователя.

Основные шаги OAuth:

1️⃣ Пользователь предоставляет доступ приложению.
2️⃣ Приложение получает токен доступа.
3️⃣ Приложение использует токен для доступа к ресурсам.

OAuth обеспечивает безопасность, минимизируя необходимость передачи и хранения паролей.

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

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥51
Добавление метода к делегату в осуществляется с помощью оператора +=. Делегаты представляют собой типы, которые могут ссылаться на методы с определенной сигнатурой. Это позволяет вызывать несколько методов через один делегат.


using System;

public delegate void Notify(); // Объявление делегата

public class Process
{
public static void Main()
{
Notify notifyDelegate = ShowMessage; // Присваивание метода делегату
notifyDelegate += ShowAnotherMessage; // Добавление метода к делегату

notifyDelegate(); // Вызов всех методов, связанных с делегатом
}

public static void ShowMessage()
{
Console.WriteLine("Первое сообщение");
}

public static void ShowAnotherMessage()
{
Console.WriteLine("Второе сообщение");
}
}


В этом примере делегат notifyDelegate сначала ссылается на метод ShowMessage, а затем к нему добавляется метод ShowAnotherMessage. Вызов notifyDelegate() приводит к последовательному выполнению обоих методов.

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥2🤔1
JIT-компиляция (Just-In-Time) — это процесс, при котором код на промежуточном языке (IL) компилируется в машинный код непосредственно перед выполнением, что позволяет оптимизировать производительность приложения во время его работы. В .NET JIT-компилятор играет ключевую роль, обеспечивая платформонезависимость и динамическую оптимизацию кода.

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