#Вопросы_с_собеседования
❓Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
Если возникшее исключение - наследник RuntimeException:
• для статических блоков инициализации будет выброшено java.lang.ExceptionInInitializerError;
• для нестатических будет проброшено исключение-источник.
Если возникшее исключение - наследник Error, то в обоих случаях будет выброшено java.lang.Error. Исключение: java.lang.ThreadDeath - смерть потока. В этом случае никакое исключение выброшено не будет.
❓Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
Если возникшее исключение - наследник RuntimeException:
• для статических блоков инициализации будет выброшено java.lang.ExceptionInInitializerError;
• для нестатических будет проброшено исключение-источник.
Если возникшее исключение - наследник Error, то в обоих случаях будет выброшено java.lang.Error. Исключение: java.lang.ThreadDeath - смерть потока. В этом случае никакое исключение выброшено не будет.
👍14
Метод delete()
Удаляет символы в подстроке данной строки буфера (StringBuffer). Подстрока начинается с указанного начального индекса и распространяется до символа конечного индекса, или до конца StringBuffer, если такого символа не существует.
Другими словами метод позволяет удалить символы из строки, начиная и заканчивая указанными индексами.
Если start (начальный индекс) равен end (конечный индекс), то изменения не производятся.
Параметры:
• start — начальный индекс, включительно;
• end — конечный индекс, не включая.
Удаляет символы в подстроке данной строки буфера (StringBuffer). Подстрока начинается с указанного начального индекса и распространяется до символа конечного индекса, или до конца StringBuffer, если такого символа не существует.
Другими словами метод позволяет удалить символы из строки, начиная и заканчивая указанными индексами.
Если start (начальный индекс) равен end (конечный индекс), то изменения не производятся.
Параметры:
• start — начальный индекс, включительно;
• end — конечный индекс, не включая.
👍24
#Вопросы_с_собеседования
❓Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных.
Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
❓Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных.
Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
👍20👎4
#Вопросы_с_собеседования
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
•
•
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
•
OutputStreamWriter
— «мост» между классом OutputStream и классом Writer. Символы, записанные в поток, преобразовываются в байты.•
InputStreamReader
— аналог для чтения. При помощи методов класса Reader читаются байты из потока InputStream и далее преобразуются в символы.👍16❤1
👍41👎2
Enum vs String
Используйте Enum для предопределенных состояний модели там, где это возможно. Это не только упрощает понимание кода, но и ускоряет процесс сравнения этих состояний. Сравнение по ссылке, определенно, на порядок быстрее стравнения строк или других обьектов.
Правда, в этом случае есть один большой минус — стоимость поддержки приложения увеличивается, особенно это становится заметным, когда нужно добавить, удалить или изменить одно из существующих состояний.
Но в случае если это неизменные свойства, как месяц года, то смело используйте перечисление.
Используйте Enum для предопределенных состояний модели там, где это возможно. Это не только упрощает понимание кода, но и ускоряет процесс сравнения этих состояний. Сравнение по ссылке, определенно, на порядок быстрее стравнения строк или других обьектов.
Правда, в этом случае есть один большой минус — стоимость поддержки приложения увеличивается, особенно это становится заметным, когда нужно добавить, удалить или изменить одно из существующих состояний.
Но в случае если это неизменные свойства, как месяц года, то смело используйте перечисление.
👍20
#Вопросы_с_собеседования
❓Дайте определение понятию «конструктор»
Конструктор — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия необходимые для его инициализации.
❓Дайте определение понятию «конструктор»
Конструктор — это специальный метод, у которого отсутствует возвращаемый тип и который имеет то же имя, что и класс, в котором он используется. Конструктор вызывается при создании нового объекта класса и определяет действия необходимые для его инициализации.
👍31
Обработка исключений в Java в функциональном стиле
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.
Смотреть статью
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.
Смотреть статью
Хабр
Обработка исключений в Java в функциональном стиле
Обработка исключений в Java в функциональном стиле В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле. Предпосылки В Java...
👍5
#Вопросы_с_собеседования
❓Что значит «усыпить» поток?
Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод
❓Что значит «усыпить» поток?
Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод
Thread.sleep()
передав в качестве параметра необходимое количество времени в миллисекундах. До истечения этого времени поток может быть выведен из состояния ожидания вызовом interrupt()
с выбрасыванием InterruptedException
.👍20
#Вопросы_с_собеседования
❓Какие типы классов бывают в Java?
☕️ Top level class (Обычный класс):
✔️ Abstract class (Абстрактный класс);
✔️ Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
✔️ Static nested class (Статический вложенный класс);
✔️ Member inner class (Простой внутренний класс);
✔️ Local inner class (Локальный класс);
✔️ Anonymous inner class (Анонимный класс).
❓Какие типы классов бывают в Java?
☕️ Top level class (Обычный класс):
✔️ Abstract class (Абстрактный класс);
✔️ Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
✔️ Static nested class (Статический вложенный класс);
✔️ Member inner class (Простой внутренний класс);
✔️ Local inner class (Локальный класс);
✔️ Anonymous inner class (Анонимный класс).
👍35
Возведение в степень
Возвести число в степень можно двумя способами:
1)простое умножение;
2)используя метод Math.pow() (двойное основание, двойной показатель степени).
Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.
Возвести число в степень можно двумя способами:
1)простое умножение;
2)используя метод Math.pow() (двойное основание, двойной показатель степени).
Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.
👍29
#Вопросы_с_собеседования
❓LinkedList — это односвязный, двусвязный или четырехсвязный список?
Ответ:
Двусвязный: каждый элемент LinkedList хранит ссылку на предыдущий и следующий элементы.
❓LinkedList — это односвязный, двусвязный или четырехсвязный список?
Ответ:
👍35👎1