C# | Вопросы собесов
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
نمایش بیشتر5 009
مشترکین
-124 ساعت
-27 روز
+1730 روز
آرشیو پست ها
5 011
🤔 Как браузер отправляет запрос и получает ответ от API?
1. Браузер отправляет HTTP-запрос к серверу, указывая метод (например, GET или POST), заголовки и данные (если нужно).
2. Сервер обрабатывает запрос, взаимодействует с API и возвращает HTTP-ответ с данными или кодом состояния.
3. Ответ содержит тело, заголовки и статус выполнения запроса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
🤔 Строки - значимый или ссылочный тип?
В 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 011
🛡Хотите строить защищенные и масштабируемые микросервисы с помощью ASP.NET Core?
Присоединяйтесь к открытому уроку 17 апреля в 20:00 МСК и узнайте, как создать безопасные микросервисы с использованием JWT, OpenID Connect, и .NET Aspire. Мы разберем, как защитить API, оптимизировать производительность и внедрить современные подходы к аутентификации и авторизации.
❗️Что разберем:
- Принципы и преимущества архитектуры микросервисов.
- Защиту API с использованием JWT и OpenID Connect.
- Инструменты .NET Aspire для оркестрации сервисов и настройки окружения.
- Реальные шаги по созданию микросервисов, настройке безопасности и работе с Docker.
🚀 Урок пройдет в преддверии старта курса «C# ASP.NET Core разработчик». 🎁 Все участники получат скидку на обучение по промокоду: ASP_NET_04.
Присоединяйтесь: https://otus.pw/04O7/
Промокод действителен до 28.04.2025
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
5 011
Дарим подписку на Яндекс Музыку
Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких.
Кинопоиск и Яндекс Книги тоже в подписке.
Попробуйте бесплатно❤️
Попробовать
#реклама 18+
music.yandex.ru
О рекламодателе
Реклама на Яндексе
5 011
Repost from easyoffer
🎉 Easyoffer 2.0 — самый успешный краудфандинг в истории рунета в категории "Технологии"!
Мы это сделали! За считанные часы после старта, благодаря вашей поддержке, проект не просто стартовал — он взлетел.
💸 Собрано: 2 276 840 рублей
Это не просто цифра — это ваше доверие, ваша вера в идею, и ваша инвестиция в будущее карьеры сотен (а скоро — тысяч) специалистов.
💼 Благодаря этой сумме мы уже:
— Наняли ещё пару разработчиков и аналитиков
— Запустили активный сбор и разметку новых данных
— Ускорили разработку и подняли планку качества
Спасибо каждому, кто поверил в нас на старте! Дальше — только масштабирование и развитие. Мы строим сервис, который станет must-have для всех, кто ищет работу в IT.
👉 Присоединяйтесь сейчас — это только начало.
5 011
🤔 Можно ли передать строку в lock?
Можно, но не рекомендуется. Строки могут быть разделяемыми между разными частями программы, даже если они написаны одинаково. Это может привести к неожиданным блокировкам. Лучше использовать уникальные объекты, специально созданные для блокировки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
🤔 Какие есть виды привязок данных и когда применяются?
Привязка данных (Data Binding) — это механизм, который позволяет автоматически синхронизировать данные между источником (например, моделью) и интерфейсом (например, элементами UI).
🚩Односторонняя привязка (One-Way Binding)
Данные идут только в одном направлении: из модели в UI.
- Для вывода данных, которые не должны изменяться пользователем
- Например, для отображения текущего времени
Пример в WPF
<TextBlock Text="{Binding UserName}" />
🚩Двусторонняя привязка (Two-Way Binding)
Данные синхронизируются в обе стороны: UI ↔️ Модель
- В формах ввода (например, TextBox), чтобы обновлять данные в модели
- Используется в MVVM
Пример в WPF
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
🚩Привязка к событиям (Event Binding)
Позволяет связывать UI с методами обработки событий.
- Для обработки кнопок (Button.Click)
- В реактивных фреймворках (Blazor, WinForms)
Пример в Blazor
<button @onclick="IncrementCount">Добавить</button>
@code {
private int count = 0;
private void IncrementCount() => count++;
}
🚩Привязка к командам (Command Binding)
Используется в паттерне MVVM вместо событий
- В WPF и Xamarin
- Позволяет отделить логику от UI
Пример в WPF
<Button Content="Сохранить" Command="{Binding SaveCommand}" />
🚩Привязка к коллекциям (ItemsSource Binding)
Позволяет привязывать списки к элементам UI (ListBox, DataGrid)
- В списках, таблицах, дропдаунах
Пример в WPF
<ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Name" />
Ставь 👍 и забирай 📚 Базу знаний5 011
Ищешь высокооплачиваемые проекты? Попробуй SkillStaff
SkillStaff — это платформа для ИТ-специалистов, менеджеров и креаторов, которым мало одного оклада. Здесь можно найти клиентов, выполнять их проекты и увеличивать свой доход.
- Проекты с гибким графиком: part time, full time, удаленка и гибрид
- Ставка за час работы — та, что ты сам выбрал
- Клиенты — ведущие бренды, проверенные с юридической точки зрения при регистрации на платформе
- Оплата поступает ежемесячно на расчетный счет исполнителя
- Удобный личный кабинет и функционал, автоматизирующий документооборот
Все, что нужно для работы — иметь статус самозанятого или ИП, а платформа поможет со всеми нюансами.
Регистрируйся прямо сейчас
Зарегистрироваться
#реклама 16+
skillstaff.ru
О рекламодателе
5 011
🤔 Какие есть виды приведения типов?
1. Явное (explicit) — требует указания типа вручную. Может привести к ошибке времени выполнения.
2. Неявное (implicit) — происходит автоматически, когда не теряется информация.
3. Пользовательское (custom) — через оператор operator или as/is.
4. Boxing/Unboxing — упаковка значимых типов в объект и обратно.
5. Приведение интерфейсов/наследования — преобразование к базовому или интерфейсному типу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
🤔 Как проводить тестирование и отладку?
Тестирование программного обеспечения включает планирование тестов, их выполнение для проверки функциональности и других аспектов, а отладка занимается устранением найденных в ходе тестирования ошибок через анализ кода и логов.
🟠Использование отладчика (Debugger)
Visual Studio предоставляет мощные инструменты отладки. Основные возможности включают установку точек останова (breakpoints), пошаговое выполнение кода (step over, step into, step out), просмотр значений переменных и выражений.
1⃣Установка точки останова: Нажмите слева от строки кода, где нужно остановиться, или используйте клавишу F9.
2⃣Запуск отладки: Нажмите F5 или выберите "Debug -> Start Debugging".
3⃣Пошаговое выполнение: Используйте F10 (step over), F11 (step into) и Shift+F11 (step out).
🟠Использование `Debug` и `Trace`
Для вывода отладочной информации можно использовать классы
Debug и Trace из пространства имен System.Diagnostics.
using System.Diagnostics;
public class Program
{
public static void Main()
{
Debug.WriteLine("This is a debug message.");
Trace.WriteLine("This is a trace message.");
}
}
🟠Журналирование (Logging)
Использование журналирования позволяет записывать события и ошибки во время выполнения приложения. В .NET Core и ASP.NET Core используется встроенная система логирования.
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Executing Index method");
return View();
}
}
🟠Анализ дампов памяти
В случае критических ошибок можно анализировать дампы памяти для диагностики проблем. Используйте WinDbg или Visual Studio для анализа дампов.
Ставь 👍 и забирай 📚 Базу знаний5 011
🤔 Зачем нужны операторы?
Операторы в C# позволяют:
- Выполнять арифметические, логические и побитовые операции (+, -, &&, |, <<, ++).
- Сравнивать значения (==, !=, >, <).
- Управлять потоком исполнения (??, ?:, is, as, await).
- Создавать собственные операторы перегрузки (например, operator + для собственного класса).
Операторы — важная часть языка, они позволяют делать код лаконичным, выразительным и типобезопасным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
Repost from easyoffer
⏳ Осталось всего 14 дней до завершения краудфандинга
Сейчас самое подходящее время подключиться, если вы ждали или откладывали:
Все, кто поддержат проект сейчас, до релиза, получат:
🚀 PRO-доступ на 1 год по цене месячной подписки
➕ Бета-доступ к EasyOffer 2.0 (конец мая)
👉 Поддержать: https://planeta.ru/campaigns/easyoffer
5 011
🤔 Что такое метод Finalize?
Метод Finalize() представляет собой специальный метод, который предназначен для выполнения финальной очистки ресурсов перед тем, как объект будет уничтожен сборщиком мусора. Это метод, который может быть определен в классе для очистки неуправляемых ресурсов, если класс не реализует интерфейс
IDisposable.
🚩Особенности метода
🟠Автоматический вызов
Сборщик мусора автоматически вызывает Finalize() на объекте, который не имеет других активных ссылок и который определяет финализатор. Это происходит непосредственно перед тем, как сборщик мусора освобождает память, занимаемую объектом.
🟠Определение в базовом классе `Object`
Все объекты наследуют от базового класса Object, который предоставляет реализацию Finalize(). Однако в большинстве случаев Finalize() не имеет реализации и не делает ничего, пока не будет переопределен в производном классе.
🟠Замедление сборки мусора
Наличие объектов с финализаторами может замедлить процесс сборки мусора, так как объекты, требующие финализации, должны быть обработаны дважды: сначала они помещаются в очередь финализации, а затем их память освобождается после выполнения Finalize().
class ResourceWrapper
{
// Конструктор
public ResourceWrapper() {
// Инициализация ресурсов
}
// Финализатор
~ResourceWrapper() {
// Код очистки ресурсов
}
}
Ставь 👍 и забирай 📚 Базу знаний5 011
🤔 Как оптимизировать ситуацию, когда к таблице много join?
1. Проверить необходимость всех join — убрать ненужные связи.
2. Использовать индексы — создать индексы на ключевых колонках.
3. Разделить запрос — разбить сложный запрос на несколько более простых.
4. Использовать denormalization — объединить часто используемые данные в одну таблицу.
5. Кэшировать данные — уменьшить нагрузку на базу данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
Научим школьников создавать собственные сайты. Бесплатно
Бесплатный мастер-класс для детей возраста 12-18 лет независимо от уровня знаний в программировании.
✅Педагоги из Университета Иннополис в простой форме обучат основам языков программирования HTML и CSS, а также их применению для создания уникальных веб-страниц.
Всего за одно занятие Ваш ребёнок научится самостоятельно программировать сайты и сможет реализовывать собственные замыслы с дальнейшем!
⚡Не упустите возможность подарить ребёнку уникальные знания от ведущего ИТ ВУЗа страны. Кто знает, возможно, это станет фундаментом для востребованной профессии в будущем или просто полезным хобби в настоящем...
Попробуем?
Регистрируйтесь для участия, количество мест ограничено.
Записаться онлайн
#реклама 16+
progmatica.innopolis.university
О рекламодателе
5 011
🤔 Какие есть методы запросов жизненного цикла в asp.net Core?
В ASP.NET Core жизненный цикл запроса проходит несколько этапов — от получения HTTP-запроса до отправки ответа. В этом процессе участвуют Middleware, контроллеры, фильтры и обработчики событий.
🚩Основные этапы жизненного цикла запроса
Получение запроса (
HttpContext создаётся)
Обработка через Middleware (передача запроса вниз)
Маршрутизация (Routing) — определение контроллера
Фильтры (например, аутентификация)
Вызов контроллера и метода (Action)
Обратный проход через Middleware (формирование ответа)
Отправка ответа клиенту
🚩Методы Middleware (Промежуточное ПО)
Middleware — это основной механизм обработки запросов.
Где регистрируются? → В Program.cs (в app.Use...)
Методы Middleware
app.Use(async (context, next) =>
{
Console.WriteLine("Перед обработкой запроса");
await next(); // Передаём запрос дальше
Console.WriteLine("После обработки запроса");
});
🚩Методы в контроллерах (`Controller`)
Контроллер обрабатывает запросы после маршрутизации.
Основные методы
public class HomeController : Controller
{
// Метод вызывается при GET-запросе
public IActionResult Index()
{
return View();
}
// Метод вызывается при POST-запросе
[HttpPost]
public IActionResult SubmitForm(FormModel model)
{
return RedirectToAction("Index");
}
}
🚩Фильтры (`Filters`)
Фильтры выполняются до и после вызова контроллера.
Методы фильтров
public class MyActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
Console.WriteLine("Перед вызовом метода контроллера");
}
public void OnActionExecuted(ActionExecutedContext context)
{
Console.WriteLine("После вызова метода контроллера");
}
}
🚩Методы жизненного цикла в `Program.cs`
В ASP.NET Core 6+ вся конфигурация находится в Program.cs.
Методы инициализации
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews(); // Подключаем MVC
var app = builder.Build();
app.UseRouting(); // Включаем маршрутизацию
app.UseAuthorization(); // Проверка прав
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // Подключаем контроллеры
});
app.Run();
Ставь 👍 и забирай 📚 Базу знаний5 011
Бесплатное льготное обучение: 3 месяца
Ищем людей, которые хотят обучиться и работать в IT-сфере из дома
В конце обучения вы пройдете стажировку и устроитесь на работу с зп от 150.000 рублей
Образование, место жительства, трудовой стаж — не важны!
Для старта нужно:
— пройти короткий тест
— заполнить анкету
На что можно рассчитывать, после обучения:
✅ удаленная работа
✅ зп от 150.000 рублей (потолка нет)
✅ стабильная подработка, если не хотите уходить с основной работы
⚡ Осталось всего 47 бесплатных мест. Успейте пройти тест и оставить заявку:
Узнать больше
#реклама 16+
technolium.ru
О рекламодателе
5 011
🤔 Что такое I/O bound и CPU bound?
- I/O-bound — задачи, основное время которых уходит на ожидание внешних операций: чтение файлов, запросы в сеть или базу данных.
Решение: использовать асинхронность, чтобы не блокировать поток.
- CPU-bound — задачи, требующие активных вычислений, загрузки процессора (например, шифрование, расчёты).
Решение: запускать на отдельных потоках или использовать параллелизм.
Знание разницы помогает выбрать стратегию оптимизации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 011
🤔 В чём разница статических и нестатических классов?
В C# классы могут быть статическими (
static) и нестатическими (обычными). Разница в том, как они используются и хранят данные.
🚩Статические классы (`static`)
Не могут создавать объекты (экземпляры)
Содержат только статические (static) методы и поля
Не могут наследоваться и не могут быть унаследованы
Используются для утилитарных методов, глобальных констант и вспомогательных функций
public static class MathHelper
{
public static int Square(int x) => x * x;
}
Использование
int result = MathHelper.Square(5); // 25
🚩Нестатические (обычные) классы
Можно создавать экземпляры (new)
Могут содержать как статические, так и нестатические члены
Можно наследовать от других классов
Используются для работы с данными
public class Car
{
public string Model { get; set; }
public void Drive()
{
Console.WriteLine($"{Model} едет!");
}
}
Использование
Car myCar = new Car { Model = "Tesla" };
myCar.Drive(); // Tesla едет!
Ставь 👍 и забирай 📚 Базу знаний5 011
🤔 Что такое паттерн Event Sourcing?
Это подход, при котором состояние системы сохраняется как последовательность событий. Вместо хранения текущего состояния, каждое событие, изменяющее состояние, записывается, что позволяет восстанавливать любое прошлое состояние.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
