Библиотека собеса по Java | вопросы с собеседований
6.39K subscribers
359 photos
4 videos
204 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Гарантирует ли ConcurrentHashMap видимость между потоками? Нужно ли дополнительно синхронизировать put() и get() для корректной работы?

ConcurrentHashMap уже обеспечивает необходимую памятную видимость (happens-before) между put() и get() — дополнительная синхронизация не нужна.

Если put() завершился до начала get(), то get() обязательно увидит вставленное значение. Это гарантируется внутренней реализацией: через volatile поля, CAS-операции и memory barriers.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Гарантирует ли ExecutorService корректное завершение всех задач, если вызвать shutdown()?

Нет, вызов shutdown() не гарантирует завершение всех задач. Это только инициирует процесс корректного завершения, но не блокирует выполнение текущих задач. После вызова shutdown():

— Уже выполняющиеся задачи продолжат работать.
— Новые задачи приниматься не будут.

Чтобы убедиться, что все задачи завершены, нужно дополнительно использовать метод awaitTermination(). Он блокирует выполнение потока до тех пор, пока все задачи не завершатся или пока не истечет тайм-аут.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое денормализация?

Денормализация — это процесс преднамеренного введения избыточных данных в базу данных для улучшения производительности.

Денормализация используется, чтобы ускорить запросы, например, за счет хранения вычисляемых данных или комбинированных значений в одной таблице. Это может привести к улучшению времени отклика для чтения данных, но также увеличивает сложность при их обновлении, поскольку изменения нужно синхронизировать в нескольких местах.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
☕️ Java-челлендж: 10 вопросов, которые заставят мозг кипеть

Уверены, что знаете Java на отлично? Проверьте себя на этих 10 каверзных вопросах, которые могут встретиться на собеседовании или просто сломать код.

Пройдите тест и узнайте, насколько знаете тонкости языка.

🔗 Пройти тест
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое сериализация?

Это процесс преобразования объекта в последовательность байтов, которая может быть сохранена в файл или передана по сети. Это нужно для того, чтобы объекты можно было сохранять (например, в базах данных или на диске) и восстанавливать позже (процесс десериализации).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔📝 Псевдокод: когда преподы не шарят, а ты в тупике

Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.

Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает аннотация @PostConstruct?

Аннотация @PostConstruct используется для пометки метода, который должен быть выполнен сразу после того, как контейнер внедрит все зависимости в объект. Этот метод вызывается только один раз, перед тем как объект будет готов к использованию, и часто используется для выполнения начальной настройки или валидации после инъекций.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Как и где Spring ищет бины?

Spring ищет бины с помощью сканирования классов в указанных пакетах, используя аннотации (@Component, @Service, @Repository, @Controller и кастомные с @Component внутри).

Сканирование начинается с пакета, переданного в @ComponentScan или (по умолчанию) из того, где находится @SpringBootApplication (которая включает @ComponentScan).

Если бин не помечен аннотацией, его можно зарегистрировать вручную через @Bean в @Configuration-классе, BeanDefinitionRegistry или XML-конфиг.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Как бы вы оптимизировали запрос с JOIN?

Создание индексы на колонках, которые используются для соединений. Это ускорит поиск строк, особенно если соединяемые таблицы большие.

Если возможно, уменьшить размер данных, участвующих в соединении. Для этого можно использовать подзапросы или фильтровать данные до соединения.

Использование правильного типа JOIN.

EXPLAIN для анализа выполнения запроса и выявления узких мест. Это покажет, как именно СУБД обрабатывает запрос и на каких этапах происходят замедления.

Если запросы с JOIN используются часто, создать материализованные представления для хранения результатов, что снизит нагрузку на базу данных при повторных обращениях.

Рассмотреть варианты изменения структуры БД (например, денормализация).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между дизайном и архитектурой ПО?

Архитектура — это высокоуровневая структура системы: какие модули есть, как они взаимодействуют, какие технологии используются.

Дизайн — это низкоуровневая детализация внутри этих модулей: какие классы, как устроены их зависимости, шаблоны проектирования (design patterns), структура методов и данных.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Обратная связь

Ежемесячный опрос по грейдам. Проверим, помог ли контент кому-то повысить уровень.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM