1. Есть один монолит на Java 11. Он содержит системы, которые надо вынести. С чего бы начал?
2. У нас есть SOLID и есть множественная имплементация. С одной стороны говорят дробите, с другой принцип единой ответственности, как решить этот диссонанс?
3. Метод, в котором 150 if-ов, где сравниваются строки. Как отрефакторить?
4. Сервис А должен сходить в Сервис Б. Они не знают API друг друга. Какой паттерн помогает им понять?
5. Планирование архитектуры между несколькими сервисами. (нужно смотреть фотографию) Как бы ты создал Контракт взаимодействия между сервисом egrn и внутренними клиентами. И между egrn и внешним сервисом Росреестр.
6. В первом сервисе произошло событие, закоммитили в БД, нужно отправить сообщение в кафку. Кафка реализует мост at least once т.е. может много сообщений в кафку. Если транзакция закоммителась мы должны гарантированно другому сервису сообщать, что событие произошло. Какие паттерны реализовать?
7. Общаемся с сервисом по REST, получили сетевую ошибку, кажется, что можно вызывать заново. Что настроить на своей стороне? - паттерн Retry - Если соседний сервис очень слабый, то постоянный retry еще больше его положит - увеличить промежутки времени между retry или паттерн circuit breaker
8. Какие концепции в SOLID вы считаете самыми важными? А какими иногда в угоду бизнеса, скорости можно пренебречь?
9. Принцип Open-closed подразумевает изменение не только через наследование или имплементацию интерфейсов. Он про то, что старый код не надо трогать, но можно расширять. Кроме Enum, как еще можно расширить старый код? (адаптеры, декораторы собесещующему не подошли)
10. Создали абстрактный терминал класс и у него есть метод по работе с картой. Нужно реализовать этот абстрактный класс?