C# | Вопросы собесов
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
نمایش بیشتر5 013
مشترکین
+124 ساعت
+47 روز
+1930 روز
آرشیو پست ها
5 013
Авторизованные курсы по оборудованию Eltex от дилера №1
Проводим учебные курсы, включающие практические занятия и лабораторные работы.
По итогу успешной сдачи экзаменов обучающемуся выдаётся официальный сертификат от завода Eltex.
⚡Обучение в офисе или онлайн
⚡Опытный преподавательский состав
⚡Лабораторные работы - 50% времени
⚡Обучение юридических и физических лиц
Записаться
#реклама 16+
eltexcm.ru
О рекламодателе
5 013
🤔 Что такое куки и где оно хранится в запросе?
Это небольшие файлы данных, хранящиеся на стороне клиента и отправляемые серверу с каждым запросом.
1. Они содержатся в заголовке HTTP-запроса (Cookie).
2. Используются для хранения сессий, предпочтений пользователя и другой информации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
🤔 Как браузер отправляет запрос и получает ответ от API?
Когда браузер отправляет запрос и получает ответ от API, это включает несколько шагов, которые следуют HTTP-протоколу. Этот процесс включает в себя создание и отправку HTTP-запроса, обработку на сервере и получение HTTP-ответа.
🚩Отправка запроса
🟠Инициация запроса
Обычно запрос инициируется через JavaScript с использованием встроенных функций, таких как
XMLHttpRequest, fetch или сторонние библиотеки, такие как Axios.
fetch('https://api.example.com/data', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
🟠Формирование HTTP-запроса
Метод: Указывает тип запроса (например, GET, POST, PUT, DELETE). URL: Указывает на какой URL отправляется запрос. Заголовки (Headers): Включают информацию о типе содержимого, авторизации и других метаданных. Тело (Body): Содержит данные, которые отправляются с запросом (для методов POST, PUT и PATCH).
🟠Отправка запроса
Браузер использует сетевые протоколы для отправки сформированного HTTP-запроса на указанный сервер через интернет.
🚩Обработка запроса на сервере
1⃣Получение запроса
Сервер получает HTTP-запрос.
2⃣Обработка запроса
Сервер обрабатывает запрос, выполняя соответствующие действия, такие как чтение данных из базы данных, выполнение логики приложения или взаимодействие с другими сервисами.
3⃣Формирование ответа
Статус код (Status Code): Указывает результат обработки запроса (например, 200 OK, 404 Not Found, 500 Internal Server Error). Заголовки (Headers): Могут включать метаданные о содержимом ответа, кэшировании и других параметрах. Тело (Body): Содержит данные, которые отправляются обратно клиенту, часто в формате JSON или XML.
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 85
{
"id": 1,
"name": "Example",
"description": "This is an example response"
}
🚩Получение ответа
1⃣Получение ответа
Браузер получает HTTP-ответ от сервера.
2⃣Обработка ответа
Статус код: Браузер или JavaScript-код проверяет статус код, чтобы определить, был ли запрос успешным. Заголовки: Заголовки могут быть использованы для получения дополнительной информации о ответе. Тело: Браузер разбирает тело ответа, если это необходимо, например, преобразует JSON-данные в объект JavaScript.
3⃣Использование данных
Полученные данные могут быть использованы в приложении для обновления интерфейса пользователя, хранения в локальном хранилище или выполнения других действий.
🚩Пример полного цикла запроса и ответа
Отправка запроса
fetch('https://api.example.com/data', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
}
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
return response.json();
})
.then(data => {
console.log('Data received:', data);
// Используем данные для обновления UI или других целей
})
.catch(error => {
console.error('There has been a problem with your fetch operation:', error);
});
Ставь 👍 и забирай 📚 Базу знаний5 013
Ключевое ИБ-событие года
SOC Forum — одно из крупнейших событий в сфере ИБ, которое проходит в рамках Российской недели кибербезопасности.
✅ Здесь встречаются эксперты, представители бизнеса и госструктур, чтобы обсудить ключевые вызовы отрасли. Событие, которое нельзя пропустить.
Для тех, кто не может присутствовать лично, будет запущена онлайн-трансляция:
👌 Переключайтесь между залами.
👌 Выбирайте только актуальные для вас выступления.
👌 Задавайте вопросы спикерам в прямом эфире.
👌 Участвуйте в интерактивах.
И все это не выходя из дома.
Зарегистрируйтесь, и мы напомним о старте трансляции и пришлем ссылку, чтобы вы ничего не пропустили.
Узнать больше
#реклама 16+
registration.forumsoc.ru
О рекламодателе
5 013
🤔 В чём разница между var и dynamic?
- var — тип определяется на этапе компиляции. После компиляции он получает конкретный тип. Статическая типизация.
- dynamic — тип определяется во время выполнения. Ошибки типа могут проявиться только в рантайме.
var безопаснее, dynamic гибче, но требует осторожности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
🤔 В каком случае использовать интерфейс, в каком абстрактный класс?
Выбор между интерфейсом и абстрактным классом в C# зависит от нескольких факторов, таких как потребности в наследовании, степень общности, возможность множественного наследования и необходимость реализации по умолчанию.
🚩Когда использовать интерфейсы
🟠Множественное наследование
Класс может реализовывать несколько интерфейсов, но наследоваться только от одного класса. Используйте интерфейсы, когда требуется множественное наследование.
public interface IDriveable
{
void Drive();
}
public interface IFlyable
{
void Fly();
}
public class FlyingCar : IDriveable, IFlyable
{
public void Drive() { /* Реализация вождения */ }
public void Fly() { /* Реализация полета */ }
}
🟠Общее поведение без реализации
Используйте интерфейсы, чтобы определить общий набор методов и свойств без предоставления какой-либо реализации. Это позволяет разным классам реализовать интерфейс по-своему.
public interface IShape
{
double GetArea();
}
public class Circle : IShape
{
public double Radius { get; set; }
public double GetArea() => Math.PI * Radius * Radius;
}
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public double GetArea() => Width * Height;
}
🟠Гибкость и полиморфизм
Интерфейсы позволяют легко менять реализацию и обеспечивают гибкость в коде. Можно использовать интерфейсы для создания полиморфных коллекций или методов, которые работают с разными реализациями интерфейсов.
public void DrawShapes(IEnumerable<IShape> shapes)
{
foreach (var shape in shapes)
{
Console.WriteLine($"Area: {shape.GetArea()}");
}
}
🚩Когда использовать
🟠Частичная реализация
Используйте абстрактные классы, если вы хотите предоставить некоторую общую реализацию, которую могут использовать подклассы. Абстрактные классы могут содержать как абстрактные, так и не абстрактные методы.
public abstract class Animal
{
public abstract void MakeSound();
public void Sleep() => Console.WriteLine("Sleeping");
}
public class Dog : Animal
{
public override void MakeSound() => Console.WriteLine("Bark");
}
🟠Шаблонный метод
Абстрактные классы хорошо подходят для реализации паттерна "Шаблонный метод", где общий алгоритм реализован в абстрактном классе, а конкретные шаги определены в подклассах.
public abstract class Game
{
public void Play()
{
Initialize();
StartPlay();
EndPlay();
}
protected abstract void Initialize();
protected abstract void StartPlay();
protected abstract void EndPlay();
}
public class Football : Game
{
protected override void Initialize() => Console.WriteLine("Football Game Initialized");
protected override void StartPlay() => Console.WriteLine("Football Game Started");
protected override void EndPlay() => Console.WriteLine("Football Game Ended");
}
Ставь 👍 и забирай 📚 Базу знаний5 013
Программируешь? Участвуй в олимпиаде Высшая проба
Сделай шаг в IT вместе с Яндексом и ВШЭ — прими участие в олимпиаде по промышленному программированию!
Победителям — БВИ или 100 баллов по профильному предмету в лучших вузах России.
Регистрируйся до 20 октября!
Узнать больше
#реклама
olymp.hse.ru
О рекламодателе
5 013
🤔 Что занимает меньше памяти: класс или структура?
Структура (значимый тип) занимает меньше памяти, потому что:
- Хранится в стеке или внутри другого объекта, без дополнительной накладной информации.
- Не требует хранения метаданных о типе, как у класса.
- Не использует сборщик мусора (GC) для удаления.
Однако слишком большие или часто копируемые структуры могут быть менее эффективны.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
🤔 Какая есть классификация у кучи?
В информатике и программировании куча (heap) может классифицироваться по нескольким критериям. Рассмотрим основные виды:
🟠По назначению:
Куча памяти (Memory Heap)
Используется для динамического выделения памяти в приложениях.
В C# это управляется сборщиком мусора (GC - Garbage Collector).
Примеры: объекты, созданные с помощью
new, выделяются в управляемой куче.
🟠Структура данных «Куча» (Heap Data Structure)
Это специальная бинарная структура данных, используемая в алгоритмах, например, в сортировке (Heap Sort) или в приоритетных очередях.
Бывает максимальная куча (max-heap) и минимальная куча (min-heap).
🚩По типу управления памятью (для кучи памяти в языках программирования):
🟠Управляемая куча (Managed Heap)
В C# и .NET память выделяется и освобождается автоматически с помощью GC. Разделяется на поколения (Generation 0, 1, 2), что оптимизирует работу сборщика мусора.
🟠Неуправляемая куча (Unmanaged Heap)
Применяется в C/C++ и низкоуровневом коде, где управление памятью выполняется вручную (malloc/free, new/delete). В C# тоже можно работать с ней через Marshal или Unsafe код.
🟠По структуре данных (Heap Data Structure):
🟠Максимальная куча (Max Heap)
Корневой узел содержит наибольшее значение, а дочерние узлы – меньшее. Используется в алгоритмах приоритетных очередей.
🟠Минимальная куча (Min Heap)
Корневой узел содержит наименьшее значение, а дочерние узлы – большее. Применяется в алгоритме Дейкстры и других задачах.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<int, int> minHeap = new PriorityQueue<int, int>();
minHeap.Enqueue(5, 5);
minHeap.Enqueue(3, 3);
minHeap.Enqueue(8, 8);
minHeap.Enqueue(1, 1);
while (minHeap.Count > 0)
{
Console.WriteLine(minHeap.Dequeue()); // Выведет: 1, 3, 5, 8
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 013
Открытый урок: бизнес-логика в микросервисах
Разработка в микросервисах — это не только разбиение на сервисы, но и грамотное распределение логики.
22 октября в 19:00 мск — открытый урок для разработчиков и архитекторов. Узнаете, где должна жить бизнес-логика. Запишитесь!
Зарегистрироваться
#реклама 16+
otus.ru
О рекламодателе
5 013
🤔 Какие есть виды приведения типов?
1. Явное (explicit) — требует указания типа вручную. Может привести к ошибке времени выполнения.
2. Неявное (implicit) — происходит автоматически, когда не теряется информация.
3. Пользовательское (custom) — через оператор operator или as/is.
4. Boxing/Unboxing — упаковка значимых типов в объект и обратно.
5. Приведение интерфейсов/наследования — преобразование к базовому или интерфейсному типу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
🤔 Можно ли generic методы использовать не в generic классах?
Да, можно! Обобщённые (
generic) методы могут существовать в обычных (не-generic) классах.
🚩Как это работает?
Generic-метод — это метод, у которого тип параметра задаётся при вызове, даже если сам класс не является обобщённым.
Пример: Обобщённый метод в обычном классе
public class Utils
{
public static void Print<T>(T value) // Обобщённый метод
{
Console.WriteLine($"Тип: {typeof(T)}, Значение: {value}");
}
}
class Program
{
static void Main()
{
Utils.Print(100); // Тип: System.Int32, Значение: 100
Utils.Print("Hello"); // Тип: System.String, Значение: Hello
Utils.Print(3.14); // Тип: System.Double, Значение: 3.14
}
}
Ставь 👍 и забирай 📚 Базу знаний5 013
REKONFA: что интересного вас ждёт 15 октября
15 октября встречаемся на REKONFA — большой конференции Яндекс Рекламы.
На сцене:
— Глеб Доброрадных — о рекламном рынке и эффективности в сложных условиях
— Алексей Штоколов — о новых продуктах и технологиях
— Лиза Смирнова — о 360°-форматах и новых точках контакта
— Александр Пушной — о человеке и ИИ
— Александр Умаров — о персональном подходе, который помогает влюблять клиентов в бренд
— Яна Чурикова — об актуальных задачах предпринимателей
— Татьяна Мужицкая — о целях и энергии
— Антон Беляев — об индивидуальности и проектах, которые любят зрители
Вне сцены — зона продуктов Яндекс Рекламы, три игры, викторина, зоны Яндекс Ярда и eLama и нетворкинг.
15 октября, Москва, ВТБ Арена и онлайн. Участие бесплатное.
Зарегистрироваться
#реклама 16+
ya.rekonfa.ru
О рекламодателе
5 013
🤔 В качестве ключа могут использоваться одинаковые значения?
В Dictionary ключи должны быть уникальными.
Если попытаться добавить второй раз ключ с тем же значением — произойдёт исключение.
Значения (value) при этом могут повторяться, ограничение касается только ключей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
🤔 Что такое Dispose?
Dispose метод является частью паттерна управления ресурсами, известного как "Dispose Pattern". Этот метод реализуется в классах через интерфейс
IDisposable. Цель — явное освобождение неуправляемых ресурсов и, по желанию, управляемых ресурсов, прежде чем сборщик мусора освободит объект. Это важно для эффективного управления памятью и другими системными ресурсами.
🚩Неуправляемые и управляемые ресурсы
🟠Неуправляемые ресурсы
включают в себя ресурсы, которые не управляются средой CLR (Common Language Runtime), например, файловые дескрипторы, сетевые соединения или указатели на память, выделенную вне .NET среды.
🟠Управляемые ресурсы
это объекты .NET, которые занимают память и потенциально удерживают ссылки на неуправляемые ресурсы.
🚩Как он работает
Должен освобождать все неуправляемые ресурсы, занимаемые объектом, а также должен иметь возможность освобождать управляемые ресурсы, если это необходимо. Как правило, управляемые ресурсы освобождаются сами сборщиком мусора, но если управляемый ресурс включает в себя неуправляемые ресурсы, тогда Dispose может быть вызван для их явного освобождения.
public class ResourceHolder : IDisposable
{
private bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Освобождение управляемых ресурсов
}
// Освобождение неуправляемых ресурсов
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Пример использования Dispose
using (var resource = new ResourceHolder())
{
// Использование ресурса
}
// Метод Dispose автоматически вызывается при выходе из блока using
Ставь 👍 и забирай 📚 Базу знаний5 013
Яндекс Музыка до 360 дней бесплатно
Яндекс Музыка для вас и 3-х ваших близких.
Кинопоиск и Яндекс Книги тоже в мультиподписке Плюс.
Попробуйте бесплатно❤️
Слушать
#реклама 18+
music.yandex.ru
О рекламодателе
5 013
🤔 Что такое принцип подстановки Барбары Лисков?
Принцип подстановки Лисков (LSP) гласит, что объект производного класса должен быть взаимозаменяем с объектом базового класса без нарушения корректности программы.
1. Наследники не должны изменять поведение, ожидаемое от базового класса.
2. Нарушение LSP приводит к труднообнаруживаемым ошибкам и нарушению принципов SOLID.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 013
Аренда и размещение серверов в дата-центрах Москвы
ITSOFT оказывает услуги коммерческого дата-центра в Москве.
👌Аренда физических выделенных серверов (Dedicated Servers) в готовых конфигурациях и в рамках индивидуальных сборок.
👌Colocation и аренда серверных стоек.
👌Предоставление инфраструктурных ИТ-решений для физических лиц и корпоративных клиентов.
👌Предоставление высокоскоростных каналов передачи данных.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе
5 013
🤔 Строки - значимый или ссылочный тип?
В C# строки (
string) являются ссылочным типом, но ведут себя как значимый тип из-за своей неизменяемости (immutability).
🚩`string` – это ссылочный тип
В C# все классы (class) – ссылочные типы, и string не исключение.
- Переменная string хранит ссылку на объект в памяти, а не сам текст.
- Две переменные могут ссылаться на один и тот же объект.
string str1 = "Hello";
string str2 = str1; // str2 теперь указывает на тот же объект, что и str1
Console.WriteLine(object.ReferenceEquals(str1, str2)); // True
🚩`string` – неизменяемый тип (Immutable)
Хотя string – ссылочный тип, каждое изменение строки создаёт новый объект в памяти, а не модифицирует существующий.
string str = "Hello";
str += " World"; // Создаётся новый объект в памяти
🚩Почему `string` ведёт себя как значимый тип?
Неизменяемость (Immutability) – строка не меняется после создания.
Операции со строками создают новые объекты (как копирование значимых типов).
Сравнение строк по значению (==), а не по ссылке (как у ссылочных типов). 1210
string s1 = "hello";
string s2 = "hello";
Console.WriteLine(s1 == s2); // True (сравниваются значения, а не ссылки)
Ставь 👍 и забирай 📚 Базу знаний5 013
Пишете на C#, но веб — пока набор задач?
Соберите целостную картину на курсе «C# ASP.NET Core-разработчик». Backend, frontend, БД, Docker, Kubernetes, CI/CD. Scrum, командная работа, практикующие преподаватели. Старт 30 сентября, успейте на курс!
Узнать больше
