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

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
⚙️ StackWalker.getInstance() позволяет извлекать данные о стеке вызовов в процессе работы программы, что облегчает отладку и ведение логов. 👩‍💻
@javaquiz
⚙️ Locale.getDefault()

Locale.getDefault() дает возможность узнать текущую локаль системы, что полезно при форматировании дат, чисел и текста.

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

👩‍💻
@javaquiz
⚙️ ProcessHandle.isAlive() позволяет узнать, активен ли процесс в данный момент. Это полезно для отслеживания фоновых процессов и управления ресурсами системы.

👩‍💻
@javaquiz
ScopedValue.where() позволяет безопасно передавать контекстные данные в пределах потока, предотвращая утечки памяти и проблемы, связанные с использованием ThreadLocal. Данные доступны только в пределах определенного блока кода.

👩‍💻
@javaquiz
⚙️ TerminalBuilder.build() из библиотеки JLine позволяет создавать интерактивные терминалы, которые поддерживают ANSI-цвета, автодополнение и управление вводом. Это очень удобно для разработки CLI-приложений с комфортным интерфейсом.

🔗 Документация (https://jline.github.io/)

👩‍💻
@javaquiz
🚫 Антипаттерн недели: Неиспользование конструкции try-with-resources при работе с ресурсами

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

✔️ Применяйте конструкцию try-with-resources, чтобы автоматически закрывать ресурсы.

👩‍💻
@javaquiz
AnsiConsole.out.println() из библиотеки Jansi дает возможность выводить текст в цвете в консоль, что облегчает создание стилизованных CLI-приложений с поддержкой ANSI-escape последовательностей.

Документация доступна по ссылке: https://fusesource.github.io/jansi

👩‍💻
@javaquiz
⚙️ Lombok @SuperBuilder

@SuperBuilder из библиотеки Lombok облегчает процесс создания объектов, используя паттерн "Builder", и поддерживает наследование. Это позволяет избежать написания излишнего кода при создании сложных иерархий классов.

🔗 Документация

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

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#stripIndent())

👩‍💻
@javaquiz
⚙️ CompletableFuture.delayedExecutor()

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

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html#delayedExecutor(long,java.util.concurrent.TimeUnit))

👩‍💻
@javaquiz
⚙️ CompletableFuture.delayedExecutor()

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

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html#delayedExecutor(long,java.util.concurrent.TimeUnit))

👩‍💻
@javaquiz
⚙️ Метод Optional.orElseThrow() используется для генерации исключения в случае, если Optional является пустым. В отличие от orElse(), он не требует указания значения по умолчанию, а в отличие от orElseGet() не создает лишние объекты.

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html#orElseThrow())

👩‍💻
@javaquiz
⚙️ MemorySegment.allocateNative()

MemorySegment.allocateNative() из Java Foreign Function & Memory API (FFM API, начиная с Java 19) предоставляет возможность безопасно управлять нативной памятью без использования Unsafe. Это особенно полезно для приложений с высокой производительностью, которые взаимодействуют с C-библиотеками.

🔗 Документация (https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/foreign/MemorySegment.html)

👩‍💻
@javaquiz
⚙️ Метод MethodHandles.lookup().findVirtual() позволяет динамически находить и вызывать методы классов без использования рефлексии, что обеспечивает лучшую производительность и безопасность. Это особенно полезно для метапрограммирования и динамических вызовов.

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.html#findVirtual(java.lang.Class,java.lang.String,java.lang.invoke.MethodType))

👩‍💻
@javaquiz
🔥 Виртуальная стажировка по Java – это твой шанс войти в мир коммерческой разработки!

🚀 Хочешь научиться создавать работающий код? Тогда этот курс для тебя! На нем ты:
Под руководством опытного наставника разработаешь проект с нуля до его внедрения
Освоишь современные технологии и библиотеки, которые применяются в реальной разработке
Поймешь архитектуру, тестирование, развертывание и интеграцию

🛠️ Какие технологии ты изучишь?

- Spring Boot, Gradle, JPA, Hibernate
- RabbitMQ, Docker, Liquibase
- JUnit, Mockito, Lombok, GitHub
- Шаблоны проектирования, DDD, Чистый код
…и многое другое!

🎯 Основная цель – развить инженерное мышление. Не просто писать код, а решать реальные бизнес-задачи с помощью IT.

📌 В конце ты получишь не только практический опыт в коммерческой разработке, но и готовый проект для своего портфолио.

💬 Есть вопросы? Напиши своему наставнику:
🔹 Telegram: @javagurulv
📩 Email: [email protected]

🖇 Присоединяйся к сообществу!
👉 Телеграм-группа стажировки
👉 Курс на Stepik
@javaquiz
https://yangx.top/+mvRhG9YECTlkZjQ0
⚙️ VarHandle.compareAndExchange()

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

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/invoke/VarHandle.html#compareAndExchange(T,...))

👩‍💻
@javaquiz
⚙️ Метод ProcessBuilder.redirectOutput() позволяет перенаправлять стандартный вывод (stdout) запущенного процесса в файл или другой поток. Это очень полезно при взаимодействии с внешними процессами и для логирования их вывода.

🔗 Документация (https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ProcessBuilder.html#redirectOutput(java.io.File))

👩‍💻
@javaquiz
⚙️ JMH (Java Microbenchmark Harness)

JMH — это эффективная библиотека для создания точных микробенчмарков на Java. Она помогает измерять производительность кода, минимизируя ошибки, возникающие из-за JIT-компиляции и оптимизаций JVM.

🔗 Документация (https://openjdk.org/projects/code-tools/jmh/)

👩‍💻
@javaquiz