#Вопросы_с_собеседования
❓Что такое «ссылка на метод»?
Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:
•
•
•
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
❓Что такое «ссылка на метод»?
Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:
•
имя_класса::имя_статического_метода для статического метода;•
объект_класса::имя_метода для метода экземпляра;•
название_класса::new для конструктора.Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
👍23
#Вопросы_с_собеседования
Что такое Map.of()?
Map.of() — это метод, представленный в Java 9, который позволяет разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.
Map.of() является улучшением по сравнению с предыдущим способом создания небольших Map с использованием конструктора класса HashMap, который может быть довольно громоздким и многословным.
Что такое Map.of()?
Map.of() — это метод, представленный в Java 9, который позволяет разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.
Map.of() является улучшением по сравнению с предыдущим способом создания небольших Map с использованием конструктора класса HashMap, который может быть довольно громоздким и многословным.
👍16❤1
#Вопросы_с_собеседования
❓Что выведет код сверху?
Ответ:
Программа не выдаст ошибки компиляции. Поскольку a больше 20, а b больше 25, будет выведена 1. Второй оператор if не будет истинным, так как a не больше 30, поэтому будет выполнен блок else, который выведет 3. Таким образом, на выходе будет 1, а затем 3. Обратите пристальное внимание на операторы if и else if. Если бы вместо второго оператора if был оператор else if, то на выходе была бы только 1.
❓Что выведет код сверху?
Ответ:
👍45😱3❤2🔥1😢1
Шаблон проектирования: Chain of Responsibility
Данная статья будет полезна начинающим Java разработчиком понять зачем нужен шаблон проектирования «Цепочка ответственности» и как его можно использовать на примерах.
Итак начнем с самого начала. Основная суть данного шаблона: связывание объектов‑получателей в цепочку и передача запроса по ней.
Смотреть статью
Данная статья будет полезна начинающим Java разработчиком понять зачем нужен шаблон проектирования «Цепочка ответственности» и как его можно использовать на примерах.
Итак начнем с самого начала. Основная суть данного шаблона: связывание объектов‑получателей в цепочку и передача запроса по ней.
Смотреть статью
Хабр
Шаблон проектирования: Chain of Responsibility
Всем привет. Данная статья будет полезна начинающим Java разработчиком для понимания зачем нужен шаблон проектирования "Цепочка ответственности" и как его можно использовать на примерах. Итак начнем с...
👍6🔥2🤔1😢1
Может ли имя класса не совпадать с именем файла?
Компилятор требует, чтобы в .java файле был не больше чем один публичный класс верхнего уровня, и чтобы его название совпадало с названием файла. Все специальные символы также должны быть в имени файла.
Protected и private классов верхнего уровня не бывает в принципе, а вот на package-protected это ограничение не распространяется. Это значит, что класс без модификатора доступа может иметь любое имя. Также это значит, что рядом с основным публичным классом файла (или вместо него) можно объявить любое количество других классов без модификатора доступа, с произвольными именами. Они будут доступны внутри всего пакета.
Так что ответ – может.
Компилятор требует, чтобы в .java файле был не больше чем один публичный класс верхнего уровня, и чтобы его название совпадало с названием файла. Все специальные символы также должны быть в имени файла.
Protected и private классов верхнего уровня не бывает в принципе, а вот на package-protected это ограничение не распространяется. Это значит, что класс без модификатора доступа может иметь любое имя. Также это значит, что рядом с основным публичным классом файла (или вместо него) можно объявить любое количество других классов без модификатора доступа, с произвольными именами. Они будут доступны внутри всего пакета.
Так что ответ – может.
👍23❤1
Log4j
Log4j – библиотека, взявшая на себя обязанности по избавлению разработчика от лишней головной боли при организации логирования в приложении. Она инкапсулирует почти все операции (прямая работа с файлами логов, оформление логов, разграничение уровней логирования), предоставляя разработчику удобный и минималистичный интерфейс взаимодействия с логами.
После подключения и быстрой настройки библиотеки работа с логами будет сведена к коду на картинке. После выполнения кода в лог будет записано что-то вроде:
2022-02-05 15:00 DEBUG MainClass:5 — Сообщение об баге
2022-02-05 15:00 ERROR MainClass:6 — Сообщениe об ошибке
2022-02-05 15:00 WARN MainClass:7 — Предупреждение
2022-02-05 15:00 INFO MainClass:8 — Информация
Подробнее о библиотеке можно узнать на сайте разработчика.
Log4j – библиотека, взявшая на себя обязанности по избавлению разработчика от лишней головной боли при организации логирования в приложении. Она инкапсулирует почти все операции (прямая работа с файлами логов, оформление логов, разграничение уровней логирования), предоставляя разработчику удобный и минималистичный интерфейс взаимодействия с логами.
После подключения и быстрой настройки библиотеки работа с логами будет сведена к коду на картинке. После выполнения кода в лог будет записано что-то вроде:
2022-02-05 15:00 DEBUG MainClass:5 — Сообщение об баге
2022-02-05 15:00 ERROR MainClass:6 — Сообщениe об ошибке
2022-02-05 15:00 WARN MainClass:7 — Предупреждение
2022-02-05 15:00 INFO MainClass:8 — Информация
Подробнее о библиотеке можно узнать на сайте разработчика.
👍10❤2
#Вопросы_с_собеседования
❓FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
Таким образом, исходя из факта, что
❓FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).Таким образом, исходя из факта, что
FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.👍27
Манипуляции с байт-кодом Java
В этой статье мы разберём, как добавить к файлу класса публичный атрибут. Когда загрузчик классов завершит загрузку модифицированного файла класса, мы увидим то поле, которое добавили вручную.
Смотреть статью
В этой статье мы разберём, как добавить к файлу класса публичный атрибут. Когда загрузчик классов завершит загрузку модифицированного файла класса, мы увидим то поле, которое добавили вручную.
Смотреть статью
👍6😱2
#Вопросы_с_собеседования
🎙️ Какие два класса не наследуются от Object?
Ответ:
Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87❤4🔥2
👍14😢8
Какая строка первой вызовет ошибку компиляции?
Anonymous Quiz
51%
l1
6%
l2
6%
l3
26%
l4
11%
Узнать ответ
🤔20👍19🔥3
Узнаем IP-адрес своего компьютера
Подробнее объяснение кода можно найти здесь.
InetAddress.getLocalHost() используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.Подробнее объяснение кода можно найти здесь.
👍24
#Вопросы_с_собеседования
Где разрешена инициализация статических/нестатических полей?
☕️ Статические поля можно инициализировать при объявлении, в статическом или нестатическом блоке инициализации.
☕️ Нестатические поля можно инициализировать при объявлении, в нестатическом блоке инициализации или в конструкторе.
Где разрешена инициализация статических/нестатических полей?
☕️ Статические поля можно инициализировать при объявлении, в статическом или нестатическом блоке инициализации.
☕️ Нестатические поля можно инициализировать при объявлении, в нестатическом блоке инициализации или в конструкторе.
👍23
👍35
Что такое класс 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() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.👍27🔥3
#Вопросы_с_собеседования
❓Какие типы ключевых слов используются в обработке исключений Java?
☕ try
☕catch
☕finally
☕throw
☕throws
❓Какие типы ключевых слов используются в обработке исключений Java?
☕ try
☕catch
☕finally
☕throw
☕throws
👍34