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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
5 008
Obunachilar
-524 soatlar
-137 kunlar
-5530 kunlar
Postlar arxiv
🤔 Что такое куки и где оно хранится в запросе? Это небольшие фрагменты данных, которые веб-сайты сохраняют на устройствах пользователей для хранения информации о сессии и отслеживания состояния. Куки используются для различных целей, таких как аутентификация пользователей, хранение настроек и предпочтений, а также отслеживание активности пользователей на сайте. 🚩Основные свойства 🟠Имя (Name) Уникальный идентификатор для каждого куки. 🟠Значение (Value) Данные, которые хранит куки. 🟠Домен (Domain) Домен, для которого куки действителен. 🟠Путь (Path) Путь на сервере, для которого куки действителен. 🟠Время истечения (Expiration/Max-Age) Дата или время, когда куки должен быть удален. 🟠Безопасность (Secure) Указывает, что куки должны передаваться только через HTTPS. 🟠HTTPOnly Указывает, что куки недоступен через JavaScript, только через HTTP(S) запросы. 🚩Где хранятся 🟠Установка куки с сервера (Set-Cookie) Сервер отправляет куки в ответе на запрос клиента с использованием заголовка Set-Cookie.
   HTTP/1.1 200 OK
   Set-Cookie: sessionId=abc123; Path=/; Expires=Wed, 09 Jun 2023 10:18:14 GMT
   Content-Type: text/html
   
🟠Отправка куки клиентом (Cookie) Браузер автоматически добавляет соответствующие куки в заголовок Cookie при каждом последующем запросе к серверу, для которого эти куки действительны.
   GET /dashboard HTTP/1.1
   Host: example.com
   Cookie: sessionId=abc123
   
🚩Пример использования Установка куки на сервере (пример на Node.js с использованием Express)
const express = require('express');
const app = express();

app.get('/', (req, res) => {
    // Устанавливаем куки
    res.cookie('sessionId', 'abc123', { 
        maxAge: 900000, 
        httpOnly: true 
    });
    res.send('Куки установлены');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
Доступ к куки на клиенте (пример на JavaScript)
// Установка куки
document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// Получение всех куки
let cookies = document.cookie;
console.log(cookies);
🚩Важные моменты 🟠Безопасность Куки с флагом Secure передаются только по HTTPS-соединениям. Куки с флагом HttpOnly недоступны через JavaScript, что помогает защитить их от XSS-атак. 🟠Размер и количество Обычно один куки не должен превышать 4KB, и на одном домене может быть установлено не более 20-30 куки. 🟠Конфиденциальность Куки могут содержать чувствительные данные, поэтому важно защищать их и использовать шифрование, если необходимо. Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем отличается IQueryable от IEnumerable? `IEnumerable` используется для перебора коллекции в памяти и поддерживает ленивую загрузку данных. `IQueryable` позволяет работать с данными на уровне источника данных, поддерживая отложенное выполнение запросов и возможность составления SQL-запросов для баз данных. `IQueryable` чаще используется в LINQ для работы с базами данных, а `IEnumerable` — для работы с коллекциями, уже загруженными в память. `IQueryable` может оптимизировать запросы, выполняя их на сервере базы данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Получите 400 рублей на счет мобильного телефона Выберите Яндекс Поиск в настройках браузера, ищите в нём — и они ваши! Узнать больше #реклама 16+ portal.yandex.ru О рекламодателе

🤔 Что такое предикат? Это делегат, представляющий метод, который принимает один или несколько аргументов и возвращает логическое значение (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);
Ставь 👍 и забирай 📚 Базу знаний

Освойте русский сад раньше большинства коллег Заказчики всё чаще просят создать сад с характером, атмосферой и национальной и
Освойте русский сад раньше большинства коллег Заказчики всё чаще просят создать сад с характером, атмосферой и национальной идентичностью. Но что такое современный русский сад на практике? Какие приемы делают его узнаваемым и как проектировать такие пространства без стилизации и штампов? 📅9 июля в 17:00 мск Школа ВИД проведет бесплатный вебинар «Русский сад». Разберем: • почему русский сад стал одним из главных трендов; • философию и ключевые особенности стиля; • пошаговый подход к проектированию; • приемы и нюансы, которые создают атмосферу русского сада; • где получить знания для создания проектов для себя и заказчиков. ✅ Бесплатная регистрация. Зарегистрироваться #реклама 16+ vebinar-school-vid.tilda.ws О рекламодателе

🤔 Что такое unsafe? Используется для объявления небезопасного контекста кода, который позволяет выполнять низкоуровневые операции, такие как манипуляции с указателями. Эти операции обычно не разрешены в безопасном управляемом коде, но могут быть необходимы для взаимодействия с неуправляемым кодом, оптимизации производительности или доступа к определенным системным ресурсам. 🚩Характеристики 🟠Объявление небезопасного контекста Чтобы использовать указатели и выполнять небезопасные операции, нужно объявить метод, блок кода или тип как unsafe.
unsafe void UnsafeMethod()
{
    int a = 10;
    int* p = &a; // Использование указателя
    Console.WriteLine(*p); // Разыменование указателя
}
🟠Компиляция с поддержкой `unsafe` Для компиляции кода с unsafe необходимо включить поддержку небезопасного кода в настройках проекта. В Visual Studio это делается через свойства проекта: 1⃣Откройте свойства проекта. 2⃣Перейдите на вкладку "Сборка". 3⃣Установите флажок "Разрешить небезопасный код". 🟠Использование указателей Указатели позволяют напрямую работать с адресами памяти, что может быть полезно для некоторых оптимизаций или взаимодействия с низкоуровневым кодом, написанным на C или C++.
unsafe void PointerExample()
{
    int a = 5;
    int* p = &a; // p указывает на адрес переменной a
    Console.WriteLine((int)p); // Вывод адреса переменной a
    Console.WriteLine(*p); // Вывод значения переменной a через указатель
}
🟠Небезопасные структуры Вы можете объявлять структуры с указателями и использовать их в небезопасном контексте.
unsafe struct UnsafeStruct
{
    public int* Pointer;
}
🟠Стековые указатели (stackalloc) stackalloc позволяет выделять память в стеке для массива в небезопасном контексте. Это может быть быстрее, чем выделение памяти в куче.
unsafe void StackAllocExample()
{
    int* array = stackalloc int[10]; // Выделение массива из 10 целых чисел в стеке
    for (int i = 0; i < 10; i++)
    {
        array[i] = i;
    }
}
🟠Взаимодействие с неуправляемым кодом Небезопасный код часто используется для взаимодействия с API, написанными на других языках, такими как C или C++.
[DllImport("user32.dll")]
extern static unsafe int MessageBox(IntPtr hWnd, char* text, char* caption, int options);

unsafe void CallUnmanagedCode()
{
    char* text = "Hello, World!";
    char* caption = "My Message Box";
    MessageBox(IntPtr.Zero, text, caption, 0);
}
🚩Плюсы ➕Производительность Позволяет выполнять высокоэффективные операции с памятью. ➕Взаимодействие с неуправляемым кодом Необходим для вызова функций из библиотек, написанных на других языках. ➕Низкоуровневый контроль Предоставляет возможность прямого управления памятью и аппаратными ресурсами. Ставь 👍 и забирай 📚 Базу знаний

Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задан
Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задание — изучили — выполнили — получили свои деньги. Деньги вы получаете в зависимости от сложности задания. Например: За задание могут платить 500-10.000 рублей. 500 рублей — это около 5-30 минут. 10 000 руб. это 5-6 часов. Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д. 💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т. Мы обучим вас сами: — 3 дня уроков по 30 минут — Домашки с проверкой и оплатой бонусами — Платим 10 тыс за каждую выполненную домашку ⚡ Набор заканчивается завтра. Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ course.neurogansta.ru О рекламодателе

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

🤔 Можно ли передать строку в lock? Можно, но не рекомендуется. Строки могут быть разделяемыми между разными частями программы, даже если они написаны одинаково. Это может привести к неожиданным блокировкам. Лучше использовать уникальные объекты, специально созданные для блокировки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задан
Нужны 7 желающих для работы с искусственным интеллектом. Требования: 18-45 лет Работа из дома. График свободный. Пришло задание — изучили — выполнили — получили свои деньги. Деньги вы получаете в зависимости от сложности задания. Например: За задание могут платить 500-10.000 рублей. 500 рублей — это около 5-30 минут. 10 000 руб. это 5-6 часов. Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д. 💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т. Мы обучим вас сами: — 3 дня уроков по 30 минут — Домашки с проверкой и оплатой бонусами — Платим 10 тыс за каждую выполненную домашку ⚡ Набор заканчивается завтра. Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ course.neurogansta.ru О рекламодателе

🤔 Как оптимизировать ситуацию, когда к таблице много join? 1. Проверить необходимость всех join — убрать ненужные связи. 2. Использовать индексы — создать индексы на ключевых колонках. 3. Разделить запрос — разбить сложный запрос на несколько более простых. 4. Использовать denormalization — объединить часто используемые данные в одну таблицу. 5. Кэшировать данные — уменьшить нагрузку на базу данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Магистратура ИТМО для фронтенд и бэкенд разработчиков Выберите язык программирования и уровень. Регулируемая нагрузка. Экспер
Магистратура ИТМО для фронтенд и бэкенд разработчиков Выберите язык программирования и уровень. Регулируемая нагрузка. Эксперты Яндекса учат. Реальные кейсы. Государственный диплом. Оставьте заявку Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Пример выполнения кода, когда возвращается объект интерфейса 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-запрос отправляется в базу
Ставь 👍 и забирай 📚 Базу знаний

Yandex Ecom Open Air — летнее событие про онлайн-продажи Yandex Ecom Open Air 2026 объединяет деловую программу, живое общени
Yandex Ecom Open Air — летнее событие про онлайн-продажи Yandex Ecom Open Air 2026 объединяет деловую программу, живое общение и атмосферу фестиваля в одном потоке. Здесь обсуждают технологии, которые становятся частью среды. Исследуют силы, которые влияют на весь рынок. Находят новые связи, идеи и точки роста. В течение дня пространство фестиваля наполняют выступления, дискуссии, встречи, специальные форматы, музыка и активности партнёров. Присоединиться к происходящему можно из любой точки — на площадке фестиваля или через онлайн-трансляцию. Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔 Действительно ли при вызове метода Add уже генерируется SQL-код? Нет, при вызове метода Add SQL-код еще не генерируется. На этом этапе сущность просто добавляется в контекст, и ее состояние помечается как "добавленное". SQL-код формируется и выполняется только при вызове метода SaveChanges(), который анализирует все изменения и генерирует соответствующие SQL-запросы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Ищу желающих заполнять карточки товаров на ВБ! Нужно создавать карточки на ВБ. Ничего сложного. Работа полностью на удаленке
Ищу желающих заполнять карточки товаров на ВБ! Нужно создавать карточки на ВБ. Ничего сложного. Работа полностью на удаленке с зп до150 000 рублей в месяц. Без опыта, нужен только телефон, занятость 3-6 часов в день. Всему обучат на бесплатном курсе и после возьму на работу: ✅ 3 дня уроков по 30 минут ✅ Домашки с проверкой и оплатой бонусами ✅ Плачу 10 тыс за каждую выполненную домашку Все кто пройдет курс, получат сертификат от школы с образовательной лицензией. ⚡ Набор заканчивается завтра. 👍 Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ course.wildmanager.ru О рекламодателе

🤔 Приведи пример паттерна строитель в С# Паттерн "Строитель" (Builder) используется для пошагового создания сложных объектов. Он удобен, когда объект имеет много параметров и возможных конфигураций. 🚩Проблема без паттерна "Строитель" Допустим, у нас есть класс Car, и мы хотим создавать машины с разными конфигурациями:
public class Car
{
    public string Engine { get; set; }
    public int Wheels { get; set; }
    public bool HasSunroof { get; set; }

    public override string ToString()
    {
        return $"Car: Engine={Engine}, Wheels={Wheels}, Sunroof={HasSunroof}";
    }
}
Создавать объект через конструкторы или инициализаторы становится неудобно, если у нас много параметров:
var car1 = new Car { Engine = "V8", Wheels = 4, HasSunroof = true };
var car2 = new Car { Engine = "V6", Wheels = 4, HasSunroof = false };
🚩Решение с использованием паттерна "Строитель" Сделаем пошаговый процесс сборки объекта с помощью паттерна "Строитель". Шаг 1: Создаём интерфейс строителя
public interface ICarBuilder
{
    ICarBuilder SetEngine(string engine);
    ICarBuilder SetWheels(int wheels);
    ICarBuilder SetSunroof(bool hasSunroof);
    Car Build();
}
Шаг 2: Реализуем конкретного строителя
public class CarBuilder : ICarBuilder
{
    private Car _car = new Car(); // Временный объект

    public ICarBuilder SetEngine(string engine)
    {
        _car.Engine = engine;
        return this; // Возвращаем самого себя для цепочки вызовов
    }

    public ICarBuilder SetWheels(int wheels)
    {
        _car.Wheels = wheels;
        return this;
    }

    public ICarBuilder SetSunroof(bool hasSunroof)
    {
        _car.HasSunroof = hasSunroof;
        return this;
    }

    public Car Build()
    {
        return _car; // Возвращаем готовый объект
    }
}
Шаг 3: Используем строителя
class Program
{
    static void Main()
    {
        ICarBuilder builder = new CarBuilder();

        Car sportsCar = builder
            .SetEngine("V8")
            .SetWheels(4)
            .SetSunroof(true)
            .Build();

        Car economyCar = builder
            .SetEngine("V4")
            .SetWheels(4)
            .SetSunroof(false)
            .Build();

        Console.WriteLine(sportsCar);
        Console.WriteLine(economyCar);
    }
}
Вывод в консоли
Car: Engine=V8, Wheels=4, Sunroof=True
Car: Engine=V4, Wheels=4, Sunroof=False
Ставь 👍 и забирай 📚 Базу знаний

Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с пр
Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой? Поступай в магистратуру Центрального университета! — 4 офлайн программы по востребованным направлениям ИТ — 2 онлайн-программы: машинное обучение и продуктовый менеджмент — 550 грантов до 75% — Вечерние занятия и учеба по выходным — удобно совмещать с работой — Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса — Возможность стажировок и трудоустройства в ведущих компаниях — Государственный диплом за 2 года Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии. Оставляй заявку на грант уже сейчас! Зарегистрироваться #реклама 16+ cu.ru О рекламодателе