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
Юнит-тестирование — это процесс проверки отдельных модулей или функций программы на корректность их работы с использованием фреймворков, таких как 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
🔘EXE (Executable) и DLL (Dynamic Link Library) — это форматы файлов, используемые в Windows для выполнения и хранения кода.

1️⃣ EXE — это исполняемый файл, который запускает приложение и содержит точку входа Main(). Он выполняется как отдельный процесс и может использовать другие библиотеки.

2️⃣ DLL — это библиотека, которая содержит код и данные, используемые несколькими приложениями. Она не может выполняться самостоятельно и загружается в память процессом, который её вызывает, что позволяет разделять и повторно использовать код.

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11💯1
В Entity Framework подход Code First предполагает создание классов модели в коде, из которых затем генерируется база данных, подход Database First начинается с существующей базы данных, из которой создаются классы модели, а Model First использует визуальное моделирование для создания модели, из которой генерируются как база данных, так и классы. Каждый подход подходит для разных сценариев: Code First удобен для нового проекта, Database First — для работы с существующей базой данных, а Model First — для проектов, где важно визуальное проектирование модели.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥2🤔1
🛑 Интерфейс объявляется с помощью ключевого слова interface. Интерфейсы определяют контракт, который должен быть реализован классами. Они могут содержать объявления методов, свойств, событий и индексаторов, но не содержат реализации.


// Объявление интерфейса IExample
public interface IExample
{
// Метод без реализации
void DoSomething();

// Свойство без реализации
int Value { get; set; }
}


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

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12💯2
SQL-инъекция — это уязвимость безопасности, которая позволяет злоумышленникам вмешиваться в запросы к базе данных, вводя вредоносный SQL-код. Для предотвращения SQL-инъекций рекомендуется использовать параметризованные запросы и ORM-библиотеки, которые автоматически обрабатывают вводимые данные.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Поколение в сборке мусора — это концепция, используемая для оптимизации процесса управления памятью в .NET, где объекты разделяются на поколения (0, 1 и 2) в зависимости от их времени жизни. Это позволяет сборщику мусора более эффективно управлять памятью, так как объекты, которые живут дольше, проверяются реже, чем те, которые создаются и удаляются быстро.

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
🔵IReadOnlyCollection<T> — это интерфейс, который предоставляет возможность работать с коллекцией, элементы которой доступны только для чтения. Он наследуется от IEnumerable<T> и гарантирует, что коллекция не будет изменена после создания.

🔵Основное свойство — Count, которое возвращает количество элементов в коллекции. IReadOnlyCollection<T> часто используется для передачи данных, когда необходимо предотвратить изменение коллекции.

public void ProcessData(IReadOnlyCollection<int> data)
{
// Перебор элементов коллекции
foreach (var item in data)
{
// Обработка элемента
}
}


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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
API (Application Programming Interface) — это набор определений и протоколов, который позволяет различным программным приложениям взаимодействовать друг с другом, предоставляя доступ к их функциональности и данным. API используется для интеграции приложений, облегчая обмен данными и функциональностью между различными системами и сервисами.

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
Массивы — это коллекции фиксированного размера, содержащие элементы одного типа. Объявление массива включает указание типа элементов и размера.


using System;

class Program {
static void Main() {
// Объявление и инициализация массива
int[] numbers = new int[5] {1, 2, 3, 4, 5};

// Доступ к элементам массива
Console.WriteLine(numbers[0]); // Вывод: 1

// Изменение значения элемента
numbers[0] = 10;

// Перебор массива с помощью цикла
foreach (int number in numbers) {
Console.WriteLine(number); // Вывод: 10 2 3 4 5
}
}
}


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

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Func и Action — это обобщенные делегаты, используемые для представления методов.

😊 Func представляет метод, который возвращает значение. Он может принимать от 0 до 16 параметров, последний параметр указывает тип возвращаемого значения.

🔘 Action представляет метод, который не возвращает значение (void). Он может принимать от 0 до 16 параметров.

Func<int, int, int> add = (x, y) => x + y; // Func принимает два int и возвращает int
int result = add(2, 3); // result = 5

Action<string> greet = name => Console.WriteLine($"Hello, {name}!"); // Action принимает строку и ничего не возвращает
greet("World"); // Выведет: Hello, World!


Func используется, когда нужен результат, Action — для выполнения действий без возврата значения.

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

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

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