seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

Метод PutAll()

Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.

Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.

Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.

#это_база

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как связан любой пользовательский класс с классом Object?

В Java все классы неявно наследуются от класса Object.
Это означает, что:

— Любой пользовательский класс получает методы класса Object, такие как equals, hashCode, toString и другие.
— Любой объект в Java является экземпляром класса Object.
— Можно приводить любой объект к типу Object без явного преобразования типов.
— Класс Object находится в root пакете java.lang, поэтому доступен без импортирования.
— Класс Object является предком иерархии всех классов, поэтому методы Object подходят для любого объекта.

Таким образом, наследование от Object делает полиморфизм в Java универсальным и избавляет от необходимости реализовывать базовые методы в каждом классе.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как влияет модификатор static на класс/метод/поле?

Для класса — позволяет создать static-класс, экземпляры которого создавать нельзя. Используется для создания утилитных классов.

Для метода — делает метод статическим, то есть он может быть вызван без создания экземпляра класса.

Для поля — создает поле, общее для всех экземпляров класса. Статическое поле существует в единственном экземпляре для класса.

Если кратко, static позволяет создавать классы/методы/поля, связанные с классом, а не с экземпляром.
Это удобно, когда нужно реализовать утилитные классы или объекты, общие для всех экземпляров.

Читать полностью…

Senior Java Developer

Single Responsibility Principle (SRP)

Принцип единственной ответственности (Single Responsibility Principle) говорит, что каждый класс должен иметь только одну ответственность или одну причину для изменения.
Это означает, что класс должен быть сфокусирован на выполнении только одной функции или задачи.

Например, класс, представляющий пользователя, должен быть ответственен только за хранение данных о пользователе, таких как имя, адрес электронной почты и т. д. Если этот класс также отвечает за отправку email пользователю или сохранение пользователя в базу данных, он нарушает принцип SRP, потому что эти дополнительные функции должны быть вынесены в отдельные классы.

Соблюдение SRP помогает сделать код более поддерживаемым, поскольку каждый класс имеет четко определенную роль и легче понять. Это также упрощает тестирование и повторное использование кода.
Принцип SRP широко используется при проектировании классов и API в Java.

Читать полностью…

Senior Java Developer

Ты Java-Разработчик уровня Senior?
Значит встречаемся  на  USETECH Offer Weekend!

Мечтаешь работать в аккредитованной IT-компании с интересными проектами и развитой корпоративной культурой? Отправь резюме, пройди собеседование и получи предоффер в ГК Юзтех за выходные!

🗓 Даты offer weekend: 23-24 сентября 2023 года    
❗️Формат: онлайн
📌 Дедлайн регистрации: 18 сентября 23:59    

💥Что мы предлагаем:
- Конкурентную заработную плату
- Интересные задачи
- Условия работы в соответствии с ТК РФ + социальный пакет
- Формат работы — удаленно или в офисе
- Классную команду и корпоративные мероприятия
- Гибкий рабочий график

📌Зарегестрируйся, пройди собеседование и получи предоффер: https://tglink.io/347e3c65e10d 

Читать полностью…

Senior Java Developer

Изучите основы Java и разработайте приложение, даже если никогда прежде не программировали

Java — один из самых востребованных и доступных для освоения языков программирования. Его используют для создания сайтов, мобильных и десктоп-приложений, даже игр.

На бесплатном онлайн-курсе «Основы разработки на Java» за 4 занятия вы изучите основы синтаксиса языка Java и поймёте, подходит ли он вам, а в качестве практики разработаете приложение для публикации фото из NASA, а после сделаете на основе этого приложения Telegram-бота.

Записаться на бесплатный курс → https://netolo.gy/b5Sa

Реклама. ООО «Нетология» LatgC7YCc

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что будет, если в static блоке кода возникнет исключение?

Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса.
Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс.

Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям.
Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса.

Читать полностью…

Senior Java Developer

Ключевое слово let

Ключевое слово let используется для объявления переменных в блоке кода.
Оно позволяет ограничить область видимости переменной только этим блоком.

let помогает избежать загрязнения глобальной области видимости и конфликтов имен переменных.

Кроме того, let позволяет повторно объявить переменную с тем же именем во вложенном блоке. Это бывает удобно, когда во вложенном блоке нужна локальная переменная с таким же названием.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Что будет, если в Map положить два значения с одинаковым ключом?

Если в Map положить два значения с одинаковым ключом, то произойдет следующее:

— При добавлении второго значения с уже существующим ключом, первое значение, связанное с этим ключом, будет перезаписано.

Map может содержать только уникальные ключи. При попытке добавить дублирующийся ключ, старое связанное значение будет заменено новым.

— Конкретная реализация Map (например, HashMap) может бросить исключение, если попытаться добавить дублирующийся ключ.

Таким образом, поведение в такой ситуации зависит от конкретной реализации интерфейса Map, но в целом дублирующиеся ключи в Map запрещены.

Читать полностью…

Senior Java Developer

Конвертируем массив в список

Arrays.asList() — это статический метод класса Arrays, который позволяет конвертировать обычный массив в список List.

— Принимает массив в качестве аргумента и возвращает объект типа List с элементами этого массива.

— Возвращаемый список имеет фиксированный размер, равный длине исходного массива. Добавлять/удалять элементы в него нельзя.

— Изменения в возвращаемом списке будут вноситься в исходный массив, т. к. список работает как "представление" массива. Метод работает для массивов примитивных и ссылочных типов.

Arrays.asList хорош для чтения элементов массива, но не для записи из-за неизменяемого размера.

#это_база

Читать полностью…

Senior Java Developer

Ищем Java Разработчика уровня Senior/Middle на крупные, интересные  проекты.

- Гибкий график и “честная удаленка”.
- Комфортные офисы в центре СПб и Воронежа.
- ДМС, 3 оплачиваемых day off.
- Возможность развиваться в кругу экспертов и влиять на рост комьюнити.

Кто мы? 
Компания ITentika - это 200+ экспертов в ИТ-консалтинге, проектировании и  разработке сложных ИТ-систем, помогающих бизнесу становиться лидером в своем сегменте. 

А еще у нас:
✔️ Аккредитация IT.
✔️ 25+ лет опыта в международной разработке.
✔️ Сотрудничество с крупными стабильными клиентами.
✔️ Бережное отношение к персоналу и демократичность.

Подробнее о вакансии Senior/Middle Java Developer в ITentika здесь https://tglink.io/b69576e77720 

Реклама. ООО "АЙТЕНТИКА". ИНН 4715018532. erid: LjN8KD9ZM

Читать полностью…

Senior Java Developer

⚡️ Открытый урок от Team Lead Software Architect

📢📢 7 сентября в 20:00 мск состоится бесплатный открытый урок «Масштабирование приложения и деление на сервисы» в рамках курса «Software Architect» от практикующего специалиста с огромным международным опытом Сергея Ефимова.

💡 На занятии рассмотрим:

- Избегание узких мест в архитектуре и различные стратегии для предотвращения их возникновения.
- Балансировка, кэширование и другие методы оптимизации.
- Выбор правильного подхода к масштабированию БД для решения задач.
- Вертикальное и горизонтальное масштабирование, шардинг и репликация.
- Как выбрать наиболее подходящий вариант для вашего приложения.
- Преимущества и недостатки каждого подхода.

Это не записанный вебинар, а живой эфир, во время которого вы сможете задать преподавателю любые вопросы в режиме реального времени!

➡️ Для записи ну урок, нужно пройти тестирование - https://otus.pw/pbLM/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Java Developer

Интерфейс Comparator

Интерфейс Comparator используется для реализации произвольной сортировки элементов коллекции.
В отличие от Comparable, где порядок сравнения "встроен" в класс, Comparator позволяет задавать нужный порядок сортировки вне класса.

Comparator содержит единственный метод compare, который принимает два объекта и возвращает целое число, показывающее соотношение объектов.
Чтобы задать свой порядок сортировки, нужно создать класс, реализующий Comparator, и переопределить метод compare.

Comparator часто используется для сортировки объектов в коллекциях как альтернатива их естественному порядку.

В примере мы определили компаратор LastNameComparator, который сравнивает студентов по фамилии.
При сортировке списка передали этот компаратор, и студенты отсортировались по фамилии, а не по среднему баллу.

Читать полностью…

Senior Java Developer

Интерфейс Comparable

Интерфейс Comparable используется для поддержки сортировки элементов коллекции.
Он содержит единственный метод compareTo, который сравнивает текущий объект с переданным объектом. Метод возвращает значение меньше нуля, если текущий объект меньше переданного, больше нуля если текущий объект больше, и ноль если объекты равны.

Чтобы ваш класс стал сравниваемым, он должен реализовывать интерфейс Comparable и переопределить метод compareTo.

Реализация Comparable позволяет сортировать экземпляры класса с помощью методов Collections.sort и Arrays.sort. Также она используется в TreeSet и TreeMap для корректного упорядочивания элементов.

В примере реализован метод compareTo, который сравнивает средний балл текущего и переданного студента.
После создания списка студентов мы отсортировали его методом Collections.sort. Благодаря Comparable студенты расположились в порядке возрастания среднего балла.

Читать полностью…

Senior Java Developer

🚀 Освойте основные паттерны проектирования и научитесь применять их в сложных ситуациях на онлайн-курсе «Архитектура и шаблоны проектирования» в OTUS.

Пройдите вступительный тест и узнайте, осилите ли вы уровень курса. Результат теста получите сразу.

👉 ПРОЙТИ ХАРДКОРНЫЙ ТЕСТ ПО ПАТТЕРНАМ

 Сможете успешно пройти тест — получите доступ к курсу по специальной цене! Курс доступен в рассрочку.

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Java Developer

Класс Runtime

Класс Runtime представляет виртуальную машину Java (JVM) во время выполнения программы.
Он позволяет взаимодействовать с окружением выполнения программы.

Основные возможности:
— Получение общей информации о среде выполнения, такой как количество процессоров, свободная память.
— Запуск внешних процессов и приложений. Можно запустить другие программы из Java-кода.
— Выполнение системных вызовов, таких как выход из приложения.
— Динамическая загрузка библиотек во время выполнения.
— Выделение дополнительной памяти для приложения.
— Добавление и удаление шатдаун-хуков - действий перед завершением приложения.

Объект Runtime создается методом getRuntime(). Он singleton — в приложении всегда один объект Runtime.
Класс полезен для мониторинга и управления запущенным приложением из кода.

#это_база

Читать полностью…

Senior Java Developer

Айтишники, у вас бывало такое: пишете код и думаете, что он достоин Нобелевской премии, Оскара и всех наград этого мира? 💎

Тогда вам точно нужно попробовать свои силы в Конкурсе красоты кода, который запустил Сбер специально ко Дню программиста. Чтобы побороться за звание «Автор самого красивого кода» и получить один из пятнадцати iPhone 14, нужно:

✔️ Выбрать дисциплину по душе и скилам: Python, Java, Data Science, Frontend или Android.
✔️ Написать свой эталонный код до 18 сентября по ссылке.
✔️ Дождаться результатов — их объявят 21 сентября.

Переходи по ссылке, читай подробности, и вперёд — к коду мечты 💚

Читать полностью…

Senior Java Developer

CyclicBarrier

CyclicBarrierэто инструмент синхронизации потоков, который позволяет группе потоков ждать друг друга в определенной точке.

CyclicBarrier инициализируется с указанием количества потоков, которые должны собраться в барьере. Когда каждый поток достигает барьера вызовом метода await(), он блокируется до тех пор, пока все потоки не достигнут этой точки.
После этого все потоки разблокируются и продолжают работу.

Основная область использования CyclicBarrier — это параллельные вычисления.
CyclicBarrier удобен, когда нужна синхронизация нескольких потоков в фиксированной точке. Это позволяет эффективно распределить вычисления или операции ввода-вывода.

Читать полностью…

Senior Java Developer

Класс FileWriter

FileWriter предназначен для записи символьных данных в файлы. Он позволяет записывать данные в файл посимвольно.
Для использования FileWriter нужно создать экземпляр класса, передав в конструктор путь к файлу, куда будет производиться запись.

— Метод write() записывает один символ или массив символов в файл.
— Метод flush() принудительно записывает все буферизированные данные в файл.
— После завершения работы поток ToFileWriter нужно закрыть методом close().

FileWriter удобно использовать для записи текстовых данных. Для записи примитивных типов лучше подходит класс FileOutputStream.
При записи в существующий файл данные добавляются в конец, файл не перезаписывается. А для перезаписи файла при создании FileWriter нужно указать вторым параметром true.

#это_база

Читать полностью…

Senior Java Developer

Ключевое слово new

new используется для создания нового экземпляра класса. После ключевого слова new указывается название класса, затем в круглых скобках — параметры конструктора, если они нужны.
При вызове new выделяется память для нового объекта, вызывается конструктор класса для инициализации объекта, и возвращается ссылка на созданный объект.

Ссылка на объект должна быть сохранена в переменной соответствующего класса.

Если new используется внутри класса, то создается новый объект этого класса. А если new используется снаружи класса, то создается объект указанного класса.

#это_база

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Как задается порядок следования объектов в коллекции?

Порядок следования элементов в коллекции можно задать несколькими способами:

— Используя коллекции, которые по умолчанию хранят элементы в определенном порядке. Например, LinkedList хранит элементы в порядке добавления, TreeSet сортирует элементы и др.

— Передав компаратор при создании коллекции. Компаратор определяет правила сравнения элементов, на основе которых они будут отсортированы.

— Вызвав метод sort() у объекта коллекции, которая реализует интерфейс Sortable (например ArrayList). Метод сортирует коллекцию в зависимости от естественного порядка элементов.

— Использовать метод Collections.sort(), чтобы отсортировать коллекцию, передав нужный компаратор.

Читать полностью…

Senior Java Developer

🔥Как создавать приложения на Java с нуля?

Расскажем на открытом уроке 5 сентября 20:00 по Москве. Вебинар приурочен к старту онлайн-курса "Java-разработчик" от OTUS. 

Тема вебинара: Учимся работать с текстовыми файлами на примере реализации простого шифратора. 

💯Во время занятия мы создадим консольное приложение на Java с нуля, которое сможет шифровать и дешифровать текстовые файлы, используя очень простые алгоритмы шифрования.

В результате урока вы:

— Увидите, как пишут код и создают программы на языке Java.
— Узнаете, как работать с потоками ввода/вывода в Java на примере работы с файлами.

Получить ещё больше навыков в Java-разработке можно на онлайн-курсе доступном в рассрочку. 

👉РЕГИСТРАЦИЯ: https://otus.pw/iKDE/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KMCap

Читать полностью…

Senior Java Developer

System.nanoTime

System.nanoTime() возвращает текущее время в наносекундах.

Этот метод используется для измерения продолжительности выполнения небольших фрагментов кода.

В отличие от System.currentTimeMillis(), который возвращает время в миллисекундах, nanoTime() имеет более высокое разрешение и позволяет измерять очень короткие промежутки времени.

nanoTime() часто используется для:

— Замеров производительности.
— Измерения задержек в мультитрединге.
— Микробенчмаркинга.
— Определения интервалов между событиями в реальном времени.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?

Метод main может выбросить исключение. Это исключение будет передано в JVM (виртуальную машину Java). JVM отловит это исключение и завершит выполнение программы, выведя stack trace (трассировку стека) исключения.

Таким образом, исключение из main приведет к аварийному завершению программы.

Чтобы избежать этого, лучшей практикой является перехватывать исключения внутри main и обрабатывать их, не допуская выброса за его пределы.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Чем отличаются HashMap и TreeMap?

HashMap позволяет хранить в качестве ключа null, а TreeMap — нет.

HashMap быстрее в большинстве операций, но не гарантирует порядок элементов.

TreeMap медленнее, но сохраняет порядок сортировки элементов.

HashMap не синхронизирован, можно использовать только в однопоточной среде.

TreeMap синхронизирован, можно использовать в многопоточной среде.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Если оператор return содержится и в блоке catch и в finally, какой из них “главнее”?

Если оператор return встречается как в блоке catch, так и в блоке finally, то return в блоке finally имеет больший приоритет и будет выполнен в любом случае.

Порядок выполнения такой конструкции будет следующий:
— Выполняется код в теле try.
— Если возникает исключение, управление передается в блок catch.
— В блоке catch может выполниться return, возвращающий значение из метода.
— Далее обязательно выполнится блок finally, даже если в catch уже был return.
— Если в finally есть оператор return, он перезапишет любое значение, возвращаемое ранее.
— Метод вернет значение, указанное в return блока finally.

Читать полностью…

Senior Java Developer

Блокирующий метод

Блокирующий метод (blocking method) — это метод, который приостанавливает выполнение текущего потока и ждет определенного события или условия.
Они используются для синхронизации потоков, например при работе с сетью или файлами.

При вызове блокирующего метода поток переходит в состояние ожидания и не выполняет других операций.

Метод блокирует поток до тех пор, пока не произойдет нужное событие, например данные не будут доступны для чтения.
Чтобы избежать блокировки всего приложения, блокирующие вызовы обычно заворачивают в отдельные потоки.

Например, метод readLine() блокирует поток до тех пор, пока пользователь не введет строку и не нажмет Enter.
После ввода данных метод возвращает управление потоку и программа выводит введенную строку.

Таким образом, блокирующий вызов позволяет приостановить выполнение кода до наступления нужного события.

#это_база

Читать полностью…

Senior Java Developer

Всем привет! На связи Яндекс Практикум.

Сейчас наша команда продуктовых исследователей проводит исследование, связанное с профессией Java-разработчик, и мы ищем представителей разных компаний — тех, кто участвует в найме начинающих Java-разработчиков: технических лидов, лидов команд, hr-менеджеров.

Если вы участвуете в найме, хотите помочь нам и готовы пообщаться с нами (формат: около 60 минут в зуме) — заполните анкету и мы с вами свяжемся.

https://forms.yandex.ru/u/64df5d1702848f5e13fb43af/

В знак благодарности за участие в исследовании поделимся небольшим приятным бонусом.

Реклама АНО ДПО "Образовательные технологии Яндекса", ИНН:7704282033, erid: LjN8K76pB

Читать полностью…

Senior Java Developer

Метод before()

Метод before() используется для сравнения порядка двух объектов типа Date.
Он позволяет проверить, идет ли одна дата перед другой.

Метод before() определен в классе java.util.Date и имеет следующий формат:

boolean before(Date date)

Он сравнивает текущий объект Date с датой, переданной в качестве параметра, и возвращает:
true, если текущая дата идет раньше переданной даты.
false, если текущая дата идет позже переданной даты или эти даты равны.

Этот метод часто используется для сравнения и сортировки дат, например:
— Проверить, было ли какое-то событие до определенной даты.
— Отсортировать список дат по возрастанию или убыванию.
— Найти самую раннюю или самую позднюю дату в наборе.

В этом примере создаются две даты, с помощью метода before() мы проверяем, идет ли date1 раньше date2.
Так как date1 содержит более раннюю дату, то метод before() возвращает true.

#это_база

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
В каких случаях разумно использовать массив, а не ArrayList?

Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях:

— Нужен предсказуемый и строгий контроль размера массива. Массивы имеют фиксированный размер, в отличие от ArrayList.

— Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList.

— Нужно создать структуру данных, которая должна быть неизменяемой.

— Требуется тесная интеграция с существующим кодом на основе обычных массивов. Переход на ArrayList может потребовать значительный рефакторинг.

— Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д.

— Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера.

Читать полностью…
Subscribe to a channel