❓ Вопрос
Какие паттерны асинхронного программирования вы используете для эффективного управления потоками и как они помогают избежать проблем с блокировками и конкуренцией?
✅ Ответ
Для эффективного управления потоками применяются паттерны, такие как ExecutorService для управления пулом потоков, Future и CompletableFuture для обработки асинхронных задач с возможностью композиции, а также паттерн Producer-Consumer для разделения задач на производящие и потребляющие. Эти паттерны помогают избежать блокировок благодаря ограничению количества одновременно выполняемых потоков и асинхронному ожиданию результатов без удержания ресурсов. Использование неблокирующих структур данных и механизмов синхронизации снижает риск условий гонки и конкуренции.
#lexicon #собеседование #java #senior #asynchronous
Какие паттерны асинхронного программирования вы используете для эффективного управления потоками и как они помогают избежать проблем с блокировками и конкуренцией?
✅ Ответ
Для эффективного управления потоками применяются паттерны, такие как ExecutorService для управления пулом потоков, Future и CompletableFuture для обработки асинхронных задач с возможностью композиции, а также паттерн Producer-Consumer для разделения задач на производящие и потребляющие. Эти паттерны помогают избежать блокировок благодаря ограничению количества одновременно выполняемых потоков и асинхронному ожиданию результатов без удержания ресурсов. Использование неблокирующих структур данных и механизмов синхронизации снижает риск условий гонки и конкуренции.
#lexicon #собеседование #java #senior #asynchronous
❓ Вопрос
Какие HTTP-заголовки рекомендуете использовать для защиты API при аутентификации и авторизации, и как их правильно настраивать на сервере?
✅ Ответ
Для защиты API при аутентификации и авторизации обычно используются заголовки Authorization с токенами типа Bearer, содержащими JWT или другие схемы аутентификации. Важно правильно настроить CORS-заголовки (Access-Control-Allow-Origin, Access-Control-Allow-Headers) для контроля доступа из браузера. Также стоит применять заголовки безопасности, такие как Strict-Transport-Security для принудительного использования HTTPS и Content-Security-Policy для ограничения источников контента. На сервере необходимо валидировать и парсить заголовки, обеспечивая корректную проверку полномочий и защиту от подделки запросов.
#lexicon #собеседование #java #junior #backend #security
Какие HTTP-заголовки рекомендуете использовать для защиты API при аутентификации и авторизации, и как их правильно настраивать на сервере?
✅ Ответ
Для защиты API при аутентификации и авторизации обычно используются заголовки Authorization с токенами типа Bearer, содержащими JWT или другие схемы аутентификации. Важно правильно настроить CORS-заголовки (Access-Control-Allow-Origin, Access-Control-Allow-Headers) для контроля доступа из браузера. Также стоит применять заголовки безопасности, такие как Strict-Transport-Security для принудительного использования HTTPS и Content-Security-Policy для ограничения источников контента. На сервере необходимо валидировать и парсить заголовки, обеспечивая корректную проверку полномочий и защиту от подделки запросов.
#lexicon #собеседование #java #junior #backend #security
❓ Вопрос
Как организовать мониторинг и логирование в распределённой системе микросервисов? Какие конкретные технологии или подходы вы используете для обнаружения и локализации проблем?
✅ Ответ
Мониторинг в распределённой системе строится на сборе метрик, логов и трассировок с каждого микросервиса для контроля состояния и быстрого выявления аномалий. Применяется централизованное логирование с помощью систем, таких как ELK Stack или Loki, а для трассировки запросов через сервисы используются инструменты OpenTelemetry или Jaeger. Для оповещений на основе мониторинга метрик применяют Prometheus и Alertmanager. Важно обеспечить корреляцию логов и метрик по общим идентификаторам запросов для эффективной диагностики и локализации проблем.
#lexicon #собеседование #java #middle #backend #arch
Как организовать мониторинг и логирование в распределённой системе микросервисов? Какие конкретные технологии или подходы вы используете для обнаружения и локализации проблем?
✅ Ответ
Мониторинг в распределённой системе строится на сборе метрик, логов и трассировок с каждого микросервиса для контроля состояния и быстрого выявления аномалий. Применяется централизованное логирование с помощью систем, таких как ELK Stack или Loki, а для трассировки запросов через сервисы используются инструменты OpenTelemetry или Jaeger. Для оповещений на основе мониторинга метрик применяют Prometheus и Alertmanager. Важно обеспечить корреляцию логов и метрик по общим идентификаторам запросов для эффективной диагностики и локализации проблем.
#lexicon #собеседование #java #middle #backend #arch
❓ Вопрос
Какие есть стратегии маршрутизации сообщений в 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%
Одинаково сложно