C# | Вопросы собесов
الذهاب إلى القناة على Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
إظهار المزيد5 008
المشتركون
-324 ساعات
-67 أيام
+1130 أيام
أرشيف المشاركات
5 007
🤔 Что такое виртуальный метод?
Виртуальный метод (virtual) — это метод, который можно переопределить в производном классе с помощью override.
Он позволяет реализовать полиморфизм:
поведение метода будет определяться типом фактического объекта, а не ссылкой.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
Repost from easyoffer
Офигеть, вот это поддержка! 🔥
Скажу честно: когда я планировал запуск краудфандинговой кампании, в голове были разные варианты развития событий. Думал — ну, наверное, получится собрать 300 тысяч. В самом идеальном сценарии — может быть, миллион.
Но больше всего я боялся, что запущу кампанию, и не получится собрать даже 300 т. Это был бы провал. Так много усилий, времени и денег вложено в проект… и если бы всё закончилось ничем — это бы сильно демотивировало.
Но, ребята, мы превысили изначальную цель в 10 раз —
3 031 040 рублей! 🤯
Вся эта кампания — это одна большая проверка бизнес-модели на прочность. И я супер рад, что запустил всё публично. Люди видят, что EasyOffer реально нужен. Теперь нет сомнений — проект актуален, он будет прибыльным и будет развиваться.
Мне приходит огромное количество сообщений в личку: кто-то когда-то давно пользовался сайтом, он помог с трудоустройством, и сейчас они уже не ищут работу — но всё равно поддержали.
Это прям очень круто и трогательно.
Никак не могу отделаться от мысли, что easyoffer — это ведь мой первый сайт. Учебный, пет-проект, просто для портфолио. И вот что из него вышло. Просто офигеть.
Я не зря ушёл с работы, чтобы заниматься только им.
Я поверил в этот проект — и сейчас вижу, что вы тоже в него верите. Для меня это очень многое значит.
Огромное спасибо за вашу поддержку! ❤️
5 007
🤔 Что такое Generic-и?
Термин "Generic" (общий тип) относится к функциональности, позволяющей определять классы, интерфейсы или методы с использованием параметра типа, который определяется в момент создания экземпляра класса или вызова метода. Обобщённые типы широко используются для повышения повторного использования кода, типобезопасности и производительности. Как и во многих других языках программирования, generics представляют собой мощный инструмент, который устраняет необходимость в чрезмерном приведении типов и может уменьшить количество дублирующего кода.
🚩Основы
Пример использования Generic-ов в классе
public class GenericList<T>
{
private T[] elements;
private int size;
public GenericList(int size)
{
elements = new T[size];
this.size = size;
}
public void Add(T element)
{
// Логика добавления элемента
}
public T this[int i]
{
get { return elements[i]; }
set { elements[i] = value; }
}
}
Пример использования Generic-ов в методе
public T GenericMax<T>(T x, T y) where T : IComparable
{
return x.CompareTo(y) > 0 ? x : y;
}
🚩Плюсы
➕Повышение переиспользуемости кода
Обобщённые классы и методы могут работать с любым типом данных, что позволяет разработчикам использовать один и тот же код для данных различных типов.
➕Типобезопасность
Generics обеспечивают проверку типов на этапе компиляции. Это улучшает безопасность и стабильность кода, уменьшая риск возникновения ошибок во время выполнения программы из-за некорректного приведения типов.
➕Улучшение производительности
Использование generics может помочь улучшить производительность, т.к. уменьшает необходимость в приведении типов, которое может быть дорогостоящим в плане ресурсов процессора.
Ставь 👍 и забирай 📚 Базу знаний5 007
Робот мойщик окон Hobot-R3 Ultrasonic. Гарантия 3 года.
✨ Встречайте лето - чистыми окнами с Hobot-R3:
- Два ультрозвуковых распылителя чистящей жидкости.
- Инверторный двигатель Nidec (долговечный, тихий запуск и мощный).
- На старте в режиме автоматической чистки, робот смачивает салфетку, чтобы увеличить силу трения и надежность.
- Качественные салфетки из микрофибры, удерживают грязь и пыль до момента стирки. Не царапают поверхность.
- Интеллектуальная траектория движения - без пропуска грязных участков.
- Управление со смартфона.
- Голосовые уведомления с возможностью записи собственных или установка готовых с телефона/интернета.
- Прошивка меняется по воздуху ОТА обновление- с сохранением настроек.
- 3 автоматических режима уборки.
Hobot-R3 экономит силы и время!
Купить
#реклама
hobot.ru
О рекламодателе
5 007
🤔 Можем ли построить цепочку наследования через абстрактные классы?
Да, в .NET можно построить цепочку наследования, включающую один или несколько абстрактных классов. Абстрактные классы служат как основа, задающая общую структуру, а потомки могут реализовывать или расширять логику.
Так можно выстраивать иерархии от более абстрактных понятий к более конкретным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
🤔 Что такое сборщик мусора?
Сборщик мусора (Garbage Collector, GC) — это форма автоматического управления памятью. Он отслеживает каждый объект, выделенный в куче, и определяет, какие объекты более не доступны для приложения, а затем освобождает память, занимаемую этими объектами. Это ключевой компонент во многих современных языках программирования и средах выполнения, облегчая задачу управления памятью.
🚩Основные этапы работы
🟠Маркировка (Marking)
Сборщик мусора периодически проходит через все объекты в куче, начиная с "корней" (объектов, непосредственно доступных в программе, например, через переменные в стеке вызовов и глобальные переменные). Он отмечает все объекты, до которых можно добраться напрямую или косвенно.
🟠Очистка (Sweeping)
После маркировки доступных объектов, сборщик мусора удаляет все непомеченные объекты, освобождая ресурсы, которые они занимали.
🟠Компактификация (Compacting)
Некоторые сборщики мусора перемещают оставшиеся объекты, чтобы уменьшить фрагментацию памяти и улучшить производительность работы с памятью.
🚩Ограничения
🟠Производительность
Процесс сборки мусора может быть ресурсоёмким и может привести к заметным паузам в выполнении программы, особенно если куча большая.
🟠Непредсказуемость
Точное время сборки мусора может быть непредсказуемым, что может создавать проблемы в приложениях с реальным временем.
Ставь 👍 и забирай 📚 Базу знаний
5 007
🤔 Как работает ThreadPool?
- Имеется ограниченное количество потоков, заранее подготовленных.
- Когда приходит задача — она ставится в очередь.
- Свободный поток из пула берёт задачу и исполняет её.
- По завершению поток возвращается обратно в пул, а не уничтожается.
Это позволяет эффективно обрабатывать множество мелких задач без перегрузки системы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
Инвестиции в оборудование для майнинга!
Зарабатывайте на купле-продаже майнингового оборудования вместе с MineStream Business!
Ваши выгоды:
- Поддержка экспертов 👍
- Высокая ликвидность 📅
- Долгосрочные перспективы 💰
- Возможность быстрого старта ⚡
Узнать больше
#реклама
mine-stream.ru
О рекламодателе
5 007
🤔 Можно ли 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 007
Бесплатное льготное обучение: 3 месяца
Мы ищем людей, которые хотят работать в IT-сфере из дома
💰 Оплата от 150.000 рублей в месяц
Образование, место жительства, трудовой стаж — не важны!
Подходит, как для подработки / декретного отпуска, так и для полной занятости.
Если заинтересовались, то для старта нужно:
— пройти короткий тест
— заполнить анкету
На что можно рассчитывать:
✅ удаленная работа
✅ зп от 150.000 рублей (потолка нет)
✅ стабильная подработка, если не хотите уходить с основной работы
⚡ Количество бесплатных мест ограничено. Успейте пройти тест и оставить заявку:
Узнать больше
#реклама
technolium.ru
О рекламодателе
5 007
🤔 При каких кейсах нужно денормализовывать данные?
Денормализация полезна, когда:
- Требуется высокая скорость чтения (например, в аналитических системах).
- Данные часто используются совместно и удобно держать их "рядом".
- Стоимость JOIN'ов становится критичной.
- Архитектура позволяет контролировать избыточность на уровне приложения.
Примеры кейсов:
- Системы отчетности и аналитики (DWH).
- Кэширование данных.
- Оптимизация под read-heavy нагрузки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
Repost from easyoffer
📅 Осталось 7 дней до конца краудфандинга
Мы на финишной прямой!
Если ты планировал присоединиться, но ещё не успел, сейчас идеальный момент.
Вознаграждения за поддержку:
🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу.
➕ Приглашение на закрытое бета-тестирование
👉 Поддержать easyoffer 2.0
Не откладывай на последний момент
📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
5 007
🤔 Что такое медиатор?
Это паттерн проектирования поведенческих шаблонов, который позволяет уменьшить связанность между объектами, обеспечивая взаимодействие через центральный объект-посредник. Медиатор упрощает коммуникацию между компонентами системы, делая ее более модульной и легкой для сопровождения.
🚩Примеры использования
1⃣Определение интерфейса медиатора
public interface IMediator
{
void Notify(object sender, string ev);
}
2⃣Реализация медиатора
public class DialogMediator : IMediator
{
private Button _button;
private TextBox _textBox;
public DialogMediator(Button button, TextBox textBox)
{
_button = button;
_button.SetMediator(this);
_textBox = textBox;
_textBox.SetMediator(this);
}
public void Notify(object sender, string ev)
{
if (ev == "ButtonClick")
{
_textBox.Clear();
}
else if (ev == "TextBoxEnter")
{
_button.SetEnabled(true);
}
}
}
3⃣Компоненты, взаимодействующие через медиатора
public class Button
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void Click()
{
Console.WriteLine("Button clicked");
_mediator.Notify(this, "ButtonClick");
}
public void SetEnabled(bool enabled)
{
Console.WriteLine($"Button is {(enabled ? "enabled" : "disabled")}");
}
}
public class TextBox
{
private IMediator _mediator;
public void SetMediator(IMediator mediator)
{
_mediator = mediator;
}
public void EnterText()
{
Console.WriteLine("Text entered");
_mediator.Notify(this, "TextBoxEnter");
}
public void Clear()
{
Console.WriteLine("TextBox cleared");
}
}
4⃣Использование медиатора в приложении
var button = new Button();
var textBox = new TextBox();
var mediator = new DialogMediator(button, textBox);
textBox.EnterText(); // Ввод текста активирует кнопку
button.Click(); // Нажатие кнопки очищает текстовое поле
🚩Плюсы и минусы
➕Снижение связанности
Компоненты не взаимодействуют напрямую, а используют медиатор.
➕Упрощение поддержки
Вся логика взаимодействия сосредоточена в одном месте.
➕Повышение модульности
Легко добавлять новые компоненты или изменять существующие.
➖Усложнение медиатора
Медиатор может стать сложным, если в него добавляется много логики.
➖Единая точка отказа
Если медиатор выходит из строя, это может повлиять на всю систему.
Ставь 👍 и забирай 📚 Базу знаний5 007
❓Сталкиваетесь с задачами, когда вам нужно выбрать лучший алгоритм, но не понимаете, как анализировать их сложность? Ваш код может быть медленным или неэффективным, и вы не знаете, как это исправить?
📗На открытом вебинаре 21 апреля в 20:00 мск вы освоите важные инструменты для анализа сложности алгоритмов, улучшите свой навык решения алгоритмических задач и на примере простых алгоритмов сортировки и увидите разницу при применении алгоритмов разной степени сложности.
➡️Регистрируйтесь прямо сейчас и получите скидку на большое обучение «C# Developer» по промокоду SHARP_SPEC_4: https://otus.pw/fJjQ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
5 007
Поддержка и доработка корпоративных сайтов
✅ Работаем с любыми CMS и фреймворками
👌 Наводим порядок в коде, следим за безопасностью
⚡ Быстро реагируем на обращения и качественно выполняем задачи
❤️ Гарантия на выполненные работы — 12 мес.
Узнать больше
#реклама
njsoft.dev
О рекламодателе
5 007
🤔 Как можно не используя middleware выполнить действие перед обработкой запроса и после?
1. Использовать фильтры — например, в ASP.NET Core можно использовать ActionFilter для выполнения действий до и после метода контроллера.
2. Создать делегат обработки — добавить промежуточную логику в Use на уровне Startup.
3. Атрибуты и события — применять атрибуты для выполнения кода до обработки запроса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
🤔 Что такое 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 007
Бизнес образование в Moscow Business Academy (MBA)
Получите современное бизнес образование от международных экспертов.
✅Более 37 направлений обучения.
✅Международные дипломы.
✅Online и очные форматы обучения.
✅Разборы практических бизнес-кейсов.
Скидка на все программы online до 35%!
Узнать больше
#реклама 16+
moscow.mba
О рекламодателе
5 007
🤔 Каким образом индекс оптимизирует запрос?
Индексы позволяют базе данных быстрее находить и фильтровать данные за счет создания упорядоченной структуры. Вместо полного сканирования таблицы база данных может использовать индекс, чтобы сразу перейти к нужным записям, что значительно ускоряет выполнение запроса. Однако индексы занимают дополнительное место и могут замедлять операции вставки и обновления данных, так как индексы нужно поддерживать в актуальном состоянии.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 007
Бесплатное льготное обучение: 3 месяца
Ищем людей, которые хотят обучиться и работать в IT-сфере из дома
В конце обучения вы пройдете стажировку и устроитесь на работу с зп от 150.000 рублей
Образование, место жительства, трудовой стаж — не важны!
Для старта нужно:
— пройти короткий тест
— заполнить анкету
На что можно рассчитывать, после обучения:
✅ удаленная работа
✅ зп от 150.000 рублей (потолка нет)
✅ стабильная подработка, если не хотите уходить с основной работы
⚡ Осталось всего 47 бесплатных мест. Успейте пройти тест и оставить заявку:
Узнать больше
#реклама 16+
technolium.ru
О рекламодателе
