C# | Вопросы собесов
رفتن به کانال در Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
نمایش بیشتر5 053
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-77 روز
-1530 روز
آرشیو پست ها
5 052
🤔 Как выглядит using после компеляции?
В C#
using используется для автоматического освобождения ресурсов.
Гарантирует вызов Dispose() у объекта, реализующего IDisposable.
После компиляции using превращается в try-finally, где finally вызывает Dispose().
🚩1. `using` → `try-finally`
Код с using
using (var file = new StreamWriter("file.txt"))
{
file.WriteLine("Привет, мир!");
}
После компиляции превращается в
StreamWriter file = new StreamWriter("file.txt");
try
{
file.WriteLine("Привет, мир!");
}
finally
{
if (file != null)
file.Dispose(); // Автоматический вызов Dispose()
}
🚩`using` с `IAsyncDisposable` (C# 8+)
Для асинхронного освобождения ресурсов (DisposeAsync()).
Код с await using
await using (var file = new AsyncResource())
{
await file.DoSomethingAsync();
}
После компиляции превращается в:
var file = new AsyncResource();
try
{
await file.DoSomethingAsync();
}
finally
{
if (file != null)
await file.DisposeAsync();
}
Ставь 👍 и забирай 📚 Базу знаний5 052
🤔 Какие есть базовые делегаты в .NET и в чём их различия?
Основные обобщённые делегаты:
- Action — делегат, который не возвращает значение, но может принимать параметры.
- Func — делегат, который возвращает значение и может принимать параметры.
- Predicate — делегат, который принимает один параметр и возвращает bool (подтип Func).
Различие — в наличии/отсутствии возвращаемого значения и типах параметров.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
🤔 Что такое post?
post чаще всего ассоциируется с HTTP POST-запросами, которые используются для отправки данных на сервер. Это один из основных методов HTTP-протокола наряду с GET, PUT, DELETE и другими.
🚩Основные понятия
🟠HTTP POST-запрос
Метод HTTP, используемый для отправки данных на сервер. Обычно применяется для создания новых ресурсов или передачи данных, которые могут изменять состояние сервера.
🟠Отправка данных
Данные могут быть отправлены в теле запроса в различных форматах, таких как JSON, XML или обычный текст.
🟠Использование в веб-приложениях
POST-запросы широко используются в веб-приложениях для передачи данных от клиента к серверу, например, при отправке формы, загрузке файлов или выполнении AJAX-запросов.
🚩Пример использования HTTP POST-запроса
Для выполнения HTTP POST-запроса в C# часто используется класс HttpClient, который предоставляет удобные методы для взаимодействия с веб-сервисами.
🚩Пример отправки JSON-данных
1⃣Настройка проекта
Убедитесь, что в вашем проекте установлен пакет System.Net.Http (обычно он включен по умолчанию в .NET Core проектах).
2⃣Отправка POST-запроса
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Создаем HttpClient
using (HttpClient client = new HttpClient())
{
// URL-адрес, на который отправляется запрос
string url = "https://example.com/api/resource";
// Данные для отправки
var data = new
{
Name = "John Doe",
Age = 30
};
// Сериализуем данные в JSON
string jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(data);
// Создаем содержимое запроса
StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
// Отправляем POST-запрос
HttpResponseMessage response = await client.PostAsync(url, content);
// Проверяем успешность ответа
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Запрос выполнен успешно.");
}
else
{
Console.WriteLine($"Ошибка: {response.StatusCode}");
}
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 052
В турагентство на удаленку требуются стажеры
Клиентов предоставим. Можно без опыта и совмещая с основной работой или декретом.
С нас обучение с гарантированной стажировкой.
Доход после обучения:
от 50 000₽ до 220 000₽. Оплата в процессе обучения зависит от вашей вовлеченности.
Задачи:
Помогать людям организовывать путешествия:
подбор самых выгодных предложений на отдых со скидкой до 50% в новых сервисах бронирования.
Условия:
✅ Без опыта — обучение с нуля за 2 месяца, первые выплаты в среднем в течение 2 недель;
✅Удаленная работа или совмещение с офисом (по желанию, зависит от вашего города).
Хотите проверить, подойдет ли это вам? Регистрируйтесь на бесплатный вводный урок, на котором узнаете:
— как подбирать туры для себя и близких с выгодой до 40%
— как получать комиссию 7-10% с каждого тура.
Узнать больше
#реклама 16+
via-tourism-school.space
О рекламодателе
5 052
🤔 В чём отличие Dictionary от HashSet?
- Dictionary — это пара "ключ-значение", где ключи уникальны.
- HashSet — множество только ключей, без значений.
Dictionary нужен для сопоставления данных. HashSet — для хранения уникальных значений без привязки к данным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
Как повысить эффективность вебинаров?
Организация продающего вебинара - не простая задача, ведь необходимо предусмотреть множество деталей: удобную дату, вовлекающий контент, методы продвижения и взаимодействия с участниками.
Вебинары от МТС Линк помогают привлекать новых клиентов и увеличивать конверсию из участника в лид. В сервисе доступен анализ поведения пользователей во время вебинара, синхронный перевод, автовебинары и интерактивные инструменты для вовлечения участников.
Делимся методичкой с кейсами, чек-листами и инструкциями для маркетологов, PR и event-менеджеров, чтобы сделать вебинары эффективным инструментом для лидогенерации.
Получите методичку бесплатно на сайте.
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
5 052
🤔 Какие принципы и практики используешь для обеспечения безопасности приложений?
🟠Валидация и Санитизация Входных Данных
Валидация входных данных помогает предотвратить атаки, такие как SQL-инъекции, XSS (межсайтовый скриптинг) и другие. SQL-инъекции: Используйте параметризованные запросы или ORM (например, Entity Framework).
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @username", conn))
{
cmd.Parameters.AddWithValue("@username", username);
// Выполнение команды
}
XSS: Используйте библиотеку для экранирования HTML, например, AntiXSS.
string safeContent = Microsoft.Security.Application.Encoder.HtmlEncode(userInput);
🟠Использование Аутентификации и Авторизации
Обеспечьте надежную аутентификацию и разграничение доступа к ресурсам.
Аутентификация: Используйте современные методы аутентификации, такие как OAuth, OpenID Connect.
Авторизация: Применяйте ролевую или заявочную (claims-based) авторизацию.
[Authorize(Roles = "Admin")]
public IActionResult AdminOnly()
{
return View();
}
🟠Защита от CSRF (Межсайтовая подделка запросов)
Используйте анти-CSRF токены для защиты от CSRF атак.
<form asp-action="Create">
<input type="hidden" name="__RequestVerificationToken" value="@Antiforgery.GetTokens(HttpContext).RequestToken" />
<!-- Другие поля формы -->
</form>
🟠Шифрование и Защита Данных
Шифруйте чувствительные данные как при передаче, так и при хранении.
При передаче: Используйте HTTPS для шифрования данных, передаваемых через сеть.
При хранении: Используйте библиотеки для шифрования, такие как System.Security.Cryptography.
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
// Шифрование данных
}
🟠Логирование и Мониторинг
Внедрите логирование и мониторинг для обнаружения и анализа подозрительной активности.
Логирование: Логируйте важные действия, такие как входы в систему, изменения данных.
Мониторинг: Используйте инструменты мониторинга, такие как Application Insights, для отслеживания состояния приложения.
_logger.LogInformation("User {UserId} logged in.", userId);
🟠Управление Ошибками и Исключениями
Не показывайте подробные сообщения об ошибках пользователям, чтобы не раскрывать внутреннюю структуру приложения.
Обработка исключений: Ловите и корректно обрабатывайте исключения, предоставляя пользователю дружелюбные сообщения.
try
{
// Код, который может вызвать исключение
}
catch (Exception ex)
{
_logger.LogError(ex, "Произошла ошибка.");
return View("Error");
}
🟠Обновления и Патчи
Регулярно обновляйте используемые библиотеки и фреймворки, чтобы закрывать уязвимости.
🟠Минимизация Поверхности Атаки
Удалите или отключите ненужные функции и сервисы, чтобы минимизировать возможные точки входа для атак.
🟠Защита Конфигурации
Защитите конфигурационные файлы, содержащие чувствительную информацию.
Секреты и ключи: Используйте секреты и безопасное хранилище для конфиденциальной информации.
var connectionString = Configuration["ConnectionStrings:DefaultConnection"];
Ставь 👍 и забирай 📚 Базу знаний5 052
💻 Хотите войти в IT и научиться создавать серьёзные проекты на востребованном языке?
С# — отличный старт. Он применим в разработке игр, веба и серверной логики, а значит даёт множество путей для роста.
📗 Курс «C# Developer» от OTUS — это обучение с нуля до уверенного middle-уровня всего за 12 месяцев. Вы освоите ООП, .NET Core, SQL, Git, LINQ, научитесь писать чистый код и реализуете проекты в командной Scrum-разработке.
👨💻 Занятия ведут практикующие разработчики, а вся программа построена на реальных кейсах.
Курс подходит для новичков — никаких профильных знаний не требуется. Вас ждёт путь от первых строчек кода до полноценного backend-проекта в портфолио.
➡️ Оставьте заявку на сайте: https://otus.pw/GRYs/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
5 052
+7
Летние цены на апартаменты в Крыму! от 28 776 руб/мес!
✨Уникальный апарт-комплекс закрытого типа, расположенный прямо у подножия заповедного урочища Алчак-Кая
На охраняемой территории 4 га будет обеспечено уютное, приватное пространство в историческом центре города Судака
-Здесь есть собственная парковая зона и оборудованный пляж в 30 метрах от апартаментов
-Благоустройство апарт-отеля продумано до мелочей, благодаря чему вы сможете забыть о бытовых заботах и посвятить себя отдыху
-Локация закрыта для посторонних, вход через КПП, территория находится под наблюдением и охраняется 24/7
Огромные плюсы:
-Рассрочка без удорожания
-Возврат НДС 20%
-Готовый бизнес для сдачи!
📱Отдыхайте здесь круглый год или получайте 2 500 000 ежегодно на сдаче номеров!
👍Получите актуальные планировки и цены
Получить предложение
#реклама
mrqz.me
О рекламодателе
5 052
🤔 Что такое паттерн CQRS?
Command Query Responsibility Segregation (CQRS) разделяет операции чтения и записи в системе. Команды (write) изменяют состояние, а запросы (read) используют оптимизированные модели для получения данных, что улучшает производительность и масштабируемость.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
Гайд по эффективным онлайн-встречам для отделов закупок
Как специалистам по закупкам и тендерам экономить время на онлайн-совещаниях, сократить время на подготовку ТЗ и ускорить цикл закупок?
Гайд МТС Линк — чек-листы, кейсы и подходы для упрощения коммуникации закупщиков с внутренними заказчиками и подрядчиками с помощью онлайн-встреч.
✅ В гайде:
- Как создать постоянную ссылку на синки с коллегами или поставщиками и подключаться в 2 клика;
- Как ускорить сбор требований без долгих переписок и конфликтов с юр.отделом;
- Как обсуждать ТЗ и сразу фиксировать договоренности с помощью ИИ;
- Как вести переговоры с подрядчиками и оперативно согласовать ключевые этапы сделки;
- Как отслеживать выполнение условий контракта.
Бонус внутри: 5 способов не выгореть от бесконечных синков.
✨ Скачайте гайд бесплатно по ссылке
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
5 052
🤔 Как работает threadpool?
ThreadPool (пул потоков) — это механизм управления потоками в .NET, который позволяет повторно использовать созданные потоки для выполнения задач, уменьшая накладные расходы на их создание и уничтожение.
🚩Зачем нужен ThreadPool?
🟠Создание потоков — дорогостоящая операция
Каждый раз создавать новый поток — медленно и неэффективно.
🟠Пул потоков позволяет повторно использовать уже созданные потоки
вместо их постоянного создания и удаления.
🟠Автоматическое управление количеством потоков
в зависимости от нагрузки.
🟠Идеально подходит для небольших, кратковременных задач
Обработки HTTP-запросов
Выполнения задач в фоне
Асинхронного выполнения операций
🚩Как работает ThreadPool?
🟠Когда вы отправляете задачу в ThreadPool
он берет поток из пула и выполняет задачу.
🟠Если в пуле нет свободных потоков
создается новый (но их количество ограничено).
🟠Когда задача выполнена, поток не уничтожается
а возвращается в пул и может быть использован снова.
🟠ThreadPool сам регулирует количество потоков
в зависимости от загрузки системы.
🚩Пример использования ThreadPool
using System;
using System.Threading;
class Program
{
static void Main()
{
for (int i = 0; i < 5; i++)
{
ThreadPool.QueueUserWorkItem(DoWork, i);
}
Console.ReadLine(); // Ждём завершения потоков
}
static void DoWork(object? state)
{
Console.WriteLine($"Задача {state} выполняется в потоке {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000); // Симуляция работы
Console.WriteLine($"Задача {state} завершена");
}
}
🚩Максимальное и минимальное количество потоков
ThreadPool управляет количеством потоков сам, но их можно настраивать
int minWorker, minIOC;
ThreadPool.GetMinThreads(out minWorker, out minIOC);
Console.WriteLine($"Мин. количество потоков: {minWorker}");
ThreadPool.SetMinThreads(4, 4); // Устанавливаем минимум потоков
int maxWorker, maxIOC;
ThreadPool.GetMaxThreads(out maxWorker, out maxIOC);
Console.WriteLine($"Макс. количество потоков: {maxWorker}");
Ставь 👍 и забирай 📚 Базу знаний5 052
2-комнатные квартиры в центре Тюмени
Рассрочка 0% с платежом от 50 000 рублей в месяц.
ПСК 6,316% – 6,870%
ЖК "Дом на Ямской" - не просто дом, а статус и комфорт.
— Клубный формат, всего 164 квартиры: приватность и тишина
— Панорамное остекление
— Закрытая территория
— Каждая планировка продумана: просторные гардеробные, кладовые и постирочные
— В доме: спортзал с душевыми, паркинг с видеонаблюдением, охрана
— Исторический центр: рядом набережная, вузы и экопарк "Затюменский"
✅ Получите подборку планировок прямо сейчас, нажав на кнопку "Перейти на сайт".
Перейти на сайт
Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Проектная декларация на сайте https://наш.дом.рф/. Застройщик: ООО «СЗ «Баланс Ямская». Финансовые услуги оказывает: ПАО Сбербанк.
#реклама
domyamskaya.ru
О рекламодателе
5 052
🤔 Как в .NET реализовано наследование?
В .NET наследование реализовано через ключевое слово `:`, которое позволяет классу-наследнику унаследовать функциональность базового класса.
Наследник может переопределять виртуальные методы базового класса с использованием ключевого слова `override`, а также добавлять свои свойства и методы.
.NET поддерживает одиночное наследование для классов, но позволяет множественное наследование через интерфейсы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
🤔 Что такое Redis?
Это система управления базами данных с открытым исходным кодом, работающая в памяти и поддерживающая множество типов данных, таких как строки, списки, множества, хеши и другие. Redis часто используется как кэш, брокер сообщений и база данных. Он известен своей высокой производительностью, низкой задержкой и простотой в использовании.
🚩Особенности
🟠Работа в памяти
Redis хранит все данные в памяти, что обеспечивает очень быструю скорость чтения и записи. Данные также могут периодически сохраняться на диск для обеспечения долговечности.
🟠Поддержка различных типов данных
Строки (Strings): Самый простой тип данных в Redis, который может содержать текст или двоичные данные.
Списки (Lists): Упорядоченные коллекции строк, которые можно использовать как очереди или стеки.
Множества (Sets): Неупорядоченные коллекции уникальных строк.
Упорядоченные множества (Sorted Sets): Коллекции уникальных строк, каждая из которых связана с числовым значением (score), определяющим порядок.
Хеши (Hashes): Коллекции пар "ключ-значение", где каждый хеш связан с ключом.
Bitmaps и HyperLogLogs: Для эффективного хранения и обработки больших объемов данных.
🟠Высокая производительность
Благодаря хранению данных в памяти и простому протоколу клиент-сервер, Redis обеспечивает очень высокую скорость операций.
🟠Поддержка репликации
Redis поддерживает мастер-слейв репликацию, что позволяет создать резервные копии данных и обеспечить отказоустойчивость.
🟠Кластеризация
Redis Cluster позволяет распределить данные по нескольким узлам, обеспечивая горизонтальную масштабируемость.
🟠Поддержка Lua-скриптов
Redis позволяет выполнять атомарные операции с помощью Lua-скриптов.
🟠Транзакции
Redis поддерживает транзакции, позволяя выполнить несколько команд атомарно.
🚩Примеры использования
🟠Кэширование
Redis часто используется для кэширования данных, что позволяет значительно уменьшить задержку доступа и снизить нагрузку на базу данных.
using StackExchange.Redis;
using System;
class Program
{
static void Main()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
db.StringSet("key", "value");
string value = db.StringGet("key");
Console.WriteLine(value);
}
}
🟠Сессии
Хранение сессий пользователя для веб-приложений, что обеспечивает быстрое и эффективное управление состоянием.
🟠Очереди сообщений
Использование списков или упорядоченных множеств для организации очередей сообщений.
using StackExchange.Redis;
using System;
class Program
{
static void Main()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
db.ListLeftPush("queue", "task1");
db.ListLeftPush("queue", "task2");
string task = db.ListRightPop("queue");
Console.WriteLine(task);
}
}
🟠Счетчики и рейтинги
Использование упорядоченных множеств для реализации счетчиков, рейтингов или систем рекомендаций.
using StackExchange.Redis;
using System;
class Program
{
static void Main()
{
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
IDatabase db = redis.GetDatabase();
// Add scores for users
db.SortedSetAdd("scores", "user1", 100);
db.SortedSetAdd("scores", "user2", 200);
// Retrieve scores with scores included
var scores = db.SortedSetRangeByRankWithScores("scores", 0, -1);
foreach (var score in scores)
{
Console.WriteLine($"{score.Element}: {score.Score}");
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 052
Дарим подписку Mail Space на 1 ТБ на 3 летних месяца.
У вас будет 1 ТБ для любых файлов, а еще безлимит — это когда фото и видео с телефона не занимают место в Облаке. Можете фоткать всё, что угодно и не переживать, что место закончится. Не закончится. Совсем. Даже на 1 000 001 фото летней вечеринки.
Забрать подарок
Узнать больше
#реклама 16+
cloud.mail.ru
О рекламодателе
5 052
🤔 Что такое deadlock?
Deadlock — это ситуация, когда два или более потока заблокированы, каждый из них ждёт ресурс, занятый другим, и в результате никто не может продолжить работу. Система зацикливается и зависает. Такое часто происходит при неправильной последовательности захвата ресурсов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
🤔 Чем отличается ссылочный и значимый тип?
В C# все типы делятся на значимые (value types) и ссылочные (reference types). Основное различие заключается в том, как данные хранятся в памяти и как передаются в методы.
🚩Значимые типы (Value Types)
Хранятся в стеке (Stack).
Передаются по значению (копируются).
Каждый объект имеет свою копию данных.
Не могут быть
null (если не использовать Nullable<T>).
🚩Примеры значимых типов:
- int, double, bool, char
- struct, enum, DateTime
int a = 10;
int b = a; // Копия значения
b = 20;
Console.WriteLine(a); // 10 (не изменился)
Console.WriteLine(b); // 20
🚩Ссылочные типы (Reference Types)
Хранятся в куче (Heap), а в стеке лежит ссылка на объект.
Передаются по ссылке (не копируются, а передаётся адрес).
Несколько переменных могут указывать на один и тот же объект.
Могут быть null (если не инициализированы).
class Person
{
public string Name;
}
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 и p1 указывают на один объект
p2.Name = "Bob";
Console.WriteLine(p1.Name); // Bob (изменилось!)
Console.WriteLine(p2.Name); // Bob
Ставь 👍 и забирай 📚 Базу знаний5 052
🤔 Что такое делегат?
Делегат в C# — это тип, который представляет ссылки на методы с определённой сигнатурой. Делегаты используются для передачи методов в качестве параметров и для обратных вызовов (callbacks). Они являются основой для событий и лямбда-выражений в C#. Делегаты позволяют вызывать методы динамически, что делает код более гибким.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 052
🤔 В чем разница Redis и memcache`а?
Redis и Memcached являются популярными решениями для кэширования данных в памяти, что помогает ускорить доступ к данным и снизить нагрузку на базы данных в высоконагруженных системах. Обе системы часто используются для улучшения производительности веб-приложений и масштабируемых систем. Несмотря на общую цель, они имеют ряд различий в функциональности, производительности и подходах к управлению данными.
🚩Основные характеристики и различия
🟠Типы данных
Redis поддерживает разнообразные типы данных, такие как строки, списки, множества, отсортированные множества, хеши и битовые карты. Это расширяет возможности использования Redis для различных сценариев, таких как реализация очередей, стеков, сложных структур данных и подсчёт уникальных элементов.
Memcached поддерживает только
🟠Поддержка долговременной персистентности
Redis предлагает настраиваемые опции для долговременного хранения данных (персистентности), включая снимки состояния всей базы данных (snapshotting) и журналирование транзакций с предварительной записью (AOF, Append-Only File). Это позволяет восстанавливать состояние базы данных после перезагрузки системы.
Memcached не предлагает встроенных средств для персистентного хранения данных. По завершении работы процесса данные теряются, что делает его идеальным для временных и не очень важных данных, которые могут быть легко воссозданы или восстановлены.
🟠Распределение и масштабирование
Redis поддерживает различные модели распределения, включая шардинг (разделение данных на части по разным узлам) и репликацию. Это позволяет масштабировать Redis горизонтально и увеличивать его отказоустойчивость.
Memcached также поддерживает горизонтальное масштабирование и распределение данных с использованием простого алгоритма хэширования. Однако у него нет встроенной поддержки репликации или других продвинутых механизмов распределения, которые обеспечивают высокую доступность.
🟠Дополнительные возможности
Redis предлагает дополнительные возможности, такие как выполнение Lua-скриптов на стороне сервера, что позволяет пользователям реализовывать сложную логику обработки данных непосредственно в Redis. Кроме того, Redis поддерживает публикацию и подписку на каналы событий.
Memcached имеет более ограниченный набор функций, сосредоточенных вокруг основной задачи кэширования, и не поддерживает скриптинг или публикацию/подписку.
Ставь 👍 и забирай 📚 Базу знаний
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
