Встречается на 23% собеседований по C#
Какие знаешь паттерны проектирования
Паттерны проектирования — это проверенные решения типовых проблем в разработке ПО. Основные группы:
Порождающие (создание объектов):
- Singleton — гарантирует единственный экземпляр класса.
csharp
public sealed class Singleton {
private static Singleton _instance;
private Singleton() {}
public static Singleton Instance => _instance ??= new Singleton();
}- Factory Method — делегирует создание объектов подклассам.
Структурные (компоновка объектов):
- Adapter — адаптирует интерфейс класса под другой интерфейс.
- Composite — представляет объекты в виде древовидной структуры.
Поведенческие (взаимодействие объектов):
- Observer — уведомляет зависимые объекты об изменениях (например, события в C#).
- Strategy — инкапсулирует алгоритмы, делая их взаимозаменяемыми.
Пример Strategy:
csharp
public interface ISortStrategy { void Sort(List<int> list); }
public class QuickSort : ISortStrategy { ... }
public class Sorter {
private ISortStrategy _strategy;
public void SetStrategy(ISortStrategy strategy) => _strategy = strategy;
public void Sort(List<int> list) => _strategy.Sort(list);
}Паттерны улучшают читаемость, расширяемость и поддерживаемость кода.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы