Перейти к основному содержимому

4. Архитектура ПО и принципы проектирования

Что такое принципы SOLID?​

Middle

Ответ:

  • S: Single Responsibility (Принцип единственной ответственности)
  • O: Open/Closed (Принцип открытости/закрытости)
  • L: Liskov Substitution (Принцип подстановки Барбары Лисков)
  • I: Interface Segregation (Принцип разделения интерфейса)
  • D: Dependency Inversion (Принцип инверсии зависимостей) Руководство по принципам SOLID

Что такое CQRS?​

Middle

Ответ: Command Query Responsibility Segregation — паттерн, разделяющий операции чтения (Query) и записи/обновления (Command) данных.


В чём разница между Entity и Value Object в DDD?​

Middle

Ответ:

  • Entity (Сущность): Объект, обладающий уникальным идентификатором (ID). Сущность остается собой, даже если её свойства меняются со временем (например, User).
  • Value Object (Объект-значение): Объект, определяемый только совокупностью своих атрибутов (без ID). Они иммутабельны (неизменяемы). Два объекта-значения с одинаковыми свойствами считаются эквивалентными (например, Money, Address).

В чём ключевое различие между гексагональной (Hexagonal) и луковой (Onion) архитектурами?​

Middle

Ответ:

  • Hexagonal (Ports & Adapters): Делает акцент на границе между приложением и внешним миром через порты (интерфейсы) и адаптеры (реализации), не навязывая строгую структуру внутри ядра.
  • Onion Architecture: Предписывает строгое деление на концентрические слои. Зависимости всегда направлены внутрь: от инфраструктуры к ядру (Domain Model), которое находится в самом центре. Подробный разбор архитектур | Практические примеры

Что такое анемичная и богатая модели?​

Senior

Ответ:

  • Анемичная модель (Anemic Domain Model): Объекты, которые содержат только данные (свойства, геттеры/сеттеры), но лишены бизнес-логики. Логика в этом случае выносится в отдельные сервисы.
  • Богатая модель (Rich Domain Model): Объекты, инкапсулирующие как данные, так и бизнес-логику, относящуюся к этим данным. Характерна для Domain-Driven Design (DDD). Подробное сравнение анемичной и богатой моделей

Что такое GRASP?​

Senior

Ответ: General Responsibility Assignment Software Patterns — набор из 9 фундаментальных принципов распределения ответственности между классами и объектами. Руководство по паттернам GRASP


Каковы преимущества и недостатки микросервисов?​

Senior

Ответ:

  • Преимущества: Независимое масштабирование, скорость и гибкость разработки, технологическая независимость, изоляция отказов.
  • Недостатки: Сложность управления, проблемы согласованности данных (распределённые транзакции), сетевые задержки, сложный мониторинг. Архитектура микросервисов