C# | Вопросы собесов
Відкрити в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Показати більше5 047
Підписники
-824 години
-137 днів
-2330 день
Архів дописів
5 046
Repost from easyoffer
На easyoffer 2.0 появится:
🎯 Тренажер "Проработка вопросов"
✅ Метод интервальных повторений и флеш-карточки
✅ Персональный подход изучения на основе ваших ответов
✅ Упор на самые частые вопросы
📌 Интервальные повторения по карточкам это научно доказанный метод эффективного обучения. Каждая карточка – это вопрос, который задают на собеседовании, вы можете выбрать "Не знаю", "Знаю", "Не спрашивать". После ответа вам показывается правильный ответ и возможность изучить вопрос подробнее (примеры ответов других людей). От ваших ответов зависит то, как часто карточки будут показываться на следующей тренировке. Трудные вопросы показываются чаще, простые – реже. Это позволяет бить в слабые места. Кроме того, изначальный порядок карточек зависит от частотности (вероятности встретить вопрос).
🚀 Благодаря этому тренажеру вы сможете очень быстро подготовиться к собеседованию, т.к. фокусируетесь отвечать на самые частые вопросы. Именно так готовился я сам, когда искал первую работу программистом.
Уже в течение недели я объявлю о старте краудфандинговой кампании на сбор финансирования, чтобы ускорить разработку сайта. Все кто поддержит проект до официального релиза получат самые выгодные условия пользования сервисом. А именно 1 год доступа к сайту по цене месячной подписки.
‼️ Очень важно, чтобы как можно больше людей поддержали проект в первые дни, по-этому те кто окажет поддержку первыми получат еще более выгодную стоимость на годовую подписку и существенный 💎 бонус о котором я позже расскажу в этом телеграм канале. Подписывайтесь, чтобы узнать о старте проекта раньше других и воспользоваться лимитированными вознаграждениями.
5 046
Крупнейший университет искусственного интеллекта
Приглашаем на бесплатный однодневный интенсив по AI!
Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
5 046
🤔 Чем отличается ссылочный и значимый тип?
Ссылочные типы хранят адрес объекта в памяти, а значимые – непосредственно значение. Изменение значимого типа не затрагивает другие переменные, тогда как при изменении ссылочного типа модифицируется сам объект, доступный по ссылке.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 046
🤔 Пример выполнения кода, когда возвращается объект интерфейса Iqueryable?
IQueryable<T> — это интерфейс, который используется для отложенного выполнения запросов (deferred execution). Он позволяет строить SQL-запросы к базе данных или манипулировать данными в памяти, но сам запрос выполняется только в момент его итерации (ToList(), FirstOrDefault(), Count(), и т. д.).
🚩Пример работы с `IQueryable<T>` на Entity Framework Core
Предположим, у нас есть сущность Product и контекст базы данных AppDbContext
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("YourConnectionString");
}
}
Теперь создадим репозиторий, который возвращает IQueryable<Product>
public class ProductRepository
{
private readonly AppDbContext _context;
public ProductRepository(AppDbContext context)
{
_context = context;
}
public IQueryable<Product> GetProducts()
{
return _context.Products.Where(p => p.Price > 100);
// Запрос не выполняется здесь! Только формируется
}
}
🚩Вызов метода и выполнение запроса
Запрос к базе данных выполнится только при материализации (ToList(), FirstOrDefault(), Count(), и т. д.).
var repository = new ProductRepository(new AppDbContext());
// Создаём IQueryable-запрос
IQueryable<Product> query = repository.GetProducts();
// Добавляем дополнительное условие (запрос еще НЕ выполнен)
query = query.OrderBy(p => p.Name);
// Теперь выполняем запрос к БД
List<Product> products = query.ToList(); // SQL-запрос отправляется в базу
Ставь 👍 и забирай 📚 Базу знаний5 046
Начните диджитал-карьеру: бесплатные уроки с практикой
Десятки курсов по десяткам профессий: вводные части бесплатно, чтобы определиться.
Попробовать
#реклама
start.practicum.yandex
О рекламодателе
5 046
🤔 Какие паттерны GoF приходилось использовать?
Паттерны GoF (Gang of Four) включают порождающие, структурные и поведенческие паттерны. Чаще всего используются Singleton, Factory, Observer, Adapter и Strategy, которые решают задачи управления зависимостями, расширяемости и инкапсуляции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 046
🤔 Каковы преимущества и недостатки использования контейнеров, таких как Docker в .NET приожениях?
Использование контейнеров, таких как Docker, в .NET приложениях имеет множество преимуществ, но также и некоторые недостатки. Вот основные из них:
🚩Плюсы
➕Портативность
Контейнеры включают все необходимые зависимости и настройки, что позволяет легко переносить приложения между различными средами (разработка, тестирование, производство) без изменения кода.
Пример: Docker-образ, созданный на локальной машине разработчика, может быть запущен на сервере производства без изменений.
➕Изолированность
Контейнеры изолируют приложения и их зависимости, предотвращая конфликты между различными версиями библиотек и инструментов.
Пример: Разные версии .NET Core могут сосуществовать на одной машине в разных контейнерах.
➕Легкость масштабирования
Контейнеры легко масштабировать горизонтально, создавая новые экземпляры приложения в ответ на увеличивающуюся нагрузку.
Пример: В Kubernetes можно легко добавить новые поды с контейнерами, чтобы справиться с повышенной нагрузкой.
➕Быстрое развертывание и запуск
Контейнеры запускаются быстрее, чем виртуальные машины, так как они не требуют загрузки всей операционной системы.
Пример: Docker-контейнер может быть запущен за несколько секунд, тогда как виртуальная машина может загружаться несколько минут.
➕Консистентность среды
Контейнеры обеспечивают консистентность среды между разработкой, тестированием и продакшн-окружением.
Пример: Одинаковая версия .NET Runtime и конфигурации могут быть гарантированы во всех средах.
➕Упрощенная CI/CD
Контейнеры интегрируются с инструментами CI/CD, что упрощает автоматизацию сборки, тестирования и развертывания.
Пример: Jenkins или GitHub Actions могут использовать Docker для создания и тестирования приложений в изолированных средах.
🚩Минусы
➖Изучение и сложность
Понимание и настройка контейнеров и связанных инструментов требует времени и навыков.
Пример: Изучение Docker, Docker Compose и Kubernetes может занять значительное время для команды.
➖Производительность
Хотя контейнеры легче, чем виртуальные машины, они все равно добавляют некоторую накладную на производительность.
Пример: Контейнеры могут использовать больше ресурсов, чем напрямую запущенные на хосте процессы, особенно при интенсивных I/O операциях.
➖Безопасность
Контейнеры изолируют процессы, но изоляция не так сильна, как у виртуальных машин. Ошибки конфигурации могут привести к проблемам безопасности.
Пример: Уязвимость в Docker или неправильная конфигурация сетевых правил могут привести к компрометации контейнера.
➖Ограничения хост-системы
Контейнеры зависят от хост-операционной системы и её ядра. Это может вызвать проблемы совместимости.
Пример: Windows-контейнеры не могут быть запущены на Linux-системах и наоборот.
➖Управление состоянием и данными
Контейнеры лучше всего подходят для безгосударственных приложений. Управление состоянием и данными может быть сложным.
Пример: Работа с постоянными данными требует настройки volume'ов или использование внешних систем хранения данных.
Ставь 👍 и забирай 📚 Базу знаний
5 046
Обучение аналитике данных с поддержкой и скидкой 50%
Освойте востребованную профессию за 5 месяцев!
🎓Чему научитесь:
» использовать Python для анализа данных
» составлять продвинутые SQL-запросы
» самостоятельно извлекать данные из хранилищ
» разрабатывать понятные отчеты и презентации
📊Практикуйтесь на реальных задачах бизнеса!
✨Кому подойдет обучение:
» новичкам, решившим начать карьеру в Data Science
» аналитикам с опытом для углубления знаний
» маркетологам для оценки эффективности каналов
» менеджерам для самостоятельного расчета бизнес-метрик
❤️Мы поможем подготовиться к поиску работы😊
Оставьте заявку прямо сейчас и сделайте первый шаг к успешной карьере в IT!
Узнать больше
#реклама 16+
karpov.courses
О рекламодателе
5 046
🤔 Что делает OAuth-аутентификация?
OAuth-аутентификация позволяет пользователям авторизовываться через сторонние сервисы без передачи паролей. Она основана на токенах доступа и обновления, которые предоставляют клиентам ограниченный доступ к ресурсам пользователя.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 046
Пройди обучение и стань Middle Data Engineer в LEFT JOIN
Инженерия данных: от проектирования до нетривиальной обработки
🎓Чему научитесь:
» использовать Python для анализа данных
» составлять продвинутые SQL-запросы
» самостоятельно извлекать данные из хранилищ
» разрабатывать понятные отчеты и презентации
📊Научим правильно готовить данные любых размеров и сложности
✨Кому подойдет обучение:
» аналитикам данных, которые хотят лучше разобраться в ETL-процессах
» инженерам данных, которые уже работают с хранилищами и хотят систематизировать свои знания.
» BI-разработчикам, освоить архитектуру современных хранилищ и научиться их проектировать
❤️Мы поможем подготовиться к поиску работы😊
И стань Middle Data Engineer в LEFT JOIN
Узнать больше
#реклама 16+
karpov.courses
О рекламодателе
5 046
🤔 Как сейчас делается Singleton?
В современном C# паттерн Singleton можно реализовать несколькими способами, каждый из которых имеет свои преимущества и предназначен для различных сценариев использования. Рассмотрим несколько распространенных подходов к реализации Singleton.
🟠Ленивый Singleton (Lazy Initialization)
Ленивый Singleton инициализируется при первом обращении. Это обеспечивает отложенную инициализацию объекта и гарантирует потокобезопасность.
public class Singleton
{
private static readonly Lazy<Singleton> lazyInstance = new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance => lazyInstance.Value;
private Singleton()
{
// Приватный конструктор
}
}
🟠Потокобезопасный Singleton (Thread-safe)
Этот подход использует lock для обеспечения потокобезопасности при создании экземпляра.
public class Singleton
{
private static Singleton instance;
private static readonly object lockObj = new object();
private Singleton()
{
// Приватный конструктор
}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (lockObj)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
}
Eager Initialization (Инициализация при загрузке)
Экземпляр Singleton создается при загрузке класса. Это гарантирует потокобезопасность за счет особенностей инициализации статических переменных в .NET.
public class Singleton
{
private static readonly Singleton instance = new Singleton();
public static Singleton Instance => instance;
private Singleton()
{
// Приватный конструктор
}
}
🟠Static Constructor (Статический конструктор)
Использование статического конструктора для инициализации Singleton.
public class Singleton
{
private static readonly Singleton instance;
static Singleton()
{
instance = new Singleton();
}
public static Singleton Instance => instance;
private Singleton()
{
// Приватный конструктор
}
}
Singleton с внедрением зависимостей (Dependency Injection)
В современных приложениях, особенно с использованием ASP.NET Core, Singleton часто регистрируется в контейнере внедрения зависимостей.
public class SingletonService
{
public void DoWork()
{
// Выполнение работы
}
}
// Регистрация в контейнере служб
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<SingletonService>();
}
// Использование в контроллере
public class MyController : ControllerBase
{
private readonly SingletonService _singletonService;
public MyController(SingletonService singletonService)
{
_singletonService = singletonService;
}
public IActionResult Index()
{
_singletonService.DoWork();
return Ok();
}
}
Ставь 👍 и забирай 📚 Базу знаний5 046
UserGate Open Conf 17 / 04 / 2025
⚡ ИТ-конференция про защиту в открытую.
Здесь мы создаем площадку для открытого диалога между заказчиками, партнерами, экспертами и специалистами в сфере продуктов, технологий и услуг информационной безопасности.
Что мы готовим для вас:
- аналитические данные исследования рынка информационной безопасности;
- обзор новых видов и эволюции киберугроз с разбором кейсов по борьбе с ними;
- планы внедрения новых фич и обновлений продуктов экосистемы UserGate;
- 30+ продуктовых, партнерских и клиентских докладов;
- нетворкинг, продуктовые демо, обмен опытом и консультации экспертов ИБ;
- ответы на любые вопросы и сбор обратной связи о работе продуктов и устройств UserGate.
Зарегистрироваться
#реклама
openconf.usergate.com
О рекламодателе
5 046
🤔 Для чего нужны методы service configuration?
Методы конфигурации сервисов определяют, как создаются, настраиваются и управляются зависимости в приложении. Они используются в DI-контейнерах для регистрации singleton, transient и scoped зависимостей, что помогает управлять временем жизни сервисов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 046
Бесплатный проект для новичков в DevOps. Подписывайся!
Сообщество для начинающих DevOps-инженеров.
В канале собраны фишки DevOps. Как быстро стартануть в DevOps и внедрить методологию в свои проекты? Какие инструменты осваивать в первую очередь? Лекции, статьи и вебинары от ведущих практиков IT-рынка. Практические задания, еженедельные разборы и лайвы от наставника проекта
Подписаться
#реклама 16+
slurm.io
О рекламодателе
5 046
🤔 Зачем сделали ref & out для ссылочных типов?
В C# ключевые слова
ref и out используются для передачи аргументов по ссылке, что позволяет методам изменять значения этих аргументов. Эти механизмы полезны как для значимых типов (структур), так и для ссылочных типов (объектов). Давайте рассмотрим более детально, зачем и как их используют для ссылочных типов.
🚩`ref`
С помощью ref можно передавать ссылочные типы таким образом, чтобы метод мог изменять саму ссылку, то есть ссылаться на другой объект.
🚩`out`
Ключевое слово out позволяет передавать аргумент, который не обязательно должен быть инициализирован до вызова метода. Метод, принимающий out аргумент, обязан присвоить ему значение до завершения работы.
🚩Как используются `ref` и `out`?
Пример использования ref
class Program
{
static void ChangeReference(ref MyClass obj)
{
obj = new MyClass { Value = 20 };
}
static void Main()
{
MyClass myObj = new MyClass { Value = 10 };
ChangeReference(ref myObj);
Console.WriteLine(myObj.Value); // Output: 20
}
}
class MyClass
{
public int Value { get; set; }
}
Пример использования out
class Program
{
static void InitializeObject(out MyClass obj)
{
obj = new MyClass { Value = 30 };
}
static void Main()
{
MyClass myObj;
InitializeObject(out myObj);
Console.WriteLine(myObj.Value); // Output: 30
}
}
class MyClass
{
public int Value { get; set; }
}
🚩Почему это нужно?
🟠Гибкость
ref и out добавляют гибкости при работе с методами, позволяя им изменять ссылки на объекты или создавать и возвращать новые объекты.
🟠Оптимизация
Эти механизмы могут быть полезны для оптимизации, когда необходимо избежать лишнего копирования данных, особенно при работе с большими объектами.
🟠Логика инициализации
out полезен для методов, которые должны вернуть несколько значений или инициализировать объекты, которые не могут быть инициализированы заранее.
Ставь 👍 и забирай 📚 Базу знаний5 046
Прокачаем ваш скилл по Java с junior до middle
Научим писать код, который не стыдно показать
Личный наставник. Актуальная программа. Попробуй!
Узнать больше
#реклама 16+
ykul.ru
О рекламодателе
5 046
⌨️ Создание высоконагруженных систем на C#: инструменты и техники
Приглашаем на открытый урок.
🗓 18 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «C# Developer Professional».
На вебинаре:
✔️ Узнаем, как проектировать масштабируемые приложения с использованием современных подходов, таких как микросервисы и event-driven архитектура;
✔️ Рассмотрим Redis: как правильно кешировать данные, использовать Pub/Sub, шардирование и репликацию для повышения производительности;
✔️ Разберем gRPC и HTTP/2: как с их помощью обрабатывать огромное количество запросов с минимальной задержкой;
✔️ А также проведем практическую демонстрацию:
- настройки Redis и реализации кеширования в приложении на C#
- создания gRPC-сервиса для быстрой и надежной коммуникации между компонентами системы.
🔗 Ссылка на регистрацию: https://otus.pw/wqNd/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
5 046
🤔 Что из себя представляет библиотека Dependency Injection?
Библиотека Dependency Injection управляет созданием и внедрением зависимостей в объекты. Она позволяет сократить жесткие связи между компонентами, улучшить тестируемость кода и контролировать жизненный цикл объектов через контейнеры зависимостей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 046
Почему вы не используете Битрикс24 CRM с AI-помощником?
1- не знал
2- забыл
Рассказываем и напоминаем!
✅Битрикс24 CRM с AI помогает увеличивать продажи, работать с постоянными клиентами и сохранять все важные данные. AI-помощник CoPilot внутри сервиса расшифрует телефонные разговоры и автоматически заполнит карточки клиента в CRM.
Битрикс24 можно использовать бесплатно для всех команд, независимо от их размера.
⚡Не тратьте время на рутину.
Узнать больше
#реклама 16+
bitrix24.ru
О рекламодателе
5 046
🤔 Для чего нужны методы service configuration?
В ASP.NET Core методы Service Configuration используются для настройки и регистрации зависимостей в контейнере внедрения зависимостей (Dependency Injection, DI). Это позволяет управлять зависимостями в приложении, делая код более гибким, тестируемым и удобным для расширения.
🚩Где происходит настройка сервисов?
Настройка сервисов выполняется в методе
ConfigureServices(IServiceCollection services), который находится в классе Program.cs или Startup.cs (в зависимости от версии .NET).
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(); // Добавление контроллеров для API
services.AddDbContext<ApplicationDbContext>(); // Регистрация контекста базы данных
services.AddScoped<IMyService, MyService>(); // Внедрение зависимости
}
🚩Основные виды регистрации сервисов
🟠`AddSingleton<T>`
создаёт единственный экземпляр объекта на всё время работы приложения.
services.AddSingleton<ILogger, ConsoleLogger>();
🟠`AddScoped<T>`
создаёт один экземпляр объекта на каждый HTTP-запрос.
services.AddScoped<IUserService, UserService>();
🟠`AddTransient<T>`
создаёт новый экземпляр объекта при каждом запросе.
services.AddTransient<IEmailSender, EmailSender>();
🚩Пример использования в контроллере
public class HomeController : Controller
{
private readonly IMyService _myService;
public HomeController(IMyService myService)
{
_myService = myService;
}
public IActionResult Index()
{
var data = _myService.GetData();
return View(data);
}
}
Ставь 👍 и забирай 📚 Базу знаний
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
