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

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

Kanalga Telegram’da o‘tish
5 059
Obunachilar
-524 soatlar
-77 kunlar
-1730 kunlar
Postlar arxiv
🤔 Какие принципы и практики используешь для обеспечения безопасности приложений? 🟠Валидация и Санитизация Входных Данных Валидация входных данных помогает предотвратить атаки, такие как 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"];
Ставь 👍 и забирай 📚 Базу знаний

Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - с
Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - создание инфографики и карточек для маркетплейсов - работа в графическом редакторе Figma и др. Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе

🤔 Что такое нормализация в базе данных? Это процесс организации данных в БД с целью устранения избыточности и обеспечения целостности. Осуществляется путём разбиения таблиц и установления связей между ними. Применяются нормальные формы (1NF, 2NF, 3NF и выше). Оптимизация под read-heavy нагрузки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

ИИ-революция в вашей карьере: бесплатный вебинар 2025 год: нейросети — это must-have навык для карьерного роста. 👌 ✅Приглашаем на бесплатный живой вебинар, где вы: --- Поймете, какие нейросети существуют и как их применять в работе. --- Научитесь писать эффективные промпты и автоматизировать рутину. --- Узнаете, как делегировать ИИ задачи и экономить от 20 часов в неделю! --- Создадите своего первого ИИ-ассистента в прямом эфире. Получите руководство «Как создать цифровой аватар» сразу после регистрации! Подойдет новичкам. Онлайн-формат с ответами на вопросы. ⚡ Жмите «Зарегистрироваться», чтобы прокачать свой скилл-сет и освободить время для главного! Зарегистрироваться #реклама 16+ ed.bonnieandslide.com О рекламодателе

🤔 Что такое .NET стандарт? .NET Standard — это спецификация API, которая определяет набор базовых библиотек, доступных во всех реализациях .NET (например, .NET Framework, .NET Core, Xamarin, Unity и других). Она была создана для обеспечения совместимости между разными платформами .NET. 🚩Зачем нужен .NET Standard? До появления .NET Standard существовало несколько отдельных реализаций .NET: .NET Framework (для Windows-приложений) .NET Core (кроссплатформенная версия .NET) Mono/Xamarin (для мобильных и игровых приложений) Каждая из них имела свои особенности и набор доступных API. Из-за этого разработчики, создавая библиотеку, сталкивались с проблемой совместимости: приходилось писать несколько версий кода под разные платформы или использовать Portable Class Library (PCL), которая имела ограниченный функционал. .NET Standard решил эту проблему, введя единый набор API, который обязаны поддерживать все реализации .NET. 🚩Как это работает? .NET Standard представляет собой абстрактную спецификацию API, которая реализуется разными версиями .NET. Например, .NET Standard 2.0 поддерживается в .NET Framework 4.6.1, .NET Core 2.0 и выше. Если библиотека написана под .NET Standard 2.0, её можно использовать во всех этих средах. 🚩Версии .NET Standard Существуют разные версии .NET Standard, каждая из которых включает больше API, чем предыдущая. Чем выше версия, тем больше возможностей, но и тем меньше совместимость с более старыми реализациями .NET. 🚩Пример использования Создаём Class Library с таргетом .NET Standard 2.0:
   namespace MyLibrary
   {
       public class MathHelper
       {
           public static int Add(int a, int b)
           {
               return a + b;
           }
       }
   }
Ставь 👍 и забирай 📚 Базу знаний

REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызо
REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения. С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры. Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

🤔 Почему требуется API между базой данных и клиентским приложением? API (например, REST или GraphQL) обеспечивает прослойку между клиентом и базой данных, потому что: 1. Безопасность — база данных не должна быть напрямую доступна клиенту. 2. Инкапсуляция логики — в API можно реализовать бизнес-логику и валидации. 3. Гибкость — можно изменять структуру базы, не затрагивая клиента. 4. Масштабируемость — API может обрабатывать нагрузку, кешировать данные и распределять запросы. 5. Контроль доступа — через API проще реализовать авторизацию и аутентификацию. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопаснос
+5
Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопасности. Стиль: разный. Собрали несколько характерных портретов участников! А каким участником планируете быть вы? - целеустремленным - основательным - многозадачным - тусовщиком - расслабленным И все это не выходя из дома. Зарегистрируйтесь, и мы напомним о старте трансляции и пришлем ссылку, чтобы вы ничего не пропустили. Записаться онлайн #реклама 16+ registration.forumsoc.ru О рекламодателе

🤔 Что в себе может хранить делегат? Делегат (delegate) — это указатель на метод(ы). Он может хранить: 1. Ссылку на один метод (одиночный делегат) 2. Ссылки на несколько методов (групповой делегат / multicast) 3. Анонимные методы и лямбда-выражения 🚩Делегат хранит ссылку на метод Делегаты позволяют вызвать метод, даже если его имя заранее неизвестно. Пример с одиночным делегатом
public delegate void MyDelegate(string message); // Объявляем делегат

public class Program
{
    public static void ShowMessage(string msg) => Console.WriteLine($"Сообщение: {msg}");

    public static void Main()
    {
        MyDelegate del = ShowMessage; // Делегат хранит ссылку на метод
        del("Привет, делегаты!"); // Вызывает ShowMessage
    }
}
🚩Делегат может хранить несколько методов (Multicast) Делегаты можно связывать с несколькими методами с помощью +=. Пример группового делегата
public delegate void MyDelegate(string message);

public class Program
{
    public static void Method1(string msg) => Console.WriteLine($"Метод 1: {msg}");
    public static void Method2(string msg) => Console.WriteLine($"Метод 2: {msg}");

    public static void Main()
    {
        MyDelegate del = Method1;
        del += Method2; // Добавляем второй метод

        del("Привет!"); 
        // Выведет:
        // Метод 1: Привет!
        // Метод 2: Привет!
    }
}
🚩Делегат может хранить анонимные методы и лямбды Делегаты могут хранить "встроенные" методы (без отдельного определения). Пример с анонимным методом
MyDelegate del = delegate (string msg) 
{
    Console.WriteLine($"Анонимный метод: {msg}");
};
del("Привет!");
Пример с лямбда-выражением
MyDelegate del = msg => Console.WriteLine($"Лямбда: {msg}");
del("Привет!");
Ставь 👍 и забирай 📚 Базу знаний

Университет искусственного интеллекта приглашает 💰 Стоимость вебинара: Бесплатно! Освойте искусственный интеллект для профес
Университет искусственного интеллекта приглашает 💰 Стоимость вебинара: Бесплатно! Освойте искусственный интеллект для профессионального роста: создавайте нейросети, автоматизируйте бизнес-задачи и зарабатывайте на AI-решениях. 💻 Программа вебинара: 1) Классификация входящих/выходящих из автобуса людей 2) Классификация отзывов на Tesla 3) Оценка выброса CO2 по параметрам машины 4) Прогнозирование тренда цены доллара 5) Сегментация изображения для робота-доставщика 6) Обнаружение людей без касок на стройке/производстве 7) Трекинг людей на видео 8) Распознавание речи 9) Генерация изображения с помощью Stable Diffusion Хотите отучиться на передовой научного прогресса? Тогда скорее регистрируйтесь! Зарегистрироваться #реклама 16+ neural-university.ru О рекламодателе

🤔 Что такое конкурентность в многопоточности? Конкурентность — это способность нескольких потоков выполняться одновременно или чередоваться в выполнении. Даже если физически работает один процессор, задачи могут переключаться быстро, создавая ощущение одновременности. Важно при этом избегать конфликтов между потоками. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 В чём разница абстрактного класса и интерфейса? Абстрактный класс и интерфейс - это два механизма, которые обеспечивают наследование и полиморфизм, но они используются по-разному и для разных целей. Представляет собой класс, от которого нельзя создать экземпляр напрямую. Он предназначен для описания общего поведения и состояния своих подклассов. Абстрактные классы могут содержать реализацию некоторых методов и свойств. Это означает, что абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией. Подклассы абстрактного класса обязаны реализовать все абстрактные методы, но они также наследуют реализованные методы и свойства.
public abstract class Животное
{
    public abstract void Есть(); // Абстрактный метод, должен быть реализован в наследнике.

    public void Дышать() // Метод с реализацией, наследуется всеми наследниками.
    {
        Console.WriteLine("Дыхание");
    }
}
Интерфейс определяет контракт, который классы или структуры могут реализовывать. Интерфейсы могут содержать объявления методов, свойств, событий, но не их реализации. Класс или структура, реализующие интерфейс, должны предоставить реализацию для всех его членов. Важно отметить, что класс может реализовывать несколько интерфейсов, что обеспечивает форму множественного наследования.
public interface IЖивотное
{
    void Есть(); // Метод, который должен быть реализован в классе.
}
🚩Основные различия 🟠Наследование Класс может наследовать только от одного абстрактного класса (из-за ограничения одиночного наследования в C#), но может реализовывать множество интерфейсов. 🟠Члены Абстрактные классы могут содержать реализацию методов и поля данных, в то время как интерфейсы могут содержать только объявления методов и свойств (без полей и реализации). 🟠Конструкторы и деструкторы Абстрактные классы могут иметь конструкторы и деструкторы, в то время как интерфейсы - нет. 🟠Модификаторы доступа В интерфейсах все члены по умолчанию являются public, и вы не можете указать другой модификатор доступа. В абстрактных классах вы можете использовать различные модификаторы доступа. Ставь 👍 и забирай 📚 Базу знаний

Месяц игр в RuStore Любите мобильные игры? Тогда загляните в RuStore ⚡ В течение всего месяца вас ждут эксклюзивные скидки от 30% и промокоды в популярных играх. RPG, стратегии, гонки, головоломки, казуалки — в сторе доступно более 40 000 игр от российских и зарубежных разработчиков. Игры и бонусы уже ждут вас — переходите, загружайте и побеждайте. Перейти на сайт #реклама 16+ rustore.ru О рекламодателе

🤔 Что такое атрибуты и какова их основная цель? Это метаданные, добавляемые к элементам кода (классам, методам, свойствам) для описания их поведения. Они позволяют изменять или дополнять поведение во время выполнения, например, управлять сериализацией или валидацией. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Можно ли 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
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Есть прямоугольник и квадрат, цель вычислить площадь, что нарушает принцип Барбары Лисков? Если класс "Квадрат" наследуется от "Прямоугольник" и переопределяет методы установки ширины и высоты так, что нарушает их независимость, это ломает принцип Лисков. Например, изменение ширины у квадрата изменяет и высоту, что не ожидается для прямоугольника. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи про парадигмы и принципы ООП Парадигмы программирования — это подходы к написанию кода. 🚩Инкапсуляция (Encapsulation) Скрытие деталей и защита данных.
public class Car
{
    private string _engine = "V8"; // Скрытое поле

    public void Start() => Console.WriteLine("Машина завелась!");
}
🚩Наследование (Inheritance) Класс-потомок получает свойства и методы родителя.
public class Animal 
{
    public void Speak() => Console.WriteLine("Издаёт звук");
}

public class Dog : Animal { } // Наследует Animal

Dog dog = new Dog();
dog.Speak(); // Издаёт звук
🚩Полиморфизм (Polymorphism) Один интерфейс – разные реализации.
public class Animal
{
    public virtual void Speak() => Console.WriteLine("Неизвестный звук");
}

public class Cat : Animal
{
    public override void Speak() => Console.WriteLine("Мяу!");
}

Animal myCat = new Cat();
myCat.Speak(); // Выведет "Мяу!"
🚩Абстракция (Abstraction) Выделяем только важное, остальное скрываем.
public abstract class Vehicle
{
    public abstract void Move();
}

public class Bicycle : Vehicle
{
    public override void Move() => Console.WriteLine("Едет на педалях");
}
Ставь 👍 и забирай 📚 Базу знаний

Гайд для маркетологов по эффективным онлайн-встречам Как CMO, PR и digital-маркетологам повысить результативность брейнштормо
Гайд для маркетологов по эффективным онлайн-встречам Как CMO, PR и digital-маркетологам повысить результативность брейнштормов, совещаний и планерок с командой с помощью онлайн-встреч? Гайд МТС Линк: 37 страниц полезных материалов, чек-листов и кейсов для эффективных видеовстреч и совещаний. ✅ В гайде: - Как создать постоянную ссылку на регулярные встречи с подрядчиками, командой или агентствами и подключаться в 2 клика; - Как управлять встречей и завершить ее четкими договоренностями с ИИ-расшифровкой голоса в текст; - Как проводить кастдевы, брейнштормы и формулировать гипотезы с помощью 15+ шаблонов в онлайн-досках МТС Линк; - Как разом пригласить всех участников на синк таким образом, чтобы все пришли. Бонус внутри: 5 способов не выгореть от бесконечных синков. ✨ Скачайте гайд бесплатно по ссылке Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Как можно не отслеживать сущность? В Entity Framework можно не отслеживать сущность, чтобы она не попадала под управление контекста (DbContext) — это снижает нагрузку и повышает производительность при чтении данных. Способы: - Использовать AsNoTracking() - Использовать проекцию в DTO (анонимные объекты или модели без привязки к EF) Такой подход полезен, если изменения в объект не планируются. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний