es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

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

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

Ir al canal en Telegram

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

Mostrar más
5 011
Suscriptores
-124 horas
-37 días
+1430 días
Archivo de publicaciones
🤔 Какие тесты бывают? 🚩Виды 🟠Юнит-тесты Предназначены для проверки отдельных компонентов или модулей приложения в изоляции. Они помогают убедиться, что отдельные функции или методы работают правильно. Цель: Проверка логики отдельных методов или классов. Инструменты: xUnit, NUnit, MSTest.
using Xunit;

public class CalculatorTests
{
    [Fact]
    public void Add_SimpleValues_ReturnsSum()
    {
        var calculator = new Calculator();
        var result = calculator.Add(2, 3);
        Assert.Equal(5, result);
    }
}

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}
🟠Интеграционные тесты Проверяют взаимодействие между различными компонентами системы, убеждаясь, что они корректно работают вместе. Цель: Проверка взаимодействия между модулями. Инструменты: xUnit, NUnit, MSTest, плюс дополнительные библиотеки для тестирования баз данных или HTTP-запросов.
using System.Net.Http;
using System.Threading.Tasks;
using Xunit;

public class IntegrationTests
{
    private readonly HttpClient _client;

    public IntegrationTests()
    {
        var appFactory = new CustomWebApplicationFactory<Startup>();
        _client = appFactory.CreateClient();
    }

    [Fact]
    public async Task Get_EndpointReturnsSuccessAndCorrectContentType()
    {
        var response = await _client.GetAsync("/api/values");
        response.EnsureSuccessStatusCode();
        Assert.Equal("application/json; charset=utf-8", response.Content.Headers.ContentType.ToString());
    }
}
🟠Функциональные тесты Проверяют, что приложение выполняет свои функции в соответствии с требованиями. Эти тесты проверяют конкретные сценарии использования. Цель: Проверка функциональности приложения на уровне пользователя. Инструменты: Selenium, Playwright, Cypress.
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Xunit;

public class UiTests
{
    [Fact]
    public void LoadPage_CheckTitle()
    {
        using (IWebDriver driver = new ChromeDriver())
        {
            driver.Navigate().GoToUrl("https://example.com");
            Assert.Equal("Example Domain", driver.Title);
        }
    }
}
🟠Системные тесты Проверяют приложение в целом, включая взаимодействие с внешними системами и проверку всех требований. Цель: Проверка всей системы в интегрированном виде. Инструменты: JUnit, TestNG для Java, или те же инструменты, что и для функциональных тестов. 🟠Приемочные тесты Проводятся для проверки, что приложение соответствует требованиям и готово к использованию клиентом или конечным пользователем. Цель: Подтверждение соответствия приложения требованиям. Инструменты: Cucumber, SpecFlow (для BDD). 🟠Регрессионные тесты Проверяют, что недавние изменения в коде не нарушили существующую функциональность. Цель: Убедиться, что новые изменения не привели к новым багам. Инструменты: Все инструменты для юнит-тестирования и функционального тестирования. 🟠Нагрузочные тесты Проверяют, как приложение ведет себя под нагрузкой, например, при большом количестве одновременных пользователей или операций. Цель: Оценка производительности и устойчивости приложения под нагрузкой. Инструменты: JMeter, Gatling, Apache Bench. Ставь 👍 и забирай 📚 Базу знаний

Почему SWG и NGFW должны работать вместе NGFW — фундамент защиты сети. Но веб-трафик — сложная экосистема, где риски могут скрываться даже внутри разрешенных ресурсов. Чтобы увидеть больше, нужно заглянуть глубже. В этом поможет SWG-система. Вместе NGFW и SWG смогут обеспечить максимальную безопасность корпоративной сети: NGFW — на периметре, а SWG — в веб-трафике. Как грамотно построить комплексную защиту периметра сети, расскажут эксперты «Солара» на вебинаре «SWG и NGFW: почему вместе, а не вместо». Вы узнаете: - Какие задачи решает NGFW, а какие — SWG; - Почему SWG — не просто «еще один фильтр», а необходимость; - Как сбалансировать защиту без потерь в производительности. Вас ждут реальные кейсы совместного использования NGFW и SWG в компаниях. Регистрируйтесь, чтобы обеспечить защиту компании. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Какие типы аутентификации есть? Существует несколько типов аутентификации, включая базовую аутентификацию по логину и паролю, одноразовые коды, токены (OAuth, JWT) и биометрические методы. Выбор зависит от уровня безопасности и удобства для пользователя. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое исключения? Исключения в программировании — это механизмы обработки ошибок и необычных ситуаций, которые возникают во время выполнения программы. В C# и других языках программирования исключения позволяют отделить код обработки ошибок от основного кода программы, что упрощает его чтение и поддержку. 🚩Основные понятия 🟠Исключение (Exception) Событие, которое прерывает нормальный поток выполнения программы. 🟠Блок try Содержит код, который может вызвать исключение. 🟠Блок catch Содержит код, который выполняется, если возникает исключение. В catch блок можно передать параметр — экземпляр исключения, которое произошло. 🟠Блок finally Содержит код, который выполняется в любом случае, независимо от того, произошло исключение или нет. Обычно используется для освобождения ресурсов. 🟠Бросание исключения (throw) Механизм для явного вызова исключения. 🚩Пример использования Основные блоки
try
{
    // Код, который может вызвать исключение
    int divisor = 0;
    int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
    // Обработка исключения
    Console.WriteLine("Деление на ноль невозможно.");
}
finally
{
    // Код, который выполнится в любом случае
    Console.WriteLine("Блок finally выполнен.");
}
Создание и бросание собственного исключения
public class InvalidAgeException : Exception
{
    public InvalidAgeException(string message) : base(message) { }
}

public void SetAge(int age)
{
    if (age < 0)
    {
        throw new InvalidAgeException("Возраст не может быть отрицательным.");
    }
    // Логика установки возраста
}
Ставь 👍 и забирай 📚 Базу знаний

Нанимаете аутсорс, подрядчиков, фрилансеров? Попробуйте Битрикс24 Коллабы – платформа для эффективной работы с подрядчиками.
Нанимаете аутсорс, подрядчиков, фрилансеров? Попробуйте Битрикс24 Коллабы – платформа для эффективной работы с подрядчиками. Тут обсуждения превращаются в задачи, а видео созвон можно собрать одной кнопкой. Любой проект можно разложить по полочкам с понятным ТЗ и обозначенными сроками. Работайте в Битрикс24 и создавайте Коллабы с подрядчиками. Начать #реклама 16+ collabs.bitrix24.ru О рекламодателе

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

Работайте с базами 1С удаленно Плохая погода за окном — пора на удалёнку! 1С:Фреш позволяет работать со всеми привычными прог
Работайте с базами 1С удаленно Плохая погода за окном — пора на удалёнку! 1С:Фреш позволяет работать со всеми привычными программами 1С через интернет — а это значит, что можно работать с вашей базой 1С:Бухгалтерия 8 или 1С:Зарплата и управление персоналм 8 из любого удобного места. Подключайтесь к вашей базе из дома или в дороге, и продолжайте работать на том месте, где остановились. ❤️ Зарегистрируйтесь, чтобы получить 30 дней бесплатного доступа! Зарегистрироваться #реклама 16+ pcs.ru О рекламодателе

🤔 Что такое I/O bound и CPU bound? При выполнении программных задач можно выделить два типа нагрузок: I/O-bound (ограничение ввода-вывода) CPU-bound (ограничение процессора) 🚩I/O-bound (ограничение ввода-вывода) Основная проблема: программа ждет завершения операций ввода-вывода (диска, сети, базы данных, файловой системы и т. д.), а не загружает процессор. Примеры: - Чтение и запись файлов на диск - Запросы к базе данных - HTTP-запросы к API - Чтение данных из сети Решение: Использование асинхронного программирования (async/await), чтобы не блокировать поток.
public async Task<string> FetchDataAsync()
{
    using HttpClient client = new HttpClient();
    return await client.GetStringAsync("https://example.com");
}
🚩CPU-bound (ограничение процессора) Основная проблема: процессор сильно загружен вычислениями, и узким местом становится скорость обработки данных, а не ввод-вывод. Примеры: - Генерация больших отчетов - Кодирование/декодирование видео - Комплексные математические вычисления - Сортировка больших массивов
public static long CalculateFactorial(int number)
{
    return Enumerable.Range(1, number).Aggregate(1, (a, b) => a * b);
}

public async Task<long> ComputeAsync(int number)
{
    return await Task.Run(() => CalculateFactorial(number));
}
Ставь 👍 и забирай 📚 Базу знаний

Курс по мотивации сотрудников, которые ничего не хотят Сегодня в Школе Гендира открыт бесплатный трехдневный доступ к онлайн-
Курс по мотивации сотрудников, которые ничего не хотят Сегодня в Школе Гендира открыт бесплатный трехдневный доступ к онлайн-курсу Ежедневная мотивация. Основа курса – практика руководителей российских компаний. После обучения вы сможете: 👍 распознавать конфликты в коллективе на начальной стадии и вовремя принимать меры 👍 определить точки роста своего лидерского потенциала 👍 построить систему грейдов в компании 👍 внедрить метод OKR для мотивации ключевых сотрудников 👍 адаптировать для себя один из алгоритмов постановки задач Оставьте заявку на бесплатный доступ на странице курса. Подать заявку #реклама 16+ gd.ru О рекламодателе

🤔 Какие есть принципы REST? REST основывается на принципах клиент-серверной архитектуры, статeless-состояний и унифицированного интерфейса. Запросы к API должны быть идемпотентными, использовать стандартизированные методы, а ресурсы должны быть представлены через понятные URL-адреса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Ты готов к ИТ-собеседованию? Бесплатный воркшоп 20 марта Приглашаем айтишников на воркшоп "Искусство продавать себя или как п
Ты готов к ИТ-собеседованию? Бесплатный воркшоп 20 марта Приглашаем айтишников на воркшоп "Искусство продавать себя или как подготовиться к собесу на все 100" Рекрутер раскроет все карты! Записывайся на воркшоп, чтобы первым узнать: — Как подготовиться к собеседованию — Как презентовать свой опыт так, чтобы тебя запомнили — Как проверяют hard skills и как к этому подготовиться — Как произвести хорошее впечатление, запомниться рекрутеру и сделать так, чтобы захотели работать именно с тобой Дата: 20 марта, 18:00 Где: Онлайн Регистрируйся, чтобы получить полезные знания и быть готовым к следующему собеседованию на 100% Зарегистрироваться #реклама 16+ my.mts-link.ru О рекламодателе

🤔 Какой слой rest и swap с точки зрения трехслойной архитектуры? В трехслойной архитектуре (трехуровневая архитектура), также известной как многоуровневая архитектура, приложения разделяются на три логических слоя: 🟠Презентационный слой (Presentation Layer) Отвечает за взаимодействие с пользователем. Веб-интерфейсы, мобильные приложения, десктопные приложения. Примеры: HTML/CSS/JavaScript для веб-приложений, UI-компоненты в мобильных и десктопных приложениях. 🟠Логический слой (Business Logic Layer) Содержит бизнес-логику и правила приложения. Обрабатывает данные, выполняет вычисления, применяет бизнес-правила. Примеры: классы и методы, реализующие бизнес-логику, сервисы, обработчики данных. 🟠Слой данных (Data Access Layer): Отвечает за взаимодействие с источниками данных. Операции с базами данных, файловыми системами, внешними сервисами. Примеры: репозитории, Data Access Objects (DAO), API-клиенты для доступа к внешним системам. 🚩REST REST — это архитектурный стиль для разработки веб-сервисов. RESTful сервисы используют стандартные HTTP методы (GET, POST, PUT, DELETE и т.д.) для работы с ресурсами. С точки зрения трехслойной архитектуры: Презентационный слой: Вызовы REST API могут происходить с клиентской стороны (например, AJAX запросы из веб-интерфейса) или через клиентские приложения. Пример: фронтенд веб-приложения, который взаимодействует с REST API. Логический слой: REST API реализует бизнес-логику и выступает посредником между презентационным слоем и слоем данных. Пример: контроллеры и сервисы, обрабатывающие REST запросы и выполняющие соответствующую бизнес-логику. Слой данных: REST API может взаимодействовать с базой данных или другими источниками данных для получения и сохранения информации. Пример: методы в API, которые выполняют запросы к базе данных через репозитории или DAO. 🚩SWAP SWAP — это гипотетический или менее распространенный термин, часто интерпретируемый как упрощенный API для веб-приложений. Презентационный слой Клиентские приложения или пользовательские интерфейсы могут вызывать методы SWAP для получения или отправки данных.Пример: веб-страницы или мобильные приложения, обращающиеся к SWAP для выполнения операций. Логический слой: SWAP обрабатывает бизнес-логику аналогично REST API, предоставляя упрощенные конечные точки для взаимодействия с данными. Пример: сервисы, которые реализуют простые операции (CRUD) без сложной бизнес-логики. Слой данных: SWAP взаимодействует с базой данных или другими источниками данных для выполнения операций чтения/записи. Пример: методы SWAP, которые обращаются к базе данных через абстрактные уровни доступа к данным. Ставь 👍 и забирай 📚 Базу знаний

Онлайн-интенсив для ИТ-специалистов в Открытых школах Т1 Открытые школы — это возможность за месяц прокачать свои навыки и получить оффер в ИТ-холдинг Т1. С тебя — год опыта работы в ИТ, с нас — бесплатный онлайн-интенсив и топовые преподаватели. Что ты получишь? ✅ Уникальный рыночный опыт. Наши проекты ежегодно получают награды на ИТ-конкурсах: Global CIO, Национальной банковской премии и др. ✅ Быстрый рост в ИТ при экспертной поддержке. ✅ Материалы от HR, которые помогут прокачать резюме и подготовиться к интервью в Т1. ✅ Поддержка опытных преподавателей и уникальный карьерный фаст-трек до мидла в Т1 для выпускников интенсива. ✅ Реальный шанс получить оффер в Т1. Подавай заявку до 14 марта и приходи учиться! Старт ИТ-интенсива уже 17 марта. Подать заявку #реклама 16+ t1.ru О рекламодателе

🤔 Для чего нужны Lifetime cycles? Жизненные циклы объектов управляют временем их существования в зависимости от контекста. Это важно для оптимизации работы с памятью и управляемого уничтожения ресурсов. В средах с зависимостями, таких как DI-контейнеры или фреймворки, они определяют, когда объект должен быть создан и уничтожен. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Как синхронизировать команду? Пригласить в Битрикс24. Бесплатный онлайн-сервис для бизнеса и совместной работы. Мессенджер, CRM для продаж, Видеозвонки, Задачи, Календарь, Файлы и ИИ-помощник. Заберите бесплатно 10+ инструментов в одном сервисе. Зарегистрироваться #реклама 16+ office-online.bitrix24.ru О рекламодателе

🤔 Что такое делегаты и зачем они нужны? Делегаты — это типы, которые безопасно инкапсулируют методы, подобно указателям на функции в других языках программирования, но с проверкой типов во время компиляции. Могут ссылаться на метод, который принимает параметры и возвращает значение. Они используются для реализации обратных вызовов и событий, а также для определения пользовательских операций, которые могут быть выполнены методом, принимаемым в качестве параметра. 🚩Зачем они нужны? 🟠Обратные вызовы (Callbacks) Делегаты предоставляют механизм для передачи методов в качестве аргументов другим методам. Это полезно для реализации обратных вызовов, позволяя вызывать методы в ответ на определенные события или условия. 🟠События Являются основой системы событий. Они позволяют определять события и подписываться на них. Когда событие происходит, вызываются делегаты, связанные с этим событием, что позволяет реагировать на изменения или действия пользователя. 🟠Параметризация методами Позволяют создавать более гибкие и масштабируемые приложения, поскольку методы могут быть переданы и использованы динамически в различных контекстах. 🟠Асинхронное программирование Используются для асинхронного программирования, позволяя выполнять задачи в фоновом режиме, не блокируя основной поток приложения.
public delegate int Operation(int x, int y);

public class Calculator
{
    public int PerformOperation(int x, int y, Operation op)
    {
        return op(x, y);
    }
}

class Program
{
    static int Add(int x, int y)
    {
        return x + y;
    }

    static int Multiply(int x, int y)
    {
        return x * y;
    }

    static void Main()
    {
        Calculator calc = new Calculator();

        // Создание делегата для метода Add и вызов через метод PerformOperation
        Operation addOp = new Operation(Add);
        int result = calc.PerformOperation(5, 6, addOp);
        Console.WriteLine("Addition: " + result);

        // Создание делегата для метода Multiply и вызов через метод PerformOperation
        Operation mulOp = new Operation(Multiply);
        result = calc.PerformOperation(5, 6, mulOp);
        Console.WriteLine("Multiplication: " + result);
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Научим подростков 13-18 лет создавать телеграм-ботов! Бесплатный мастер-класс от ведущего ИТ-ВУЗа страны - Университета Инноп
Научим подростков 13-18 лет создавать телеграм-ботов! Бесплатный мастер-класс от ведущего ИТ-ВУЗа страны - Университета Иннополис. Предоставьте ребёнку шанс получить практические навыки программирования от лучших педагогов! ⚡За 1.5 часа научим ребёнка с нуля создавать чат-бота, который умеет выдавать сведения о погоде в указанном городе и сопровождать данные изображением! Дети получат практические навыки работы на языке Python, которые смогут самостоятельно использовать для реализации своих идей в дальнейшем. Не упустите возможность предложить ребёнку новое интересное и полезное хобби, которое, возможно, станет основой востребованной професии в будущем! Регистрируйтесь на бесплатный мастер-класс. Количество мест ограничено. Узнать больше #реклама 16+ progmatica.innopolis.university О рекламодателе

🤔 Когда при вызове exception не зовутся деструкторы? Деструкторы не вызываются, если исключение выбрасывается из конструктора, и объект не успел быть полностью созданным. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу знаний

Системный администратор Linux с нуля Бесплатный курс от Selectel Старт — 1 марта Освойте администрирование Linux на SelectOS.
Системный администратор Linux с нуля Бесплатный курс от Selectel Старт — 1 марта Освойте администрирование Linux на SelectOS. После курса вы сможете: - управлять инфраструктурой на базе Linux; - работать с командной строкой и основными утилитами; - управлять пользователями, файлами и правами доступа; - настраивать сети, SSH-соединения и мониторинг системы; - управлять пакетами и обновлениями программного обеспечения; - анализировать логи и устранять инциденты. Смотреть #реклама 16+ promo.selectel.ru О рекламодателе

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

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