Java Developer – Telegram
Java Developer
15.7K subscribers
1.86K photos
141 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Вопрос с собеседования

Каково максимальное число значений hashCode()?

Ответ: число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2^32.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какое из написаний соответствует «верблюжьему стилю» (camel case)?
Anonymous Quiz
16%
big_cat
4%
bigcat
81%
BigCat
👩‍💻 Рефлексия (Reflection)

Рефлексия (Reflection) — это механизм получения данных о программе во время её выполнения (runtime). В Java Reflection осуществляется с помощью Java Reflection API, состоящего из классов пакетов java.lang и java.lang.reflect.

Возможности Java Reflection API:

Определение класса объекта;

Получение информации о модификаторах класса, полях, методах, конструкторах и суперклассах;

Определение интерфейсов, реализуемых классом;

Создание экземпляра класса;

Получение и установка значений полей объекта;

Вызов методов объекта;

Создание нового массива.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Работа блока try-catch-finally

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

catch — ключевое слово для отметки начала блока кода, предназначенного для перехвата и обработки исключений в случае их возникновения.

finally — ключевое слово для отметки начала блока кода, который является дополнительным. Этот блок помещается после последнего блока catch. Управление передаётся в блок finally в любом случае, было выброшено исключение или нет.

Общий вид конструкции для обработки исключительной ситуации описан на картинке.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Можно ли использовать строки в конструкции switch?

Ответ: Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Ключевые слова volatile, synchronized, transient, native

volatile — этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной. Если переменная примитивного типа — этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект — синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут.

synchronized — это зарезервированное слово позволяет добиваться синхронизации в помеченных им методах или блоках кода.

transient и native к многопоточности никакого отношения не имеют, первое используется для указания полей класса, которые не нужно сериализовать, а второе — сигнализирует о том, что метод реализован в платформо-зависимом коде.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какие существуют unchecked exception?

Ответ: наиболее часто встречающиеся — ArithmeticException, ClassCastException, ConcurrentModificationException, IllegalArgumentException, IllegalStateException, IndexOutOfBoundsException, NoSuchElementException, NullPointerException, UnsupportedOperationException.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?

Ответ: 40

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Gradle

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

Gradle написана на языках Java, Groovy и Kotlin, также поддерживает плагины на JavaScript, C++, Swift, Scala.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие классы из пакета java.util предназначены для работы с датами?
Anonymous Quiz
50%
java.util.Date
4%
java.util.Time
46%
java.util.DateTime
Задача с собеседования

Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции. Верните true, если вы можете добраться до последнего индекса, или false в противном случае (ответ на картинке).

Например:

Ввод: [1, 3, 1, 1, 4]
Вывод: true
Объяснение: Переходим на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.

Ввод: [3, 2, 1, 0, 4]
Вывод: false

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
⌨️ SortedSet

SortedSet — это интерфейс, который расширяет Set и описывает упорядоченное множество, отсортированное в возрастающем порядке или по порядку, заданному реализацией интерфейса Comparator. Он может использоваться для создания коллекций, которые хранят элементы в отсортированном виде.

В этом примере мы создаем объект SortedSet с использованием класса TreeSet, который реализует интерфейс NavigableSet, который поддерживает элементы в отсортированном по возрастанию порядке. Затем мы добавляем несколько элементов в множество и выводим его на экран.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие из следующих списков примитивных типов представлены в порядке от меньшего к большему?
Anonymous Quiz
50%
byte, char, float, double
21%
byte, char, double, float
23%
char, byte, float, double
6%
char, double, float, bigint
👩‍💻 Виды отношений между объектами

Реализация — класс А определяет методы, объявленные интерфейсом B. Объекты А можно рассматривать через интерфейс B. Класс А зависит от B.

Наследование — класс А наследует интерфейс и реализацию класса B, но может ее переопределить. Объекты А можно рассматривать через интерфейс класса B. Класс А зависит от B.

Зависимость — класс А могут затронуть изменения в классе B.

Агрегация — объект А знает об объекте B и состоит из него. Класс А зависит от B.

Ассоциация — объект А знает об объекте B. Класс А зависит от B.

Композиция — объект А знает об объекте B, состоит из него и управляет его жизненным циклом. Класс А зависит от B.


➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Класс-обертка в Java (wrapper class)

Класс-обертка (wrapper class) — это класс, который обеспечивает возможность использования примитивных типов данных как объектов. Каждый примитивный тип данных в Java имеет соответствующий класс-обертку: byte - Byte, short - Short, int - Integer, long - Long, float - Float, double - Double, boolean - Boolean и char - Character.

Классы-обертки используются, например, при работе с объектами коллекций, такими как ArrayList, где примитивные типы не могут быть использованы (список может хранить только объекты).

В этом примере мы создаем объекты классов-оберток для примитивных типов int, double, char и выводим значения этих объектов с помощью метода println().

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Вложенные классы

Вложенный класс (Nested class) — класс, который определен внутри другого класса. Вложенный класс должен создаваться только для того, чтобы обслуживать обрамляющий его класс. Если вложенный класс оказывается полезен в каком-либо ином контексте, он должен стать классом верхнего уровня. Вложенные классы имеют доступ ко всем (в том числе приватным) полям и методам внешнего класса, но не наоборот. Из-за этого разрешения использование вложенных классов приводит к некоторому нарушению инкапсуляции.

Существуют четыре категории вложенных классов:

Static nested class (Статический вложенный класс);

Member inner class (Простой внутренний класс);

Local inner class (Локальный класс);

Anonymous inner class (Анонимный класс).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?

Ответ: Not equal. Переменная real не равна самой себе. Арифметика с плавающей запятой реализована в соответствии со стандартом IEEE 754, который требует возвращения специального значения «NaN» (от английского “Not a Number” – не число), когда ноль делится на ноль. В спецификации также указано, что NaN не равно никакому значению с плавающей запятой, включая само себя.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Конструктор по умолчанию

Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов — так называемый «конструктор по умолчанию».

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Могут ли нестатические методы перегрузить статические?

Ответ: Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Выполнение консольных команд

Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.

В примере на картинке мы открываем файл PDF через терминал Java на Linux.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какое начальное количество корзин в HashMap?

Ответ: В конструкторе по умолчанию — 16, используя конструкторы с параметрами можно задавать произвольное начальное количество корзин.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM