uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

C# | Вопросы собесов

C# | Вопросы собесов

Kanalga Telegram’da o‘tish

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

Ko'proq ko'rsatish
5 009
Obunachilar
-124 soatlar
-27 kun
+1730 kun
Obunachilarni jalb qilish
Okt '26
Oktabr '26
+52
0 kanalda
Sentabr '26
+61
0 kanalda
Get PRO
Avgust '26
+70
0 kanalda
Get PRO
Iyul '26
+49
0 kanalda
Get PRO
Iyun '26
+36
1 kanalda
Get PRO
May '26
+37
0 kanalda
Get PRO
Aprel '26
+34
0 kanalda
Get PRO
Mart '26
+65
0 kanalda
Get PRO
Fevral '26
+78
0 kanalda
Get PRO
Yanvar '26
+90
0 kanalda
Get PRO
Dekabr '25
+46
0 kanalda
Get PRO
Noyabr '25
+101
0 kanalda
Get PRO
Oktabr '25
+90
0 kanalda
Get PRO
Sentabr '25
+45
0 kanalda
Get PRO
Avgust '25
+68
0 kanalda
Get PRO
Iyul '25
+60
0 kanalda
Get PRO
Iyun '25
+79
0 kanalda
Get PRO
May '25
+76
0 kanalda
Get PRO
Aprel '25
+123
0 kanalda
Get PRO
Mart '25
+234
2 kanalda
Get PRO
Fevral '25
+394
4 kanalda
Get PRO
Yanvar '25
+225
53 kanalda
Get PRO
Dekabr '24
+114
2 kanalda
Get PRO
Noyabr '24
+141
0 kanalda
Get PRO
Oktabr '24
+399
42 kanalda
Get PRO
Sentabr '24
+658
250 kanalda
Get PRO
Avgust '24
+192
0 kanalda
Get PRO
Iyul '24
+297
54 kanalda
Get PRO
Iyun '24
+1 033
246 kanalda
Get PRO
May '24
+1 473
190 kanalda
Get PRO
Aprel '24
+919
23 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
27 Oktabr0
26 Oktabr0
25 Oktabr+1
24 Oktabr0
23 Oktabr+5
22 Oktabr+3
21 Oktabr+3
20 Oktabr+2
19 Oktabr+1
18 Oktabr+2
17 Oktabr+2
16 Oktabr+2
15 Oktabr+2
14 Oktabr+2
13 Oktabr0
12 Oktabr+2
11 Oktabr+1
10 Oktabr+3
09 Oktabr0
08 Oktabr+3
07 Oktabr+3
06 Oktabr+1
05 Oktabr0
04 Oktabr+2
03 Oktabr+3
02 Oktabr+3
01 Oktabr+6
Kanal postlari
🎃 Хеллоуинская акция на easyoffer В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешь
🎃 Хеллоуинская акция на easyoffer В честь Хеллоуина до 31 октября можно забрать PRO навсегда. Покупаешь один раз и пользуешься всю жизнь 🍬Что внутри мешка с угощениями: – База вопросов и задач из собеседований – Примеры видео-ответов на вопросы – Записи реальных собеседований – Тренажёры «Проработка вопросов» и «Реальное собеседование» – Аналитика требований из вакансий – Автоотклики на вакансии 👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro

2
Вебинар 15 октября: восстановление IT после сбоя Отключение электричества, отказ оборудования, DDoS-атака или ошибка сотрудни
Вебинар 15 октября: восстановление IT после сбоя Отключение электричества, отказ оборудования, DDoS-атака или ошибка сотрудника — и работа останавливается. Люди не могут открыть документы и программы, клиенты не получают услуги. Чем дольше длится сбой, тем дороже он обходится. Угадать причину аварии заранее нельзя. Но можно определить, без каких сервисов компания не работает, и подготовить план их восстановления. 15 октября в 14:00 МСК на бесплатном вебинаре Cloud4U разберём: - как посчитать стоимость часа простоя; - что включить в план восстановления; - когда достаточно резервных копий, а когда нужна вторая рабочая копия систем; - примеры реальных аварий и порядок действий при них. Будет полезно IT-директорам, системным администраторам, инженерам и руководителям, которые отвечают за работу IT. Записаться #реклама 16+ cloud4u.ru О рекламодателе
238
3
🤔 В чём отличие slim-версий от обычных семафоров? Slim-версии легче и работают быстрее, но только внутри одного процесса. Они экономичнее по ресурсам и поддерживают асинхронное ожидание. Обычные семафоры — более универсальны, но тяжелее и применимы для взаимодействия между разными процессами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
321
4
🤔 Что такое В3 индекс? Это структура данных, используемая в системах управления базами данных (СУБД) для организации и ускорения доступа к данным. B-tree индекс является сбалансированным деревом, обеспечивающим эффективное выполнение операций поиска, вставки, удаления и диапазонного поиска. B-tree индекс используется большинством реляционных СУБД, таких как SQL Server, MySQL, PostgreSQL и Oracle. 🚩Основные характеристики B-tree индекса 🟠Сбалансированное дерево B-tree индекс является сбалансированным деревом, где все листья находятся на одном уровне. Это обеспечивает равномерное время доступа к данным. 🟠Ключи и значения В узлах B-tree хранятся ключи, которые могут ссылаться на строки в таблице или на другие узлы дерева. 🟠Упорядоченность Ключи в каждом узле упорядочены, что позволяет эффективно выполнять бинарный поиск внутри узла. 🟠Диапазонные запросы B-tree индекс эффективно поддерживает диапазонные запросы (например, поиск всех записей с ключами между заданными значениями). 🟠Динамическое поддержание B-tree автоматически сбалансирован, что позволяет эффективно выполнять операции вставки, удаления и обновления. 🚩Пример использования CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), DepartmentID INT, Salary DECIMAL(10, 2) ); CREATE INDEX idx_lastname ON Employees(LastName); 🚩Операции 🟠Поиск Операция поиска в B-tree выполняется за логарифмическое время O(log n), где n — количество узлов. SELECT * FROM Employees WHERE LastName = 'Smith'; 🟠Диапазонный поиск Диапазонные запросы, такие как поиск всех сотрудников с фамилией от 'A' до 'M', выполняются эффективно. SELECT * FROM Employees WHERE LastName BETWEEN 'A' AND 'M'; 🟠Вставка При вставке новой записи в таблицу с индексом B-tree, запись добавляется в соответствующее место, поддерживая балансировку дерева. INSERT INTO Employees (EmployeeID, FirstName, LastName, DepartmentID, Salary) VALUES (1, 'John', 'Doe', 10, 60000.00); 🟠Удаление При удалении записи соответствующий ключ удаляется из B-tree, и дерево автоматически перестраивается, чтобы сохранить балансировку. DELETE FROM Employees WHERE EmployeeID = 1; 🚩Плюсы ➕Быстрый доступ Обеспечивает быстрый доступ к данным благодаря сбалансированной структуре дерева. ➕Эффективная работа с большими объемами данных Поддерживает операции вставки, удаления и поиска с логарифмической сложностью. ➕Поддержка диапазонных запросов Эффективно обрабатывает диапазонные запросы благодаря упорядоченной структуре. ➕Автоматическая балансировка Динамическая балансировка дерева обеспечивает равномерное время доступа и вставки/удаления. 🚩Минусы ➖Использование ресурсов Требует дополнительного пространства для хранения структуры дерева и ключей. ➖Затраты на поддержание Вставка и удаление могут требовать перестроения узлов, что влечет за собой дополнительные вычислительные затраты. ➖Фрагментация При частых операциях вставки и удаления может возникнуть фрагментация, что может потребовать периодического обслуживания (например, реорганизации индекса). Ставь 👍 и забирай 📚 Базу знаний
344
5
Solar JSOC - Флагманский SOC с гарантией Гарантии крупнейшего коммерческого SOCа России теперь доступны вам. Узнать больше #р
Solar JSOC - Флагманский SOC с гарантией Гарантии крупнейшего коммерческого SOCа России теперь доступны вам. Узнать больше #реклама 16+ rt-solar.ru О рекламодателе
418
6
🤔 Во что разворачивается using? using — это удобная конструкция, которая автоматически вызывает Dispose, когда объект больше не нужен. Под капотом она разворачивается в блок с вызовом Dispose в конце, даже если произошла ошибка. Это защищает от утечек ресурсов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
447
7
🤔 Что такое cancellation token в многопоточности? CancellationToken в C# используется для координации отмены между потоками. Это механизм, позволяющий запрашивать отмену операции (например, задачи Task или асинхронного метода), не прерывая поток принудительно. 🚩Зачем нужен `CancellationToken`? В многопоточных или асинхронных операциях бывает необходимо отменить выполнение кода, например: Пользователь отменил загрузку файла. Истек тайм-аут выполнения операции. Нужно прервать выполнение нескольких связанных задач. 🚩Как работает `CancellationToken`? 🟠Создание `CancellationTokenSource` Источник токена (CancellationTokenSource) управляет токеном (CancellationToken), который передаётся в задачи. 🟠Передача токена в выполняемую операцию Код регулярно проверяет cancellationToken.IsCancellationRequested, чтобы определить, нужно ли остановиться. 🟠Запрос на отмену Если вызывается cts.Cancel(), все методы, использующие этот токен, получают сигнал об отмене. 🚩Пример использования using System; using System.Threading; using System.Threading.Tasks; class Program { static async Task Main() { using var cts = new CancellationTokenSource(); // Отменяем операцию через 3 секунды cts.CancelAfter(3000); try { await DoWorkAsync(cts.Token); } catch (OperationCanceledException) { Console.WriteLine("Операция отменена!"); } } static async Task DoWorkAsync(CancellationToken cancellationToken) { for (int i = 0; i < 10; i++) { cancellationToken.ThrowIfCancellationRequested(); // Проверка отмены Console.WriteLine($"Работаем... {i}"); await Task.Delay(1000, cancellationToken); // Ожидание с проверкой отмены } } } Ставь 👍 и забирай 📚 Базу знаний
451
8
🤔 Как происходит запрос интерфейса? Когда компоненту нужен другой класс (зависимость), он объявляет интерфейс в своём конструкторе, а контейнер DI: - Ищет зарегистрированную реализацию этого интерфейса. - Создаёт экземпляр и передаёт его в зависимый класс. Такой механизм называется инъекция через конструктор, и он наиболее распространён. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
447
9
🤔 Приведи пример паттерна строитель в С# Паттерн "Строитель" (Builder) используется для пошагового создания сложных объектов. Он удобен, когда объект имеет много параметров и возможных конфигураций. 🚩Проблема без паттерна "Строитель" Допустим, у нас есть класс Car, и мы хотим создавать машины с разными конфигурациями: public class Car { public string Engine { get; set; } public int Wheels { get; set; } public bool HasSunroof { get; set; } public override string ToString() { return $"Car: Engine={Engine}, Wheels={Wheels}, Sunroof={HasSunroof}"; } } Создавать объект через конструкторы или инициализаторы становится неудобно, если у нас много параметров: var car1 = new Car { Engine = "V8", Wheels = 4, HasSunroof = true }; var car2 = new Car { Engine = "V6", Wheels = 4, HasSunroof = false }; 🚩Решение с использованием паттерна "Строитель" Сделаем пошаговый процесс сборки объекта с помощью паттерна "Строитель". Шаг 1: Создаём интерфейс строителя public interface ICarBuilder { ICarBuilder SetEngine(string engine); ICarBuilder SetWheels(int wheels); ICarBuilder SetSunroof(bool hasSunroof); Car Build(); } Шаг 2: Реализуем конкретного строителя public class CarBuilder : ICarBuilder { private Car _car = new Car(); // Временный объект public ICarBuilder SetEngine(string engine) { _car.Engine = engine; return this; // Возвращаем самого себя для цепочки вызовов } public ICarBuilder SetWheels(int wheels) { _car.Wheels = wheels; return this; } public ICarBuilder SetSunroof(bool hasSunroof) { _car.HasSunroof = hasSunroof; return this; } public Car Build() { return _car; // Возвращаем готовый объект } } Шаг 3: Используем строителя class Program { static void Main() { ICarBuilder builder = new CarBuilder(); Car sportsCar = builder .SetEngine("V8") .SetWheels(4) .SetSunroof(true) .Build(); Car economyCar = builder .SetEngine("V4") .SetWheels(4) .SetSunroof(false) .Build(); Console.WriteLine(sportsCar); Console.WriteLine(economyCar); } } Вывод в консоли Car: Engine=V8, Wheels=4, Sunroof=True Car: Engine=V4, Wheels=4, Sunroof=False Ставь 👍 и забирай 📚 Базу знаний
434
10
🤔 Что такое паттерн Event Sourcing? Это подход, при котором состояние системы сохраняется как последовательность событий. Вместо хранения текущего состояния, каждое событие, изменяющее состояние, записывается, что позволяет восстанавливать любое прошлое состояние. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
465
11
🤔 Что такое примитив синхронзиации semaphore? Это механизм синхронизации, который используется для управления доступом к ограниченному ресурсу. Он позволяет ограниченному количеству потоков одновременно использовать общий ресурс. 🚩Как работает семафор? Семафор использует счётчик для отслеживания доступных "разрешений": Когда поток запрашивает доступ к ресурсу, семафор уменьшает счётчик. Если счётчик больше нуля, поток получает доступ. Если счётчик равен нулю, поток блокируется, пока другой поток не освободит ресурс (увеличив счётчик). 🚩Пример использования `SemaphoreSlim` В .NET часто используется SemaphoreSlim, так как он более лёгкий и эффективный, чем Semaphore. using System; using System.Threading; using System.Threading.Tasks; class Program { static SemaphoreSlim semaphore = new SemaphoreSlim(2); // Разрешаем максимум 2 потока одновременно static async Task AccessResource(int id) { Console.WriteLine($"Поток {id} ждёт доступа..."); await semaphore.WaitAsync(); // Захватываем семафор try { Console.WriteLine($"Поток {id} получил доступ!"); await Task.Delay(2000); // Имитация работы с ресурсом } finally { Console.WriteLine($"Поток {id} освобождает ресурс."); semaphore.Release(); // Освобождаем семафор } } static async Task Main() { Task[] tasks = new Task[5]; for (int i = 0; i < 5; i++) { tasks[i] = AccessResource(i); } await Task.WhenAll(tasks); } } 🚩Обычный `Semaphore` Если нужна синхронизация между разными процессами, можно использовать Semaphore Semaphore semaphore = new Semaphore(2, 2, "MyGlobalSemaphore"); Ставь 👍 и забирай 📚 Базу знаний
520
12
Монолит vs микросервисы: битва за ваши нервы 💻 Монолит или микросервисы? Кажется, что ответ очевиден, но почему-то одни прое
Монолит vs микросервисы: битва за ваши нервы 💻 Монолит или микросервисы? Кажется, что ответ очевиден, но почему-то одни проекты летают, а другие тонут в хаосе? Присоединяйтесь к открытому уроку Сергея Прощаева и получите пошаговое руководство по выбору архитектуры. 📅 9 ноября в 20:00. Разберём: - Как не попасть в ловушку «модных» микросервисов. - Признаки, что пора выходить из монолита. - Архитектурные паттерны перехода: Strangler Fig, BFF, Self-contained systems. - Организационные и технические риски — что пойдёт не так. - Роль DevOps, CI/CD и мониторинга. Вы научитесь оценивать реальные риски и стоимость микросервисов, внедрять изменения без сбоев и хаоса и принимать взвешенные решения, сохраняя технический контроль и производительность команды. ✅ Запишитесь сейчас! Узнать больше #реклама 16+ otus.ru О рекламодателе
439
13
🤔 Что такое builder паттерн? Это паттерн проектирования, позволяющий создавать сложные объекты пошагово, изолируя конструирование от представления. Это упрощает управление процессом создания объекта. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
505
14
🤔 Какие есть методы запросов жизненного цикла в 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(); Ставь 👍 и забирай 📚 Базу знаний
518
15
🤔 Что такое SOAP? SOAP (Simple Object Access Protocol) — это протокол обмена структурированными сообщениями между приложениями по сети. Он использует XML для описания сообщений и имеет строгое форматирование. Часто применяется с HTTP или SMTP, но не ограничивается ими. SOAP предоставляет высокую надёжность, безопасность и расширяемость, особенно в распределённых системах и корпоративных средах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
570
16
🤔 Что такое IQueryable? Это интерфейс, который наследуется от IEnumerable и предоставляет функциональность для оценки запросов к источнику данных. Основное отличие IQueryable от IEnumerable заключается в том, что IQueryable позволяет запросы быть построенными и выполненными отложенно на стороне источника данных, такого как база данных. Это обеспечивает большую эффективность, поскольку именно необходимые данные извлекаются и передаются, вместо извлечения всего объема данных и их фильтрации на стороне клиента. 🚩Как работает IQueryable Использует LINQ-провайдеры, которые транслируют выражения LINQ в запросы, специфичные для источника данных (например, SQL для баз данных). Это позволяет делать запросы более оптимальными, так как они обрабатываются средствами самого источника данных. 🟠Отложенное выполнение (Deferred Execution) Запросы IQueryable не выполняются, пока не будут перечислены. Это позволяет системе строить более сложные запросы перед их выполнением. 🟠Составление запросов Вы можете построить запрос по частям, добавляя условия на каждом шаге. Финальный запрос выполняется только при перечислении результатов, что позволяет избежать ненужной нагрузки на источник данных. 🟠Преобразование запросов LINQ-провайдеры могут преобразовать выражения запросов IQueryable в оптимизированные запросы к базе данных или другим источникам, что позволяет выполнять сложные операции на стороне сервера, такие как сортировка, группировка и агрегирование. using (var context = new MyDbContext()) // MyDbContext — это контекст Entity Framework { IQueryable<Product> query = context.Products.Where(p => p.Price > 100); // Запрос еще не выполнен, можно добавить другие условия query = query.OrderBy(p => p.Name); // Запрос выполняется только при перечислении foreach (var product in query) { Console.WriteLine($"{product.Name}: {product.Price}"); } } Ставь 👍 и забирай 📚 Базу знаний
640
17
🔥 Скрытые вакансии с удаленной работой для C# разработчика, которые нигде больше не публикуются. Напрямую от компаний, с кон
🔥 Скрытые вакансии с удаленной работой для C# разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров. 🔹 C# .NET Jobs | Вакансии 🔹 Unity Jobs | Вакансии 🔸 Все каналы с вакансиями
598
18
🤔 Что такое контекст синхронизации? "контекст синхронизации" (SynchronizationContext) — это класс, который предоставляет возможность управлять способом, которым операции переключаются обратно в основной поток или контекст для продолжения выполнения после асинхронной операции. Это важно для приложений с графическим пользовательским интерфейсом, таких как Windows Forms и WPF, где доступ к элементам пользовательского интерфейса разрешён только из основного потока. 🚩Как он работает Абстрагирует модель синхронизации для различных сред выполнения. Например, в приложениях Windows Forms и WPF управление элементами UI должно происходить в главном потоке. SynchronizationContext предоставляет методы для отправки (Send) и постановки (Post) задач, которые должны выполняться в правильном контексте. 🟠Send синхронно отправляет делегат на выполнение в контекст синхронизации. 🟠Post асинхронно отправляет делегат на выполнение в контекст синхронизации. 🚩Применение SynchronizationContext Используется для того, чтобы после асинхронной операции вернуться в правильный поток и безопасно обновить UI или выполнить код, который требует выполнения в определённом потоке. public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); LoadDataAsync(); } private async void LoadDataAsync() { string data = await GetDataAsync(); // Асинхронно получаем данные и обновляем UI Dispatcher.Invoke(() => DisplayData(data)); } private Task<string> GetDataAsync() { return Task.Run(() => { // Имитация долгой операции Thread.Sleep(5000); return "Data loaded"; }); } private void DisplayData(string data) { MyTextBox.Text = data; } } 🚩Зачем он нужен 🟠Безопасность потоков Позволяет безопасно обращаться к элементам UI из асинхронных или вторичных потоков. 🟠Правильное управление потоками Обеспечивает выполнение кода в контексте, для которого он предназначен, что особенно важно в многопоточных и сетевых приложениях. Ставь 👍 и забирай 📚 Базу знаний
628
19
Бесплатный практикум: вайбкодинг, АИ-агенты, Коворк Что из своей работы вы бы с радостью перестали делать вручную? На онлайн-
Бесплатный практикум: вайбкодинг, АИ-агенты, Коворк Что из своей работы вы бы с радостью перестали делать вручную? На онлайн-практикуме «Вайбкодим» покажем, как ИИ берет рутину на себя. Без сложной теории, с реальными примерами. Разберём реальные кейсы компаний с цифрами и поговорим о главных трендах ИИ. 22 октября. Регистрируйтесь бесплатно. Зарегистрироваться #реклама 16+ ai-practicum.bitrix24.works О рекламодателе
426
20
🤔 Как добавить стороннюю библиотеку в проект? В .NET добавление сторонней библиотеки может происходить несколькими способами: - Через NuGet-пакет: - Используя команду: dotnet add package <PackageName> - Или через Visual Studio — «Manage NuGet Packages». - Через ссылку на DLL: - Скопировать .dll файл и добавить его через «Add Reference». - Через проектную ссылку: - Если у тебя есть другой .csproj, его можно подключить как зависимость. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
588