Java задачи с собеседований
6.26K subscribers
613 photos
6 videos
19 files
248 links
Задачи, тесты и теоретические вопросы по JAVA.

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

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

👩‍💻
@javaquiz
⚙️ Метод String.repeat() возвращает строку, которая повторяется заданное количество раз. Это может быть полезно для создания шаблонов, отладочного вывода и форматирования текста.

👩‍💻

@javaquiz
⚙️ List.copyOf()

List.copyOf() создает неизменяемую копию переданной коллекции. Это удобно для защиты данных от изменений и для создания безопасных API.

👩‍💻

@javaquiz
⚙️ Math.nextUp()

Math.nextUp() возвращает следующее большее число с плавающей запятой относительно заданного значения. Это полезно для обеспечения точности вычислений и численной стабильности.

👩‍💻

@javaquiz
⚙️ String.indent()

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

👩‍💻

@javaquiz
⚙️ Collections.reverse()

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

👩‍💻

@javaquiz
⚙️ Метод Collections.frequency() подсчитывает, сколько раз определённый элемент встречается в коллекции. Он перебирает все элементы и сравнивает их с заданным объектом с помощью метода .equals().

Это полезно для анализа данных, подсчёта дубликатов и составления статистики по коллекциям.

👩‍💻

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

Метод main действительно может вызвать исключение. Это исключение будет передано в JVM (виртуальную машину Java). JVM поймает это исключение и завершит выполнение программы, выводя трассировку стека.

Таким образом, исключение из main приведет к аварийному завершению программы.

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

👩‍💻

@javaquiz
String.join() соединяет элементы из коллекции или массива в одну строку с заданным разделителем. Это удобно для аккуратного отображения данных и создания текстовых шаблонов.

👩‍💻

@javaquiz
Collections.disjoint() определяет, есть ли у двух коллекций общие элементы. Это полезно для фильтрации, сравнения и улучшения поиска пересечений.

👩‍💻

@javaquiz
⚙️ Collections.nCopies()

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

👩‍💻

@javaquiz
⚙️ Class.getRecordComponents()

Class.getRecordComponents() предоставляет информацию о компонентах записи. Это полезно для рефлексии, сериализации и автоматического отображения данных в классах Record.

👩‍💻

@javaquiz
⚙️ Pattern.asPredicate()

Pattern.asPredicate() преобразует регулярное выражение в Predicate, который можно применять непосредственно в потоках (Stream). Это удобно для фильтрации строк без необходимости явного вызова .matches().

👩‍💻

@javaquiz
ClassLoader.getResources() ищет все ресурсы с заданным именем в classpath и возвращает Enumeration. Это полезно для загрузки всех версий конфигурационных файлов, плагинов или ресурсов из JAR-файлов и папок одновременно. 👩‍💻

@javaquiz
⚙️ Class.getNestMembers()

Class.getNestMembers() возвращает массив всех классов, которые принадлежат одной «группе вложенности» (nest) — то есть тем классам, которые могут обмениваться приватными методами и полями. Это полезно для анализа доступа между вложенными классами и для инструментов анализа байткода.

👩‍💻

@javaquiz
🚫 Антипаттерн недели: Нарушение принципа инкапсуляции через public поля

В Java открытие полей класса как public — это плохая практика. Это нарушает инкапсуляцию и делает объект уязвимым к неконтролируемым изменениям извне.

✔️ Используйте private поля и методы getter/setter для доступа и контроля над значениями.

👩‍💻

@javaquiz
➡️ Строковые шаблоны (Preview)

Строковые шаблоны — это новая функция в режиме предварительного просмотра, которая упрощает создание строк с вычисляемыми значениями.

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

ℹ️ Шаблонные выражения объединяют лаконичность интерполяции и высокую безопасность.

String name = "Joan";
String info = STR."My name is \{name}";
assert info.equals("My name is Joan"); // true

Это выражение использует обработчик STR и встроенное выражение {name}, которое может включать строки, арифметику, методы и поля. Обработчики выполняются динамически и обеспечивают безопасность кода. Шаблоны не работают без обработчика, который отвечает за интерполяцию и валидацию.

👩‍💻

@javaquiz