❓ Вопрос
Какие есть стратегии маршрутизации сообщений в RabbitMQ? Приведите примеры использования различных типов обменников (exchange) для реализации этих стратегий.
✅ Ответ
Стратегии маршрутизации сообщений в RabbitMQ реализуются через различные типы обменников: direct, fanout, topic и headers. Direct обменник отправляет сообщение в очередь, совпадающую с точным routing key; fanout рассылает сообщение во все привязанные очереди, реализуя широковещательную рассылку. Topic обменник позволяет направлять сообщения согласно шаблонам routing key, что удобно для гибкой фильтрации, а headers маршрутизирует сообщения по значениям заголовков. Выбор типа обменника зависит от бизнес-логики: direct для точечных сообщений, fanout для уведомлений всем подписчикам, topic для тематической маршрутизации и headers для сложных условий.
#lexicon #собеседование #java #middle #backend #messaging
Какие есть стратегии маршрутизации сообщений в RabbitMQ? Приведите примеры использования различных типов обменников (exchange) для реализации этих стратегий.
✅ Ответ
Стратегии маршрутизации сообщений в RabbitMQ реализуются через различные типы обменников: direct, fanout, topic и headers. Direct обменник отправляет сообщение в очередь, совпадающую с точным routing key; fanout рассылает сообщение во все привязанные очереди, реализуя широковещательную рассылку. Topic обменник позволяет направлять сообщения согласно шаблонам routing key, что удобно для гибкой фильтрации, а headers маршрутизирует сообщения по значениям заголовков. Выбор типа обменника зависит от бизнес-логики: direct для точечных сообщений, fanout для уведомлений всем подписчикам, topic для тематической маршрутизации и headers для сложных условий.
#lexicon #собеседование #java #middle #backend #messaging
❓ Вопрос
Какие потенциальные проблемы могут возникнуть при использовании raw types в Java и как этого избежать с помощью generics? Приведите пример кода и объясните.
✅ Ответ
Использование raw types в Java приводит к потере типовой безопасности, что может вызвать ClassCastException во время выполнения. Generics позволяют определять типы параметров, обеспечивая проверку типов на этапе компиляции и исключая необходимость ручных кастов. Например, List<String> гарантирует, что список содержит только строки, тогда как List без параметров может содержать любые объекты, приводя к ошибкам. Чтобы избежать проблем с raw types, рекомендуется всегда использовать параметризованные типы и избегать необобщённых коллекций.
#lexicon #собеседование #java #senior #fundamentals
Какие потенциальные проблемы могут возникнуть при использовании raw types в Java и как этого избежать с помощью generics? Приведите пример кода и объясните.
✅ Ответ
Использование raw types в Java приводит к потере типовой безопасности, что может вызвать ClassCastException во время выполнения. Generics позволяют определять типы параметров, обеспечивая проверку типов на этапе компиляции и исключая необходимость ручных кастов. Например, List<String> гарантирует, что список содержит только строки, тогда как List без параметров может содержать любые объекты, приводя к ошибкам. Чтобы избежать проблем с raw types, рекомендуется всегда использовать параметризованные типы и избегать необобщённых коллекций.
#lexicon #собеседование #java #senior #fundamentals
❓ Вопрос
Какое поведение и жизненный цикл у Spring-бина с областью видимости singleton? Приведите пример, когда это предпочтительно.
✅ Ответ
Spring-бин с областью видимости singleton создаётся один раз при старте контейнера и существует в течение всего времени жизни приложения. Все запросы к такому бину возвращают одну и ту же инстанцию, что обеспечивает экономию ресурсов и состояние, если оно требуется. Такой scope подходит для безсостоянийных сервисов или компонентов, где общий доступ к ресурсам безопасен и желателен. Например, бины-сервисы, реализующие логику бизнес-процессов, часто объявляют singleton для повышения производительности.
#lexicon #собеседование #java #junior #spring #injection
Какое поведение и жизненный цикл у Spring-бина с областью видимости singleton? Приведите пример, когда это предпочтительно.
✅ Ответ
Spring-бин с областью видимости singleton создаётся один раз при старте контейнера и существует в течение всего времени жизни приложения. Все запросы к такому бину возвращают одну и ту же инстанцию, что обеспечивает экономию ресурсов и состояние, если оно требуется. Такой scope подходит для безсостоянийных сервисов или компонентов, где общий доступ к ресурсам безопасен и желателен. Например, бины-сервисы, реализующие логику бизнес-процессов, часто объявляют singleton для повышения производительности.
#lexicon #собеседование #java #junior #spring #injection
❓ Вопрос
Как в Spring Boot настроить профили, чтобы автоматически выбирать конфигурацию базы данных для разных окружений? Расскажите, какие файлы properties или yaml для этого используются и как их приоритет определяется.
✅ Ответ
Для настройки профилей в Spring Boot используют файлы application-{profile}.properties или application-{profile}.yaml, где {profile} — имя профиля, например, dev или prod. Профиль активируется через свойство spring.profiles.active, которое можно задавать в основном application.properties , переменных окружения или аргументах командной строки. Spring Boot загружает сначала основной application.properties , затем перекрывает его значениями из файла активного профиля, определяя приоритет конфигураций. Это позволяет удобно переключать настройки базы данных и другие параметры для разных окружений.
#lexicon #собеседование #java #middle #spring_boot #backend
Как в Spring Boot настроить профили, чтобы автоматически выбирать конфигурацию базы данных для разных окружений? Расскажите, какие файлы properties или yaml для этого используются и как их приоритет определяется.
✅ Ответ
#lexicon #собеседование #java #middle #spring_boot #backend
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #junior #backend_optimization
🧠 Анализ плана выполнения SQL-запроса
Anonymous Quiz
100%
План выполнения и операции СУБД
0%
Только время выполнения запроса
0%
Синтаксические ошибки в запросе
📘 Разбор опроса
Анализ плана выполнения SQL-запроса
Вопрос: Что показывает explain plan для анализа производительности запроса?
✅ Правильный ответ: План выполнения и операции СУБД
Explain plan показывает последовательность операций СУБД (сканирование, индексы, соединения) для оптимизации запроса.
Анализ плана выполнения SQL-запроса
Вопрос: Что показывает explain plan для анализа производительности запроса?
✅ Правильный ответ: План выполнения и операции СУБД
Explain plan показывает последовательность операций СУБД (сканирование, индексы, соединения) для оптимизации запроса.
👍1
❓ Вопрос
Как ты объяснишь основное различие между checked и unchecked исключениями в Java, и почему важно это различие при проектировании API?
✅ Ответ
Checked исключения требуют обязательной обработки или декларации с помощью throws, что обеспечивает явное управление ошибками на этапе компиляции. Unchecked исключения не требуют явного перехвата и обычно сигнализируют о проблемах, которые можно считать программными ошибками. При проектировании API важно различать эти типы исключений для балансировки контроля над ошибками и удобства использования, обеспечивая правильное информирование пользователей API о возможных ошибках.
#lexicon #собеседование #java #junior #java_errors #backend
Как ты объяснишь основное различие между checked и unchecked исключениями в Java, и почему важно это различие при проектировании API?
✅ Ответ
#lexicon #собеседование #java #junior #java_errors #backend
👍1
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #junior #backend_scalability
🧠 Эффективное кеширование в backend
Anonymous Quiz
100%
Регулярная инвалидация кеша
0%
Увеличение размера кеша
0%
Использование только одного уровня кеша
📘 Разбор опроса
Эффективное кеширование в backend
Вопрос: Какой подход помогает избежать устаревших данных в кеше?
✅ Правильный ответ: Регулярная инвалидация кеша
Инвалидация кеша при изменении данных предотвращает использование устаревших значений.
Эффективное кеширование в backend
Вопрос: Какой подход помогает избежать устаревших данных в кеше?
✅ Правильный ответ: Регулярная инвалидация кеша
Инвалидация кеша при изменении данных предотвращает использование устаревших значений.
❓ Вопрос
Как реализовать аутентификацию с помощью JWT в REST API? Опишите конкретные шаги и примеры использования.
✅ Ответ
Аутентификация с помощью JWT в REST API включает создание и подпись токена при успешной проверке учетных данных пользователя, обычно после логина. Токен содержит полезную нагрузку с идентификатором пользователя и временем истечения, защищен секретным ключом. При последующих запросах сервер проверяет подпись и валидность токена из заголовка Authorization, что позволяет обеспечивать доступ к защищенным ресурсам без сессий. Важно реализовать обновление токенов и обработку ошибок в случае истечения срока действия или подделки токена.
#lexicon #собеседование #java #middle #backend_security #backend #core
Как реализовать аутентификацию с помощью JWT в REST API? Опишите конкретные шаги и примеры использования.
✅ Ответ
#lexicon #собеседование #java #middle #backend_security #backend #core
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #junior #spring_security
🧠 Spring Security: UserDetailsService
Anonymous Quiz
0%
loadUserByUsername
50%
findUserByUsername
50%
getUserDetails
📘 Разбор опроса
Spring Security: UserDetailsService
Вопрос: Какой метод нужно реализовать в UserDetailsService?
✅ Правильный ответ: loadUserByUsername
Метод loadUserByUsername загружает данные пользователя по имени для аутентификации.
Spring Security: UserDetailsService
Вопрос: Какой метод нужно реализовать в UserDetailsService?
✅ Правильный ответ: loadUserByUsername
Метод loadUserByUsername загружает данные пользователя по имени для аутентификации.
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #junior #backend_arch
🧠 Монолит vs Микросервисы: Простота развертывания
Anonymous Quiz
100%
Монолит
0%
Микросервисы
0%
Одинаково сложно
📘 Разбор опроса
Монолит vs Микросервисы: Простота развертывания
Вопрос: Что проще развернуть и тестировать?
✅ Правильный ответ: Монолит
Монолит проще развертывать и тестировать из-за единой кодовой базы.
Монолит vs Микросервисы: Простота развертывания
Вопрос: Что проще развернуть и тестировать?
✅ Правильный ответ: Монолит
Монолит проще развертывать и тестировать из-за единой кодовой базы.
❓ Вопрос
Опишите конкретный случай, когда выбор типа балансировщика нагрузки (например, Round Robin vs Least Connections) повлиял на производительность сервиса. Какие метрики и данные вы анализировали для этого решения?
✅ Ответ
Выбор типа балансировщика нагрузки определяется распределением заданий между серверами и их текущей нагрузкой. Round Robin равномерно распределяет запросы без учёта загрузки, что подходит при одинаковой производительности узлов и равномерном трафике. Least Connections оптимизирует производительность в условиях разной загрузки серверов, направляя запросы на наименее загруженные. Для принятия решения анализируются метрики времени отклика, загрузки CPU и количества активных соединений для оценки эффективности балансировки.
#lexicon #собеседование #java #senior #backend_networking #backend #core
Опишите конкретный случай, когда выбор типа балансировщика нагрузки (например, Round Robin vs Least Connections) повлиял на производительность сервиса. Какие метрики и данные вы анализировали для этого решения?
✅ Ответ
#lexicon #собеседование #java #senior #backend_networking #backend #core