C# | Вопросы собесов
Відкрити в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Показати більше5 048
Підписники
-124 години
-177 днів
-2630 день
Архів дописів
5 048
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
5 048
📌 Какие есть принципы ООП?
💬 Спрашивают в 56% собеседований
🤔 Объектно-ориентированное программирование (ООП) основывается на четырёх основных принципах, которые позволяют эффективно организовывать и структурировать программное обеспечение. Эти принципы включают инкапсуляцию, наследование, полиморфизм и абстракцию. Рассмотрим каждый из них подробнее:
1️⃣ Инкапсуляция:
Заключается в сокрытии деталей реализации объекта от других объектов. Это означает, что внутреннее состояние объекта защищено от прямого доступа, а изменение его состояния возможно только через методы, которые предоставляет этот объект. Инкапсуляция помогает уменьшить сложность программ и повысить их надёжность.
🤔 Пример:
public class BankAccount
{
private double balance; // Приватное поле, недоступное извне
public void Deposit(double amount)
{
if (amount > 0)
balance += amount;
}
public void Withdraw(double amount)
{
if (amount > 0 && balance >= amount)
balance -= amount;
}
public double GetBalance()
{
return balance;
}
}
2️⃣ Наследование:
Позволяет создавать новый класс на основе уже существующего класса. Новый класс наследует атрибуты и методы базового класса, что способствует повторному использованию кода и упрощению его расширения. В C# наследование реализуется с помощью ключевого слова.
🤔 Пример
public class Animal
{
public void Eat()
{
Console.WriteLine("Eating");
}
}
public class Dog : Animal // Класс Dog наследует от класса Animal
{
public void Bark()
{
Console.WriteLine("Barking");
}
}
3️⃣ Полиморфизм:
Это способность объекта использовать методы производного класса, несмотря на то, что он представлен ссылкой на базовый класс. Это позволяет объектам различных классов иметь различное поведение при вызове одних и тех же методов, что упрощает управление и расширение кода.
🤔 Пример:
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Some sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Woof");
}
}
4️⃣ Абстракция:
Позволяет сконцентрироваться на важных атрибутах объекта, игнорируя несущественные. Это достигается за счет определения классов, которые представляют абстрактные понятия и отражают функциональность и характеристики объектов, но не включают конкретные детали реализации.
🤔 Пример:
public abstract class Vehicle // Абстрактный класс
{
public abstract void Move(); // Абстрактный метод
}
public class Car : Vehicle
{
public override void Move()
{
Console.WriteLine("Car is moving");
}
}
🤔 Краткий ответ:
Эти четыре принципа в совокупности обеспечивают мощный фундамент для создания гибких, масштабируемых и легко поддерживаемых программных систем.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
5 048
Прокачаем ваш frontend скилл с junior до middle
Научим писать код, который не стыдно показать
Первые 7 дней бесплатно. Попробуй!
Узнать больше
#реклама 16+
ykul.ru
О рекламодателе
5 048
🤔 Какое ключевое слово в C# используется для реализации многопоточности на уровне задач?
5 048
📌 Что такое partial методы?
💬 Спрашивают в 11% собеседований
В C#
partial методы позволяют объявлять метод в одной части partial класса и определять его реализацию в другой части. Это полезно для сценариев, когда часть класса с методами может быть автоматически сгенерирована, а другая часть может содержать их реализацию, добавляемую вручную разработчиком.
🤔 Основные понятия
1️⃣ Объявление и определение: Partial метод может быть объявлен в одной части partial класса и (опционально) определен в другой. Если метод не определен, компилятор просто игнорирует его объявление.
2️⃣ Отсутствие вызовов неопределенных методов: Если метод объявлен, но не определен, все его вызовы также будут проигнорированы компилятором.
🤔 Правила `partial` методов
1️⃣ Partial методы должны быть приватными.
2️⃣ Они не могут иметь модификаторы доступа (например, public, protected).
3️⃣ Они не могут иметь возвращаемый тип (он всегда void).
4️⃣ Они не могут иметь параметры out, но могут иметь параметры ref.
🤔 Пример использования `partial` методов
🤔 Файл: `Person.Part1.cs` public partial class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
partial void OnNameChanged();
public void ChangeName(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
OnNameChanged();
}
}
🤔 Файл: `Person.Part2.cs` public partial class Person
{
partial void OnNameChanged()
{
Console.WriteLine($"Name changed to: {FirstName} {LastName}");
}
}
🤔 Объяснение кода
1️⃣ Объявление метода: В первой части класса Person объявляется частичный метод OnNameChanged(), который вызывается в методе ChangeName.
2️⃣ Определение метода: Во второй части класса Person метод OnNameChanged определяется и содержит логику, которая выполняется при изменении имени.
3️⃣ Использование: Когда метод ChangeName вызывается и изменяет имя, вызывается метод OnNameChanged, который выводит сообщение на консоль.
🤔 Использование класса `Person` class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.ChangeName("John", "Doe");
// Выведет: Name changed to: John Doe
}
}
🤔 Преимущества использования `partial` методов
1️⃣ Интеграция с генерацией кода: Частичные методы полезны в сценариях, где часть класса генерируется автоматически (например, инструментами), и разработчик может добавлять логику в этих методах без изменения сгенерированного кода.
2️⃣ Чистота и организация кода: Разделение объявления и реализации методов позволяет держать код организованным и разделенным по логическим частям.
3️⃣ Производительность: Если частичный метод не определен, вызовы к нему удаляются на этапе компиляции, что исключает лишние накладные расходы.
🤔 Ограничения
1️⃣ Приватность: Частичные методы должны быть приватными, что ограничивает их использование в контексте доступа.
2️⃣ Опциональность определения: Частичный метод может быть не реализован, что требует внимательного подхода к его вызову и использованию.
🤔 Краткий ответ
Partial методы в C# позволяют объявлять метод в одной части partial класса и определять его в другой. Они полезны для разделения кода между автоматически генерируемыми и вручную написанными частями. Если метод не определен, компилятор игнорирует его и все его вызовы, что упрощает интеграцию и улучшает организацию кода.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде.
🧑💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда.
👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише.
🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.
5 048
Регистрируйтесь на Yandex Scale 2024!
25 сентября состоится главная конференция Yandex Cloud для тех, кто создаёт цифровые продукты и решения. В этом году мероприятие пройдёт в МХАТ имени М. Горького в Москве и онлайн.
5 технологических треков, 31 доклад, 50 спикеров, нетворкинг — разве это не лучший способ продуктивно провести день?
Зарегистрироваться
#реклама 16+
scale.yandex.cloud
О рекламодателе
5 048
🤔 Какой из следующих типов в C# используется для работы с значениями, которые могут принимать null?
5 048
📌 Что такое partial классы?
💬 Спрашивают в 11% собеседований
В C#
partial классы позволяют определять один и тот же класс, структуру или интерфейс в нескольких файлах. Это удобно для организации кода, особенно при работе с автоматически генерируемыми файлами или при совместной работе нескольких разработчиков над одним классом.
🤔 Основные понятия
1️⃣ Разделение определения класса: Класс можно разделить на несколько частей, которые могут находиться в разных файлах. Все части объединяются компилятором в один класс.
2️⃣ Поддержка совместной разработки: Несколько разработчиков могут работать над разными частями одного класса одновременно, не мешая друг другу.
3️⃣ Автоматическая генерация кода: Инструменты, которые генерируют код (например, дизайнеры форм в Visual Studio), могут создавать одну часть класса, оставляя другую часть для ручного редактирования разработчиком.
🤔 Пример использования `partial` классов
🤔 Файл: `Person.Part1.cs`
public partial class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void PrintFullName()
{
Console.WriteLine($"{FirstName} {LastName}");
}
}
🤔 Файл: `Person.Part2.cs`
public partial class Person
{
public int Age { get; set; }
public void PrintAge()
{
Console.WriteLine($"Age: {Age}");
}
}
🤔 Объяснение кода
1️⃣ Определение класса: Класс Person определен в двух отдельных файлах с помощью ключевого слова partial.
2️⃣ Объединение частей: Компилятор объединяет обе части класса Person в один класс. В результате, объект Person имеет все свойства и методы, определенные в обоих файлах.
🤔 Использование класса `Person`
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30
};
person.PrintFullName(); // Выведет: John Doe
person.PrintAge(); // Выведет: Age: 30
}
}
🤔 Преимущества использования `partial` классов
1️⃣ Организация кода: Удобно организовывать большие классы, разделяя их на логические части.
2️⃣ Совместная разработка: Несколько разработчиков могут работать над одним классом параллельно, не создавая конфликты.
3️⃣ Интеграция с инструментами: Позволяет интегрировать автоматически генерируемый код с ручным кодом без необходимости изменения сгенерированных файлов.
🤔 Ограничения
1️⃣ Требование компилятора: Все части partial класса должны быть определены в одном и том же сборочном проекте.
2️⃣ Отсутствие циклов между частями: Нельзя создавать циклические зависимости между частями partial класса.
🤔 Краткий ответ
Partial классы в C# позволяют разделять определение одного класса на несколько файлов. Это удобно для организации кода, совместной разработки и интеграции с инструментами, генерирующими код. Компилятор объединяет все части класса в один, что позволяет работать с ним как с обычным классом.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
🤔 Какой из следующих методов интерфейса IEnumerable в C# выполняет отложенное выполнение (lazy evaluation)?
5 048
📌 С точки зрения контроля версий, каким образом обмениваться изменениями в базе данных?
💬 Спрашивают в 11% собеседований
Обмен изменениями в базе данных в контексте контроля версий может быть сложным, поскольку базы данных не являются простыми текстовыми файлами и требуют особого подхода для синхронизации изменений. Вот несколько подходов и инструментов, которые можно использовать для управления версиями базы данных и обмена изменениями:
🤔 Основные подходы
1️⃣ Миграции базы данных:
➕ Описание: Миграции — это скрипты или набор инструкций для внесения изменений в структуру базы данных. Они позволяют управлять изменениями схемы базы данных, добавлением новых таблиц, изменением существующих таблиц, созданием индексов и т.д.
➕ Использование: Разработчики создают миграции для каждого изменения схемы базы данных. Эти миграции могут быть применены последовательно для синхронизации базы данных с последней версией схемы.
➕ Примеры инструментов: Entity Framework Migrations (для .NET), Flyway, Liquibase.
// Пример миграции с использованием Entity Framework
public partial class AddNewTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "NewTable",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_NewTable", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(name: "NewTable");
}
}
2️⃣ Скрипты изменений:
➕ Описание: Ручное создание и управление SQL-скриптами для внесения изменений в базу данных. Эти скрипты могут включать инструкции для создания, изменения или удаления объектов базы данных.
➕ Использование: Скрипты изменений хранятся в системе контроля версий (например, Git) и применяются разработчиками и администраторами баз данных по мере необходимости.
➕ Примеры: SQL-скрипты для создания таблиц, изменения столбцов, добавления индексов и т.д.
-- Пример SQL-скрипта для добавления нового столбца в таблицу
ALTER TABLE Users ADD BirthDate DATE;
3️⃣ Инструменты для управления схемами базы данных:
➕ Описание: Существуют специализированные инструменты для управления схемами баз данных, которые позволяют автоматизировать процесс внесения изменений и синхронизации баз данных.
➕ Использование: Эти инструменты интегрируются с системами контроля версий и позволяют создавать, управлять и применять миграции и скрипты изменений.
➕ Примеры инструментов: Redgate SQL Source Control, Liquibase, Flyway.
🤔 Инструменты и практики
1️⃣ Entity Framework Migrations (для .NET):
➕ Описание: Инструмент для управления изменениями схемы базы данных в приложениях на .NET.
➕ Использование:
dotnet ef migrations add AddNewTable
dotnet ef database update
2️⃣ Flyway:
➕ Описание: Инструмент для управления миграциями баз данных, поддерживающий различные СУБД.
➕ Использование:
flyway migrate
3️⃣ Liquibase:
➕ Описание: Инструмент для управления изменениями базы данных, поддерживающий различные СУБД и интеграцию с системами контроля версий.
➕ Использование:
liquibase update
🤔 Краткий ответ
Для обмена изменениями в базе данных используется подход с миграциями, который позволяет управлять изменениями схемы базы данных. Инструменты, такие как Entity Framework Migrations, Flyway и Liquibase, помогают автоматизировать и управлять этим процессом. Миграции и скрипты изменений хранятся в системе контроля версий и применяются последовательно для синхронизации баз данных.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде.
🧑💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда.
👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише.
🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.
5 048
Очная онлайн-магистратура ИТМО: станьте DevOps-инженером
Онлайн-магистратура «DevOps-инженер облачных сервисов» от Яндекс Практикум
Вы сможете работать DevOps-инженером или SRE в крупных IT-компаниях
В магистратуре вы глубоко погрузитесь в программирование и научитесь создавать стабильную облачную инфраструктуру.
А ещё будете заниматься английским, чтобы было проще устроиться в международную компанию.
Фундаментальные знания, льготы очного студента и практический опыт Яндекса
Подать заявку
#реклама 16+
practicum.yandex.ru
О рекламодателе
5 048
🤔 Какой из следующих типов в C# является неизменяемым (immutable)?
5 048
Методичка: как сделать онлайн-встречи эффективнее
Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать?
Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи.
Из методички узнаете:
- Как создать постоянную ссылку и подключаться на встречи в 2 клика,
- Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных.
- Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту.
Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч.
Получить гайд можно бесплатно на сайте.
Скачать
#реклама
mts-link.ru
О рекламодателе
5 048
📌 Зачем нужен git?
💬 Спрашивают в 11% собеседований
Git — это система контроля версий, которая позволяет разработчикам отслеживать изменения в коде, сотрудничать с другими разработчиками, управлять версиями программного обеспечения и работать над проектами параллельно. Он стал стандартом в индустрии разработки программного обеспечения благодаря своим мощным возможностям и гибкости.
🤔 Основные преимущества использования Git
1️⃣ Отслеживание изменений: Git позволяет отслеживать все изменения, сделанные в коде, кто их сделал и когда. Это важно для понимания истории проекта и для отката к предыдущим версиям, если что-то пошло не так.
git log
2️⃣ Ветвление и слияние: Git поддерживает мощные возможности ветвления (branching), что позволяет разработчикам работать над разными частями проекта одновременно и независимо друг от друга. Ветви можно легко сливать (merge) обратно, чтобы объединить изменения. git branch feature-branch
git checkout feature-branch
git merge main
3️⃣ Сотрудничество: Git позволяет нескольким разработчикам работать над одним и тем же проектом одновременно, не мешая друг другу. Это достигается благодаря распределенной природе Git и возможностям управления конфликтами. git clone https://github.com/user/repo.git
git pull origin main
git push origin main
4️⃣ Резервное копирование: Все изменения хранятся локально, и они могут быть легко синхронизированы с удаленным репозиторием (например, на GitHub или GitLab), что создает резервную копию проекта. git remote add origin https://github.com/user/repo.git
git push -u origin main
5️⃣ Восстановление и отмена изменений: Git позволяет легко отменить изменения или вернуться к предыдущей версии кода. git checkout <commit-hash>
git revert <commit-hash>
🤔 Основные команды Git
1️⃣ Инициализация репозитория: git init
2️⃣ Клонирование репозитория: git clone https://github.com/user/repo.git
3️⃣ Добавление изменений в индекс (staging area): git add .
4️⃣ Создание коммита: git commit -m "Сообщение коммита"
5️⃣ Просмотр состояния репозитория: git status
6️⃣ Просмотр истории коммитов: git log
7️⃣ Создание новой ветки: git branch new-branch
8️⃣ Переключение между ветками: git checkout new-branch
9️⃣ Слияние веток: git merge new-branch
1️⃣0️⃣ Отправка изменений в удаленный репозиторий: git push origin main
1️⃣1️⃣ Получение изменений из удаленного репозитория: git pull origin main
🤔 Краткий ответ
Git нужен для отслеживания изменений в коде, управления версиями, сотрудничества между разработчиками и обеспечения резервного копирования проектов. Это мощная и гибкая система контроля версий, которая стала стандартом в разработке программного обеспечения.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых5 048
Кибербезопасность на высшем уровне для вашего бизнеса
Защита мобильных устройств сотрудников от всех видов угроз.
– Совместимость с iOS, Android и Avrora OS
– Защита от вредоносных ПО и антифишинг
– Контроль функциональности (запрет камеры, Bluetooth и т.д.) и приложений
– Управление безопасностью через единую консоль
Перейти на сайт
#реклама 16+
go.kaspersky.com
О рекламодателе
5 048
🤔 Какой из следующих операторов в C# используется для явного преобразования типа с проверкой на успешность выполнения?
5 048
📌 Какие бывают самые популярные коды ошибок в HTTP?
💬 Спрашивают в 11% собеседований
В HTTP-протоколе используется множество кодов состояния, чтобы указать результат выполнения запросов. Наиболее популярные и часто встречающиеся коды ошибок группируются в диапазоны, каждый из которых указывает на определенный тип ошибки. Вот основные коды ошибок HTTP, которые важно знать:
🤔 1xx: Информационные
Эти коды состояния сообщают, что запрос был получен и продолжается обработка.
➕ 100 Continue: Указывает, что начальная часть запроса была получена и клиент должен продолжать отправку запроса.
➕ 101 Switching Protocols: Сервер согласен на переключение протоколов, как запросил клиент.
🤔 2xx: Успешные
Эти коды состояния указывают на успешное выполнение запроса.
➕ 200 OK: Запрос выполнен успешно. Ответ зависит от используемого метода HTTP (например, GET вернет запрашиваемый ресурс).
➕ 201 Created: Запрос привел к созданию нового ресурса.
➕ 204 No Content: Запрос был успешным, но в ответе не содержится контента.
🤔 3xx: Перенаправление
Эти коды состояния указывают, что клиент должен предпринять дополнительные действия для завершения запроса.
➕ 301 Moved Permanently: Ресурс был перемещен на постоянный новый URL.
➕ 302 Found: Ресурс временно находится по другому URL. Клиент должен использовать исходный URL для будущих запросов.
➕ 304 Not Modified: Ресурс не был изменен с момента последнего запроса клиента.
🤔 4xx: Ошибки клиента
Эти коды состояния указывают на ошибки, которые произошли по вине клиента.
➕ 400 Bad Request: Сервер не может обработать запрос из-за синтаксической ошибки.
➕ 401 Unauthorized: Требуется аутентификация. Клиент должен аутентифицироваться для получения запрашиваемого ресурса.
➕ 403 Forbidden: Сервер понял запрос, но отказывается его выполнять.
➕ 404 Not Found: Запрашиваемый ресурс не найден на сервере.
➕ 405 Method Not Allowed: Метод, указанный в запросе, не поддерживается данным ресурсом.
➕ 409 Conflict: Конфликт при обработке запроса, например, при попытке создать дублирующий ресурс.
➕ 429 Too Many Requests: Клиент отправил слишком много запросов за короткий промежуток времени.
🤔 5xx: Ошибки сервера
Эти коды состояния указывают на ошибки, произошедшие на сервере.
➕ 500 Internal Server Error: Внутренняя ошибка сервера. Запрос не может быть выполнен из-за ошибки на сервере.
➕ 501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
➕ 502 Bad Gateway: Сервер, действующий как шлюз или прокси, получил недействительный ответ от вышестоящего сервера.
➕ 503 Service Unavailable: Сервер временно не доступен, обычно из-за перегрузки или технического обслуживания.
➕ 504 Gateway Timeout: Сервер, действующий как шлюз или прокси, не получил своевременный ответ от вышестоящего сервера.
🤔 Краткий ответ
Наиболее популярные коды ошибок HTTP включают:
➕ 400 Bad Request: Неверный запрос.
➕ 401 Unauthorized: Необходима аутентификация.
➕ 403 Forbidden: Доступ запрещен.
➕ 404 Not Found: Ресурс не найден.
➕ 500 Internal Server Error: Внутренняя ошибка сервера.
➕ 503 Service Unavailable: Сервер временно не доступен.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
5 048
🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде.
🧑💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда.
👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише.
🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
