Встречается на собеседованиях • сегодня
Что такое SOLID
SOLID — это набор принципов объектно-ориентированного проектирования, направленных на создание гибкого, поддерживаемого и расширяемого кода:
- Single Responsibility (единственная ответственность) — класс должен решать только одну задачу.
csharp
// Плохо: класс и логирует, и сохраняет данные class UserManager { void Save(User user) { /*...*/ } void Log(string message) { /*...*/ } }
-
Open-Closed (открытость/закрытость) — классы должны быть открыты для расширения, но закрыты для изменений.
csharpabstract class Shape { public abstract double Area(); } class Circle : Shape { /*...*/ } // Расширение без изменения Shape -
Liskov Substitution (подстановки Лисков) — наследники должны заменять родителей без нарушения логики.
csharp// Наследник Bird не должен выбрасывать исключение в методе Fly(), если базовый класс его не предусматривает. -
Interface Segregation (разделение интерфейсов) — много специализированных интерфейсов лучше одного общего.
csharpinterface IPrinter { void Print(); } interface IScanner { void Scan(); } // Вместо IPrinterScanner -
Dependency Inversion (инверсия зависимостей) — зависимости на абстракциях, а не на деталях.
csharpclass OrderService { private readonly ILogger _logger; public OrderService(ILogger logger) { _logger = logger; } // Внедрение зависимости }
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
