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🔥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
🖇Для чтения JSON-файла можно использовать библиотеку Newtonsoft.Json. Сначала необходимо установить пакет Newtonsoft.Json через NuGet. Затем можно использовать следующий код:


using System.IO;
using Newtonsoft.Json;

class Program
{
static void Main()
{
// Чтение содержимого JSON-файла
string json = File.ReadAllText("data.json");

// Десериализация JSON в объект
var data = JsonConvert.DeserializeObject<MyData>(json);

// Использование данных
// ...
}
}

class MyData
{
// Определение свойств, соответствующих структуре JSON
public string Name { get; set; }
public int Age { get; set; }
}


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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤩2👀1
Метод Dispose() реализует интерфейс IDisposable и используется для освобождения неуправляемых ресурсов, таких как файлы, сетевые соединения или память, выделенная вне CLR. Его вызов вручную или с помощью конструкции using гарантирует своевременное освобождение ресурсов, улучшая производительность и предотвращая утечки памяти.

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


using System;
using System.Threading.Tasks;

class Program {
static void Main() {
Task<int> task = Task.Run(() => {
// Выполняемая задача
return 42;
});

task.ContinueWith(t => {
// Продолжение после завершения задачи
Console.WriteLine($"Result: {t.Result}");
});

Console.ReadLine();
}
}


ContinueWith() позволяет организовать асинхронное выполнение, улучшая читаемость и управление потоками.

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

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
👉 == и Equals — операторы сравнения, но работают по-разному. == проверяет равенство ссылок для ссылочных типов и значение для примитивных типов. Его поведение можно переопределить.


string a = "hello";
string b = "hello";
bool result = (a == b); // true, сравнивает значения строк


👉 Equals — метод, который сравнивает содержимое объектов. По умолчанию, для ссылочных типов проверяет равенство ссылок, но может быть переопределён для сравнения содержимого.


object obj1 = new object();
object obj2 = new object();
bool isEqual = obj1.Equals(obj2); // false, разные объекты


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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
ASP.NET Core — это кроссплатформенный, высокопроизводительный фреймворк для создания современных облачных и веб-приложений, который является переработанной версией ASP.NET. Основные отличия включают модульную архитектуру, поддержку контейнеров и возможность работы на различных операционных системах, таких как Windows, macOS и Linux.

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