Lexicon | Java вопросы
🧠 Обработка исключений в CompletableFuture
📘 Разбор опроса
🧩 Обработка исключений в CompletableFuture
❓ Вопрос: Какой метод возвращает новый CompletableFuture при исключении?
✅ Правильный ответ: exceptionally()
💡 Почему: exceptionally() создаёт новый CompletableFuture, применяя функцию к исключению и возвращая её результат. handle() и whenComplete() не создают новый CompletableFuture с изменённым результатом.
⚠️ Где ошибаются: Спутать handle() и exceptionally(): handle() обрабатывает и успех, и ошибку, но не гарантирует новый CompletableFuture с результатом только от исключения.
🛠 На практике:
📚 4000+ вопросов для подготовки к IT-собеседованиям
🧩 Обработка исключений в CompletableFuture
❓ Вопрос: Какой метод возвращает новый CompletableFuture при исключении?
✅ Правильный ответ: exceptionally()
💡 Почему: exceptionally() создаёт новый CompletableFuture, применяя функцию к исключению и возвращая её результат. handle() и whenComplete() не создают новый CompletableFuture с изменённым результатом.
⚠️ Где ошибаются: Спутать handle() и exceptionally(): handle() обрабатывает и успех, и ошибку, но не гарантирует новый CompletableFuture с результатом только от исключения.
🛠 На практике:
CompletableFuture.supplyAsync(() -> throw new RuntimeException()).exceptionally(ex -> "fallback")📚 4000+ вопросов для подготовки к IT-собеседованиям
❓ Вопрос
Как вы находите и устраняете утечки памяти, которые могут приводить к увеличению пауз GC в продакшн-среде? Расскажите о вашем процессе и инструментах.
✅ Ответ
Для выявления утечек памяти применяется профилирование heap с помощью инструментов, таких как VisualVM, JProfiler или Java Flight Recorder, чтобы определить объекты, которые долго живут и не освобождаются. Анализируются дампы памяти и GC-логи для выявления увеличения памяти и пауз. После обнаружения подозрительных областей выполняется код-ревью и оптимизация цикла жизни объектов, например, устранение статических ссылок или кешей без ограничений. Важной частью процесса является тестирование изменений на нагрузочной среде с повторным профилированием для подтверждения решения проблемы.
#lexicon #собеседование #java #senior #backend
📚 4000+ вопросов для подготовки к IT-собеседованиям
Как вы находите и устраняете утечки памяти, которые могут приводить к увеличению пауз GC в продакшн-среде? Расскажите о вашем процессе и инструментах.
✅ Ответ
#lexicon #собеседование #java #senior #backend
📚 4000+ вопросов для подготовки к IT-собеседованиям
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #middle #backend
🧠 Документирование REST API: ключевой элемент контракта
Anonymous Quiz
100%
OpenAPI (Swagger)
0%
GraphQL Schema
0%
Postman Collections
Lexicon | Java вопросы
🧠 Документирование REST API: ключевой элемент контракта
📘 Разбор опроса
🧩 Стандарт документирования REST API
❓ Вопрос: Какой стандарт формализует описание REST API для фронтенда?
✅ Правильный ответ: OpenAPI (Swagger)
💡 Почему: OpenAPI — это спецификация для описания REST API, которая определяет структуру эндпоинтов, методов, параметров и ответов в формате YAML или JSON. Она обеспечивает однозначное понимание контракта между бэкендом и фронтенд...
⚠️ Где ошибаются: Путать OpenAPI с GraphQL Schema, который используется для GraphQL API, а не для REST.
🛠 На практике:
📚 4000+ вопросов для подготовки к IT-собеседованиям
🧩 Стандарт документирования REST API
❓ Вопрос: Какой стандарт формализует описание REST API для фронтенда?
✅ Правильный ответ: OpenAPI (Swagger)
💡 Почему: OpenAPI — это спецификация для описания REST API, которая определяет структуру эндпоинтов, методов, параметров и ответов в формате YAML или JSON. Она обеспечивает однозначное понимание контракта между бэкендом и фронтенд...
⚠️ Где ошибаются: Путать OpenAPI с GraphQL Schema, который используется для GraphQL API, а не для REST.
🛠 На практике:
Используйте OpenAPI для генерации документации и клиентских SDK.📚 4000+ вопросов для подготовки к IT-собеседованиям
❓ Вопрос
В каких случаях стоит использовать eager загрузку, а когда lazy? Приведите примеры из реальных приложений, где каждый подход оправдан.
✅ Ответ
Eager загрузка используется, когда связанные данные необходимы немедленно и их объем небольшой, что снижает количество запросов к базе и повышает производительность. Lazy загрузка применяется, если связанные объекты используются не всегда или редко, позволяя экономить ресурсы за счет отложенного извлечения данных. В реальных приложениях eager загрузка оправдана, например, при загрузке профиля пользователя с базовой информацией, а lazy — при получении подробных данных о заказах, которые не всегда требуются.
#lexicon #собеседование #java #middle #backend
📚 4000+ вопросов для подготовки к IT-собеседованиям
В каких случаях стоит использовать eager загрузку, а когда lazy? Приведите примеры из реальных приложений, где каждый подход оправдан.
✅ Ответ
#lexicon #собеседование #java #middle #backend
📚 4000+ вопросов для подготовки к IT-собеседованиям
Lexicon | Java вопросы
#quiz #lexicon #собеседование #java #senior #backend
🧠 Атомарные операции в Java: выбор класса
Anonymous Quiz
0%
AtomicInteger
100%
AtomicReference
0%
AtomicLong
Lexicon | Java вопросы
🧠 Атомарные операции в Java: выбор класса
📘 Разбор опроса
🧩 Выбор атомарного класса для ссылок
❓ Вопрос: Какой класс использовать для атомарного обновления ссылки на объект?
✅ Правильный ответ: AtomicReference
💡 Почему: AtomicReference обеспечивает атомарность операций compareAndSet() и get() для ссылок на объекты. AtomicInteger/Long работают только с примитивными типами.
⚠️ Где ошибаются: Использовать AtomicInteger для объектов, думая, что он работает с любыми значениями.
🛠 На практике:
📚 4000+ вопросов для подготовки к IT-собеседованиям
🧩 Выбор атомарного класса для ссылок
❓ Вопрос: Какой класс использовать для атомарного обновления ссылки на объект?
✅ Правильный ответ: AtomicReference
💡 Почему: AtomicReference обеспечивает атомарность операций compareAndSet() и get() для ссылок на объекты. AtomicInteger/Long работают только с примитивными типами.
⚠️ Где ошибаются: Использовать AtomicInteger для объектов, думая, что он работает с любыми значениями.
🛠 На практике:
AtomicReference<String> ref = new AtomicReference<>("initial");📚 4000+ вопросов для подготовки к IT-собеседованиям