seniorjavist | Unsorted

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

22676

№ 4931127152 Изучаем Java. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorjavist

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
Что такое Instance Variable?

Instance Variable — переменная, которая определена внутри класса, и она существует вплоть до того момента, пока существует объект.

Пример — класс Bee, в котором есть две переменные nectarCapacity и maxNectarCapacity

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

Senior Java Developer

Casting

Casting используется для преобразования переменной одного типа данных в другой. Существуют два типа преобразования: расширяющее (Widening Casting) и сужающее
(Narrowing Casting).

Расширяющее преобразование (Widening Casting): Процесс преобразования данных меньшего типа в больший тип называется расширяющим преобразованием. Это преобразование выполняется автоматически. (изображение 1)

Сужающее преобразование (Narrowing Casting): Преобразование данных большего типа в меньший тип называется сужающим преобразованием. Это преобразование должно выполняться вручную. (изображение 2)

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

Senior Java Developer

⚖️ 👩‍💻 LangChain в Java: Langchain4j, Quarkus, Spring Boot

LangChain открывает мощные возможности LLM в приложениях Java, упрощая интеграцию ИИ в сервисы на Quarkus и Spring Boot.

🗓 17 июня в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».

📌О чём поговорим:
- Framework LangChain: ключевые концепции и архитектура.
- Langchain4j: возможности Java-библиотеки.
- Интеграция Langchain4j в проекты на Spring Boot и Quarkus.
- Spring AI: фреймворк для работы с LLM в Spring.

📌Кому будет интересно:
Java-разработчикам, архитекторам ПО и инженерам ML Ops, планирующим внедрять LLM в микросервисы на Quarkus или Spring Boot.

📌В результате урока вы:
Познакомитесь с Langchain4j и сможете написать простой Java-сервис, использующий LLM.

🔗 Ссылка на регистрацию: https://otus.pw/ZLUG/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

#вопросы_с_собеседований
В чем заключается отличие класса Thread от интерфейса Runnable?

Thread — это абстракция над физическим потоком.
Runnable — это абстракция над выполняемой задачей. Основное различие между ними состоит в том, что каждый поток, определенный расширением класса Thread, создает уникальный объект и связывается с этим объектом.

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

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

Senior Java Developer

string-pool

String Pool — это область хранения в куче Java. Выделение строки, как и выделение любого объекта, является дорогостоящим мероприятием как в случае времени, так и памяти. JVM выполняет некоторые шаги при инициализации строковых литералов для повышения производительности и уменьшения нагрузки на память.

В этом примере constantString1 и constantString2 ссылаются на один и тот же объект в String Pool, потому что они имеют одинаковое значение, поэтому результат работы программы будет true.

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

Senior Java Developer

15 июля в 20:00 МСК OTUS проведёт открытый урок «Нормальная денормализация» — ключевой приём для оптимизации доступа к данным в NoSQL.

На примере Spring Data MongoDB разберём, как настраивать связи между сущностями: когда выбрать вложенные документы, а когда — ссылочные связи. Вы поймёте, как денормализация влияет на производительность запросов, расходы на память и сложность поддержки.

Урок будет полезен Java-разработчикам, backend-инженерам и архитекторам, работающим с MongoDB. Вы получите готовые шаблоны организации данных в Spring-приложениях, избежите типичных ошибок при проектировании схемы и сможете принимать обоснованные архитектурные решения.

Присоединяйтесь к уроку и получите скидку на полный курс «Разработчик на Spring Framework».

Регистрируйтесь прямо сейчас: https://otus.pw/QPOb/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

👩‍💻🎯 Открытый урок «Кракозябры vs Java: как победить кодировки и стать Гуру Unicode?».

🗓 17 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».

Ошибки в кодировках ломают приложения, превращая текст в «абракадабру». Понимание таблиц кодировок — must-have навык для работы с данными, файлами и международными проектами.

О чём поговорим:
✔️ ASCII, UTF-8, Unicode — WTF? Разберём, как Java хранит и обрабатывает текст.
✔️ Почему файлы «ломаются»? Как избежать ошибок при чтении/записи данных.
✔️ Лайфхаки для юникода: работа с иероглифами и русским языком.
✔️ Секреты JVM: как настроить кодировку в проекте.

Кому будет интересно:
Начинающим Java-разработчикам и тестировщикам, сталкивающимся с международными данными и проблемами кодировки.

В результате вебинара вы:
Научитесь контролировать кодировки в своих приложениях, исправлять «кракозябры» и работать с любыми текстовыми данными без страха.

🔗 Ссылка на регистрацию: https://otus.pw/fvL0/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

Класс "обертка" (wrapper class)

Класс-обертка (wrapper class) — это класс, который обеспечивает возможность использования примитивных типов данных как объектов. Каждый примитивный тип данных в Java имеет соответствующий класс-обертку: byte - Byte, short - Short, int - Integer, long - Long, float - Float, double - Double, boolean - Boolean и char - Character.

Классы-обертки используются, например, при работе с объектами коллекций, такими как ArrayList, где примитивные типы не могут быть использованы (список может хранить только объекты).

В этом примере мы создаем объекты классов-оберток для примитивных типов int, double, char и выводим значения этих объектов с помощью метода println().

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

Senior Java Developer

Аннотация Entity

Аннотация Entity используется для обозначения класса как entity-класса в Java Persistence API (JPA). Entity-класс представляет собой объект, который может быть сохранен в базе данных.

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

В этом примере мы определяем entity-класс Student, который представляет студента, а также используем аннотации Id и GeneratedValue для определения первичного ключа этого класса.
Этот класс имеет три поля: id, name и age, которые представляют идентификатор, имя и возраст студента соответственно. Затем определяем конструктор без аргументов (так как он требуется JPA) и конструктор с аргументами для удобства создания экземпляров этого класса.

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

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

Senior Java Developer

🤝 Тормозит карьерный рост? Упираетесь в потолок с текущими навыками на Java? Новые проекты ускользают, а вы застряли на одном уровне?

🔥 Пройдите тест! 💻 Ответьте на 22 вопроса и узнайте, достаточно ли у вас знаний, для обучения на онлайн-курсе «Java Developer. Advanced» от OTUS.

На курсе вы изучите:

✔️ Принципы профилирования JVM и оптимизации приложений.
✔️ Выбор и настройку сборщика мусора (GC).
✔️ Использование фреймворков для неблокирующих IO.
✔️ Интеграцию с Prometheus и Grafana для мониторинга.
✔️ Разработку микросервисов и деплой в Kubernetes.

Вас ждут живые вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя..

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

➡️ Пройдите короткий тест и присоединяйтесь к группе: https://otus.pw/5f1Q/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

⭐️ Техножурнал Яндекс 360: рассказываем о технологиях

В Яндекс 360 мы создаём технологии, которые работают в основе более чем 13 сервисов, включая Диск, Почту, Телемост, Мессенджер и другие.

Открывайте Техножурнал, чтобы узнать:

Как мы балансируем нагрузку в 300k RPS в Яндекс Мессенджере,
Как подружили MongoDB и PostgreSQL в Диске,
Какие в команде культура и ценности.

А ещё — как мы внедряли DDD, кто такой Technical Owner, как управляем 650+ шардами PostgreSQL и как подходим к проектированию архитектуры наших сервисов.

⭐️ Всё это — в Техножурнале Яндекс 360.

@yandex360team

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

Senior Java Developer

Тип Optional

Тип Optional используется для представления возможности отсутствия значения. Он обертывает другой тип данных и может содержать либо значение этого типа, либо быть пустым (null).

Этот код создает Optional объект, который может содержать строку. Если строка доступна, она будет возвращена; в противном случае будет возвращено значение "Default Value".

Использование Optional способствует более чистому и безопасному коду при работе с возможно отсутствующими значениями.

#для_начинающих

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

Senior Java Developer

Bit Set

BitSet — это класс, предназначенный для работы с наборами битов. Он предоставляет удобные методы для установки, сброса, получения и манипулирования битами в наборе. Этот класс полезен, когда вам нужно хранить и обрабатывать большое количество булевых значений (true/false) или флагов, используя минимальное количество памяти.

#для_начинающих

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

Senior Java Developer

Конечный автомат

Конечный автомат (Finite State Machine, FSM) — это модель вычислений, которая состоит из набора состояний, переходов между состояниями и действий, выполняемых при переходе из одного состояния в другое.

Для простого примера можно использовать светофор. Светофор может иметь три состояния: красный, желтый и зеленый. Когда светофор находится в состоянии красный, машины должны останавливаться, когда он находится в состоянии желтый, машины должны готовиться к остановке, а когда светофор находится в состоянии зеленый, машины могут двигаться.

#для_продвинутых

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

Senior Java Developer

💬 Мы ничего не меняли, но всё сломалось

👆 Крупные компании больше не верят таким объяснениям. Они ищут инженеров, которые умеют не только чинить, но и предотвращать сбои — и готовы платить им на 35% больше. Потому что час простоя сервиса может стоить сотни тысяч, а специалист, который нашёл проблему до её появления — бесценен.

Учебный центр Слёрм запускает обучение, которое поможет вам стать таким специалистом. На курсе «Chaos Engineering» вы поймёте, как:

🔻 Находить слабые места системы до того, как они станут проблемой
🔻 Работать с инструментами для экспериментов (да, будем ломать — но осознанно)
🔻 Готовить план улучшений на основе тестов — чтобы система не падала на ровном месте.

Всё через практику, без воды, с опытными спикерами.

❗️Сейчас по промокоду LETO2025 на курс действует скидка 50%
*промокод вводится при оформлении оплаты

Успейте забрать обучение с выгодой и повысьте свою конкурентоспособность уже этим летом! Стартуем 14 июля.

➡️ Смотреть программу и занять место со скидкой

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

Senior Java Developer

#вопросы_с_собеседований
Что такое Static import?

Статический импорт позволяет использовать статические члены (поля и методы), которые были определены в классе как public static, без указания класса, в котором было определено поле. Это удобно, когда вам нужно использовать статические члены класса многократно. Статический импорт также помогает избежать создания константного интерфейса, что считается неправильным использованием интерфейсов.

Константный интерфейс — это интерфейс, который определяет только константы, а затем класс реализует этот интерфейс для доступа к константам.

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

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

Senior Java Developer

#вопросы_с_собеседований
Что такое Run-Time Data Areas?

Run-Time Data Areas — это области памяти, используемые Java Virtual Machine во время выполнения программы. Они отвечают за предоставление памяти для хранения байт-кода, объектов, параметров, локальных переменных, возвращаемых значений и промежуточных результатов вычислений. Некоторые из этих областей данных создаются при запуске Java Virtual Machine и уничтожаются только при выходе из Java Virtual Machine.

Например, существуют такие области данных как:
1. Class Area - область хранения для структуры элементов класса, таких как поля, данные методов, код метода и т. д.
2. Heap - выделение памяти во время выполнения для объектов.
3. Stack - хранение для локальных переменных и частичных результатов. Стек содержит кадры и выделяет по одному для каждого потока.
4. PC Registers - регистры счетчика программ содержат адрес инструкции, которую JVM в настоящее время выполняет.

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

Senior Java Developer

Runnable

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

В этом примере создается новый поток t1, который запускает экземпляр класса RunnableImpl, реализующий интерфейс Runnable. Метод run этого класса выводит сообщение с именем текущего потока и текстом “выполняется метод run()!”.

Вывод показывает два активных потока в программе - main и Thread-0. Метод main выполняется главным потоком, а вызов метода start на RunnableImpl создает и запускает новый поток — Thread-0.

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

Senior Java Developer

Нейронка VEO 3 от Google теперь в Telegram!

Нейросеть для создания видео теперь доступна напрямую. Можно генерировать видео по запросу и даже оживлять фотографии.

Ссылка: @veo3

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

Senior Java Developer

#вопросы_с_собеседований
Какая разница между Statement и PreparedStatement?

Statement и PreparedStatement - это два интерфейса в JDBC, которые используются для выполнения SQL-запросов. Они имеют несколько отличий:

- Statement используется для выполнения статических SQL-запросов без параметров.
- PreparedStatement используется для выполнения динамических SQL-запросов с параметрами. Этот интерфейс принимает входные параметры во время выполнения и может быть использован многократно.
- PreparedStatement прекомпилирован, поэтому его исполнение может происходить быстрее, чем у Statement.
- PreparedStatement также обеспечивает дополнительную безопасность, предотвращая атаки типа SQL-инъекции.

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

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

Senior Java Developer

Получаем порядковый номер элемента в enum

Метод ordinal() используется с перечислениями (enum). Он возвращает порядковый номер константы перечисления, начиная с нуля.

В этом примере создается перечисление Colours с четырьмя константами: Red, Green, Brown и Yellow. В методе main создаются переменные для каждой из этих констант и выводятся их порядковые номера с помощью метода ordinal().

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

Senior Java Developer

#вопросы_с_собеседований
Что такое каскадность? Как она используется в Hibernate?

Каскадность в Hibernate — это функция, которая позволяет автоматически распространять состояние сущности на связанные с ней сущности. Это означает, что когда мы выполняем определенное действие над целевой сущностью, то же самое действие будет применено к связанным с ней сущностям.

Например, если у нас есть отношение между сущностями Person и Address, и без сущности Person сущность Address не имеет смысла. Когда мы удаляем сущность Person, наша сущность Address также должна быть удалена. Каскадность - это способ достижения этого.

В JPA/Hibernate имеются различные типы каскадности, которые определяют, какие операции должны распространяться на связанные сущности. Например, CascadeType.ALL распространяет все операции от родительской сущности на дочернюю.

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

Senior Java Developer

newSingleThreadExecutor()

Метод newSingleThreadExecutor() класса Executors создает исполнитель, который использует единственный рабочий поток, работающий с неограниченной очередью. Задачи гарантированно выполняются последовательно и в том порядке, в котором они были добавлены.

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

В этом примере мы создаем исполнителя с помощью метода newSingleThreadExecutor() и добавляем три задачи с помощью метода submit(). Затем мы вызываем метод shutdown() для завершения работы исполнителя.

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

Senior Java Developer

Реверс массива

Реверс массива в Java означает изменение порядка элементов массива на противоположный. То есть, элементы, которые изначально были в начале массива, становятся в конце, и наоборот.

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

#для_продвинутых

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

Senior Java Developer

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

Данными между потоками возможно делиться, используя общий объект или параллельные структуры данных, например BlockingQueue.

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

Senior Java Developer

ServletConfig

ServletConfig используется для настройки сервлетов при их инициализации.

Основные моменты, которые следует знать о ServletConfig:

ServletConfig предоставляет сервлету доступ к инициализационным параметрам. Эти параметры определяются в дескрипторе развертывания (например, web.xml).

— Для получения экземпляра ServletConfig используется метод getServletConfig(), вызываемый в методе инициализации сервлета init().

— Через ServletConfig можно получить доступ к контексту сервлета с помощью метода getServletContext().

— Можно получить значение инициализационного параметра по имени с помощью метода getInitParameter().

— Можно перечислить все инициализационные параметры методом getInitParameterNames().

#это_база

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

Senior Java Developer

👩‍💻🎯 Открытый урок «Основы многопоточности в Java».

🗓 7 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».

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

Программа урока:
✔️ Введение в многопоточность: что это и зачем это нужно.
✔️ Изучение базовых классов для работы с потоками.
✔️ Разбор типовых проблем многопоточности и подходов к их решению.

Урок будет полезен тем, кто хочет:
- Разобраться в основах многопоточности в Java.
- Понять, как писать многопоточные программы.
- Узнать, какие классы используются для работы с потоками в Java.

В результате урока вы:
- Поймете подходы к многопоточности в Java.
- Изучите базовые классы и синтаксис многопоточной обработки.
- Сможете применять полученные знания для создания более эффективных Java-приложений.

🔗 Ссылка на регистрацию: https://otus.pw/HNhD/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

Yandex Infrastructure открывает двери: теперь можно пройтись по внутренним системам компании, не вставая из-за стола.

Запустился квиз — лёгкая экскурсия по тому, что обычно скрыто: как работают дата-центры, базы данных, суперкомпьютеры, платформа разработки, медиасервисы, единый CDN и всё, что поддерживает сервисы Яндекса 24/7.

💡 Yandex Infrastructure — это не просто технологии. Это сердце всего Яндекса, которое обеспечивает миллионы запросов и процессов каждый день.

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

🗓 Условия простые: пройти квиз, оставить контакты и подписаться на канал Yandex Infrastructure.
📍 Сроки проведения конкурса с 26.06.2025г. по 07.07.2025г.

Информация об организаторе, условиях розыгрыша, призах и порядке их получения — по ссылке.

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

Senior Java Developer

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

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

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

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

#это_база

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

Senior Java Developer

Чем отличается LongAdder от AtomicLong?

LongAdder — это класс, введенный в Java 8, который представляет собой альтернативу классу AtomicLong для выполнения атомарных операций над переменными типа long. Он предоставляет более высокую производительность в некоторых сценариях, чем AtomicLong, особенно в случаях, когда множество потоков изменяют одну и ту же переменную.

Основные отличия LongAdder от AtomicLong:

LongAdder разделяет внутренние счетчики между потоками, что позволяет потокам увеличивать разные счетчики и объединять их при необходимости. Это уменьшает конкуренцию между потоками, что может повысить производительность.
— Когда несколько потоков одновременно увеличивают LongAdder, он автоматически разделяет изменения между внутренними счетчиками, таким образом, уменьшая ожидание блокировки.
— Для получения общей суммы всех внутренних счетчиков LongAdder предоставляет метод sum(), который объединяет значения счетчиков.

#для_продвинутых

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