Готовитесь к роли старшего разработчика Java, где требуются навыки работы с микросервисами? Вот 50 вопросов, которые вы должны знать, прежде чем идти на собеседование!
Присоединяйся к нашему Карьерному блогу в телеграмм и получай лайфхаки на каждый день про поиск работы мечты и IT рекрутинг!
Привет, за последние несколько лет микросервисы быстро стали любимой архитектурой многих технологических компаний, настолько, что все следят за микросервисами.
Микросервисы — это не что иное, как небольшая программа, которая делает одну вещь и делает это, как класс. В отличие от Monolith, где все функции вашего приложения находятся внутри одного приложения, микросервисы разделяют их на несколько сервисов.
Например, у вас может быть микросервис для аутентификации и авторизации в вашем приложении, один микросервис для обработки потока заказов, еще один для пользователей и так далее.
В последние годы спрос на микросервисы сильно вырос, но это не пуля, у него есть свои плюсы и минусы, как и у всего остального в разработке программного обеспечения.
Но многие люди в сфере технологий заняты разрушением своего монолита и совершают ту же ошибку. Я не большой поклонник микросервисов, особенно если они маленькие, зависимые от других и их сотни. Вместо этого мне нравится быть прагматичным и создавать больше модульных микросервисов, чем более мелкие, вроде мини-сервисов.
Проблема в том, что когда вы должны быть в системе, вы должны следовать системным правилам, и поэтому вам также необходимо подготовиться к архитектуре микросервисов и разработке приложений, если вы хотите получить ту работу Java-разработчика, которую хотите.
Мы разделили статью на 3 раздела, в первом из которых обсуждаются общие вопросы об архитектуре микросервисов, во втором разделе мы вернемся к вопросам интервью по шаблонам и принципам проектирования микросервисов, а в последнем разделе мы увидим более сложные вопросы по микросервисам для опытных разработчиков.
Подбор ит персонала для стартапов и продуктовых ИТ-компаний по всему миру. 5500+ закрытых вакансий, 150+ положительных отзывов клиентов. Закрываем вакансии за 14 дней! Убедитесь сами!
20 основных вопросов для собеседования по архитектуре микросервисов
Вот общие вопросы для интервью по микросервисам, которые основаны на общих знаниях о микросервисах, и вы должны знать их, чтобы использовать микросервисы в своем проекте.
- Что такое архитектура микросервисов и чем она отличается от монолитной архитектуры?
Микросервисы, как следует из названия, — это небольшой сервис (Java, .NET, JavaScript или любая другая программа), который предоставляет определенную функциональность. Например, служба аутентификации может предоставлять функции аутентификации и UserService все функции, связанные с пользователями.
Вот простой пример того, как выглядят микросервисы:
Каковы преимущества и недостатки архитектуры микросервисов? За и против?
Архитектура микросервисов — это подход к созданию программных систем, который включает разбиение монолитного приложения на набор небольших модульных сервисов, которые можно разрабатывать, развертывать и масштабировать независимо друг от друга. Вот некоторые из преимуществ и недостатков этого подхода:
Плюсы микросервисов:
- Гибкость. Архитектура микросервисов обеспечивает гибкость с точки зрения выбора технологий, поскольку каждый сервис может быть реализован с использованием разных языков, фреймворков и баз данных. Например, вы можете реализовать один микросервис на Java, а другой — на C++ или Python.
- Масштабируемость. Микросервисы можно масштабировать независимо друг от друга, что позволяет лучше использовать ресурсы и быстрее масштабировать всю систему. Благодаря облачным вычислениям Kubernetes может очень легко масштабировать микросервисы в зависимости от нагрузки.
- Отказоустойчивость. Архитектура микросервисов позволяет создавать более отказоустойчивые системы, поскольку сбой в одном сервисе можно изолировать и устранить, не затрагивая всю систему.
- Гибкость: архитектура микросервисов позволяет ускорить циклы разработки и развертывания, поскольку изменения можно вносить в один сервис, не затрагивая всю систему.
- Повторное использование: микросервисы можно повторно использовать в нескольких приложениях, что может привести к экономии средств и повышению эффективности.
Недостатки:
- Сложность. Архитектура микросервисов может увеличить сложность системы, так как в ней больше движущихся частей и больше взаимодействий между сервисами.
- Тестирование и отладка. Тестирование и отладка архитектуры микросервисов может быть более сложной задачей, поскольку требует тестирования каждой службы по отдельности, а также тестирования их взаимодействия.
- Мониторинг и управление. Архитектура микросервисов требует большего мониторинга и управления, поскольку существует больше сервисов, за которыми нужно следить и которыми нужно управлять.
- Взаимодействие между службами. Архитектура микрослужб увеличивает количество сетевых вызовов между службами, что может привести к увеличению задержки и, если не обрабатывается должным образом, к каскадным сбоям.
- Безопасность. Архитектура микросервисов может усложнить реализацию мер безопасности, поскольку каждый сервис может нуждаться в индивидуальной защите.
В заключение можно сказать, что архитектура микросервисов предлагает много преимуществ с точки зрения гибкости, масштабируемости и отказоустойчивости, но также увеличивает сложность системы и требует большего контроля и управления. Важно взвесить преимущества и недостатки и выбрать правильный подход, соответствующий конкретным требованиям и ограничениям вашей системы.
Рекомендуем к прочтению: 46 вопросов и ответов на интервью для Data Science
2. Как спроектировать и внедрить микросервисы?
Вы можете использовать любую структуру для разработки микросервисов на другом языке программирования, но в Java вы можете использовать Spring Boot и Spring Cloud для реализации микросервисов.
3. Каковы ключевые характеристики хорошо спроектированного микросервиса?
Хорошо спроектированные микросервисы имеют четкие единые обязанности, слабо связаны между собой, обладают высокой связностью, взаимодействуют через API, имеют ограниченный контекст и могут быть независимо развернуты, тестируемы и масштабируемы.
И вот еще несколько вопросов о микросервисах, которые вы можете попрактиковать, вы можете найти ответы в Интернете, но если вы не найдете, дайте мне знать, и я добавлю
- Как гарантировать, что микросервисы слабо связаны и тесно связаны? (подсказка - держите его маленьким)
- Как Java Microservice и .NET Microservice могут взаимодействовать с обучением? (подсказка json)
- Как справиться со сквозными проблемами, такими как безопасность, в архитектуре микросервисов?
- Почему отладка так сложна для микросервисной архитектуры?
- Как обеспечить согласованность данных в архитектуре микросервисов?
- Как обеспечить масштабируемость и отказоустойчивость микросервисов?
- Как обрабатывать обнаружение и регистрацию сервисов в архитектуре микросервисов?
- Как управлять служебной связью и обменом данными в архитектуре микросервисов?
- Как справиться с управлением версиями службы и обратной совместимостью в архитектуре микросервисов?
- Как отслеживать микросервисы и устранять неполадки?
- Как обрабатывать развертывания и откаты в архитектуре микросервисов?
- Как справиться с тестированием и непрерывной интеграцией в архитектуре микросервисов?
В архитектуре микросервисов тестирование и непрерывная интеграция должны выполняться на уровне службы с автоматическими тестами и конвейером непрерывной доставки для каждой службы. Это позволяет независимо развертывать и масштабировать сервисы. - Как управлять услугами и жизненным циклом в архитектуре микросервисов?
- Как обеспечить безопасность и контроль доступа в архитектуре микросервисов?
- Как вы осуществляете интеграцию и миграцию данных в архитектуре микросервисов?
- Как справиться с композицией и оркестровкой сервисов в архитектуре микросервисов?
- Как вы развертываете свои микросервисы Java?
Мы используем Docker и Kubernetes для развертывания наших микросервисов в облаке. Docker используется для создания образа Docker всего сервиса, а затем Kubernetes для его развертывания на AWS или Azure. Сервис управляется K8, поэтому он позаботится о запуске остановленных экземпляров и увеличении их количества при увеличении нагрузки. - Как обеспечить отказоустойчивость службы в случае сбоев?
K8 сделает это за вас и запустит новый MicroService или перезапустит тот же. - Какие Java Framework вы можете использовать для создания микросервисов?
подсказка — Quarkus, Spring Boot и MicroNaut - Сколько микросервисов у вас есть в вашем проекте? Как вы обнаружите, что пользователь говорит, что один из его заказов отсутствует в базе данных?
подсказка — одна база данных на микросервис — это шаблон
Рекомендуем к прочтению: 7 вопросов, которые можно задать в конце интервью работодателю (2 часть)
15 вопросов на собеседовании по микросервисам о шаблонах и принципах проектирования
Вот еще несколько вопросов, основанных на шаблонах и принципах проектирования микросервисов, таких как API Gateway, CQRS, SAGA и других.
1. Что такое шаблон шлюза API и как он используется в архитектуре микросервисов? Объясните, пожалуйста, какую проблему он решает и является ли он обязательным для микросервисов или нет?
Шлюз API — это один из основных шаблонов микросервисов, который используется для обеспечения единой точки входа для внешних потребителей для доступа к сервисам. Он действует как обратный прокси-сервер и уровень маршрутизации, который, среди прочего, отвечает за маршрутизацию запросов, композицию и преобразование протоколов.
Паттерн API Gateway решает несколько проблем в архитектуре микросервисов:
- Он отделяет внешних потребителей от внутренней реализации услуг. Это позволяет сервисам развиваться и масштабироваться независимо, не затрагивая внешних потребителей.
- Он предоставляет единую точку входа для внешних потребителей, что упрощает обнаружение служб на стороне клиента и сокращает количество сетевых вызовов.
- Он может решать сквозные задачи, такие как безопасность, ограничение скорости и кэширование, на границе архитектуры, а не разбрасывать их по службам.
- Он может объединять несколько сервисов в один ответ, уменьшая количество сетевых вызовов и повышая производительность на стороне клиента.
- Он может выполнять переводы протоколов и типов содержимого, что позволяет реализовывать службы с использованием различных протоколов и форматов данных.
Это не является обязательным для архитектуры микросервисов, но обычно используется для управления сложностью и повышения производительности микросервисов. Его также можно использовать для обеспечения согласованной безопасности, ограничения скорости и политик кэширования в микросервисах.
Стоит отметить, что в зависимости от размера вашей среды микросервисов и количества запросов может иметь смысл иметь несколько шлюзов API для распределения нагрузки и повышения масштабируемости.
Вот хорошая диаграмма, которая объясняет шаблон проектирования шлюза API в микросервисах:
2. Можете ли вы объяснить шаблон прерывателя цепи и как он используется для обработки сбоев службы в архитектуре микросервисов? Какую проблему решает.
Это повышает доступность Сервиса. Шаблон прерывателя цепи — это метод, используемый для предотвращения каскадных сбоев путем временного предотвращения дальнейших вызовов службы, которая часто дает сбой. Это помогает повысить отказоустойчивость системы.
3. Что такое шаблон разделения ответственности команд и запросов (CQRS) и когда его целесообразно использовать в архитектуре микросервисов?
CQRS означает разделение ответственности за запросы команд. Это один из популярных шаблонов проектирования микросервисов, который разделяет операции чтения и записи в системе и позволяет им развиваться независимо. Это позволяет создать более масштабируемую и производительную систему, но также увеличивает сложность.
4. Что такое шаблон повторных попыток в микросервисах? Когда и как его использовать?
Шаблон повторных попыток — это метод, используемый в архитектуре микросервисов для автоматической обработки сбоев службы. Он включает в себя автоматический повтор неудачного вызова службы определенное количество раз с задержкой между повторными попытками.
Этот шаблон помогает повысить надежность и отказоустойчивость системы за счет увеличения шансов на успешный вызов даже при наличии временных сбоев. Он также используется для изящной обработки ненадежных зависимостей службы путем повторных попыток обращения к ним вместо того, чтобы прерывать весь процесс и возвращать ошибку.
Вот несколько шаблонов проектирования микросервисов и принципиальные вопросы для практики:
- Можете ли вы объяснить шаблон, управляемый событиями, и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон Service Registry и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон Sidecar и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон Service Mesh и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон Backend for Frontend и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон Bulkhead и как он используется в архитектуре микросервисов?
- Что такое шаблон саги? Какую проблему он решает?
- Можете ли вы объяснить шаблон «Исходящие» и как он используется в архитектуре микросервисов?
- Что такое шаблон самодостаточности и как он используется в архитектуре микросервисов?
- Можете ли вы объяснить шаблон внешней конфигурации и как он используется в архитектуре микросервисов?
- Что такое шаблон Strangler и как он используется в архитектуре микросервисов?
15 вопросов для собеседования по продвинутым микросервисам для опытных разработчиков
Это более сложный вопрос о микросервисах для опытных разработчиков Java, например, с опытом работы от 5 до 10 лет, и он охватывает такие сложные темы, как репликация данных, разделение данных, оркестровка и хореография служб, безопасность и т. д.
- Как разделить данные и репликация данных в MS?
- Занимались ли вы секционированием и масштабированием сервисов в архитектуре микросервисов? Если нет, то как вы можете это сделать?
- Объяснить оркестровку служб и хореографию служб в микрослужбах?
- С какими проблемами вы столкнулись при разработке микросервисов в своем проекте?
- Как вы обеспечиваете безопасность службы и шифрование службы в микрослужбах?
- Как вы будете реализовывать мониторинг сервисов и ведение журналов сервисов в архитектуре микросервисов?
- Как вы обрабатываете трассировку и отладку служб в архитектуре микрослужб?
- Что такое тестирование сервисов и обеспечение качества сервисов в архитектуре микросервисов?
- Как вы обрабатываете развертывание службы и откат службы в архитектуре микрослужб?
- Как вы справляетесь с управлением услугами и управлением их жизненным циклом в архитектуре микросервисов?
- Как вы справляетесь с миграцией и модернизацией сервисов в архитектуре микросервисов?
- Как вы справляетесь с интеграцией сервисов и управлением API сервисов в архитектуре микросервисов?
- Как вы справляетесь с производительностью службы и оптимизацией службы в архитектуре микрослужб?
- Как вы убедитесь, что ваши микросервисы не влияют на другие микросервисы на том же хосте?
- Как вы организуете свои микросервисы? Остается ли весь код одним и тем же репо или вы создаете несколько репо для разных микросервисов?
- Что лучше? Разная база данных для разных микросервисов или одна база данных для всех микросервисов? и почему?
Материалы для подготовки к интервью по Java и Spring
Перед любым собеседованием с Java и Spring Developer наши клиенты ит кадрового агентства рекомендуют читать приведенные ниже ресурсы.
Grokking the Java Интервью
Grokking the Java Interview: нажмите здесь
Grokking the Java Interview [бесплатная копия образца]: нажмите здесь
Если вы хотите подготовиться к интервью Spring Boot, вы следуете этой объединенной электронной книге, она также содержит вопросы по микросервисам из интервью Spring Boot.
Интервью Grokking Spring Boot
Вы можете получить свою копию здесь — Интервью Grokking the Spring Boot
Это все, что касается 50+ вопросов для собеседования по архитектуре микросервисов для разработчиков Java. Мы включили как базовые, так и расширенные вопросы по микросервисам для начинающих и опытных разработчиков.
Другие рекомендации, которые помогут вам быстрее найти работу мечты, вы найдете в HR-блоге от Кадрового агентства IT and Digital. Удачи на собеседовании 🤞