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

Репозиторий: https://github.com/proghub-official/java-interview
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
uniVocity-parsers

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

👩‍💻

@javaquiz
⚙️ Files.move()

В Java метод Files.move() из пакета java.nio.file используется для переименования или перемещения файла/директории. Он является мощным инструментом для работы с файловой системой.

👩‍💻

@javaquiz
➡️ Использование Chronicle Map для распределенных ключ-значение хранилищ

Chronicle Map — это мощный инструмент для создания распределенных хранилищ "ключ-значение" с высокой производительностью. Поддерживает работу с большими объемами данных в реальном времени и отлично подходит для высоконагруженных систем.

• Поддерживает распределенные хранилища.
• Минимальная задержка, высокая производительность.
• Идеальна для финансовых и IoT-приложений.

🔗 Ссылочка на доку (https://github.com/OpenHFT/Chronicle-Map)

👩‍💻

@javaquiz
👍1
👩‍💻 31 июля стартует курс «Java-разработчик» от OTUS — это то, что нужно, если вы хотите успешно вкатиться в разработку в 2025

🦾 Вас ждет огромное количество практики и реальные кейсы: настройка окружения, базовые алгоритмы, синтаксис Java, Spring и Docker. Мы покажем, почему диплом OTUS ценят HR в крупных компаниях.

Если вы сисадмин, тестировщик, аналитик или просто хотите освоить программирование с нуля — этот курс для вас.
Мы научим создавать серверные веб-приложения, работать с PostgreSQL, Kafka и Kubernetes, формировать портфолио и готовить резюме под Middle-Java-Dev.

🎁 Дарим промокод, который дает скидку на обучение - JAVA7

👉 Оставьте заявку и и присоединяйтесь к группе: https://clck.ru/3NDXJQ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🤖 Ваш подход к разработке устарел? Тратите время на функции, которые давно готовы в сторонних сервисах?

Приглашаем на открытый урок «Стиль разработки 2020-х и среда окружения современного бэкенд-приложения».

🗓 30 июля в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».

На открытом уроке вы узнаете, как поменялся стиль разработки в 2020-х и какие компоненты уже не нужно писать самому. Поговорим о том, как в современном бэкенде выполнять только ключевую бизнес-логику.

🔥Вы получите готовые инфраструктурные файлы, которые упростят создание приложений на Kotlin и любых других языках.

🔗 Ссылка на регистрацию: https://clck.ru/3NDXH9

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вопрос на собеседовании

Что такое функциональный интерфейс в Java, и как он используется в лямбда-выражениях?

Ответ ⬇️
Функциональный интерфейс в Java — это интерфейс с единственным абстрактным методом, который может использоваться как целевая конструкция для лямбда-выражений и ссылок на методы. Они помогают писать более чистый и выразительный код, позволяя передавать поведение (функции) как параметры. Аннотация @FunctionalInterface (https://yangx.top/FunctionalInterface) проверяет, что интерфейс соответствует требованиям функционального интерфейса и помогает избежать случайного добавления методов.

Пример использования ⚙️
@FunctionalInterface
interface MyFunctionalInterface {
void printMessage(String message);
}

public class Main {
public static void main(String[] args) {
MyFunctionalInterface printer = message -> System.out.println("Сообщение: " + message);
printer.printMessage("Привет, мир!"); // Сообщение: Привет, мир!
}
}

👩‍💻

@javaquiz
👍1
⁉️👩‍💻Разрабатываете на Java, но проект на Spring превращается в черный ящик? Бины ведут себя непредсказуемо, конфигурация разрастается, а ошибка в одном модуле рушит всю систему.

Интервью на позицию Middle неудачно — не хватает уверенности в Spring.

🤝 Тем временем рынок требует специалистов, которые не просто знают Spring, а умеют строить продакшен-приложения с его помощью. Компании ищут разработчиков, которые понимают, как работают Spring Boot, Spring Security, Spring MVC и могут строить микросервисную архитектуру.

⚡️ На курсе «Разработчик на Spring Framework» мы закроем пробелы и дадим актуальные навыки. Практика на реальных кейсах, ревью заданий, тестовое собеседование — вы освоите Spring так, чтобы уверенно применять его в работе.

➡️ Пройдите вступительное тестирование и получите скидку на обучение: https://clck.ru/3NEiKj

🎁 Дарим промокод, который дает скидку на обучение - SRING7

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ Collections.reverse()

В Java метод Collections.reverse() изменяет порядок элементов в списке на обратный. Это удобно для работы с коллекциями, где требуется обратный порядок.

👩‍💻

@javaquiz
👍1
➡️ Feign: Секрет быстрого и чистого вызова REST API в Java

Feign – библиотека для Java, автоматизирующая вызов REST API. Она сокращает код, создавая запросы и обрабатывая исключения без лишних конструкций. Идеально подходит для работы с несколькими API и упрощает тестирование.

• Автоматическая генерация кода для вызова API, избавляя от рутины.
• Лёгкость тестирования и расширяемость при добавлении новых API.

🔗 Ссылочка на доку (https://github.com/OpenFeign/feign#why-feign-and-not-x)

👩‍💻

@javaquiz
👍3
👩‍💻 Ваши Java-приложения под нагрузкой едва дышат? Профилирование и оптимизация кода остаются за скобками?

Курс «Java Developer. Advanced» от OTUS — это глубокое погружение в устройство JVM, байткод, сборщики мусора, профилирование и оптимизацию в облаке.
Наши эксперты-практики покажут, как выбрать GC, снять дамп памяти и обнаружить утечки, как профилировать “горячие” места, настраивать интеграцию с Prometheus & Grafana и деплоить сервисы в Kubernetes.

🦾 Вы научитесь обосновывать выбор JVM-имплементации, анализировать heap-дампы, синхронизировать потоки, использовать Reactor и неблокирующие I/O, проектировать метрики и трассировку.

🎁 Дарим промокод, который дает скидку на обучение - JVADV7

➡️ Пройдите короткий тест и присоединяйтесь к группе: https://clck.ru/3NHH2Y

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ Optional.ofNullable()

В Java метод Optional.ofNullable() создаёт объект Optional, который может содержать значение или быть пустым. Полезен для избежания NullPointerException и обработки необязательных значений.

👩‍💻

@javaquiz
👍2
#Вопросы_с_собеседования
В чем разница между Thread.sleep() и Thread.yield()?

Thread.sleep(): Этот метод приостанавливает выполнение текущего потока на заданное количество времени. Время задается в миллисекундах и указывается в качестве аргумента метода. При вызове Thread.sleep(), поток переходит в состояние ожидания и не выполняет код в течение указанного периода времени. После истечения времени поток снова становится готовым к выполнению. Вызов Thread.sleep() может сгенерировать исключение InterruptedException, поэтому необходимо обрабатывать его или пробрасывать.

Thread.yield(): Этот метод предоставляет намек планировщику потоков на то, что поток, вызвавший yield(), готов уступить процессорное время другим потокам с тем же приоритетом. Однако это рекомендация, а не гарантия. Вызов Thread.yield() приводит к тому, что текущий поток переходит из исполняемого в состояние готовности, чтобы другие потоки могли получить доступ к процессору. Однако, если нет других готовых потоков с тем же приоритетом, поток может продолжить выполнение.

👩‍💻

@javaquiz
👍2
⚙️ Collectors.joining()

В Java метод Collectors.joining() из пакета java.util.stream позволяет объединить элементы потока в одну строку с опциональным разделителем, префиксом и суффиксом. Это удобно для создания строковых представлений коллекций.

👩‍💻

@javaquiz
👍3
⌨️ 🤖 Хочешь прокачаться в backend-разработке? Но справишься ли ты с тестом по Kotlin?

🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!

На курсе:

✔️ Разработаете monolith, микросервисы и serverless с помощью Kotlin и фреймворков Spring, Ktor и бессерверных библиотек.
✔️ Освоите корутины для асинхронных и многопоточных задач, а также WebSocket, RabbitMQ, Kafka для транспорта.
✔️ Научитесь строить хранилища на Postgres, Cassandra, ArcadeDb и интегрировать OpenAPI с любым фронтендом.

🎫
Курс можно приобрести в рассрочку

➡️ Пройди тест и присоединяйся к группе: https://clck.ru/3NJ6uK

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ Quarkus — быстрый и лёгкий фреймворк для Java-приложений

Quarkus — оптимизированный фреймворк для создания Java-приложений с низким временем запуска и минимальным потреблением памяти. Подходит для облачных и серверлесс-приложений.

• Быстрый старт с нативной компиляцией на GraalVM.
• Оптимизация для облака и контейнеров.
• Совместимость с Java API и фреймворками Spring, Hibernate.
• Горячая перезагрузка для ускорения разработки.

🔗 Ссылочка на доку (https://quarkus.io/guides/)

👩‍💻

@javaquiz
🎉1
➡️ Vaadin Flow — фреймворк для веб-приложений на чистой Java

Vaadin Flow — это фреймворк для создания веб-приложений на Java без написания JavaScript и HTML. Он позволяет создавать интерфейсы и логику приложения полностью на Java.

• Полная разработка на Java.
• Компоненты для UI и двусторонняя привязка данных.
• Интеграция с Spring Boot.

🔗 Ссылочка на доку (https://vaadin.com/docs/latest/)

👩‍💻

@javaquiz
👍2
Тест на внимательность. Перед вами фрагмент кода из проекта Huawei Cloud. Где здесь ошибка?
@Override
public void putToCache(PutRecordsRequest putRecordsRequest) {
....
if (dataTmpFile == null || !dataTmpFile.exists()) {
try {
dataTmpFile.createNewFile();
}
catch (IOException e) {
LOGGER.error("Failed to create cache tmp file, return.", e);
return;
}
}
....
}


Ошибка допущена в условии dataTmpFile == null || !dataTmpFile.exists()

Если dataTmpFile — null, то исполнение перейдёт в then-ветвь оператора if, где произойдёт разыменование нулевой ссылки.


Задачка из квиза на поиски ошибок в Java коде, опубликована на сайте PVS-Studio.
👍3👎2
👩‍💻 Хотите научиться создавать полноценные Android-приложения с интеграцией API?

Приглашаем на открытый урок, создадим приложение «Фото дня»

🗓 05 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».

На вебинаре:
- Разберемся с API сервера для скачивания фотографии и описания к ней
- Сверстаем простой экран для отображения данных
- Пропишем выход в интернет для скачивания данных
- Пропишем бизнес-логику для отображения данных на экране приложения

🔗 Ссылка на регистрацию: https://clck.ru/3NJ7rr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ Comparator.reverseOrder()

В Java метод Comparator.reverseOrder() создаёт компаратор, который сортирует элементы в порядке убывания. Это удобно для работы с сортировкой коллекций, когда нужно изменить стандартный порядок.

👩‍💻

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

Как работает CompletableFuture в Java, чем он отличается от Future, и как использовать метод thenCombine() для выполнения параллельных задач?

Ответ ⬇️
CompletableFuture — это расширение Future, позволяющее выполнять асинхронные задачи и комбинировать их без необходимости вручную управлять потоками. В отличие от Future, он предоставляет богатый API для обработки результатов, включая цепочку методов и возможность комбинирования нескольких задач. Метод thenCombine() используется для объединения результатов двух асинхронных задач, выполняемых параллельно, в одну итоговую операцию.

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

public class Main {
public static void main(String[] args) {
// Первая асинхронная задача
CompletableFuture task1 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000); // Эмуляция задержки
} catch (InterruptedException e) {
e.printStackTrace();
}
return 10;
});

// Вторая асинхронная задача
CompletableFuture task2 = CompletableFuture.supplyAsync(() -> 20);

// Комбинируем результаты двух задач
CompletableFuture combined = task1.thenCombine(task2, Integer::sum);

// Получаем и выводим результат
combined.thenAccept(result -> System.out.println("Сумма: " + result));

// Ждем завершения всех задач (только для примера)
combined.join();
}
}

// Результат выполнения:
// Сумма: 30

👩‍💻

@javaquiz