На странице собраны вопросы по Java — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, database, optimization.
Как устранить проблемы "волшебных чисел"? область разработки и качество кода "волшебные числа" — необъяснимые статические константы, напрямую записанные в коде усложняют чтение и сопровождение программы создают риск…
Как устроен CountDownLatch? синхронизатор из Java concurrency создаётся с начальным счётчиком метод await() приостанавливает поток, пока счётчик не станет равен 0 метод countDown() уменьшает значение счётчика на 1…
Spring DI — механизм внедрения зависимостей, работающий внутри IoC-контейнера Управлением объектами занимаются Bean Factory и ApplicationContext Компоненты автоматически создаются и связываются по типу или аннотациям…
Как устроен HashMap? За счёт чего достигается константный поиск структура данных формата ключ → значение (хеш-таблица) для ключа вычисляется хеш-код (число) по хеш-коду быстро определяется индекс бакета в бакете…
Как устроен UI-поток с Looper и Handler и зачем нужен main.immediate? В Android UI-поток является главным потоком, в котором работает Looper Looper последовательно обрабатывает очередь сообщений (MessageQueue) С…
Жизненный цикл Spring Beans Spring Bean — объект, жизненным циклом которого управляет Spring-контейнер этап 1: создание экземпляра с помощью конструктора или фабрики этап 2: внедрение зависимостей (DI через…
Автоматически освобождает память, выделенную JVM Находит объекты, на которые больше нет ссылок и которые стали недостижимыми Организует кучу по поколениям: Young, Old и Permanent (метаданные) Базовый подход:…
Как работает CAS внутри Atomic-классов CAS — это низкоуровневый механизм атомарного обновления значения в памяти Он сопоставляет текущее значение с ожидаемым (compare) При совпадении значение заменяется новым (swap)…
Как работает многопоточность в Java? Java обеспечивает параллельное выполнение с помощью потоков (Threads) Поток — отдельный исполняемый поток команд в рамках процесса Для создания потоков применяют классы Thread и…
Как устроены wait() и notify() и где их разрешено вызывать? средства синхронизации в Java, основанные на объектном мониторе wait() — освобождает монитор и переводит поток в режим ожидания notify() — будит один поток,…
Как устроены миграции БД? Практика реализации миграций Позволяют управлять изменениями схемы БД во времени Фиксируют последовательность изменений DDL Миграции представляют собой версионируемые скрипты для создания,…
Как устроены некластеризованные индексы? База данных использует индекс для поиска записей в таблице Индекс представляет собой самостоятельную структуру, например B-дерево В нём хранятся ключи и ссылки на строки данных…