👍45😱12👎5🔥1
#Вопросы_с_собеседования
❓Что такое «блокирующий метод»?
Блокирующий метод – метод, который блокируется, до тех пор, пока задание не выполнится, например метод accept() у ServerSocket блокируется в ожидании подключения клиента. Здесь блокирование означает, что контроль не вернётся к вызывающему методу до тех пор, пока не выполнится задание. Так же существуют асинхронные или неблокирующиеся методы, которые могут завершится до выполнения задачи.
❓Что такое «блокирующий метод»?
Блокирующий метод – метод, который блокируется, до тех пор, пока задание не выполнится, например метод accept() у ServerSocket блокируется в ожидании подключения клиента. Здесь блокирование означает, что контроль не вернётся к вызывающему методу до тех пор, пока не выполнится задание. Так же существуют асинхронные или неблокирующиеся методы, которые могут завершится до выполнения задачи.
👍17
#Вопросы_с_собеседования
❓Какие типы ключевых слов используются в обработке исключений Java?
☕ try
☕catch
☕finally
☕throw
☕throws
❓Какие типы ключевых слов используются в обработке исключений Java?
☕ try
☕catch
☕finally
☕throw
☕throws
👍45
#Вопросы_с_собеседования
❓В чем разница между абстрактными классами и интерфейсами?
Ответ на картинке.
❓В чем разница между абстрактными классами и интерфейсами?
Ответ на картинке.
👍39👎20🔥1
#Вопросы_с_собеседования
❓Дайте краткую характеристику Enum в Java
Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum.
Вот пример с enum — допустимые роли в некоторой школе(см картинку).
Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new.
Использование перечислений заметно упрощает жизнь, так как они помогают избежать ошибок и путаницы в наименованиях (так как может быть только определенный перечень значений).
❓Дайте краткую характеристику Enum в Java
Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum.
Вот пример с enum — допустимые роли в некоторой школе(см картинку).
Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new.
Использование перечислений заметно упрощает жизнь, так как они помогают избежать ошибок и путаницы в наименованиях (так как может быть только определенный перечень значений).
👍18
NullPointer Exception
Исключение нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Рассмотрим строчку кода из примера 1 на картинке. Если объект school окажется равен
Хорошей практикой разработки на Java является предварительная проверка на
Исключение нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Рассмотрим строчку кода из примера 1 на картинке. Если объект school окажется равен
null
или его метод listStudents
вернет null
, вы получите исключение NullPointerException
.Хорошей практикой разработки на Java является предварительная проверка на
null
в методах (как в примере 2).👍24👎4
#Вопросы_с_собеседования
❓Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java?
Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:
❓Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java?
Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:
☕️ Serializable
используется для явного указания того, что этот класс может быть сериализован;☕️ Cloneable
позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException);☕️ Remote
используется в RMI для указания интерфейса, методы которого можно вызывать удаленно.👍19
#Вопросы_с_собеседования
❓Какие существуют состояния потоков (thread)?
Существует 4 состояния потока в Java:
1) Новый поток.
2) Запускаемый (Runnable).
3) Незапускаемый (Non-Runnable).
4)Мертвый или прекращенный (Dead или Terminated).
❓Какие существуют состояния потоков (thread)?
1) Новый поток.
2) Запускаемый (Runnable).
3) Незапускаемый (Non-Runnable).
4)Мертвый или прекращенный (Dead или Terminated).
👍40👎13😱4
#Вопросы_с_собеседования
❓Можно ли указывать конструктор внутри Enum?
Да, конечно. Именно через конструктор и задаются значения внутренних переменных enum.
В качестве примера добавим два поля — ageFrom и ageTo — чтобы обозначить возрастные рамки для каждой роли.
❓Можно ли указывать конструктор внутри Enum?
В качестве примера добавим два поля — ageFrom и ageTo — чтобы обозначить возрастные рамки для каждой роли.
👍39❤7
👍19
#Вопросы_с_собеседования
Что такое классы-оболочки? Что такое автоупаковка?
Для каждого из восьми примитивных типов в Java существует класс-оболочка, который можно использовать для обертывания примитивного значения и использования его как объекта. Эти классы, соответственно, Boolean, Byte, Short, Character, Integer, Float, Long и Double. Эти оболочки могут быть полезны, например, когда вам нужно поместить примитивное значение в общую коллекцию, которая принимает только объекты.
Что такое классы-оболочки? Что такое автоупаковка?
Для каждого из восьми примитивных типов в Java существует класс-оболочка, который можно использовать для обертывания примитивного значения и использования его как объекта. Эти классы, соответственно, Boolean, Byte, Short, Character, Integer, Float, Long и Double. Эти оболочки могут быть полезны, например, когда вам нужно поместить примитивное значение в общую коллекцию, которая принимает только объекты.
List<Integer> list = new ArrayList<>();
list.add(new Integer(5));
Чтобы избежать необходимости вручную преобразовывать примитивы туда и обратно, компилятор Java обеспечивает автоматическое преобразование, известное как автоупаковка/автораспаковка.List<Integer> list = new ArrayList<>();
list.add(5);
int value = list.get(0);
👍34
#Вопросы_с_собеседования
❓Что выведет код сверху?
Ответ:
Программа не выдаст ошибки компиляции. Поскольку a больше 20, а b больше 25, будет выведена 1. Второй оператор if не будет истинным, так как a не больше 30, поэтому будет выполнен блок else, который выведет 3. Таким образом, на выходе будет 1, а затем 3. Обратите пристальное внимание на операторы if и else if. Если бы вместо второго оператора if был оператор else if, то на выходе была бы только 1.
❓Что выведет код сверху?
Ответ:
👍57
Что выведет программа?
Anonymous Quiz
23%
A.print() is called
50%
B.print() is called
19%
Compiler Error
5%
Runtime Error
3%
Другое
😢24👍16🤔5
#Вопросы_с_собеседования
❓Какой оператор позволяет принудительно выбросить исключение? Напишите пример
Ответ на картинке.
❓Какой оператор позволяет принудительно выбросить исключение? Напишите пример
Ответ на картинке.
👍27😱2
#Вопросы_с_собеседования
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
👍19