C# | Вопросы собесов
Ir al canal en Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Mostrar más5 049
Suscriptores
-824 horas
-137 días
-2330 días
Archivo de publicaciones
5 050
🤔 Что такое метод set?
Метод
set в контексте чаще всего используется в свойствах (properties) класса и служит для установки значения свойства. Он работает как часть автоматического или пользовательского свойства, позволяя контролировать, что происходит, когда свойству присваивается значение.
🚩Что такое свойство?
Свойство (property) в C# – это синтаксический сахар, который позволяет обращаться к полям класса как к переменным, но при этом добавляет возможность добавлять логику для получения (get) и установки (set) значений.
public class Person
{
private string name; // Закрытое поле
public string Name // Свойство
{
get { return name; } // Получить значение
set { name = value; } // Установить значение
}
}
🚩Зачем нужен метод `set`?
🟠Контролировать логику установки значений
Например, вы можете ограничить, какие значения можно присваивать.
🟠Выполнять дополнительные действия при присваивании
Например, логирование или обновление других полей.
🟠Защищать данные
Вы можете использовать метод set для проверки значений на валидность или ограничения доступа (например, сделать его приватным).
🚩Пример использования `set`
Проверка входных данных:
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value < 0)
{
throw new ArgumentException("Возраст не может быть отрицательным.");
}
age = value;
}
}
}
Только для чтения
Вы можете сделать set приватным, чтобы свойство можно было только читать извне:
public class Person
{
public string Name { get; private set; }
public Person(string name)
{
Name = name;
}
}
Автоматические свойства
Если вам не нужна дополнительная логика, можно использовать автоматические свойства
public class Person
{
public string Name { get; set; } // Автоматически создаются get и set
}
Ставь 👍 и забирай 📚 Базу знаний5 050
Ищешь высокооплачиваемые проекты? Попробуй SkillStaff
SkillStaff — это платформа для ИТ-специалистов, менеджеров и креаторов, которым мало одного оклада. Здесь можно найти клиентов, выполнять их проекты и увеличивать свой доход.
- Проекты с гибким графиком: part time, full time, удаленка и гибрид
- Ставка за час работы — та, что ты сам выбрал
- Клиенты — ведущие бренды, проверенные с юридической точки зрения при регистрации на платформе
- Оплата поступает ежемесячно на расчетный счет исполнителя
- Удобный личный кабинет и функционал, автоматизирующий документооборот
Все, что нужно для работы — иметь статус самозанятого или ИП, а платформа поможет со всеми нюансами.
Регистрируйся прямо сейчас
Зарегистрироваться
#реклама 16+
skillstaff.ru
О рекламодателе
5 050
🤔 Как работает Routing?
Это механизм сопоставления URL с соответствующими обработчиками в веб-приложении.
1. Сервер анализирует URL-запроса и перенаправляет его в нужный контроллер или обработчик.
2. Используется в веб-фреймворках (например, ASP.NET, Express.js) для обработки маршрутов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
🤔 Зачем нужны поколения для сборщика мусора в JS?
В JavaScript (как и в C#) сборщик мусора (Garbage Collector, GC) использует поколения (generational GC) для оптимизации работы с памятью. Это помогает быстрее и эффективнее очищать ненужные объекты, минимизируя задержки в работе программы.
🚩Зачем нужны поколения в GC?
🟠Большинство объектов "живут" недолго
В среднем, переменные и объекты в JS создаются и быстро перестают использоваться. Например, временные объекты в функциях.
🟠Некоторые объекты "живут" долго
Например, глобальные переменные, кэш данных или объекты в
setInterval.
🟠Очистка памяти должна быть быстрой
Проверять всю память каждый раз — дорого по времени. GC должен быстро убирать "мусор", не замедляя выполнение кода.
🚩Как работают поколения?
JS-движки, например V8 (Chrome, Node.js), используют Generational Garbage Collection — деление объектов на молодые (new generation) и старые (old generation).
🟠Молодое поколение (Young Generation)
Сюда попадают новые объекты.
GC часто проверяет эту область и быстро очищает.
Если объект "выжил" несколько проверок, он переносится в старшее поколение.
🟠Старое поколение (Old Generation)
Здесь хранятся "долгоживущие" объекты.
Проверяется реже, так как здесь объекты реже становятся мусором.
Очистка более сложная и дорогая по времени.
Пример работы GC в V8
function createObjects() {
let obj1 = { name: "temp" }; // попадает в Young Generation
let obj2 = { data: new Array(1000).fill(0) }; // тоже в Young Generation
}
// После выхода из функции obj1 и obj2 становятся мусором и очищаются GC.
Ставь 👍 и забирай 📚 Базу знаний5 050
🤔 Какие основные свойства и методы IEnumerable?
IEnumerable предоставляет:
- Возможность перебора элементов в коллекции.
- Метод GetEnumerator(), возвращающий итератор.
- Поддерживает foreach.
IEnumerable<T> используется для отложенного выполнения и однократного прохода по данным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
🤔 Какие есть виды привязок данных и когда применяются?
Привязка данных (Data Binding) — это механизм, который позволяет автоматически синхронизировать данные между источником (например, моделью) и интерфейсом (например, элементами UI).
🚩Односторонняя привязка (One-Way Binding)
Данные идут только в одном направлении: из модели в UI.
- Для вывода данных, которые не должны изменяться пользователем
- Например, для отображения текущего времени
Пример в WPF
<TextBlock Text="{Binding UserName}" />
🚩Двусторонняя привязка (Two-Way Binding)
Данные синхронизируются в обе стороны: UI ↔️ Модель
- В формах ввода (например, TextBox), чтобы обновлять данные в модели
- Используется в MVVM
Пример в WPF
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
🚩Привязка к событиям (Event Binding)
Позволяет связывать UI с методами обработки событий.
- Для обработки кнопок (Button.Click)
- В реактивных фреймворках (Blazor, WinForms)
Пример в Blazor
<button @onclick="IncrementCount">Добавить</button>
@code {
private int count = 0;
private void IncrementCount() => count++;
}
🚩Привязка к командам (Command Binding)
Используется в паттерне MVVM вместо событий
- В WPF и Xamarin
- Позволяет отделить логику от UI
Пример в WPF
<Button Content="Сохранить" Command="{Binding SaveCommand}" />
🚩Привязка к коллекциям (ItemsSource Binding)
Позволяет привязывать списки к элементам UI (ListBox, DataGrid)
- В списках, таблицах, дропдаунах
Пример в WPF
<ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Name" />
Ставь 👍 и забирай 📚 Базу знаний5 050
Крупнейший университет искусственного интеллекта
Приглашаем на бесплатный однодневный интенсив по AI!
Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
5 050
🤔 Какая разница между статичным методом и методом экземпляра?
- Статичный метод (static) принадлежит классу, а не объекту:
- Вызывается без создания экземпляра.
- Не имеет доступа к this, не может использовать нестатичные поля.
- Метод экземпляра принадлежит конкретному объекту:
- Требует создания экземпляра (new).
- Имеет доступ к полям и методам объекта.
Пример: Math.Abs() — статичный, myList.Add() — метод экземпляра.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
🤔 Что такое boxing и unboxing?
boxing и unboxing — это два важных процесса, связанных с преобразованием типов между значимыми типами (value types) и ссылочными типами (reference types). Эти процессы играют ключевую роль в работе с обобщенными коллекциями и при взаимодействии между различными частями .NET Framework.
🚩Boxing
Это процесс преобразования переменной значимого типа (например,
int или struct) в тип object или в любой другой тип интерфейса, реализуемый этим значимым типом. При боксинге переменная значимого типа оборачивается в объект ссылочного типа, и её значение копируется в новый объект на управляемой куче. Это необходимо, потому что все элементы в .NET в конечном итоге должны быть объектами.
int num = 123;
object obj = num; // Boxing
🚩Unboxing
Это обратный процесс, при котором содержимое объекта ссылочного типа преобразуется обратно в значимый тип. Требует явного указания типа, к которому нужно преобразовать, и может вызывать исключение InvalidCastException, если объект не может быть преобразован в желаемый значимый тип.
object obj = 123; // Boxing
int num = (int)obj; // Unboxing
🟠Производительность
Боксинг и анбоксинг могут негативно сказаться на производительности, поскольку они влекут за собой операции с памятью, включая выделение памяти и сборку мусора. Поэтому рекомендуется минимизировать их использование, особенно в критичных по производительности частях приложения.
🟠Нужда
Несмотря на возможное негативное влияние на производительность, боксинг и анбоксинг необходимы для работы со значимыми типами в контекстах, где требуются объекты (например, при работе с коллекциями типа ArrayList).
Ставь 👍 и забирай 📚 Базу знаний5 050
Теперь в Битрикс24 есть ещё и онлайн-доски!
✨Весь привычный функционал плюс любимая фича всех прожектов — и это бесплатно. Похоже, скоро офисные стикеры уйдут в отпуск.
Узнать больше
#реклама 16+
bitrix24.ru
О рекламодателе
5 050
🤔 Какие механизмы позволяют не нарушать принцип dependency inversion?
Для соблюдения принципа dependency inversion используются интерфейсы и абстракции, которые позволяют код зависеть от общего поведения, а не от конкретных реализаций. Также помогают фабрики (Factories) для создания объектов и DI-контейнеры (Dependency Injection), которые управляют зависимостями и их внедрением.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
🤔 Какая есть классификация у кучи?
В информатике и программировании куча (heap) может классифицироваться по нескольким критериям. Рассмотрим основные виды:
🟠По назначению:
Куча памяти (Memory Heap)
Используется для динамического выделения памяти в приложениях.
В C# это управляется сборщиком мусора (GC - Garbage Collector).
Примеры: объекты, созданные с помощью
new, выделяются в управляемой куче.
🟠Структура данных «Куча» (Heap Data Structure)
Это специальная бинарная структура данных, используемая в алгоритмах, например, в сортировке (Heap Sort) или в приоритетных очередях.
Бывает максимальная куча (max-heap) и минимальная куча (min-heap).
🚩По типу управления памятью (для кучи памяти в языках программирования):
🟠Управляемая куча (Managed Heap)
В C# и .NET память выделяется и освобождается автоматически с помощью GC. Разделяется на поколения (Generation 0, 1, 2), что оптимизирует работу сборщика мусора.
🟠Неуправляемая куча (Unmanaged Heap)
Применяется в C/C++ и низкоуровневом коде, где управление памятью выполняется вручную (malloc/free, new/delete). В C# тоже можно работать с ней через Marshal или Unsafe код.
🟠По структуре данных (Heap Data Structure):
🟠Максимальная куча (Max Heap)
Корневой узел содержит наибольшее значение, а дочерние узлы – меньшее. Используется в алгоритмах приоритетных очередей.
🟠Минимальная куча (Min Heap)
Корневой узел содержит наименьшее значение, а дочерние узлы – большее. Применяется в алгоритме Дейкстры и других задачах.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
PriorityQueue<int, int> minHeap = new PriorityQueue<int, int>();
minHeap.Enqueue(5, 5);
minHeap.Enqueue(3, 3);
minHeap.Enqueue(8, 8);
minHeap.Enqueue(1, 1);
while (minHeap.Count > 0)
{
Console.WriteLine(minHeap.Dequeue()); // Выведет: 1, 3, 5, 8
}
}
}
Ставь 👍 и забирай 📚 Базу знаний5 050
+7
Сколько приложений нужно вашей команде для работы?
Всего один сервис — Битрикс24! А внутри десятки инструментов для совместной работы и бизнеса.
Читайте подробнее в карточках. Регистрируйтесь сейчас, чтобы забрать их все себе бесплатно😊
Зарегистрироваться
#реклама 16+
office-online.bitrix24.ru
О рекламодателе
5 050
🤔 Что помнишь об авторизации?
Авторизация в контексте веб-разработки и программирования — это процесс, который проверяет, имеет ли пользователь права на выполнение определенных действий или доступ к конкретным ресурсам. В C# и .NET, это может быть реализовано через различные механизмы, такие как ролевая модель доступа (Role-based Access Control - RBAC) или претензионное управление доступом (Claims-based Access Control).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
Современная магистратура от Центрального университета
Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой?
Поступай в магистратуру Центрального университета!
- 4 офлайн программы по востребованным направлениям ИТ
- Онлайн-программа по машинному обучению
- 300 мест с грантами до 1,2 млн руб.
- Вечерние занятия и учеба по выходным — удобно совмещать с работой
- Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса
- Возможность стажировок и трудоустройства в ведущих компаниях
- Государственный диплом за 2 года
Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии.
Оставляй заявку на грант уже сейчас!
Подать заявку
#реклама 16+
apply.centraluniversity.ru
О рекламодателе
5 050
🤔 Какие принципы и практики используешь для обеспечения безопасности приложений?
🟠Валидация и Санитизация Входных Данных
Валидация входных данных помогает предотвратить атаки, такие как 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"];
Ставь 👍 и забирай 📚 Базу знаний5 050
Новый год 2026 в Антарктиде с RussiaDiscovery!
✅ Панорамные окна на лайнере SH Vega, бассейн-инфинити, спа, камины в каютах.
✅ Высадки на континент, каякинг у ледников, купание в термальных водах, киты и пингвины!
✅ Все включено: отель 5* в Буэнос-Айресе, перелет до точки отправления, алкоголь, экспедиционная одежда.
✅ Новогодний ужин среди льдов + экскурсия на станцию «Беллинсгаузен».
Встречайте Новый год там, где заканчивается карта мира!
— Самое теплое время (+15°C днем) и море света антарктического лета.
— Стабилизаторы качки, профессиональная команда и VIP-сервис.
— 12 дней для получения самых ярких впечатлений жизни.
Всего 152 места, забирайте свою каюту, пока есть места!
Бронь всего 20% от стоимости.
Нажиммайте «Забронировать»
Забронировать
#реклама 16+
russiadiscovery.ru
О рекламодателе
5 050
🤔 Что такое ACID?
Это набор свойств, обеспечивающих надежность транзакций в базе данных:
- A (Atomicity) – атомарность: транзакция либо полностью выполняется, либо не выполняется вовсе.
- C (Consistency) – согласованность: транзакция переводит БД из одного корректного состояния в другое.
- I (Isolation) – изолированность: параллельные транзакции не влияют друг на друга.
- D (Durability) – долговечность: после подтверждения транзакции изменения сохраняются, даже при сбоях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 050
🤔 Чем action отличается от func?
Оба — это делегаты, но:
Action<T> — ничего не возвращает (void).
Func<T> — возвращает значение (TResult).
🚩`Action<T>` – Делегат без возврата
Используется, когда метод выполняет действие, но ничего не возвращает.
Action<string> showMessage = message => Console.WriteLine(message);
showMessage("Привет!"); // Выведет: Привет!
🚩`Func<T, TResult>` – Делегат с возвратом
Используется, когда метод выполняет вычисления и возвращает значение.
Пример Func<T, TResult>
Func<int, int, int> sum = (a, b) => a + b;
int result = sum(5, 3);
Console.WriteLine(result); // 8
Ставь 👍 и забирай 📚 Базу знаний5 050
Repost from Идущий к IT
Я смотрю на эту цифру и до сих пор не верю.
Когда я запускал этот проект, мне реально было страшно. Страшно, что ничего не получится. Что я и мой проект никому не нужен. Страшно, что все увидят, как я публично обосрался.
Я ставил планку в 300т рублей. В самом позитивном сценарии 1млн. Но про 5 миллионов… даже мысли не было. Уже в первые часы стало понятно, что кампания идет не по плану. Сайт краудфандинга не выдержал нашей нагрузки и лег 😁
Особенно в последние три дня — просто какой-то разрыв! Я ощущал, как будто ловлю попутный ветер. В последний час не хватало 50к до 5 млн, и я уже думал сам их докинуть, чтобы красиво закрыть 😁
Но финальная сумма это не так важно. Самое главное это как мы её собрали. Это не инвестиции, не чьи-то деньги под условия и контроль, не кредит. Это вы поверили и поддержали меня напрямую. Вы дали мне возможность оставить за собой полный контроль над easyoffer.
Я чувствую огромную ответственность и нервничаю из-за высоких ожиданий. А вдруг что-то пойдёт не так? А вдруг на релизе кому-то что-то не понравится? Именно поэтому я рад, что могу честно выйти на новый этап и без давления от левых инвесторов.
В такие моменты вспоминаю, с чего всё начиналось. Как 2 года назад я писал свои первые посты на 500 человек о том, как учу программирование. Как записывал первое видео на YouTube про поиск работы. Как пилил первую версию easyoffer, вообще без понимания, что из этого выйдет.
И сейчас я думаю — может, эта история вдохновит кого-то из вас. Может, кто-то запустит свой айтишный проект, найдёт поддержку и соберёт бабки на развитие. Было бы круто
Спасибо за невероятную и колосальную поддержку ❤️
О такой аудитории как вы я не мог мечтать
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
