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

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

Переименовываем файл

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

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

Senior Java Developer

Программа для преобразования десятичных чисел в шестнадцатеричные на Java

Воспользуемся методом Integer.toString().

Time complexity: O(N)
Auxiliary Space: O(1)

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

Senior Java Developer

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

Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью Enumeration нельзя добавлять/удалять элементы;
• в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNеxt(), Enumeration.nextElement() соответствует Iterator.nеxt() и т.д);
• Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.

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

Senior Java Developer

Метод concat()

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

Проще говоря метод concat() в Java объединяет строки, путем добавления одной строки в конец к другой.

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

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(), который объединяет значения счетчиков.

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

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

Senior Java Developer

Задача

Программа проверяет: ввел что-либо пользователь или нет.

Ответ на картинке.

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

Senior Java Developer

#вопросы_с_собеседований
Что такое «интеграционное тестирование»?

Интеграционное тестирование (integration testing) — это тестирование, проверяющие работоспособность двух или более модулей системы в совокупности — то есть нескольких объектов как единого блока. В тестах взаимодействия же тестируется конкретный, определенный объект и то, как именно он взаимодействует с внешними зависимостями.

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

Senior Java Developer

Офер VK для бэкенд-разработчиков за выходные

VK проводит Weekend Offer для бэкенд-разработчиков. Если вы больше 3 лет пишете на Java, Go, Python или C++ — у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 28 июня, а финалы, знакомство с командами и офер 29 июня.

Отправляйте заявку до 25 июня и станьте частью VK! Подробнее о мероприятии — на сайте.

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

Senior Java Developer

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

☕️ к полям;
☕️ к методам;
☕️ к вложенным классам;
☕️ к статическим блокам инициализации;
☕️ к членам секции import.

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