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

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

RefactorFirst — это инструмент для Java-кода, помогающий определить и расставить по приоритетам классы, которые следует рефакторить в первую очередь. Он работает, сканируя код на наличие «божественных классов» (God Classes) и классов с высокой степенью связности.

«Божественных классов» — это классы, которые делают слишком много и, следовательно, являются плохо спроектированными. Они могут быть трудными для понимания, тестирования и сопровождения.

👩‍💻

@javaquiz
👍4
Fastjson

Fastjson — это высокопроизводительная библиотека Java, предназначенная для преобразования объектов Java в JSON и наоборот. Она легкая, быстрая и простая в использовании.

👩‍💻

@javaquiz
👍3
⚙️ List.subList()

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

👩‍💻

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

Что такое ForkJoinPool в Java, как он работает, и как его использовать для параллельной обработки задач?

Ответ ⬇️
ForkJoinPool — это специализированный пул потоков, который рекурсивно делит задачи на подзадачи (fork) и объединяет их результаты (join). Он оптимизирован для задач, которые можно разделить на независимые части, например, вычисление суммы элементов массива. Основными классами являются RecursiveTask для задач с результатом и RecursiveAction для задач без результата.

Пример использования ⚙️
import java.util.concurrent.RecursiveTask;
import java.util.concurrent.ForkJoinPool;

class SumTask extends RecursiveTask {
private final int[] array;
private final int start, end;

public SumTask(int[] array, int start, int end) {
this.array = array;
this.start = start;
this.end = end;
}

@Override
protected Integer compute() {
if (end - start

@javaquiz
👎7
Jackson-dataformat-csv

Jackson-dataformat-csv — это библиотека Java, являющаяся модулем расширения популярной библиотеки Jackson для обработки JSON. Она позволяет читать и записывать данные в формате CSV (Comma Separated Values), который широко используется для хранения и обмена табличными данными.

👩‍💻

@javaquiz
👍6
⚙️ Stream.collect() с Collector.of()

В Java метод Collector.of() позволяет создавать пользовательские коллекции с кастомной логикой для сборки данных. Это даёт полный контроль над процессом объединения элементов.

👩‍💻

@javaquiz
👍3
👩‍💻 Задача по Java: Удаление дубликатов из списка с сохранением порядка

Напишите метод, который принимает список строк и возвращает новый список, содержащий только уникальные строки, сохраняя их порядок появления.

Пример:

import java.util.List;

public class Main {
public static void main(String[] args) {
List input = List.of("apple", "banana", "apple", "orange", "banana");
List result = removeDuplicates(input);
System.out.println(result);
// Ожидаемый результат: [apple, banana, orange]
}
}

Решение задачи на картинке ☝️

👩‍💻

@javaquiz
👍7👎2
⚙️ Optional.flatMap()

В Java метод Optional.flatMap() позволяет преобразовать значение внутри Optional, возвращая другой Optional. Это особенно полезно для работы с вложенными Optional.

👩‍💻

@javaquiz
👍4
⚙️ Collectors.toMap()

В Java метод Collectors.toMap() собирает элементы потока в карту (Map), где вы можете указать функции для ключей и значений. Это удобно для преобразования коллекций в структуру ключ-значение.

👩‍💻

@javaquiz
👍3
⚙️ String.replaceAll()

В Java метод String.replaceAll() заменяет все вхождения текста, соответствующего регулярному выражению, на заданную строку. Это мощный инструмент для обработки строк.

👩‍💻

@javaquiz
👍3
👩‍💻 Задача по Java: Подсчёт частоты слов в строке

Напишите метод, который принимает строку и возвращает Map, где ключи — это слова из строки, а значения — количество их вхождений. Игнорируйте регистр и удаляйте знаки препинания.

Пример:

public class Main {
public static void main(String[] args) {
String text = "Hello, world! Hello Java.";
Map result = countWordFrequency(text);
System.out.println(result);
// Ожидаемый результат:
// {hello=2, world=1, java=1}
}
}

Решение задачи на картинке ☝️

👩‍💻

@javaquiz
👍2
⚙️ String.format()

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

👩‍💻

@javaquiz
⚙️ Map.merge()

В Java метод Map.merge() объединяет значение для указанного ключа с новым значением с помощью заданной функции. Это удобно для обновления данных в словаре на основе существующих значений.

👩‍💻

@javaquiz
#вопросы_с_собеседований
Что будет, если в Map положить два значения с одинаковым ключом?

Если в Map положить два значения с одинаковым ключом, то произойдет следующее:

— При добавлении второго значения с уже существующим ключом, первое значение, связанное с этим ключом, будет перезаписано.

— Map может содержать только уникальные ключи. При попытке добавить дублирующийся ключ, старое связанное значение будет заменено новым.

— Конкретная реализация Map (например, HashMap) может бросить исключение, если попытаться добавить дублирующийся ключ.

Таким образом, поведение в такой ситуации зависит от конкретной реализации интерфейса Map, но в целом дублирующиеся ключи в Map запрещены.

👩‍💻

@javaquiz
👍3
⚙️ Collections.unmodifiableList()

В Java метод Collections.unmodifiableList() создаёт неизменяемый (immutable) список на основе существующего. Это удобно, когда нужно защитить коллекцию от изменений после её создания.

👩‍💻

@javaquiz