Java задачи с собеседований
6.11K subscribers
731 photos
7 videos
19 files
275 links
Задачи, тесты и теоретические вопросы по JAVA.

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
⚙️ StackWalker.walk()

Метод StackWalker.walk() позволяет динамически получать информацию о текущем стеке вызовов, фильтровать его и анализировать. Это полезно для логирования, отладки и мониторинга исполнения кода.

👩‍💻

@javaquiz
⚙️ java.util.Timer()

Метод java.util.Timer() позволяет создавать таймеры, которые выполняют определенные задачи через заданные интервалы времени. Это полезно для планирования и отложенного выполнения задач без блокировки основного потока.

👩‍💻

@javaquiz
👍2
Вопрос на собеседовании

Что такое ThreadLocal в Java, и зачем он нужен?

Ответ ⬇️
ThreadLocal — это механизм, который позволяет каждому потоку хранить своё собственное значение переменной, изолированное от других потоков. Это полезно для управления состоянием в многопоточных приложениях, например, при хранении информации о текущем пользователе в веб-приложениях.

Пример использования ⚙️
public class ThreadLocalExample {
private static final ThreadLocal threadLocal = ThreadLocal.withInitial(() -> 0);

public static void main(String[] args) {
Runnable task = () -> {
threadLocal.set((int) (Math.random() * 100));
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
};

new Thread(task).start();
new Thread(task).start();
}
}

👩‍💻

@javaquiz
👍4
🚫 Антипаттерн недели: Использование null вместо Optional

В Java часто используют null для обозначения отсутствия значения, но это может привести к NullPointerException и усложнить код.

✔️ Используйте Optional, чтобы избежать null и сделать код безопаснее.

🗣 Почему это важно?

🟢Optional явно показывает, что значение может отсутствовать.
🟢Избегает null-проверок и улучшает читаемость кода.
🟢Позволяет удобно работать с цепочками вызовов (map(), orElse()).

👩‍💻

@javaquiz
👎3
⚙️ Locale.getDefault()

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

👩‍💻

@javaquiz
👍2
⚙️ Thread.getState()

Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.

👩‍💻

@javaquiz
👍2
⚙️ ProcessHandle.isAlive()

ProcessHandle.isAlive() позволяет проверить, запущен ли процесс в данный момент. Это полезно при мониторинге фоновых процессов и управлении системными ресурсами.

👩‍💻

@javaquiz
⚙️ JLine TerminalBuilder.build (TerminalBuilder.build)()

TerminalBuilder.build() из библиотеки JLine позволяет создавать интерактивные терминалы с поддержкой ANSI-цветов, автодополнения и управления вводом. Это полезно для создания CLI-приложений с удобным интерфейсом.

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

👩‍💻

@javaquiz
⚙️ AnsiConsole.out.println()

AnsiConsole.out.println() из библиотеки Jansi позволяет выводить цветной текст в консоль, упрощая создание стилизованных CLI-приложений с поддержкой ANSI-escape последовательностей.

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

👩‍💻

@javaquiz
👍1
⚙️ Optional.orElseThrow()

Optional.orElseThrow() — это метод, который выбрасывает исключение, если Optional пуст. В отличие от orElse(), он не требует значения по умолчанию, а вместо orElseGet() не создаёт ненужные объекты.

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

👩‍💻

@javaquiz
⚙️ MethodHandles.lookup().findVirtual()

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
👍1
⚙️ VarHandle.compareAndExchange()

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

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

👩‍💻

@javaquiz
⚙️ FileDescriptor.sync()

FileDescriptor.sync() в Java позволяет принудительно записать все несохранённые данные из буфера операционной системы на диск. Это полезно для обеспечения целостности данных в случае сбоя или отключения питания.

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

👩‍💻

@javaquiz
⚙️ ProcessBuilder.redirectOutput()

ProcessBuilder.redirectOutput() позволяет перенаправлять стандартный вывод (stdout) запускаемого процесса в файл или в другой поток. Это полезно при работе с внешними процессами и логированием их вывода.

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

👩‍💻

@javaquiz
👍1
⚙️ Micronaut

Micronaut — это лёгкий фреймворк для микросервисов, который быстро стартует, потребляет мало памяти и поддерживает компиляцию в нативные образы через GraalVM.

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

👩‍💻

@javaquiz
⚙️ InetAddress.getByAddress()

InetAddress.getByAddress() позволяет создать IP-адрес вручную из массива байтов, без необходимости использования DNS-резолвера. Это полезно для работы с сетевыми протоколами и тестирования.

👩‍💻

@javaquiz
Кризис в диджитал

Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.

Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.

Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.

В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»

🔴 Там 30 файлов, которые помогают выстроить управление, аналитику и внутренние процессы:

– Мотивация сотрудников в IT,

– Контроль сроков диджитал-проекта,

– Шаблон CSI,

– Фреймворк для проведения исследований через ИИ,

– Как создать продающее КП.

📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy

А чтобы добавить немного азарта — среди подписавшихся разыграют:

🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.

Как участвовать:

1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте

🗓 Итоги — 25 ноября.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🎉1