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

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

Backend собеседования - @frontview_backend
C# работа - @frontview_csharp_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🛑 Интерфейс объявляется с помощью ключевого слова 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
Queue и Stack — это структуры данных, которые управляют коллекциями элементов с разными принципами доступа.

Queue (очередь) работает по принципу FIFO (First In, First Out), где первый добавленный элемент будет первым извлечён. Это полезно для задач, где порядок обработки важен, например, в очередях задач.

Stack (стек) работает по принципу LIFO (Last In, First Out), где последний добавленный элемент будет первым извлечён. Это удобно для задач, связанных с отменой операций или рекурсией.


using System;
using System.Collections.Generic;

class Program {
static void Main() {
// Создание и использование очереди
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
Console.WriteLine(queue.Dequeue()); // Выводит 1

// Создание и использование стека
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
Console.WriteLine(stack.Pop()); // Выводит 2
}
}


Queue и Stack обеспечивают эффективное управление элементами в различных сценариях.

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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
HashSet реализует коллекцию, которая хранит уникальные элементы без определенного порядка, используя хеширование для быстрого поиска, добавления и удаления. Его основное преимущество — это высокая производительность операций проверки наличия элемента, которые выполняются в среднем за постоянное время O(1).

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
▶️ В C# конструкция обработки исключений состоит из трех основных блоков: try, catch и finally.

Блок try используется для оборачивания кода, который может вызвать исключение. Если в этом блоке происходит ошибка, управление передается в ближайший блок catch.

Блок catch перехватывает исключение и позволяет выполнить код для обработки ошибки. Можно указать специфичный тип исключения для обработки или использовать базовый класс Exception.

Блок finally выполняется в любом случае, независимо от того, произошло исключение или нет. Этот блок обычно используется для освобождения ресурсов.


try
{
// Ошибочный код
int result = 10 / int.Parse("0");
}
catch (DivideByZeroException ex)
{
// Обработка деления на ноль
Console.WriteLine("Ошибка: деление на ноль.");
}
catch (FormatException ex)
{
// Обработка неверного формата
Console.WriteLine("Ошибка: неверный формат числа.");
}
finally
{
// Код, выполняющийся всегда
Console.WriteLine("Завершение блока try-catch-finally.");
}


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

✈️ С# собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
LINQ (Language Integrated Query) позволяет выполнять запросы к коллекциям, базам данных и другим источникам данных напрямую в коде с использованием синтаксиса, похожего на SQL. Он упрощает работу с данными, предоставляя единый подход для фильтрации, сортировки и преобразования данных.

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

В C# инкапсуляция достигается с помощью модификаторов доступа:
- private: Доступ только внутри класса.
- protected: Доступ внутри класса и производных классов.
- public: Доступ из любого места.
- internal: Доступ в пределах сборки.


class Account {
private decimal balance; // Скрытое поле

public void Deposit(decimal amount) {
if (amount > 0) balance += amount; // Контролируемое изменение
}

public decimal GetBalance() {
return balance; // Контролируемый доступ
}
}


В этом примере поле balance скрыто, а методы Deposit и GetBalance предоставляют контролируемый доступ к нему. Инкапсуляция повышает безопасность и упрощает поддержку кода.

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

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