Как Java решает, из какого Jar\-файла загрузить класс, если их несколько с одинаковым именем?
В каком порядке работают стандартные загрузчики классов?
В каком порядке работают стандартные загрузчики классов?
Anonymous Quiz
42%
System -> Extension -> Bootstrap
38%
Bootstrap -> Extension -> System
10%
Сначала ищет тот, кто ближе к папке проекта.
10%
Все одновременно, кто быстрее нашел — тот и молодец.
👍2🔥2
🔍 Ответ на задачу про ClassLoader: Кто главный? 🗂
В Java используется "модель делегирования" (Parent Delegation Model). Когда нужно загрузить класс, загрузчик сначала спрашивает своего "родителя".
1. Bootstrap (загружает классы ядра JDK).
2. Extension (классы расширений).
3. System/Application (ваш classpath).
Только если родитель не нашел класс, текущий загрузчик пытается найти его сам.
Вывод:
Порядок: Bootstrap -> Extension -> System. Это защищает систему от подмены базовых классов (например, вы не сможете подсунуть свою версию
⚡️ Не перепутайте:
Некоторые фреймворки (например, веб-серверы типа Tomcat) специально нарушают эту модель, чтобы разные приложения могли использовать разные версии одних и тех же библиотек.
#java #jvm #classloader #internals #интервью #java_interview_tasks
В Java используется "модель делегирования" (Parent Delegation Model). Когда нужно загрузить класс, загрузчик сначала спрашивает своего "родителя".
1. Bootstrap (загружает классы ядра JDK).
2. Extension (классы расширений).
3. System/Application (ваш classpath).
Только если родитель не нашел класс, текущий загрузчик пытается найти его сам.
Вывод:
Порядок: Bootstrap -> Extension -> System. Это защищает систему от подмены базовых классов (например, вы не сможете подсунуть свою версию
java.lang.String).⚡️ Не перепутайте:
Некоторые фреймворки (например, веб-серверы типа Tomcat) специально нарушают эту модель, чтобы разные приложения могли использовать разные версии одних и тех же библиотек.
#java #jvm #classloader #internals #интервью #java_interview_tasks
✍5
В чём разница между обычным сдвигом и беззнаковым?
Что выведет этот код?
Что выведет этот код?
Anonymous Quiz
1%
-1, -1
72%
-1, 2147483647
9%
1, 1
18%
-1, 1
🔥3
В чём разница между обычным сдвигом и беззнаковым?
Что выведет этот код?
Что выведет этот код?
int x = -2;
System.out.println(x >> 1);
System.out.println(x >>> 1);
❤3❤🔥1👍1
🔍 Ответ на задачу про битовые сдвиги: >>> против >> 🔢
-
-
Вывод:
⚡️ Не перепутайте:
Для положительных чисел разницы между
#java #bitwise #math #basics #интервью #java_interview_tasks
-
>> (Signed shift) — сохраняет знак. При сдвиге вправо пустые места слева заполняются значением знакового бита (для отрицательных чисел — единицами).-
>>> (Unsigned shift) — игнорирует знак. Пустые места слева всегда заполняются нулями. Отрицательное число при таком сдвиге превращается в огромное положительное.Вывод:
-2 >> 1 даст -1. А -2 >>> 1 даст 2147483647 (максимальный int).⚡️ Не перепутайте:
Для положительных чисел разницы между
>> и >>> нет.#java #bitwise #math #basics #интервью #java_interview_tasks
👍5❤🔥1🔥1
Почему Java использует разные алгоритмы сортировки для чисел и для объектов?
Гарантирует ли `Arrays.sort()` сохранение порядка равных элементов?
Гарантирует ли `Arrays.sort()` сохранение порядка равных элементов?
Anonymous Quiz
16%
Да, всегда.
15%
Только для объектов (T[]).
48%
Только для примитивов (int[]).
21%
Нет, никогда.
🔥4
🔍 Ответ на задачу про Arrays.sort: Стабильность и Примитивы 🧬
- Сортировка объектов в Java стабильна (используется TimSort). Если два объекта равны, их относительный порядок не изменится. Это важно для пользователей.
- Сортировка примитивов нестабильна (используется Dual-Pivot Quicksort). Для чисел
Вывод:
Стабильность гарантируется только для объектов.
⚡️ Не перепутайте:
Если вы переопределяете
#java #algorithms #sorting #performance #интервью #java_interview_tasks
- Сортировка объектов в Java стабильна (используется TimSort). Если два объекта равны, их относительный порядок не изменится. Это важно для пользователей.
- Сортировка примитивов нестабильна (используется Dual-Pivot Quicksort). Для чисел
5 и 5 порядок не имеет значения, зато Quicksort работает быстрее и потребляет меньше памяти.Вывод:
Стабильность гарантируется только для объектов.
⚡️ Не перепутайте:
Если вы переопределяете
Comparator, убедитесь, что он корректно обрабатывает равенство (возвращает 0), иначе даже стабильная сортировка может выдать странный результат.#java #algorithms #sorting #performance #интервью #java_interview_tasks
🤨4✍1👍1🔥1
Почему один "тяжелый" параллельный стрим может затормозить всё приложение?
Какой пул потоков используют параллельные стримы по умолчанию?
Какой пул потоков используют параллельные стримы по умолчанию?
Anonymous Quiz
2%
Для каждого стрима создается свой новый пул.
83%
Используется общий `ForkJoinPool.commonPool()`.
5%
Используется фиксированный пул из 10 потоков.
10%
Стримы работают на тех же потоках, что и веб-сервер.
👍2
🔍 Ответ на задачу про Parallel Stream: Общий котел 🥘
Все параллельные стримы в рамках одной JVM по умолчанию используют один и тот же статический пул —
Вывод:
Используется общий пул. Для тяжелых задач лучше запускать стрим внутри своего собственного
⚡️ Не перепутайте:
Параллельные стримы хороши для CPU-intensive задач, но могут быть опасны для I/O операций.
#java #streamapi #concurrency #performance #интервью #java_interview_tasks
Все параллельные стримы в рамках одной JVM по умолчанию используют один и тот же статический пул —
ForkJoinPool.commonPool(). Количество потоков в нем обычно равно количеству ядер процессора минус один. Если одна задача полностью займет этот пул (например, тяжелыми вычислениями), все остальные параллельные стримы в приложении будут стоять в очереди.Вывод:
Используется общий пул. Для тяжелых задач лучше запускать стрим внутри своего собственного
ForkJoinPool.⚡️ Не перепутайте:
Параллельные стримы хороши для CPU-intensive задач, но могут быть опасны для I/O операций.
#java #streamapi #concurrency #performance #интервью #java_interview_tasks
👍4❤2🔥1
Как изменить тип значений в результирующей мапе при группировке?
Нам нужно сгруппировать строки по длине, но в значениях хранить не сами строки, а их количество\. Какой метод поможет?
Нам нужно сгруппировать строки по длине, но в значениях хранить не сами строки, а их количество\. Какой метод поможет?
Anonymous Quiz
56%
Collectors.counting()
13%
Collectors.toList()
4%
Collectors.toSet()
27%
Collectors.summingInt(s -> 1)
👍2
Как изменить тип значений в результирующей мапе при группировке?
Нам нужно сгруппировать строки по длине, но в значениях хранить не сами строки, а их количество. Какой метод поможет?
Нам нужно сгруппировать строки по длине, но в значениях хранить не сами строки, а их количество. Какой метод поможет?
list.stream().collect(Collectors.groupingBy(
String::length,
/* что написать здесь? */
));
🔥2