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

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

Backend собеседования - @frontview_backend
C# работа - @frontview_csharp_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
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
Метод 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