#вопросы_с_собеседований
Какие классы поддерживают чтение и запись потоков в компрессированном формате?
☕️ DeflaterOutputStream — компрессия данных в формате deflate.
☕️ Deflater — компрессия данных в формат ZLIB.
☕️ ZipOutputStream — потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream — потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream — декомпрессия данных в формате deflate.
☕️ Inflater — декомпрессия данных в формате ZLIB.
☕️ ZipInputStream — потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream — потомок InflaterInputStream для декомпрессии данных в формате GZIP.
Какие классы поддерживают чтение и запись потоков в компрессированном формате?
☕️ DeflaterOutputStream — компрессия данных в формате deflate.
☕️ Deflater — компрессия данных в формат ZLIB.
☕️ ZipOutputStream — потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream — потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream — декомпрессия данных в формате deflate.
☕️ Inflater — декомпрессия данных в формате ZLIB.
☕️ ZipInputStream — потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream — потомок InflaterInputStream для декомпрессии данных в формате GZIP.
👍12
📌 Разработка на Java (видеокурс)
1. Знакомство с платформой Java
2. Базовые конструкции языка
3. Объектно-ориентированное программирование
4. Исключения. Reflection API
5. Коллекции и параметризация
6. Взаимодействие потоков
7. Внутренние и анонимные классы
8. Работа с базой данных
9. Сокеты, разбор задачи Мессенджер
10. Основы тестирования
11. Потоки
12. NIO
13. Тестирование
14. Memory Model
1. Знакомство с платформой Java
2. Базовые конструкции языка
3. Объектно-ориентированное программирование
4. Исключения. Reflection API
5. Коллекции и параметризация
6. Взаимодействие потоков
7. Внутренние и анонимные классы
8. Работа с базой данных
9. Сокеты, разбор задачи Мессенджер
10. Основы тестирования
11. Потоки
12. NIO
13. Тестирование
14. Memory Model
👍22
#Вопросы_с_собеседования
Сколько объектов типа String создает эта программа?
Ответ:
Программа создаст два string-объекта. Когда мы создаем строку, используя оператор new, она сначала создастся в Java String Pool и только потом в куче (heap memory). Но только при условии, что этой строки ещё нет в пуле Java String.
Сколько объектов типа String создает эта программа?
Ответ:
👍34🤔5😱5
#Вопросы_с_собеседования
❓Как принудительно запустить поток?
Ответ:
Никак. В Java не существует абсолютно никакого способа принудительного запуска потока. Это контролируется JVM и Java не предоставляет никакого API для управления этим процессом.
❓Как принудительно запустить поток?
Ответ:
👍32
63 маленьких видео по фичам IntelliJ IDEA
https://youtube.com/playlist?list=PLG1Jgal0l0oiyoa9ba894ggu031z2YzYr
https://youtube.com/playlist?list=PLG1Jgal0l0oiyoa9ba894ggu031z2YzYr
YouTube
IntelliJ IDEA Tips & Tricks (Java)
You can find interesting tips & tricks for using IntelliJ IDEA for drastically improving your productivity. This playlist has videos that cover keyboard shor...
👍18
#Вопросы_с_собеседования
❓Что такое «абсолютный путь» и «относительный путь»?
Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.
Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.
❓Что такое «абсолютный путь» и «относительный путь»?
Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.
Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.
👍16
#Вопросы_с_собеседования
❓Чем различаются JRE, JVM и JDK?
TL;DR: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
☕️ JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
☕️ JRE, Java Runtime Environment (Среда времени выполнения Java) — минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
☕️ JDK, Java Development Kit (Комплект разработки на Java) — JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
❓Чем различаются JRE, JVM и JDK?
TL;DR: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
☕️ JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
☕️ JRE, Java Runtime Environment (Среда времени выполнения Java) — минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
☕️ JDK, Java Development Kit (Комплект разработки на Java) — JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
👍34❤1
Что такое полиморфизм?
Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта. Как говорится, один интерфейс — множество реализаций.
При помощи полиморфизма можно объединять и использовать разные типы объектов по их общему поведению.
Например, есть у нас класс Animal, у которого есть два наследника — Dog и Cat. У общего класса Animal есть общее поведение для всех — издавать звук. В случае, когда нужно собрать воедино всех наследников класса Animal и выполнить метод “издавать звук”, используем возможности полиморфизма. Вот как будет это выглядеть(см картинку).
Таким образом, полиморфизм помогает нам. Причем это относится и к полиморфным (перегруженным) методам.
Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта. Как говорится, один интерфейс — множество реализаций.
При помощи полиморфизма можно объединять и использовать разные типы объектов по их общему поведению.
Например, есть у нас класс Animal, у которого есть два наследника — Dog и Cat. У общего класса Animal есть общее поведение для всех — издавать звук. В случае, когда нужно собрать воедино всех наследников класса Animal и выполнить метод “издавать звук”, используем возможности полиморфизма. Вот как будет это выглядеть(см картинку).
Таким образом, полиморфизм помогает нам. Причем это относится и к полиморфным (перегруженным) методам.
👍23😢1
Бинарный поиск в массивах
Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.
Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.
Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.
Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.
👍11🤔3
Дорожная карта Java-разработчика в 2023 году: путь с нуля до первой работы
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Смотреть статью
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Смотреть статью
Библиотека программиста
☕🛣️ Дорожная карта Java-разработчика в 2023 году: путь с нуля до первой работы
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
👍9
#Вопросы_с_собеседования
Что выведет эта программа?
Ответ:
Программа напечатает “String method”. Прежде всего стоит отметить, что null не является объектом в Java. Но null можно присвоить любой ссылке. Java String является объектом класса java.lang.String. В этой программе компилятор Java выбирает вызов перегруженного метода с наиболее конкретными параметрами. Это будет String, потому что класс String более конкретен, чем класс Object.
Что выведет эта программа?
Ответ:
👍49😱25❤1
#Вопросы_с_собеседования
❓Что такое «поток-демон»(daemon thread)?
Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.
В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.
❓Что такое «поток-демон»(daemon thread)?
Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.
В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.
👍26🤔1
Java Learning
#Вопросы_с_собеседования ❓Что такое «поток-демон»(daemon thread)? Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы. В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже…
#Вопросы_с_собеседования
❓Как создать поток-демон?
Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true).
Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon().
❓Как создать поток-демон?
Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true).
Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon().
👍19
#вопросы_с_собеседований
Как получить текущую дату с использованием Date Time API из Java 8?
Как получить текущую дату с использованием Date Time API из Java 8?
LocalDate.now();
Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?LocalDate.now().plusWeeks(1);
LocalDate.now().plusMonths(1);
LocalDate.now().plusYears(1);
LocalDate.now().plus(1, ChronoUnit.DECADES);👍27
В чем разница между sleep() и wait(), notify() и notifyAll() методами?
Метод sleep()заставляет поток "заснуть" на определенное время(указывается в миллисекундах) после чего поток продолжит свою работу. Метод wait() освобождает монитор занятый потоком так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting - поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll()в том что notify() "высвободит" один поток(какой именно определить нельзя) а notifyAll() "освободит" все потоки из состояния waiting в состояние running.
Метод sleep()заставляет поток "заснуть" на определенное время(указывается в миллисекундах) после чего поток продолжит свою работу. Метод wait() освобождает монитор занятый потоком так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting - поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll()в том что notify() "высвободит" один поток(какой именно определить нельзя) а notifyAll() "освободит" все потоки из состояния waiting в состояние running.
👍20