C# | Вопросы собесов
Ir al canal en Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Mostrar más5 059
Suscriptores
-524 horas
-77 días
-1730 días
Archivo de publicaciones
5 059
🤔 Что такое предикат?
Это делегат, представляющий метод, который принимает один или несколько аргументов и возвращает логическое значение (
true или false). Предикаты часто используются для фильтрации коллекций, поиска элементов и других операций, связанных с условными проверками.
🚩Особенности
🟠Тип делегата
В C# предикат представлен делегатом Predicate<T>, который принимает один аргумент типа T и возвращает bool.
🟠Использование
Предикаты обычно используются в методах стандартных коллекций, таких как List<T>, для поиска, удаления и фильтрации элементов.
🚩Пример использования предиката
Определение предиката
public static bool IsEven(int number)
{
return number % 2 == 0;
}
Использование предиката с методом коллекции
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
// Использование предиката для поиска первого четного числа
int firstEven = numbers.Find(IsEven);
Console.WriteLine("First even number: " + firstEven);
// Использование предиката для удаления всех четных чисел
numbers.RemoveAll(IsEven);
Console.WriteLine("Numbers after removing evens: " + string.Join(", ", numbers));
}
public static bool IsEven(int number)
{
return number % 2 == 0;
}
}
🚩Лямбда-выражения как предикаты
Лямбда-выражения часто используются для определения предикатов непосредственно в месте вызова метода. Это делает код более компактным и удобочитаемым.
Пример использования лямбда-выражений
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
// Использование лямбда-выражения для поиска первого четного числа
int firstEven = numbers.Find(n => n % 2 == 0);
Console.WriteLine("First even number: " + firstEven);
// Использование лямбда-выражения для удаления всех четных чисел
numbers.RemoveAll(n => n % 2 == 0);
Console.WriteLine("Numbers after removing evens: " + string.Join(", ", numbers));
}
}
🚩Сценарии использования предикатов
🟠Фильтрация коллекций
Предикаты используются для определения условий фильтрации элементов в коллекциях.
List<int> evenNumbers = numbers.FindAll(IsEven);
🟠Поиск элементов
Предикаты помогают находить элементы, соответствующие определенному условию.
int firstEven = numbers.Find(IsEven);
🟠Удаление элементов
Предикаты используются для удаления элементов, соответствующих определенному условию.
numbers.RemoveAll(IsEven);
Ставь 👍 и забирай 📚 Базу знаний5 059
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
5 059
🤔 В чём разница между FirstOrDefault и SingleOrDefault?
- FirstOrDefault возвращает первый элемент или значение по умолчанию, если коллекция пуста.
- SingleOrDefault возвращает единственный элемент, но выбрасывает исключение, если найдено более одного элемента.
SingleOrDefault подходит, если ожидается максимум один результат. FirstOrDefault — если важен первый элемент, независимо от остальных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 059
🤔 Как работает 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 059
Tefal X-Clean 10: Умные технологии для комфортной уборки
Tefal X-Clean 10 — беспроводной моющий вертикальный пылесос для влажной уборки.
Главная изюминка — система самоочистки роликовой щётки и сушка горячим воздухом до 65°C
Подробнее
#реклама
tefal.ru
О рекламодателе
5 059
🤔 Что такое методы расширения LINQ и для чего нужны?
Это статические методы, которые позволяют работать с коллекциями, например, Where, Select, OrderBy. Они упрощают обработку данных и делают код читаемым.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 059
Repost from easyoffer
⏳ Осталось 20 мест
Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу
🔥 Узнай вопросы и задачи с собеседований в конкретных компаниях
🔥 Получи лучшие ответы и видео-примеры от middle/senior специалистов
🔥 Обходи фильтры ATS, добавив топ30 ключевых слов в свое резюме
🔥 Экономь время с помощью автоматических откликов
🔥 Подготовься идеально к интервью с тренажёрами и симуляторами
Успей забрать место по акции: 👉 https://easyoffer.ru/pro
5 059
🤔 Что такое инверсия зависимостей?
Инверсия зависимостей — это принцип SOLID, который говорит:
> Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
Это значит, что вместо жёстких зависимостей на конкретные классы, код должен работать через абстракции (
interface или abstract class).
🚩Проблема без инверсии зависимостей
Допустим, у нас есть класс EmailSender, который отправляет письма:
public class EmailSender
{
public void Send(string message)
{
Console.WriteLine($"Отправка email: {message}");
}
}
public class NotificationService
{
private EmailSender _emailSender = new EmailSender();
public void Notify(string message)
{
_emailSender.Send(message);
}
}
🚩Решение: Инверсия зависимостей
Чтобы избавиться от жёсткой зависимости, вводим абстракцию (IMessageSender):
public interface IMessageSender
{
void Send(string message);
}
public class EmailSender : IMessageSender
{
public void Send(string message)
{
Console.WriteLine($"Отправка email: {message}");
}
}
public class SmsSender : IMessageSender
{
public void Send(string message)
{
Console.WriteLine($"Отправка SMS: {message}");
}
}
Теперь NotificationService зависит не от конкретного класса, а от интерфейса:
public class NotificationService
{
private readonly IMessageSender _messageSender;
public NotificationService(IMessageSender messageSender)
{
_messageSender = messageSender;
}
public void Notify(string message)
{
_messageSender.Send(message);
}
}
Теперь мы можем подставлять любую реализацию IMessageSender:
var emailNotifier = new NotificationService(new EmailSender());
emailNotifier.Notify("Привет через Email!");
var smsNotifier = new NotificationService(new SmsSender());
smsNotifier.Notify("Привет через SMS!");
Вывод
Отправка email: Привет через Email! Отправка SMS: Привет через SMS!🚩Преимущества инверсии зависимостей Гибкость – можно легко заменять зависимости. Тестируемость – можно подставить Mock-объект вместо
EmailSender.
Меньше изменений в коде – можно добавить новые способы отправки сообщений без изменения NotificationService.
Ставь 👍 и забирай 📚 Базу знаний5 059
🤔 Что такое полиморфизм?
Полиморфизм — это принцип ООП, который позволяет объектам разных классов реагировать на одни и те же методы по-разному. В C# полиморфизм реализуется через наследование и интерфейсы, где один метод может работать с различными типами объектов. Полиморфизм позволяет создавать гибкие и расширяемые программы, где один интерфейс может быть реализован различными способами. Это делает код более универсальным и поддерживаемым.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 059
👩💻 C# вакансии всех грейдов: удалёнка, реклок, щедрый оффер!
Только с прямыми контактами в Telegram! Ноль автоотказов — живой диалог и быстрые объективные решения.
👩💻 C# 👩💻 Python
👩💻 Java 👣 Go
🤖 ML & DS 👩💻 DevOps
🔎 QA 👩💻 Frontend
👩💻 Node.js 🖥 SQL
👩💻 UX/UI 🖼️ PHP
👩💻 Mobile 📋 Analyst
💼 1C 👨✈️ CyberSec
👩💻 IT HR
Подпишись чтобы не упустить свой шанс получить лучший оффер!
5 059
Гайд для РОПов по проведению эффективных вебинаров
Как руководителям отделов продаж увеличить количество успешных сделок при том же объеме лидов с помощью вебинаров?
Гайд от МТС Линк по обучающим вебинарам для отделов продаж.
✅ В гайде:
- Как эффективнее прокачивать скиллы менеджеров и закрывать больше сделок за меньшие сроки;
- Как организовать тренинг так, чтобы участники действительно подключились и дошли до финального модуля;
- Как выявить слабого менеджера и улучшить его показатели;
- Как сэкономить время на организации вебинара и пригласить всех участников в 2 клика.
Бонус внутри: 5 прикладных советов по контролю внимания участников во время вебинара
✨ Скачайте гайд бесплатно по ссылке
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
5 059
🤔 Что делает new 'имя объекта'()?
Оператор
new в C# создаёт новый экземпляр объекта и выделяет для него память в куче (Heap) или стеке (Stack), в зависимости от типа.
🚩Как работает `new`?
Для классов (class) – выделяет память в куче (Heap) и возвращает ссылку на объект.
Для структур (struct) – если структура создаётся без new, её поля остаются неинициализированными, но если использовать new, она получает значения по умолчанию.
Для массивов (T[]) – выделяет память в куче, даже если T – это struct.
Для делегатов – создаёт экземпляр делегата.
Пример: new с классом (class)
class Person
{
public string Name;
public Person(string name)
{
Name = name;
}
}
class Program
{
static void Main()
{
Person p1 = new Person("Alice"); // Создаём новый объект в куче
Console.WriteLine(p1.Name); // Alice
}
}
Пример: new со структурой (struct)
struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
class Program
{
static void Main()
{
Point p1 = new Point(5, 10); // Создаёт структуру в стеке
Console.WriteLine(p1.X); // 5
}
}
Пример: new с массивом
int[] numbers = new int[5]; // Создаёт массив в куче
numbers[0] = 10;
Console.WriteLine(numbers[0]); // 10
🚩Что делает `new` за кулисами?
Выделение памяти в куче (для классов) или в стеке (для структур).
Вызов конструктора класса или структуры.
Возвращение ссылки на объект (для классов) или самого объекта (для структур).
Ставь 👍 и забирай 📚 Базу знаний5 059
REKONFA Live
6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения.
С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры.
Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться.
Зарегистрироваться
#реклама 18+
ya.rekonfa.ru
О рекламодателе
5 059
🤔 Может ли в абстрактном классе не быть ни одного абстрактного метода?
Да, может.
Абстрактный класс не обязан содержать абстрактные методы.
Он может использоваться как нельзя инстанцируемая базовая структура с частичной или полной реализацией, предназначенной для наследования.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 059
SOC Forum 2025 онлайн — все профи ИБ в одном месте
📅 18–20 ноября пройдет ключевое событие
Недели кибербезопасности — SOC Forum.
👍 Ведущие эксперты соберутся, чтобы обсудить самые острые темы и представить лучшие практические кейсы: каждый доклад прошел строгий отбор, так что вас ждет концентрат пользы.
⚡ Станьте частью форума даже онлайн!
Помимо прямой трансляции лекций, для удаленных участников будут работать «Кибербез ТВ» и радиостанция «ЭХО лОСЕЙ» — с новостными дайджестами, эксклюзивными интервью, мастер-классами и специальными сюжетами, доступными только в онлайн-формате.
✅ Зарегистрируйтесь, и мы пришлем напоминание перед стартом.
Зарегистрироваться
#реклама 16+
registration.forumsoc.ru
О рекламодателе
5 059
Repost from easyoffer
⏳ 90 акционных мест
Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу
🔥 Узнай вопросы и задачи с собеседований в конкретных компаниях
🔥 Получи лучшие ответы и видео-примеры от middle/senior специалистов
🔥 Обходи фильтры ATS, добавив топ30 ключевых слов в свое резюме
🔥 Экономь время с помощью автоматических откликов
🔥 Подготовься идеально к интервью с тренажёрами и симуляторами
Успей забрать место по акции: 👉 https://easyoffer.ru/pro
5 059
🤔 Что такое IEnumerable?
IEnumerable — это интерфейс в базовой библиотеке классов .NET Framework, который определяет один метод:
GetEnumerator(). Этот метод возвращает объект IEnumerator, который позволяет перебирать элементы коллекции (например, массива или списка) один за другим.
🚩Зачем он нужен?
Используется для создания универсального метода перебора данных, не зависящего от типа коллекции. Это означает, что любой тип данных, который реализует IEnumerable, можно перебирать с помощью цикла foreach в C#. Это упрощает работу с различными структурами данных, предоставляя единый механизм для итерации элементов.
🚩Как он используется?
Когда вы реализуете интерфейс IEnumerable в своём классе, вы обязуете этот класс предоставлять метод GetEnumerator(), который возвращает IEnumerator. IEnumerator, в свою очередь, имеет методы для перехода к следующему элементу (MoveNext) и для получения текущего элемента (Current), а также метод Reset(), который возвращает перечислитель в начальное состояние.
using System;
using System.Collections;
public class DaysOfWeek : IEnumerable
{
private string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
public IEnumerator GetEnumerator()
{
for (int index = 0; index < days.Length; index++)
{
// Yield each day of the week.
yield return days[index];
}
}
}
public class Program
{
public static void Main()
{
DaysOfWeek daysOfWeek = new DaysOfWeek();
foreach (string day in daysOfWeek)
{
Console.WriteLine(day);
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 059
Как списать долги? Бесплатно через МФЦ!
Долги от 200 000₽. Поможем бесплатно списать долг и расторгнуть все кредитные договоры!
Узнать больше
#реклама
нет-кредит.рф
О рекламодателе
5 059
🤔 Что такое try-catch?
try-catch — это механизм обработки исключений в C#.
Код, который может вызвать ошибку во время выполнения, помещается в блок try.
Если ошибка происходит, выполнение переходит в соответствующий блок catch.
Блок finally может использоваться для выполнения завершающих действий, выполняемых независимо от ошибок (например, закрытие файлов, соединений и т.д.).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 059
🤔 Что такое boxing и unboxing?
boxing и unboxing — это два важных процесса, связанных с преобразованием типов между значимыми типами (value types) и ссылочными типами (reference types). Эти процессы играют ключевую роль в работе с обобщенными коллекциями и при взаимодействии между различными частями .NET Framework.
🚩Boxing
Это процесс преобразования переменной значимого типа (например,
int или struct) в тип object или в любой другой тип интерфейса, реализуемый этим значимым типом. При боксинге переменная значимого типа оборачивается в объект ссылочного типа, и её значение копируется в новый объект на управляемой куче. Это необходимо, потому что все элементы в .NET в конечном итоге должны быть объектами.
int num = 123;
object obj = num; // Boxing
🚩Unboxing
Это обратный процесс, при котором содержимое объекта ссылочного типа преобразуется обратно в значимый тип. Требует явного указания типа, к которому нужно преобразовать, и может вызывать исключение InvalidCastException, если объект не может быть преобразован в желаемый значимый тип.
object obj = 123; // Boxing
int num = (int)obj; // Unboxing
🟠Производительность
Боксинг и анбоксинг могут негативно сказаться на производительности, поскольку они влекут за собой операции с памятью, включая выделение памяти и сборку мусора. Поэтому рекомендуется минимизировать их использование, особенно в критичных по производительности частях приложения.
🟠Нужда
Несмотря на возможное негативное влияние на производительность, боксинг и анбоксинг необходимы для работы со значимыми типами в контекстах, где требуются объекты (например, при работе с коллекциями типа ArrayList).
Ставь 👍 и забирай 📚 Базу знаний
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
