seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

Приветствую всех!

Хочу поделиться своим небольшим каналом по Java разработке - /channel/+naRBtttdUPw3MDUy. В нем я делюсь знаниями, опытом и полезными материалами.

Основной формат - теория с практикой, уже сейчас доступны примеры по Java, Spring, Apache Kafka. Вы можете прочитать статью, выкачать пример из github и проверить теорию на практике.

Буду рад если материалы будут полезны, а также вашей подписке по ссылке - /channel/+naRBtttdUPw3MDUy

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

Senior Java Developer

#вопросы_с_собеседований
Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?

Равные объекты должны возвращать одинаковые хэш коды. При переопределении equals() нужно обязательно переопределять и метод hashCode().

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

Senior Java Developer

Phaser

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

В этом примере создаётся объект Phaser и инициализируется значением 1 (основной поток). Далее создаются два потока Worker, которые регистрируются в phaser при создании.

Каждый поток имитирует некоторую работу, а по завершении вызывает метод arriveAndAwaitAdvance() - это сообщает phaser о том, что поток закончил работу и останавливает его до тех пор, пока не завершатся все зарегистрированные потоки.

После завершения обоих потоков управление возвращается в основной поток, который также вызывает arriveAndAwaitAdvance(). Этот вызов разблокирует Worker-потоки и программа завершается, выведя "All threads finished".

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

Senior Java Developer

Frame

Frame - это класс, представляющий окно приложения без каких-либо элементов управления.
Фрейм используется для создания простых GUI приложений.

При запуске этого кода отобразится пустое окно приложения с заголовком "My Frame" размером 300x200 пикселей, расположенное по центру экрана. При закрытии окна приложение завершит работу.

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

Senior Java Developer

⚡️Скорость разработки ПО падает по мере роста размера проекта. Инструменты разработки не могут изменить тенденции, а лишь замедлить и отсрочить неизбежное. SOLID является одной из практик, которая гарантирует неизменность скорости разработки.

Узнайте больше про SOLID-принципы ЗАВТРА, 03.08 в 20:00 мск на бесплатном вебинаре онлайн-курса «Архитектура и шаблоны проектирования» в Отус — «SOLID как условие постоянной скорости разработки»: регистрация

На
бесплатном занятии мы:
— разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки;
— рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.

🔥Экспертизой поделится Евгений Тюменцев — опытный директор компании по разработке программного обеспечения.

— После вебинара оплатить курс по спеццене можно также в рассрочку.

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

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

Senior Java Developer

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

Ниже представлены основные отличия:

- Абстрактный класс может содержать как абстрактные, так и неабстрактные методы. Интерфейс содержит только сигнатуры методов, которые по умолчанию абстрактные.

- Абстрактный класс может содержать поля и реализованный код. В интерфейсе может быть только объявление констант.

- Класс может расширять только один класс (абстрактный или нет) и реализовывать множество интерфейсов.

- Объект абстрактного класса не может быть создан, тогда как интерфейс не является классом и его экземпляры создавать нельзя в принципе.

- Абстрактные классы используются для общих частично реализованных решений, интерфейсы - для определения зависимостей.

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

Senior Java Developer

LongAccumulator

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

Например, LongAccumulator можно использовать:

- Для подсчета общего размера файлов в директории
- Суммирования данных из нескольких потоков
- Агрегации статистики от множества клиентов

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

Senior Java Developer

Один бот вместо тысячи каналов

Зачем подписываться на десятки каналов, если есть новостной бот AI Open News?

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

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

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

AI Open News удобнее каналов. Попробуйте 👉 @AiOpenNewsbot

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

Senior Java Developer

#вопросы_с_собеседований
Всегда ли исполняется блок finally?

Блок finally всегда выполняется, независимо от того, было ли выброшено исключение или нет.

Это происходит по следующим причинам:

- Блок finally гарантирует, что критически важный код будет выполнен, даже если в try или catch блоках произошла ошибка.

- Если в try блоке вызвана инструкция return, блок finally отработает перед возвратом из метода.

- Если в try или catch блоке вызван метод System.exit() для завершения приложения, блок finally отработает перед завершением.

Единственный случай, когда блок finally не выполняется - это когда JVM аварийно завершается из-за ошибки.

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

Senior Java Developer

Метод valueOf()

Метод valueOf() используется для преобразования различных типов данных в объекты класса String.
Он определен во многих встроенных классах обертках примитивных типов, таких как Integer, Double, Boolean и других.

Основные преимущества использования valueOf():

- Преобразование примитивных типов в объекты обертки для использования в Collections.
- Удобное преобразование числовых типов в строки.
- Получение объектного представления примитивного значения.

В примере создается целочисленная переменная i со значением 10. Далее метод Integer.valueOf(i) преобразует int в объект Integer. После чего вызывается метод toString() у объекта Integer, который возвращает строковое представление числа.

#это_база

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

Senior Java Developer

Пустая коллекция вместо Null

Возврат пустой коллекции позволяет избежать NullPointerException, а также он соответствует принципу "Fail early" (быстрый отказ). Если результат - пустая коллекция, то сразу видно, что что-то пошло не так.

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

#это_база

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

Senior Java Developer

Погрузиться в мир Javа и написать свою первую программу?
Уже через 14 дней подготовительного курса!


✔️ Даем крепкие базовые знания Javа, с ними легко продолжить обучение и влиться в профессию.
✔️ Учим не только писать, но и понимать код.
✔️Опытный наставник всегда поможет и подскажет.

⏰ Начало уже 1 августа!

Всего 990 ₽ и ваше жгучее желание начать. Приходите с любым бэкграундом: нам не важны возраст, пол, образование и текущая профессия!

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

Senior Java Developer

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

Подробная программа и регистрация: 👉https://epic.st/koIKA6

📌Java в своих продуктах используют Twitter, Spotify, Netflix и другие сервисы. Игры Minecraft и Assassin’s Creed тоже написаны на Java.

🔝Спикер Даниил Пилипенко — основатель и директор центра подбора IT-специалистов SymbioWay. 19+ лет работает в сфере Java и веб-разработки.

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

🎁 Каждый, кто оставит заявку на участие в интенсиве, получит гайд по профессии Java-разработчика. Тем, кто будет онлайн, подарим сертификаты на скидку 10 000 рублей для обучения на образовательной платформе Skillbox. А всем, кто дойдёт до конца интенсива, — электронную книгу издательства МИФ.

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

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

Senior Java Developer

Инкапсуляция

Инкапсуляция
- это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.

Обычно поля класса делаются private или protected, а методы - public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.

При запуске этой программы на выходе мы получим:
John 0

#это_база

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

Senior Java Developer

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

Чтобы глубже разобраться в Go или переехать на него с другого языка, для работы над сложными и интересными проектами, начните обучение 🗓 21.07 в 20:00 с бесплатного открытого урока «Интерфейсы изнутри в Golang», который является частью обновленной программы «Golang Developer. Professional» от OTUS

На открытом уроке мы обсудим:
- определение и реализацию интерфейсов,
- внутреннее устройства интерфейсов,
- использование пустого интерфейса (interace{}),
- влияние интерфейсов на производительность, безопасное и опасное приведение типов (type cast), - использование switch в контексте интерфейсов.

Спикер 👨‍💻 Алексей Семушкин, Software Engineer at Semrush, более 5 лет опыта в разработке ПО.

Открытый урок будет полезен начинающим Golang разработчикам и тем кто планирует переходить на GO имея опыт работы с другими языками.

👉 Записаться на урок — https://otus.pw/qRqt/

Не упустите возможность протестировать курс и узнать больше о Go. Больше полезных тем ждут вас на курсе «Golang Developer. Professional», доступные разные способы оплаты.

Нативная интеграция. Информация на сайте
www.otus.ru.

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

Senior Java Developer

#вопросы_с_собеседований
Расскажите о различиях вложенных классов: простых и статических?

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

Основные различия:

- Простой вложенный класс имеет доступ к членам внешнего класса, статический - нет.

- Для создания экземпляра простого вложенного класса нужен экземпляр внешнего класса, для статического - нет.

- Простой вложенный класс зависит от экземпляра внешнего класса, статический - нет.

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

Senior Java Developer

📣 Собираем энтузиастов технологической отрасли на регату!

Первое сообщество IT-экспертов в Сочи — IT-Club by Сбер выходит в море.

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

Ты можешь работать в Сбере, а можешь — нет. Ты можешь жить в Сочи, а можешь приехать только на 12 августа. Нам важно лишь твоё соучастие в нашей идее.
Мы хотим 12 августа собрать единомышленников и с пользой погонять уютной айтишечкой на регатах.

Будет полезно, вкусно, незабываемо и.. бесплатно!

❗️Но есть нюанс. Потребуется предварительная регистрация по ссылке и опыт работы по специализации от 2 лет.

~ ~ ~ Будь на одной волне с нами!

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

Senior Java Developer

🤖 Сертификация Oracle Java Programmer (OCAJP), как готовиться к экзамену

🔵Узнаем 10 августа в 20:00 мск на открытом уроке онлайн курса «Углублённое изучение Java» от OTUS.

В рамках вебинара мы рассмотрим:
- Прошлое и настоящее сертификации Java
- Что где и как можно и нужно сдавать
- Форма и содержание экзамена

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

🟠Это отличная возможность перенять опыт преподавателя и посмотреть на процесс обучения изнутри.
Оплата курса возможна любым удобным для вас способом.

➡️ Для участия в вебинаре зарегистрируйтесь: https://otus.pw/IMHR/

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

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

Senior Java Developer

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

- Перегрузка происходит в пределах одного класса, переопределение - в рамках иерархии классов.

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

- Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.

- Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.

В целом, перегрузка связана с компиляцией, а переопределение - с выполнением кода.

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

Senior Java Developer

Встроенные исключения

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

Основные встроенные исключения:

- NullPointerException
- ArithmeticException
- ArrayIndexOutOfBoundsException
- ClassCastException
- IllegalArgumentException
- IOException

В данном примере при попытке обратиться к несуществующему индексу массива будет выброшено исключение ArrayIndexOutOfBoundsException, которое будет перехвачено в блоке catch и выведено сообщение об ошибке.

#это_база

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

Senior Java Developer

🔥 Увлекательный тест по highload архитектуре (не для новичков) 🔥

Ответьте на 30 вопросов, чтобы понять готовы ли вы стать архитектором, которые работают с высокими нагрузками и попасть на курс — «Highload Architect» от OTUS.

На полном курсе вы научитесь:
- Правильно использовать шаблоны: кеширование, реплицирование, шардирование, а также инструменты, такие как индексы, ClickHouse, Tarantool, RabbitMQ и Kafka, redis;
- Обеспечивать отказоустойчивость веб-приложений даже при падении серверов;
- Уметь создавать веб-приложения, которые легко масштабировать.

Время прохождения теста ограниченно 30 минут

👉🏻 Пройти тест https://otus.pw/1WRc/

💣 После прохождения у вас будет возможность записаться на курс по спец. цене и оформить рассрочку. А также вы получите доступ к записям 20 открытых уроков курса.

Реклама. Информация о рекламодателе на сайте www.otus.ru.

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

Senior Java Developer

Что такое mutable?

Mutable объекты
- это объекты, состояние которых можно изменить после создания. Например:
- Массивы (array)
- Списки (ArrayList, LinkedList)
- HashMap и другие коллекции

Immutable объекты после создания не могут быть изменены. Например, строки String в Java являются immutable.

#это_база

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

Senior Java Developer

Маркер remote

Маркер remote используется для определения удаленных интерфейсов при разработке распределенных приложений по технологии RMI (Remote Method Invocation).

Интерфейс, помеченный как remote, содержит методы, которые могут вызываться удаленно. Класс, реализующий удаленный интерфейс, должен расширять класс UnicastRemoteObject. Экземпляры удаленного класса создаются на сервере.
Клиент может вызывать методы удаленного объекта по ссылке на интерфейс.

Данный код демонстрирует основные принципы работы с удаленными объектами через RMI. Клиентская часть получает доступ к удаленному объекту на сервере по сети и может вызывать его методы. Вся работа по обработке запросов и serialization/deserialization объектов происходит автоматически.

Прежде чем запускать код, сначала нужно запустить RMI реестр и сервер со стороны удаленного объекта.

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

Senior Java Developer

#вопросы_с_собеседований
Для чего используется оператор assert?

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

Основные применения assert:
- Проверка предусловий и постусловий в методах.

- Проверка инвариантов в критических секциях кода.

- Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках.

- Проверка условий в потенциально опасных ситуациях, например при работе с массивами.

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

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

Senior Java Developer

Статические поля

Статические поля - это инструмент, который удобно использовать для хранения данных, общих для всех объектов класса.

Статические поля объявляются с модификатором static и принадлежат классу, а не отдельным объектам.
Доступ к ним осуществляется через имя класса.

Изменение статического поля в одном объекте отражается на всех объектах.

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

Senior Java Developer

#вопросы_с_собеседований
Зачем нужны и какие бывают блоки инициализации?

Блоки инициализации используются для выполнения определенного кода при создании объекта.
Их использование позволяет вынести логику инициализации полей объекта за пределы конструкторов.

Бывают два типа блоков инициализации:

1. Блоки инициализации экземпляра - выполняются при создании каждого нового экземпляра класса. Они объявляются с помощью ключевого слова instance и фигурных скобок.

2. Статические блоки инициализации - выполняются один раз при загрузке класса. Они объявляются с помощью ключевого слова static и фигурных скобок.

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

Senior Java Developer

StampedLock

StampedLock - это класс блокировки, представленный в Java 8, который предоставляет оптимистичную блокировку для чтения и эксклюзивную блокировку для записи.
Чтение может происходить параллельно с записью.

StampedLock позволяет избежать deadlock-ов, которые возможны при использовании ReadWriteLock.

В этом примере для чтения используется оптимистичная блокировка с помощью readLock(), а для записи - эксклюзивная блокировка с writeLock().
Множественные потоки могут одновременно вызывать readData(), тогда как updateData() будет заблокирован, если другой поток уже получил блокировку.

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

Senior Java Developer

DelayQueue

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

DelayQueue хранит элементы, реализующие интерфейс Delayed. Этот интерфейс позволяет определить время задержки для каждого элемента.

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

В этом примере мы добавляем в очередь два сообщения с разными задержками. Первое сообщение выводится через 5 секунд, второе - сразу же.

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

Senior Java Developer

Дан массив положительных целых чисел nums и положительное целое число target, верните минимальную длину подмассива, чья сумма больше или равна target. Если такого подмассива не существует, то возвращается 0.

Решение может выглядеть следующим образом:

- Проходим циклом по всем элементам массива nums и прибавляем очередной элемент к sum.
- Проверяем, достигла ли текущая сумма целевого значения target. Если да, то циклом уменьшаем sum, вычитая элементы от nums[j], фиксируем текущую длину подмассива от j до i в ans.
- Обновляем ans, если текущая длина меньше найденной ранее.
- Возвращаем найденную минимальную длину или 0, если подмассив не найден.

#разбор_кода

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

Senior Java Developer

#вопросы_с_собеседований
Можно ли перегрузить static метод?

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

Например, можно создать статический метод sum, который будет складывать числа. Метод можно перегрузить, создав одну версию для сложения целых чисел (int), а другую - для сложения чисел с плавающей точкой (double).
При вызове метода компилятор будет выбирать нужную версию на основе типа аргументов.

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

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