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

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
🙌🙌🙌🙌 30 документов для тех, кто в диджитал

В преддверии новой активности мы собрали в одну папку 30 Telegram-каналов известных профессионалов и попросили их авторов подготовить для вас документы, которые помогут:

🔴Провести исследование через ИИ;
🔴Сдавать работы и получать акт день в день;
🔴Контролировать сроки и качества проектов;
🔴Отслеживать упоминания бренда в нейропоиске;
🔴Провести аудит HR-процессов;
🔴и еще много много всего!

❗️ Сохранив единожды папку «Документы для тех, кто в диджитал», вы сможете спокойно пройтись по всем каналам и скачать множество авторских документов, которые точно пригодятся в работе.

Также они проводят розыгрыш с топовыми призами:
🥇Главный приз — MacBook Air (M2)
🥈2 место: Яндекс Станция Лайт 2
🥉3 место: Наушники HUAWEI Freebuds 5i

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

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

До встречи 25 сентября — дата объявления победителя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🎉4👍2
Apache POI

Apache POI – это библиотека с открытым исходным кодом для работы с форматами файлов Microsoft Office в Java.

Она позволяет читать, создавать и редактировать файлы Excel, Word, PowerPoint и другие.

👩‍💻

@javaquiz
👍5🔥1
🤔 Как это работает? — Java: Цикл for-each

В Java цикл for-each (или enhanced for loop) упрощает итерацию по коллекциям и массивам. Давайте посмотрим, как он работает.

➡️ Как это работает:

• numbers — это массив целых чисел.
• В строке for (int number : numbers) переменная number последовательно принимает значения из массива numbers.
• На каждой итерации выводится текущее значение number.

Развернутый аналог:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}

1
2
3
4
5

👩‍💻

@javaquiz
Антипаттерн недели: Забытая блокировка в многопоточном коде

Если использовать блокировки (synchronized) и забыть их освободить в случае исключения, можно легко привести к deadlock (взаимоблокировке).

Если во время выполнения блока synchronized возникает исключение, блокировка остаётся захваченной, что может заблокировать другие потоки навсегда.

✔️ Как исправить:

Используйте try-finally для гарантированного освобождения блокировки:
public class FixedExample {
private final Object lock = new Object();

public void performTask() {
synchronized (lock) {
try {
System.out.println("Задача выполняется...");
if (true) {
throw new RuntimeException("Ошибка!");
}
System.out.println("Задача завершена.");
} finally {
System.out.println("Блокировка освобождена.");
}
}
}

public static void main(String[] args) {
FixedExample example = new FixedExample();
example.performTask();
}
}

👩‍💻

@javaquiz
👎4👍2
⚙️ ThreadLocal

В Java класс ThreadLocal позволяет хранить переменные, привязанные к конкретному потоку. Каждый поток имеет свою копию переменной, что удобно для работы с многопоточностью, когда нужно избежать совместного доступа к данным.

👩‍💻

@javaquiz
👍3
⚙️ Stream.flatMap()

В Java метод Stream.flatMap() используется для преобразования каждого элемента потока в другой поток и «выпрямления» (объединения) этих потоков в один. Это полезно для работы со вложенными структурами данных, такими как списки списков.

👩‍💻

@javaquiz
👍5
⚙️ Class.getDeclaredMethods()

Метод Class.getDeclaredMethods() позволяет получить массив всех методов класса, включая приватные, защищённые и публичные методы. Это полезно для рефлексии и анализа структуры классов во время выполнения программы.

👩‍💻

@javaquiz
👍1
⚙️ String.intern()

Метод String.intern() в Java возвращает каноническое представление строки из пула строк (string pool). Если строка уже есть в пуле, возвращается ссылка на неё. Это позволяет экономить память и ускорять сравнение строк.

👩‍💻

@javaquiz
👍2
⚙️ Устранение автобоксинга

Автобоксинг (преобразование примитивов в объекты) в Java приводит к накладным расходам в циклах. Для массивов чисел вместо коллекций, таких как ArrayList, используйте примитивные массивы.

Проблема: Использование Integer приводит к накладным расходам на упаковку и распаковку значений.

✔️ Решение: Используйте массивы примитивов (int[]) вместо коллекций объектов.

👩‍💻

@javaquiz
👍2👎2
⚙️ Class.forName()

Метод Class.forName() в Java используется для загрузки класса по его имени во время выполнения. Это полезно для рефлексии и динамической работы с классами, которые неизвестны на этапе компиляции.

👩‍💻

@javaquiz
👍4
⚙️ MethodHandles.publicLookup()

Метод MethodHandles.publicLookup() в Java предоставляет доступ к публичным методам и полям класса с использованием MethodHandle. Это мощный инструмент для выполнения операций рефлексии с высокой производительностью.

👩‍💻

@javaquiz
👍1
FXGL

FXGL (FX Game Library) — это библиотека для разработки игр на Java, основанная на JavaFX 8. Она обеспечивает простой и удобный интерфейс для создания 2D-игр, а также включает в себя множество функций, необходимых для создания полноценных игр.

👩‍💻

@javaquiz
🤔 Как это работает? — Паттерн Singleton в Java

Singleton — это паттерн проектирования, который гарантирует, что у класса есть только один экземпляр. Он часто используется для управления ресурсами, такими как подключения к базе данных. Давайте разберём реализацию.

➡️ Как это работает:

• Поле instance хранит единственный экземпляр класса.
• Конструктор private, чтобы предотвратить создание новых экземпляров.
• Метод getInstance() создаёт экземпляр только при первом вызове (ленивая инициализация).

Развернутый аналог:
// Экземпляр можно также создавать сразу, а не лениво:
private static final Singleton instance = new Singleton();

👩‍💻

@javaquiz
👍1
⚙️ MethodHandles.insertArguments()

Метод MethodHandles.insertArguments() в Java позволяет создавать новый MethodHandle, в котором заранее фиксируются значения для некоторых аргументов метода. Это полезно для частичного применения аргументов к методам и упрощения их вызова.

👩‍💻

@javaquiz
⚙️ MethodHandles.arrayElementGetter()

Метод MethodHandles.arrayElementGetter() позволяет создать MethodHandle, который получает элементы из массива. Это полезно для работы с массивами через рефлексию.

👩‍💻

@javaquiz
👍1
⚙️ Files.copy()

Метод Files.copy() позволяет копировать содержимое файлов или потоков данных.

👩‍💻

@javaquiz
👍3