Size: a a a

Библиотека джависта

2021 January 19
Библиотека джависта
#вопросы_с_собеседований
Что такое «пространство имен» в XML?
источник
2021 January 20
Библиотека джависта
Пространство имён XML (XML namespace) - это идентифицируемая с помощью ссылки URI коллекция имен, используемых в XML документах для обозначения типов элементов и именования атрибутов. Пространство имен XML отличается от тех «пространств имен», которые обычно используются в компьютерных дисциплинах, тем, что в варианте для XML оно имеет внутреннюю структуру, и, с математической точки зрения, набором не является.

Пространства имён объявляются с помощью XML атрибута xmlns, значением которого должен быть URI и префикса, однозначно идентифицирующего пространство имён каждого элемента.

Все имена элементов в пределах пространства имён должны быть уникальны.

В общем случае пространство имён XML не требует, чтобы был определён его словарь.

XML-документ может содержать имена элементов и атрибутов из нескольких словарей XML. В каждом словаре задано своё пространство имён — так разрешается проблема неоднозначности имён элементов и атрибутов.
источник
Библиотека джависта
#вопросы_с_собеседований
Чем различаются Thread и Runnable?
источник
2021 January 21
Библиотека джависта
Thread - это класс, некоторая надстройка над физическим потоком.

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

Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое Stream?
источник
2021 January 22
Библиотека джависта
Интерфейс java.util.Stream представляет собой последовательность элементов, над которой можно производить различные операции.

Операции над стримами бывают или промежуточными (intermediate) или конечными (terminal). Конечные операции возвращают результат определенного типа, а промежуточные операции возвращают тот же стрим. Таким образом вы можете строить цепочки из несколько операций над одним и тем же стримом.

У стрима может быть сколько угодно вызовов промежуточных операций и последним вызов конечной операции. При этом все промежуточные операции выполняются лениво и пока не будет вызвана конечная операция никаких действий на самом деле не происходит (похоже на создание объекта Thread или Runnable, без вызова start()).

Стримы создаются на основе источников каких-либо, например классов из java.util.Collection.

Ассоциативные массивы (maps), например, HashMap, не поддерживаются.

Операции над стримами могут выполняться как последовательно, так и параллельно.

Потоки не могут быть использованы повторно. Как только была вызвана какая-нибудь конечная операция, поток закрывается.

Кроме универсальных объектных существуют особые виды стримов для работы с примитивными типами данных int, long и double: IntStream, LongStream и DoubleStream. Эти примитивные стримы работают так же, как и обычные объектные, но со следующими отличиями:

☕️ используют специализированные лямбда-выражения, например, IntFunction или IntPredicate вместо Function и Predicate;
☕️ поддерживают дополнительные конечные операции sum(), average(), mapToObj().
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое «ссылка на метод»?
источник
2021 January 23
Библиотека джависта
Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:

☕️ имя_класса::имя_статического_метода для статического метода;
☕️ объект_класса::имя_метода для метода экземпляра;
☕️ название_класса::new для конструктора.

Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.

Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое default методы интерфейса?
источник
2021 January 24
Библиотека джависта
☕️ Если класс реализует интерфейс, он может, но не обязан, реализовать методы по-умолчанию, уже реализованные в интерфейсе. Класс наследует реализацию по умолчанию.
☕️ Если некий класс реализует несколько интерфейсов, которые имеют одинаковый метод по умолчанию, то класс должен реализовать метод с совпадающей сигнатурой самостоятельно. Ситуация аналогична, если один интерфейс имеет метод по умолчанию, а в другом этот же метод является абстрактным - никакой реализации по умолчанию классом не наследуется.
☕️ Метод по умолчанию не может переопределить метод класса java.lang.Object.
☕️ Помогают реализовывать интерфейсы без страха нарушить работу других классов.
☕️ Позволяют избежать создания служебных классов, так как все необходимые методы могут быть представлены в самих интерфейсах.
☕️ Дают свободу классам выбрать метод, который нужно переопределить.
☕️ Одной из основных причин внедрения методов по умолчанию является возможность коллекций в Java 8 использовать лямбда-выражения.
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое StringJoiner?
источник
2021 January 25
Библиотека джависта
Класс StringJoiner используется, чтобы создать последовательность строк, разделенных разделителем с возможностью присоединить к полученной строке префикс и суффикс:

StringJoiner joiner = new StringJoiner(".", "prefix-", "-suffix");
for (String s : "Hello the brave world".split(" ")) {
   joiner.add(s);
}
System.out.println(joiner); //prefix-Hello.the.brave.world-suffix
источник
Библиотека джависта
#вопросы_с_собеседований
Для чего нужны функциональные интерфейсы Predicate<T>, DoublePredicate, IntPredicate и LongPredicate?
источник
2021 January 26
Библиотека джависта
Predicate<T> (предикат) - интерфейс, с помощью которого реализуется функция, получающая на вход экземпляр класса T и возвращающая на выходе значение типа boolean.

Интерфейс содержит различные методы по умолчанию, позволяющие строить сложные условия (and, or, negate).

Predicate<String> predicate = (s) -> s.length() > 0;
predicate.test("foo"); // true
predicate.negate().test("foo"); // false

☕️ DoublePredicate
- предикат, получающий на вход Double;
☕️ IntPredicate - предикат, получающий на вход Integer;
☕️ LongPredicate - предикат, получающий на вход Long.
источник
Библиотека джависта
#вопросы_с_собеседований
Как получить вторую субботу текущего месяца используя Date Time API?
источник
2021 January 27
Библиотека джависта
LocalDate
   .of(LocalDate.now().getYear(), LocalDate.now().getMonth(), 1)
   .with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY))
   .with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
LocalDate.now().getYear(), LocalDate.now().getMonth(), 1)
   .with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY))
   .with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
источник
Библиотека джависта
Интенсив по Docker для разработчиков без «капитанской теории». Отправляемся 25 февраля.

На 2 дня оставим за бортом всё то, о чём и так все знают и погрузимся в глубины крутейшей практики. Вы запустите сайт в контейнере, соберёте несколько контейнеров в рабочую систему, запустите готовый pipeline в Gitlab, рассмотрите подводные камни использования stateful и Docker и научитесь обходить ограничения DockerHub. Помимо этого расскажем об особенностях использования контейнеров с ruby, php, python, go, java, c#, c++  и работе Docker в облаках.

Интересно? А ведь это ещё не всё! Почитать всю программу (там много вкусного) и посмотреть реальные примеры практических заданий можно на сайте.

Йо-хо-хо, морские волки! На абордаж!
источник
Библиотека джависта
#вопросы_с_собеседований
Назовите основные принципы ООП.
источник
2021 January 28
Библиотека джависта
🍀Какие инструменты нужны для решения сложных задач в Spring?🍀

Если вы уже пишете на Java, начните прокачивать навыки уже 5 февраля на демо-занятии «Введение в облака, создание кластера в Mongo DB Atlas».

Вместе с преподавателем Дмитрием Коганом вы разберете, какие бывают облака и настроите бесплатный Mongo DB кластер для своих проектов.

Демо-занятие является частью онлайн-курса «Spring Framework». Это возможность познакомиться с преподавателем и оценить сложность программы.
⁉️Для доступа к уроку пройдите вступительный тест: https://otus.pw/TnQT/
источник
Библиотека джависта
Инкапсуляция — в информатике размещение в одном компоненте данных и методов, которые с ними работают. Также может означать скрытие внутренней реализации от других компонентов.
Наследование — создание новой сущности на базе уже существующей.
Полиморфизм — возможность иметь разные формы для одной и той же сущности.
Абстракция — набор общих характеристик.
Посылка сообщений — форма связи, взаимодействия между сущностями.
Переиспользование — все что перечислено выше работает на повторное использование кода.
Это единственно верный порядок парадигм ООП, так как каждая последующая использует предыдущие.
источник