Java задачи с собеседований
6.27K subscribers
588 photos
6 videos
19 files
245 links
Задачи, тесты и теоретические вопросы по JAVA.

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
👀 Ограничение использования памяти с помощью -Xmx

В Java есть возможность установить лимит на объём памяти, который будет доступен JVM, чтобы предотвратить избыточное потребление ресурсов и возможные утечки памяти.

✔️ Использование флага -Xmx при запуске позволяет определить максимальный размер кучи (heap size) для Java-программы.

✔️ Также существует возможность установить лимит программно с помощью Runtime.getRuntime().maxMemory().

👩‍💻
@javaquiz
👀 Отслеживание использования памяти с помощью MemoryMXBean

В Java есть возможность контролировать текущее потребление памяти в JVM с помощью MemoryMXBean. Это важно для выявления утечек памяти и анализа работы сборщика мусора.

✔️ С помощью ManagementFactory.getMemoryMXBean() можно получить данные о потреблении памяти в режиме реального времени.

👩‍💻
@javaquiz
⚙️ Thread.sleep(Duration)

Thread.sleep(Duration) (Java 9+) дает возможность приостанавливать выполнение потока на определенное время, используя Duration, что делает код более понятным и удобным.

👩‍💻
@javaquiz
⚙️ Integer.numberOfTrailingZeros()

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

👩‍💻
@javaquiz
⚙️ Cleaner.register()

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

👩‍💻
@javaquiz
⚙️ Long.divideUnsigned()

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

👩‍💻
@javaquiz
⚙️ ProcessHandle.parent()

Метод ProcessHandle.parent() позволяет узнать родительский процесс для текущего процесса. Это может быть полезно для отслеживания запущенных процессов и управления зависимыми процессами.

👩‍💻
@javaquiz
⚙️ VarHandle.compareAndSet

VarHandle.compareAndSet() предоставляет возможность безопасно менять значения переменной в среде с несколькими потоками, проверяя текущее значение перед его обновлением. Это особенно полезно для алгоритмов без использования блокировок.

👩‍💻
@javaquiz
⚙️ ClassLoader.getDefinedPackages()

ClassLoader.getDefinedPackages() (Java 9+) позволяет получить перечень всех пакетов, которые были загружены текущим загрузчиком классов. Это удобно для анализа модулей, изоляции зависимостей и динамической загрузки.

👩‍💻
@javaquiz
⚙️ ClassValue.computeValue()

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

👩‍💻
@javaquiz
⚙️ Character.codePointCount()

Character.codePointCount() определяет, сколько кодпоинтов Unicode содержится в строке между двумя заданными индексами. Это особенно полезно при обработке текста, содержащего символы, выходящие за пределы Основной многоязычной плоскости (например, эмодзи или редкие иероглифы), так как такие символы занимают два char в UTF-16.

👩‍💻
@javaquiz
⚙️ Метод ThreadGroup.enumerate() позволяет получить перечень всех потоков в определенной группе. Это может быть полезно для мониторинга, отладки и управления связанными потоками.

👩‍💻
@javaquiz
⚙️ Class.getEnclosingMethod() возвращает метод, в котором определён локальный или анонимный класс. Это может быть полезно для анализа структуры кода во время выполнения, например, при логировании или рефлексии.

👩‍💻
@javaquiz
⚙️ Character.getType()

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

👩‍💻
@javaquiz
⚙️ System.mapLibraryName()

System.mapLibraryName() конвертирует логическое имя нативной библиотеки в зависимое от платформы. Это полезно при динамической загрузке .dll, .so или .dylib файлов в кроссплатформенных Java-приложениях.

👩‍💻
@javaquiz
⚙️ Class.getCanonicalName()

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

👩‍💻
@javaquiz
⚙️ Метод Thread.getUncaughtExceptionHandler() позволяет получить или установить обработчик для необработанных исключений, возникающих в потоке. Это удобно для ведения журнала ошибок, обработки аварийных завершений или восстановления без необходимости использовать блоки try-catch в каждом потоке.

👩‍💻
@javaquiz