Сегодня начинаю свою серию постов о вопросах к собеседованию .NET разработчика. Что-то я насобирал сам, когда ходил по куче собеседований, что-то спрашиваю сам сейчас как интервьюер.
Так же постараюсь написать то, как бы я ответил на эти вопросы. Возможно, это будут не самые точные и определенно не самые подробные ответы, но такой ответ устраивал собеседующих и устроил бы меня как интервьюера.
В этой серии будут собраны совершенно разные вопросы - некоторые из них вам покажутся слишком базовыми, некоторые - слишком сложными, но каждый их них мне задавали больше одного раза.
🤓 Все вопросы в серии постов будут идти по возрастанию сложности
1️⃣ В чем разница между абстрактным классом и интерфейсом?
Давайте для начала получим представление что это вообще такое:
абстрактный класс - класс, который не может быть реализован, он может иметь реализацию по умолчанию и статические методы. Как правило представляет собой какой-то базовый класс для наследования. У интерфейсов же немного другое предназначение - они описывают контракты по которым можно будет взаимодействовать с объектами в дальнейшем. Как правило они описывают поведение объекта.
Так же ключевые отличия:
1. Абстрактные классы могут содержать реализованные методы, а интерфейсы содержат только сигнатуры методов. С какого-то там си шарпа в интерфейсе можно определить реализацию, но считаю это не самой хорошей практикой. (Обычно так и отвечал и интервьюеры соглашались)
2. Классы могут реализовывать несколько интерфейсов, но наследовать только от одного абстрактного класса.
3. Абстрактные классы могут иметь конструкторы, а интерфейсы — нет.
4. Абстрактные классы могут иметь поля и свойства, а интерфейсы — только свойства.
5. Абстрактные классы обычно используются для создания базового класса для наследования других классов, а интерфейсы используются для определения контракта, который должны реализовать классы.
2️⃣ Что такое делегаты?
Это указатель на метод, делегат имеет определенную сигнатуру. В основном используется в связке с событиями. (Ну а что еще вы хотите услышать?)
#вопросы_к_собеседованию_csharp
Post #33
421
- 👍 6
- ❤ 1