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
Наследование — это механизм объектно-ориентированного программирования, который позволяет одному классу (наследнику) унаследовать поля и методы другого класса (родителя). Это способствует повторному использованию кода и упрощает его поддержку, позволяя создавать более сложные структуры на основе существующих классов.

✈️ С# собеседования
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
🔘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