Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое семантическое версионирование пакетов и как устроена схема versioning?
Семантическое версионирование — это схема версии вида MAJOR.MINOR.PATCH. MAJOR увеличивается при несовместимых изменениях, MINOR — при добавлении функциональности, PATCH — при исправлении багов. Такая схема позволяет понимать, какие изменения безопасны для обновления зависимостей.
Что такое Inversion of Control?
Inversion of Control — это принцип, при котором управление созданием и связыванием объектов передается фреймворку.
Код перестает самостоятельно управлять зависимостями.
Это снижает связанность компонентов.
IoC упрощает тестирование и расширение системы.
В чем разница между Dependency Injection и Inversion of Control?
IoC — это общий принцип проектирования, согласно которому управление объектами и их зависимостями передается внешнему контейнеру или фреймворку. Dependency Injection — это конкретный способ реализации IoC, при котором зависимости объекта предоставляются ему извне, а не создаются внутри. IoC можно реализовать не только через DI, но и другими методами, например, через фабричный метод или событийное управление.
В чем заключается принцип Dependency Inversion?
Dependency Inversion означает, что модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций. Абстракции не зависят от деталей реализации. Это делает код гибким и расширяемым.
Что такое MVCC (Multiversion Concurrency Control)? Где используется?
MVCC (Multiversion Concurrency Control, Многовариантное управление параллелизмом) — это механизм, который позволяет повысить производительность базы данных за счет хранения нескольких версий одного объекта данных. Это позволяет операциям чтения получать согласованный снимок данных без блокировок, ожидая завершения операций записи, и наоборот. Он широко используется в современных реляционных (PostgreSQL, MySQL InnoDB) и нереляционных СУБД.
Чем отличается Dependency Inversion от Dependency Injection?
Как принципы SOLID, в частности Dependency Inversion, могут применяться не только в ООП, но и при проектировании взаимодействия между микросервисами?
Как часто ты используешь принцип инверсии зависимостей (Dependency Inversion) и абстракции в работе?
Почему Singleton нарушает Dependency Inversion?
Что означает принцип Dependency Inversion?
Рейтинг:
5
Сложность:
4
Dependency Inversion — это принцип, который говорит, что модули высокого уровня не должны зависеть от конкретных реализаций. Они должны зависеть от абстракций. Dependency Injection — это способ реализовать этот принцип, передавая зависимости в конструктор, методы или свойства. DI — это техника, а DIP — фундаментальная архитектурная идея. DIP можно соблюдать и без DI-фреймворков, но DI помогает сделать это удобнее.
Рейтинг:
2
Сложность:
7
Принципы SOLID, особенно Dependency Inversion, применимы на уровне микросервисов как принципы слабой связности и чётко определённых контрактов. Вместо зависимости от конкретной реализации другого сервиса, микросервис должен зависеть от стабильного контракта (API), который описывает взаимодействие. Это позволяет сервисам развиваться независимо, а также подменять реализацию (например, на заглушку для тестирования) без изменения кода потребителя.
Рейтинг:
2
Сложность:
7
Принцип инверсии зависимостей (DIP) и абстракции используются постоянно, это краеугольный камень современной разработки. Любое использование интерфейсов для отделения высокоуровневых модулей от низкоуровневых деталей (например, внедрение зависимости репозитория в сервис через интерфейс) является применением DIP. Это делает код тестируемым, гибким и слабосвязанным
Рейтинг:
5
Сложность:
7
Singleton нарушает Dependency Inversion, потому что код напрямую зависит от конкретной реализации. Вместо зависимости от абстракции используется жёсткая ссылка на shared. Это связывает высокоуровневые модули с деталями реализации. В результате становится сложно менять реализацию и писать тесты. Зависимость становится глобальной и неявной.
Рейтинг:
5
Сложность:
7
Принцип Dependency Inversion говорит о том, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Также абстракции не должны зависеть от деталей реализации. Это обычно достигается через протоколы и внедрение зависимостей. Такой подход делает код гибким и тестируемым.
Рейтинг:
5
Сложность:
3
Рейтинг:
5
Сложность:
6
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
2
Сложность:
10