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
👩‍💻 Узнаем размер файла с помощью Java

Здесь создается объект класса File, указывающий на файл, размер которого нужно узнать. Затем вызывается метод length(), который возвращает размер файла в байтах. Результат выводится на консоль с помощью метода println().

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 Класс Object и его методы

Object — это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:

public boolean equals(Object obj) — служит для сравнения объектов по значению;

int hashCode() — возвращает hash код для объекта;

String toString() — возвращает строковое представление объекта;

Class getClass() — возвращает класс объекта во время выполнения;

protected Object clone() — создает и возвращает копию объекта;

void notify() — возобновляет поток, ожидающий монитор;

void notifyAll() — возобновляет все потоки, ожидающие монитор;

void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.

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

Ответ: так как "a" больше 20, а "b" больше 25, будет выведена "1". Второй оператор if не будет истинным, так как "a" не больше 30, поэтому будет выполнен блок else, который выведет "3". Таким образом, на выходе будет "1", а затем "3". Обратите внимание на операторы if и else if. Если бы вместо второго оператора if был оператор else if, то на выходе была бы только "1".

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Узнаем IP-адрес своего компьютера

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN 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