Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
998 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

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

🎙️ Что такое метод main?

Это точка входа в программу. В приложении их может быть много. Причем если ни одного метода main в приложении нет, при попытке запуска возникнет ошибка Error: Main method not found.

public static void main(String[] args) {}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😢3
Метод regionMatches()

Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).

Параметры

ignoreCase
— логическая переменная со значение true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.
👍73😢2
#Вопросы_с_собеседования

🎙️ В какой последовательности происходит вызов конструкторов при наследовании?

Сначала вызывается конструктор родительского или базового класса, а затем вызывается конструктор производного класса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
FileOutputStream vs. FileWriter

Запись файлов на Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой именно метод выбрать, зависит от конкретной задачи.

FileOutputStream предназначен для записи потоков необработанных байтов. Это делает его идеальным решением для работы, например, с изображениями.

У FileWriter другое призвание: работа с потоками символов. Так что если вы пишете текстовые файлы, выбирайте этот метод.
👍271
#Вопросы_с_собеседования

🎙️ Что будет результатом выполнения следующего фрагмента кода?

Неопределенность, так как массив не отсортирован. Если добавить вызов Arrays.sort(array), то результат будет равен 2, потому что в отсортироанном массиве {-3, 4, 8, 10} число 8 имеет такой индекс.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40
#Вопросы_с_собеседования

👁 Как получить коллекцию только для чтения?

При помощи:
Collections.unmodifiableList(list);
Collections.unmodifiableSet(set);
Collections.unmodifiableMap(map).

Эти методы принимают коллекцию в качестве параметра, и возвращают коллекцию только для чтения с теми же элементами внутри.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Объединение двух массивов

Наиболее лаконичный способ объединить элементы двух массивов – это воспользоваться классом ArrayUtils из Commons Lang.

Подробнее можно ознакомиться здесь.
👍21
#Вопросы_с_собеседования

👁 Почему хранить пароль предпочтительнее в char[]/byte[], а не в String?

☕️ Строка в виде литерала сразу раскрывает пароль, плюс она всегда хранится в string-пуле.
☕️ byte[]/char[] возможно сбросить после использования, и удалить все ссылки на него.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍331
Клонирование массивов

Когда вы клонируете одномерный массив, такой как Object[], выполняется «глубокая копия» с новым массивом, содержащим копии элементов исходного массива, а не ссылки.

Подробнее с методом clone() можно ознакомиться здесь.
👍13
#Вопросы_с_собеседования

👁 Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?

• Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.
• Для создания объекта статического вложенного класса объект внешнего класса не требуется.
• Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
• Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
• В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статической такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Какой из этих конструкторов используется для создания пустого объекта String?
Anonymous Quiz
54%
String()
4%
String(void)
3%
String(0)
31%
Ни один из перечисленных
8%
Посмотреть ответ
👍17😱7
Битва титанов: Java vs Kotlin

Один из старейших языков программирования Java и один из наиболее молодых Kotlin — активно используются для мобильной разработки. Но они также подходят для создания десктопных и серверных решений. Главный разработчик Группы «Иннотех» Владимир Полховцев сравнивает двух гигантов Android-разработки.

Смотреть статью
👍6
Generics

Всегда старайтесь типизировать ваши коллекции, методы и классы. Это избавляет сразу от 2-х потенциальных проблем: приведение типов и ошибок выполнения. Также назначение таких коллекций легче воспринимать. Особенно часто этим пренебрегают мои американо-индусские коллеги. Если же ваша коллекция должна содержать обьекты разных типов — используйте <?>, а еще лучше <? extends someType> тогда зная общий класс/интерфейс для всех обьектов вам не прийдется делать приведение типов и применять оператор instanceOf.
👍36
Анализ дампа кучи Java: разбираем на примерах

Всякий раз, когда вы создаете объект, он хранится в области памяти, которая в приложениях для JVM называется «куча». Как вы уже догадались, объем кучи ограничен, и «кто-то» должен хранить объекты в куче. Этот инструмент называется сборщиком мусора (Garbage Collector).

Смотреть статью
👍9
#Вопросы_с_собеседования

Как вывести на экран 5 случайных чисел в порядке возрастания в одну строку?

Ответ на картинке.
👍31🔥9
#Вопросы_с_собеседования

Почему нельзя объявить метод интерфейса с модификатором final?

В случае интерфейсов указание модификатора final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.
👍26🔥2
Руководство по возможностям языка Java версий 8-19

Вы можете использовать это руководство для получения практической информации о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), а также получить обзор функций языка Java, включая версии 8–19.

Смотреть статью
👍8😱1
#Вопросы_с_собеседования

👁 Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?

При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак.

Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤔1
#Вопросы_с_собеседования

🎙️ Какой из following string классов следует использовать, когда необходимо часто обновлять данные?

Класс StringBuffer следует использовать в случае частых обновлений, поскольку он изменчив и, следовательно, пул строк не будет перегружен.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤔2
#Вопросы_с_собеседования

🎙️ Что выведет следующий код?

C первым выражением вроде всё ясно. Разные объекты, поэтому false. А вот дальше…
В Java NaN'ы несравнимы между собой. Но есть два исключения в работе класса Float:
1. Если f1 и f2 оба представляют Float.NaN, тогда метод equals возвращает true, в то время как Float.NaN==Float.NaN принимает значение false.
2. Если f1 содержит +0.0f в то время как f2 содержит -0.0f, метод equal возвращает false, в то время как 0.0f==-0.0f возвращает true.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5