Какие классы позволяют ускорить чтение/запись за счет использования буфера?
•
•
•
•
BufferedInputStream(InputStream in)
/ BufferedInputStream(InputStream in, int size)
,•
BufferedOutputStream(OutputStream out)
/BufferedOutputStream(OutputStream out, int size)
,•
BufferedReader(Reader r)
/BufferedReader(Reader in, int sz),
• BufferedWriter(Writer out)
/BufferedWriter(Writer out, int sz)
#вопросы_с_собеседований
Какой класс предназначен для работы с элементами файловой системы?
Какой класс предназначен для работы с элементами файловой системы?
File
работает непосредственно с файлами и каталогами. Данный класс позволяет создавать новые элементы и получать информацию существующих: размер, права доступа, время и дату создания, путь к родительскому каталогу.AssertJ как способ значительно улучшить код ваших тестов
В 2019-2020 годах на одном из проектов я был идейным вдохновителем перехода на JUnit 5. Для проверок мы использовали стандартные ассерты и Hamcrest. Тогда мне казалось, что этого более чем достаточно.
За последние пару лет, несмотря на менеджерскую позицию, я написал свыше пятисот тестов, и мой подход к тестированию претерпел значительные изменения. В этой статье я постараюсь объяснить, почему AssertJ — это лучшее решение для проверок в тестах, существующее сегодня (год 2022 от Р.X.). Разумеется, всё ниже сказанное — это моё субъективное мнение.
Читать статью
В 2019-2020 годах на одном из проектов я был идейным вдохновителем перехода на JUnit 5. Для проверок мы использовали стандартные ассерты и Hamcrest. Тогда мне казалось, что этого более чем достаточно.
За последние пару лет, несмотря на менеджерскую позицию, я написал свыше пятисот тестов, и мой подход к тестированию претерпел значительные изменения. В этой статье я постараюсь объяснить, почему AssertJ — это лучшее решение для проверок в тестах, существующее сегодня (год 2022 от Р.X.). Разумеется, всё ниже сказанное — это моё субъективное мнение.
Читать статью
Telegraph
AssertJ как способ значительно улучшить код ваших тестов
Привет! В 2019-2020 годах на одном из проектов я был идейным вдохновителем перехода на JUnit 5. Для проверок мы использовали стандартные ассерты и Hamcrest. Тогда мне казалось, что этого более чем достаточно. Один из наших lead-инженеров предлагал AssertJ как…
#вопросы_с_собеседований
Какие методы класса File вы знаете?
Наиболее используемые методы класса File:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Какие методы класса File вы знаете?
Наиболее используемые методы класса File:
•
boolean createNewFile()
: делает попытку создать новый файл;•
boolean delete()
: делает попытку удалить каталог или файл;•
boolean mkdir()
: делает попытку создать новый каталог;•
boolean renameTo(File dest)
: делает попытку переименовать файл или каталог;•
boolean exists()
: проверяет, существует ли файл или каталог;•
String getAbsolutePath()
: возвращает абсолютный путь для пути, переданного в конструктор объекта;•
String getName()
: возвращает краткое имя файла или каталога;•
String getParent()
: возвращает имя родительского каталога;•
boolean isDirectory()
: возвращает значение true
, если по указанному пути располагается каталог;•
boolean isFile()
: возвращает значение true
, если по указанному пути находится файл;•
boolean isHidden()
: возвращает значение true
, если каталог или файл являются скрытыми;•
long length()
: возвращает размер файла в байтах;•
long lastModified()
: возвращает время последнего изменения файла или каталога;•
String[] list()
: возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;•
File[] listFiles()
: возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.🔥 Бесплатная Live coding сессия, где будем решать задачу с собеседования в международную FinTech компанию
В прямом эфире Роман Оборин, Senior Java Developer в BNP Paribas и преподаватель курса Middle Java Dev, проведет Live coding сессию по написанию объектно-ориентированного кода на Java, покрытого разными типами тестов: Unit, Integration, Stress.
На Live сoding ты сможешь понаблюдать, как пишет код Senior-разработчик, прокомментировать процесс и решить реальную задачу, которую дают на собеседованиях. Ну и конечно, прокачаешь свои hard skills:
— Структурируешь знания по принципам SOLID
— Прокачаешь знания по разным видам тестирования, в том числе многопоточных программ
— Подготовишься к техническому интервью с этапом Live coding
🚀 Стартуем 14 июля в 19:00 по мск
Регистрируйся бесплатно: https://cutt.ly/aLl5hVI
В прямом эфире Роман Оборин, Senior Java Developer в BNP Paribas и преподаватель курса Middle Java Dev, проведет Live coding сессию по написанию объектно-ориентированного кода на Java, покрытого разными типами тестов: Unit, Integration, Stress.
На Live сoding ты сможешь понаблюдать, как пишет код Senior-разработчик, прокомментировать процесс и решить реальную задачу, которую дают на собеседованиях. Ну и конечно, прокачаешь свои hard skills:
— Структурируешь знания по принципам SOLID
— Прокачаешь знания по разным видам тестирования, в том числе многопоточных программ
— Подготовишься к техническому интервью с этапом Live coding
🚀 Стартуем 14 июля в 19:00 по мск
Регистрируйся бесплатно: https://cutt.ly/aLl5hVI
Сравнение виртуальных и обычных потоков в Java
Мы все знаем и ждем Project Loom для виртуальных потоков и надеемся на бесплатное ускорение своих приложений без или почти без изменения их кода.
Примеры с запуском миллиона потоков все уже видели и они скучные. А какое ускорение будет на самом деле в реальных примерах использования многопоточности в нормально написанном проекте?
Читать статью
Мы все знаем и ждем Project Loom для виртуальных потоков и надеемся на бесплатное ускорение своих приложений без или почти без изменения их кода.
Примеры с запуском миллиона потоков все уже видели и они скучные. А какое ускорение будет на самом деле в реальных примерах использования многопоточности в нормально написанном проекте?
Читать статью
Telegraph
Сравнение виртуальных и обычных потоков в Java
Я люблю стректрейсы и понятный линейный код. И соответственно не люблю реактивщину. Все примеры будут нереактивными с последовательным понятным кодом. Примеры запускались на доступной сегодня jdk. openjdk version "19-loom" 2022-09-20 OpenJDK Runtime Environment…
Делаем микросервисы на Java 😎
Пишете Java-приложения? У вас есть два пути:
🔹 Делать монолитную архитектуру и разрабатывать ПО как единое целое
🔹 Разбить большое приложение на микросервисы и наладить между ними связь
И у второго пути масса преимуществ!
✅ Легче ловить сбои и приводить приложение в порядок
✅ Отдельные компоненты можно масштабировать, при этом не придётся переписывать всю систему
✅ Разные микросервисы — разные технологии разработки
✅ Можно обновлять приложение по отдельным частям
✅ Разработка микросервиса легче, чем монолита
Интересно? Тогда записывайтесь на наш курс по микросервисам на Java.
Вы научитесь:
🔸 Делать микросервисы на Java и Kotlin
🔸 Работать с инструментами для разработки микросервисов
🔸 Использовать популярный Java-фреймворк Spring Boot
Знания прямо по ходу курса можно использовать в работе.
Купите место на курсе по сниженной цене — всего 20 000 рублей. Повышаем цены уже 15 июля.
Старт курса 20 августа, программа и запись на нашем сайте: https://slurm.club/3awhAKa
Пишете Java-приложения? У вас есть два пути:
🔹 Делать монолитную архитектуру и разрабатывать ПО как единое целое
🔹 Разбить большое приложение на микросервисы и наладить между ними связь
И у второго пути масса преимуществ!
✅ Легче ловить сбои и приводить приложение в порядок
✅ Отдельные компоненты можно масштабировать, при этом не придётся переписывать всю систему
✅ Разные микросервисы — разные технологии разработки
✅ Можно обновлять приложение по отдельным частям
✅ Разработка микросервиса легче, чем монолита
Интересно? Тогда записывайтесь на наш курс по микросервисам на Java.
Вы научитесь:
🔸 Делать микросервисы на Java и Kotlin
🔸 Работать с инструментами для разработки микросервисов
🔸 Использовать популярный Java-фреймворк Spring Boot
Знания прямо по ходу курса можно использовать в работе.
Купите место на курсе по сниженной цене — всего 20 000 рублей. Повышаем цены уже 15 июля.
Старт курса 20 августа, программа и запись на нашем сайте: https://slurm.club/3awhAKa
#вопросы_с_собеседований
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Метод
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Метод
File.listFiles
возвращает массив объектов File
, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter
. Это позволяет включить в список только те элементы, для которых метод accept
возвращает true
(критерием может быть длина имени файла или его расширение).Это приглашение на «быстрое свидание» с работой мечты в команде Сбера.
One Day Offer — самый короткий путь до оффера. Пройти собеседование и получить ответ в тот же день можно 16 и 17 июля по двум вакансиям: Data Engineer в ИТ-команду «Комплаенс» и Java Developer в ИТ-подразделение «Сеть продаж».
Как это работает?
Шаг 1. 16 июля или 17 июля (в зависимости от вакансии) подключитесь к онлайн-интервью.
Шаг 2. Получите предложение о работе, о которой мечтали, в тот же день.
Шаг 3. А дальше — вместе со своей командой разрабатывайте крутые и важные продукты Сбера.
Прочитать подробнее о вакансиях и отправить заявку на участие в One Day Offer можно здесь.
One Day Offer — самый короткий путь до оффера. Пройти собеседование и получить ответ в тот же день можно 16 и 17 июля по двум вакансиям: Data Engineer в ИТ-команду «Комплаенс» и Java Developer в ИТ-подразделение «Сеть продаж».
Как это работает?
Шаг 1. 16 июля или 17 июля (в зависимости от вакансии) подключитесь к онлайн-интервью.
Шаг 2. Получите предложение о работе, о которой мечтали, в тот же день.
Шаг 3. А дальше — вместе со своей командой разрабатывайте крутые и важные продукты Сбера.
Прочитать подробнее о вакансиях и отправить заявку на участие в One Day Offer можно здесь.
developers.sber.ru
Нам нужны Java Developer и Data Engineer | Мероприятия Цифровой витрины
Нам нужны Java Developer и Data Engineer. Возможность стать частью команды Сбера за один день .
Рефлексия (Reflection) — это механизм получения данных о программе во время её выполнения (runtime). В Java Reflection осуществляется с помощью Java Reflection API, состоящего из классов пакетов java.lang и java.lang.reflect.
Возможности Java Reflection API:
✔️Определение класса объекта;
✔️Получение информации о модификаторах класса, полях, методах, конструкторах и суперклассах;
✔️Определение интерфейсов, реализуемых классом;
✔️Создание экземпляра класса;
✔️Получение и установка значений полей объекта;
✔️Вызов методов объекта;
✔️Создание нового массива.
Возможности Java Reflection API:
✔️Определение класса объекта;
✔️Получение информации о модификаторах класса, полях, методах, конструкторах и суперклассах;
✔️Определение интерфейсов, реализуемых классом;
✔️Создание экземпляра класса;
✔️Получение и установка значений полей объекта;
✔️Вызов методов объекта;
✔️Создание нового массива.
#вопросы_с_собеседований
Существует ли возможность перенаправить потоки стандартного ввода/вывода?
Класс System позволяет вам перенаправлять стандартный ввод, вывод и поток вывода ошибок, используя простой вызов статического метода:
•
•
•
Существует ли возможность перенаправить потоки стандартного ввода/вывода?
Класс System позволяет вам перенаправлять стандартный ввод, вывод и поток вывода ошибок, используя простой вызов статического метода:
•
setIn(InputStream)
- для ввода;•
setOut(PrintStream)
- для вывода;•
setErr(PrintStream)
- для вывода ошибок.#вопросы_с_собеседований
Может ли значение в столбце, на который наложено ограничение FOREIGN KEY, равняться NULL?
Может, если на данный столбец не наложено ограничение NOT NULL.
Может ли значение в столбце, на который наложено ограничение FOREIGN KEY, равняться NULL?
Может, если на данный столбец не наложено ограничение NOT NULL.
Как написать свой первый автотест за 1 час?
Посетить открытое занятие курса "Автоматизация тестирования на Java" от ребят из школы автоматизации QA.GURU бесплатное открытое занятие состоится 20-го июля в 20:00 МСК.
Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажем о рынке QA. Кто, кому, за что и сколько платит?
— Покажем боевой проект с полной инфраструктурой (Web, mobile, API)
— Дадим домашнее задание и проверим его у всех участников.
Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
Посетить открытое занятие курса "Автоматизация тестирования на Java" от ребят из школы автоматизации QA.GURU бесплатное открытое занятие состоится 20-го июля в 20:00 МСК.
Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажем о рынке QA. Кто, кому, за что и сколько платит?
— Покажем боевой проект с полной инфраструктурой (Web, mobile, API)
— Дадим домашнее задание и проверим его у всех участников.
Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
#вопросы_с_собеседований
Что такое «абсолютный путь» и «относительный путь»?
Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.
Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.
Что такое «абсолютный путь» и «относительный путь»?
Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.
Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.
#вопросы_с_собеседований
Что такое «символьная ссылка»?
Символьная (символическая) ссылка (также «
Символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как:
• позволяют для одного файла или каталога иметь несколько имён и различных атрибутов;
• свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одной файловой системы (одного раздела) и не могут ссылаться на каталоги).
Что такое «символьная ссылка»?
Символьная (символическая) ссылка (также «
симлинк
», Symbolic link
) — специальный файл в файловой системе, в котором, вместо пользовательских данных, содержится путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Целью ссылки может быть любой объект: например, другая ссылка, файл, каталог или даже несуществующий файл (в последнем случае, при попытке открыть его, должно выдаваться сообщение об отсутствии файла).Символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как:
• позволяют для одного файла или каталога иметь несколько имён и различных атрибутов;
• свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одной файловой системы (одного раздела) и не могут ссылаться на каталоги).
Java-разработчики, новость для вас: с 5 по 20 августа на платформе All Cups пройдёт онлайн-чемпионат IT_One Cup.Java, организованный совместно Сколково и IT_ONE.
Вы сможете проверить свои силы в интересных задачах и выиграть денежные призы — до 250 тысяч рублей. К участию приглашаем разработчиков уровня Middle и Senior.
👉 Регистрируйтесь до 10 августа: https://vk.cc/cfb7Yg
🔹Участников ждёт два этапа — квалификационный раунд и финал. Задача — реализовать сервис, который соответствует определённому API и способен пройти все проверки тестирующей системы.
🔹Денежные призы получат первые пять мест, топ-20 участникам подарим мерч, а самых талантливых ребят пригласим на работу в компанию IT_ONE.
Вы сможете проверить свои силы в интересных задачах и выиграть денежные призы — до 250 тысяч рублей. К участию приглашаем разработчиков уровня Middle и Senior.
👉 Регистрируйтесь до 10 августа: https://vk.cc/cfb7Yg
🔹Участников ждёт два этапа — квалификационный раунд и финал. Задача — реализовать сервис, который соответствует определённому API и способен пройти все проверки тестирующей системы.
🔹Денежные призы получат первые пять мест, топ-20 участникам подарим мерч, а самых талантливых ребят пригласим на работу в компанию IT_ONE.
#вопросы_с_собеседований
Что такое «сериализация»?
Сериализация (Serialization) - процесс преобразования структуры данных в линейную последовательность байтов для дальнейшей передачи или сохранения. Сериализованные объекты можно затем восстановить (десериализовать).
В
Сериализация позволяет в определенных пределах изменять класс. Вот наиболее важные изменения, с которыми спецификация
• добавление в класс новых полей;
• изменение полей из статических в нестатические;
• изменение полей из транзитных в нетранзитные.
Обратные изменения (из нестатических полей в статические и из нетранзитных в транзитные) или удаление полей требуют определенной дополнительной обработки в зависимости от того, какая степень обратной совместимости необходима.
Что такое «сериализация»?
Сериализация (Serialization) - процесс преобразования структуры данных в линейную последовательность байтов для дальнейшей передачи или сохранения. Сериализованные объекты можно затем восстановить (десериализовать).
В
Java
, согласно спецификации Java Object Serialization
существует два стандартных способа сериализации: стандартная сериализация, через использование интерфейса java.io.Serializable
и «расширенная» сериализация - java.io.Externalizable
.Сериализация позволяет в определенных пределах изменять класс. Вот наиболее важные изменения, с которыми спецификация
Java Object Serialization
может справляться автоматически:• добавление в класс новых полей;
• изменение полей из статических в нестатические;
• изменение полей из транзитных в нетранзитные.
Обратные изменения (из нестатических полей в статические и из нетранзитных в транзитные) или удаление полей требуют определенной дополнительной обработки в зависимости от того, какая степень обратной совместимости необходима.
#вопросы_с_собеседований
Опишите процесс сериализации/десериализации с использованием Serializable.
При использовании
• запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор
• рекурсивную запись в поток описания суперклассов до класса
• запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса;
• рекурсивную запись объектов, которые являются полями сериализуемого объекта.
При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками.
Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.
Опишите процесс сериализации/десериализации с использованием Serializable.
При использовании
Serializable
применяется алгоритм сериализации, который с помощью рефлексии (Reflection API
) выполняет:• запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор
SerialVersionUID
, идентификаторы полей класса);• рекурсивную запись в поток описания суперклассов до класса
java.lang.Object
(не включительно);• запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса;
• рекурсивную запись объектов, которые являются полями сериализуемого объекта.
При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками.
Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.
Java-разработчики ЦВТ создают сервисы для наших ключевых клиентов: самой дорогой компании Рунета, крупнейшего частного банка в России и онлайн-банка в мире.
Приглашаем тебя вместе с нами создавать продукты с миллионами пользователей и петабайтами данных.
Пиши @KhisamovaS, что ты от канала Библиотека джависта и стань частью одной из продуктовых команд.
Приглашаем тебя вместе с нами создавать продукты с миллионами пользователей и петабайтами данных.
Пиши @KhisamovaS, что ты от канала Библиотека джависта и стань частью одной из продуктовых команд.
#вопросы_с_собеседований
Как изменить стандартное поведение сериализации/десериализации?
• Реализовать интерфейс
• Если у сериализуемого объекта реализован один из следующих методов, то механизм сериализации будет использовать его, а не метод по умолчанию :
○
○
○
○
Как изменить стандартное поведение сериализации/десериализации?
• Реализовать интерфейс
java.io.Externalizable
, который позволяет применение пользовательской логики сериализации. Способ сериализации и десериализации описывается в методах writeExternal()
и readExternal()
. Во время десериализации вызывается конструктор без параметров, а потом уже на созданном объекте вызывается метод readExternal
.• Если у сериализуемого объекта реализован один из следующих методов, то механизм сериализации будет использовать его, а не метод по умолчанию :
○
writeObject()
- запись объекта в поток;○
readObject()
- чтение объекта из потока;○
writeReplace()
- позволяет заменить себя экземпляром другого класса перед записью;○
readResolve()
- позволяет заменить на себя другой объект после чтения.