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

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

System.identityHashCode() возвращает хеш-код объекта, который основывается на его настоящем адресе в памяти, независимо от того, был ли переопределён метод hashCode(). Это полезно для диагностики, отладки, отслеживания объектов и работы с объектами, у которых метод hashCode() был переопределён нестандартным образом.

👩‍💻

@javaquiz
⚙️ Integer.rotateLeft()

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

👩‍💻

@javaquiz
⚙️ Class.getPermittedSubclasses()

Class.getPermittedSubclasses() предоставляет перечень всех классов, которым разрешено наследование от sealed-класса. Это полезно для анализа и проверки иерархий sealed-типов во время выполнения, особенно в системах с плагинами и фреймворках.

👩‍💻

@javaquiz
➡️ Сила коллекций: Неизменяемые коллекции в Java

Java 10 представила удобную функцию, позволяющую создавать неизменяемые копии коллекций с использованием новых методов copyOf.

✔️ Эти методы обеспечивают легкий способ создания неизменяемых версий существующих коллекций, что способствует повышению безопасности и надежности кода.

👩‍💻

@javaquiz
⚙️ Оптимизация работы сборщика мусора с помощью параметра -XX:+UseG1GC

Java предоставляет разнообразные способы повышения производительности приложений.

✔️ Одним из таких методов является применение современного сборщика мусора G1 (Garbage First), который улучшает эффективность работы с большими объемами данных и уменьшает задержки.

➡️ Для активации G1GC нужно добавить флаг -XX:+UseG1GC при запуске Java-программы:

java -XX:+UseG1GC G1GCExample

👩‍💻

@javaquiz
🌐 Конфигурация HTTP-прокси в Java

Данный код задаёт параметры HTTP-прокси для Java-программы, включая адрес, порт, имя пользователя и пароль прокси-сервера.

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

👩‍💻

@javaquiz
💪 Сильный инструмент в одной строке: метод of()

Метод of() предоставляет лаконичный способ создавать неизменяемые коллекции.

🗣️ Этот метод удобен и эффективен для формирования коллекций с заданным набором элементов.

👩‍💻

@javaquiz
✔️ Применение Optional для предотвращения NullPointerException

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

👀 Давайте посмотрим пример, как использовать Optional для безопасного получения результата из метода, который способен вернуть null.

👩‍💻

@javaquiz
🔗 Соединение строк с помощью String.join

Часто нужно объединить несколько строк в одну, используя заданный разделитель.

🗣️ Раньше, до Java 8, для этого обычно применяли цикл и объект StringBuilder. С появлением метода String.join, выполнение этой задачи стало гораздо проще и понятнее.

Применение метода String.join заметно облегчает процесс соединения строк с разделителем, улучшая читаемость кода и уменьшая объем кода, который необходимо писать и поддерживать.

👩‍💻

@javaquiz
✔️ Как повысить читаемость вашего кода с помощью Records

Records — это новый вид классов в Java, который облегчает создание классов для хранения неизменяемых данных.

🗣️ Они автоматически создают стандартные методы, такие как equals(), hashCode() и toString(), что делает код более аккуратным и компактным.

👩‍💻

@javaquiz
➡️ Sealed Classes в Java

Sealed classes дают возможность программистам задавать, какие именно классы могут наследовать данный класс или реализовывать интерфейс.

🗣️ Это помогает создавать более управляемую и предсказуемую структуру классов.

👩‍💻

@javaquiz
🔥 Сопоставление с образцом для оператора instanceof

В Java 14 появилась возможность сопоставления с образцом для оператора instanceof. Это позволяет упростить и улучшить читаемость кода, который проверяет тип объекта и затем приводит его к нужному типу.

✔️ Применяйте эту функциональность для создания более аккуратного и понятного кода, избегая ненужных явных приведений типов.

👩‍💻

@javaquiz
🪄 Магия сопоставления шаблонов: Switch Expressions

ℹ️ Switch Expressions позволяет писать более компактный и выразительный код при использовании оператора switch.

👩‍💻

@javaquiz
➡️ Мощь статических методов: Использование методов интерфейсов

✔️ В Java 8 была введена возможность определения статических методов в интерфейсах, что открыло новые возможности для создания удобных и мощных утилитарных функций прямо в интерфейсах.

🗣В интерфейсе ListUtils определен статический метод max, который находит максимальный элемент в коллекции.

🗣В методе main мы вызываем статический метод max из интерфейса ListUtils, передавая ему список чисел.

🗣Мы выводим найденное максимальное число на экран.

👩‍💻

@javaquiz
✔️ Использование Collectors.teeing для объединения потоков

Java 12 представила новый метод Collectors.teeing, который позволяет объединить результаты двух различных коллекторов в один итоговый результат.

🗣️ Эта возможность значительно упрощает обработку сложных потоков данных.

👩‍💻

@javaquiz
➡️ Использование Optional для работы с потенциально null значениями

Использование Optional позволяет более безопасно работать с потенциально null значениями в Java.

🗣️ Этот подход помогает предотвратить распространенные ошибки, такие как NullPointerException, и делает код более читаемым и надежным.

👩‍💻

@javaquiz
➡️ Фабричный метод коллекции

✔️ Коллекции — наиболее часто используемая функция в нашем ежедневном программировании. Они используются в качестве контейнера, в котором мы храним объекты и передаем их дальше.

Коллекции также используются для сортировки, поиска и перебора объектов, что упрощает жизнь программиста. Он предоставляет несколько базовых интерфейсов, таких как List, Set, Map и т. д., а также множество реализаций.

Традиционный способ создания коллекций и карт может показаться многим разработчикам многословным.

👀 Вот почему в Java 9 появилось несколько очень кратких фабричных методов.

👩‍💻

@javaquiz
Использование LocalDate и DateTimeFormatter для работы с датами

LocalDate и DateTimeFormatter предоставляют удобные и безопасные методы для работы с датами в Java.

🗣️ Этот подход упрощает задачи форматирования и парсинга дат, что делает код более читаемым и менее подверженным ошибкам.

👩‍💻

@javaquiz
➡️ Как объединить два списка в Java?

Этот код демонстрирует, как объединить два списка list1 и list2 в Java, создав новый список mergedList, который содержит все элементы из обоих исходных списков. В результате выполнения кода будет напечатан объединенный список.

🗣️ Этот подход часто используется на практике при работе с коллекциями в Java.

👩‍💻

@javaquiz
Как получить карьерный буст и MacBook за подписку

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

Не нужно покупать дорогие консультации, чтобы перенять чужой опыт — достаточно подписаться на папку, где собралось более 30 лучших экспертов из IT и digital

Это люди, которые не только построили успешную карьеру с нуля, но и основали собственные компании.

Они собрались, чтобы прокачать тебя в маркетинге и дизайне, а ещё провести розыгрыш.

Подпишись на них и получи один из 3 призов:

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

Участвуешь?

1. Подпишись на папку
2. Подтверди участие в боте

19 июня в прямом эфире опубликуем итоги розыгрыша!
Please open Telegram to view this post
VIEW IN TELEGRAM
Парадокс Comparator’а

Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так:

public class ByScoreComparator implements Comparator {

@Override
public int compare(User u1, User u2) {
return (int) signum(u2.getAge() - u1.getAge());
}
}

➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода.

Теперь это не нужно. Можно использовать ссылки на методы:

Comparator comparator = Comparator
.comparingDouble(User::getAge)
.thenComparing(User::getName);
List hList = ...;
hList.sort(comparator);

🗣️ Такой подход упрощает создание компараторов.

👩‍💻

@javaquiz