Senior Java Developer @seniorjavist Channel on Telegram

Senior Java Developer

@seniorjavist


№ 4931127152
Изучаем Java.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже: https://telega.in/c/seniorjavist

Senior Java Developer (Russian)

Добро пожаловать на наш канал Senior Java Developer! Если вы увлечены изучением языка программирования Java или уже опытный разработчик, то вы попали по адресу. Наш канал посвящен обмену знаниями, опытом и новостями о Java. Здесь вы найдете информацию о последних тенденциях в мире Java, обзоры инструментов и библиотек, а также советы по улучшению своих навыков разработчика. Подписывайтесь на наш канал, чтобы быть в курсе всех событий и общаться с единомышленниками. Мы рады видеть всех участников сообщества, не важно уровень владения Java - здесь найдется что-то полезное для каждого. Если у вас есть вопросы о сотрудничестве, обращайтесь к нашему администратору @adv_and_pr. Присоединяйтесь к нам и участвуйте в обсуждениях, делитесь своим опытом и узнавайте новое каждый день. Не упустите шанс стать лучшим Java разработчиком! Также не забудьте заглянуть на наш канал на бирже: https://telega.in/c/seniorjavist

Senior Java Developer

16 Feb, 19:58


Приоритеты потоков

Приоритеты потоков используются для определения того, как операционная система должна разделять вычислительные ресурсы между потоками. Приоритеты потоков представлены целыми числами от 1 до 10, где 1 — минимальный приоритет, а 10 — максимальный приоритет. По умолчанию все потоки имеют нормальный приоритет (5).

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

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

Senior Java Developer

15 Feb, 21:55


Переопределение метода

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

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

Senior Java Developer

14 Feb, 20:41


serialVersionUID

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

Проблема, которую serialVersionUID решает, связана с обеспечением совместимости при сериализации. Если класс был сериализован с определенной версией serialVersionUID, то при десериализации Java будет проверять, соответствует ли текущая версия класса версии, сохраненной в сериализованных данных. Если версии не совпадают, может быть брошено исключение InvalidClassException, указывающее на несовместимость версий.

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

Senior Java Developer

13 Feb, 21:10


Как написать собственное исключение?

Для создания собственного исключения нужно создать новый класс, который наследуется от класса Exception или RuntimeException.

В этом примере мы создаем класс CustomException, который наследуется от класса Exception.

Далее, мы используем пользовательское исключение в методе myMethod() класса MyClass. Если выполняется определенное условие, мы выбрасываем исключение CustomException с сообщением об ошибке.

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

Senior Java Developer

13 Feb, 15:07


🤖 Пройди тест по Rust и проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.

➡️ ПРОЙТИ ТЕСТ: https://otus.pw/wzOH/

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

Senior Java Developer

13 Feb, 10:13


Маршалинг

Маршалинг (marshaling) — это процесс преобразования объектов в другой формат, который может быть использован для передачи данных через сеть, сохранения на диске или для других целей. Он также известен как сериализация. Обратным процессом является демаршалинг (unmarshaling или десериализация), который восстанавливает объекты из сериализованных данных.

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

Senior Java Developer

12 Feb, 20:11


final static переменные

final static переменные
— это константы класса. Они имеют следующие особенности:

- Объявляются с модификаторами final и static, то есть являются финальными (немодифицируемыми) и принадлежат классу, а не объекту.
- Инициализируются при загрузке класса и имеют одно значение для всех объектов данного класса.
- Хранятся в памяти в одном экземпляре, что экономит память.
- Доступ к ним осуществляется через имя класса, а не объекта.

Подытожив, final static переменные используются для объявления констант, значения которых известны во время компиляции и не меняются в runtime. Это позволяет оптимизировать код и данные.

Senior Java Developer

12 Feb, 14:37


🦾Хардкорный тест по языку Java🦾

📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Java Developer. Professional» от OTUS.
Сможете сдать - пройдете на курс по спеццене!

💻 В программе курса — все актуальные инструменты, необходимые Middle+ разработчику на Java. Возможна рассрочка.

Секретный промокод для скидки на обучение в 5% - Javapro-02

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

👉ПРОЙТИ ТЕСТ

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

Senior Java Developer

11 Feb, 21:06


ThreadPool

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

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

Senior Java Developer

10 Feb, 20:57


Что такое «thread-safe»?

«Thread-safe» (безопасность в многопоточной среде) означает, что определенный код или объект может корректно и безопасно использоваться в многопоточной среде, где несколько потоков одновременно могут обращаться к этому коду или объекту.

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

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

Senior Java Developer

09 Feb, 21:03


ThreadPoolExecutor

ThreadPoolExecutor — это класс в Java, который предоставляет управление пулами потоков для выполнения асинхронных задач. Он является частью пакета java.util.concurrent, который предоставляет различные средства для работы с параллельными и асинхронными задачами.

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

Senior Java Developer

07 Feb, 15:25


Array или ArrayList?

Выбор между Array и ArrayList зависит от специфики задачи Java, которую вы хотите решить. Запомните следующие особенности этих типов:

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

— Массивы Java работают намного быстрее, а в ArrayList намного проще добавлять и удалять элементы.

— При работе с Array скорее всего возникнет ошибка ArrayIndexOutOfBoundsException.

— ArrayList может быть только одномерным, когда массивы Java могут быть многомерными.

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

Senior Java Developer

06 Feb, 19:47


FixedThemeResolver

FixedThemeResolver — это класс из пакета Spring Framework, который используется для установки фиксированной темы (или стиля) для веб-приложения. Тема определяет внешний вид компонентов пользовательского интерфейса, таких как цвета, шрифты, изображения и т. д.

Когда вы создаете веб-приложение с использованием Spring Framework, вы можете хотеть дать пользователю возможность выбора темы или стиля. FixedThemeResolver предоставляет простой способ жестко задать тему в коде и применить ее ко всем страницам вашего веб-приложения.

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

Senior Java Developer

06 Feb, 15:06


🔒 1219 ГБ платного контента для JAVA программистов выложили БЕСПЛАТНО

Получите доступ к библиотеке знаний от FAANG School только в течение 24 часов:

– Пошаговая RoadMap по Java
– Redis - 5 улучшений для твоего пет-проекта
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Шпаргалка по Spring с разбором паттерна Наблюдатель
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков
- Шпаргалка по основным командам SQL

Свежее пополнение - гайд «Топ пет-проектов с AI». Сборник идей, который поможет создать пет-проект не только для портфолио, но и для пассивного дохода 🫢

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

Senior Java Developer

06 Feb, 14:33


Метод doPost()

Метод doPost() является одним из методов, используемых для обработки HTTP запросов в Java сервлетах. Сервлеты представляют собой Java классы, которые выполняют обработку HTTP запросов и генерацию HTTP ответов. doPost() используется для обработки HTTP POST запросов от клиентов.

Чтобы связать этот сервлет с определенным URL, вы должны настроить маппинг в файле web.xml вашего веб-приложения или с использованием аннотаций (если ваша версия сервлетов поддерживает аннотации).

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

Senior Java Developer

05 Feb, 21:09


Менеджеры компоновки

Менеджеры компоновки (Layout Manager) в Java используются для управления размещением компонентов в контейнерах, таких как JFrame, JPanel, или другие контейнеры Swing. Они обеспечивают автоматическое распределение компонентов в контейнере в соответствии с определенными правилами размещения.

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

Senior Java Developer

05 Feb, 15:08


👩‍💻Ваши приложения готовы к перегрузкам? А если вдруг лавина запросов?

На открытом вебинаре «Resilience4j. Bulkhead» вы узнаете, как защитить свои сервисы от сбоев. Разберём ключевые возможности Bulkhead и покажем, как ограничение ресурсов может спасти приложение.

Хотите углубить навыки бэкенд-разработки, повысить устойчивость своих микросервисов и освоить Resilience4j?

🗓 Всё это уже 12 февраля в 20:00 мск!

Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.

➡️ Регистрируйтесь на открытый урок прямо сейчас! Участники получат скидку на большое обучение на курс «Java Developer. Professional»: https://otus.pw/vBLx/

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

Senior Java Developer

05 Feb, 15:07


Что такое JIT компиляция?

JIT (Just-In-Time) компиляция — это техника оптимизации кода, которая используется для улучшения производительности приложений. Когда Java-программа запускается, она сначала компилируется в промежуточный байт-код (bytecode), который является платформонезависимым представлением кода. Затем этот байт-код выполняется виртуальной машиной Java (JVM).

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

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

Senior Java Developer

04 Feb, 20:52


Перегрузка метода

Перегрузка метода (method overloading) — это механизм, который позволяет вам определить несколько методов с одним и тем же именем в одном классе, но с разными параметрами. Это означает, что вы можете иметь несколько методов с одинаковыми именами, но с разными списками параметров внутри одного класса.

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

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

Senior Java Developer

04 Feb, 17:03


Хотите создать устойчивое к нагрузкам масштабируемое приложение?

Ключевой элемент при проектировании микросервисов – правильная интеграция брокеров сообщений с микросервисной архитектурой.

На открытом вебинаре «Как эффективно использовать брокеры сообщений в микросервисной архитектуре?» вы научитесь:

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

- Связывать различные слои приложений с помощью брокеров сообщений

- Проектировать решения с учётом масштабируемости и отказоустойчивости

- Эффективно управлять инфраструктурой сообщений RabbitMQ и Apache Kafka

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

Будет интересно: бэкенд и фулстек-разработчикам, системным аналитикам, девопс-инженерам.

Спикеры: Сергей Прощаев, Java-разработчик в ПАО «Сургутнефтегаз».

Бонус! Всем участникам – скидка 5% и эксклюзивные материалы от спикера.

6 февраля, 19:00 МСК

Записаться - https://otus.pw/DA4e/?erid=2W5zFJ7dumS

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

Senior Java Developer

03 Feb, 18:15


Байт-код

Байт-код (bytecode) — это промежуточный код, который создается компилятором при компиляции исходного кода. Вместо того, чтобы компилировать исходный код напрямую в машинный код для конкретной архитектуры процессора (как это делается, например, в языках C или C++), Java компилирует исходный код в байт-код, который представляет собой набор инструкций, понимаемых JVM.

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

Senior Java Developer

03 Feb, 15:00


🔧 Rust: язык для тех, кто ценит надёжность и производительность!

На открытом уроке «Разбираем анатомию парсера на Rust» вы погрузитесь в тонкости разработки, исследуете ключевые компоненты парсера и узнаете, как Rust делает код безопасным.

Что разберем:
— Принципы работы и архитектуру парсера.
— Владение, заимствование, обработку ошибок: практикуем Rust.
— Как строгая типизация помогает избежать ошибок ещё до компиляции.


📅 Встречаемся 11 февраля в 🕗 20:00 мск. Урок проводится в преддверии старта курса «Rust Developer. Professional», а участники получат 🎁 скидку на обучение.

🔴Не упустите возможность освоить Rust на профессиональном уровне и шагнуть в мир востребованной разработки: https://otus.pw/OtdVS/

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

Senior Java Developer

03 Feb, 14:27


Stream API

Stream API — это мощный инструмент, введенный в Java 8, который позволяет выполнять операции на потоках данных (sequences of elements) с использованием функциональных интерфейсов. Он предоставляет богатый набор операций для обработки и манипулирования данными в потоках, таких как фильтрация, сортировка, сопоставление, сведение и другие.

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

Senior Java Developer

03 Feb, 12:24


Вебинар «Как стать облачным экспертом и повысить свою ценность на ИТ-рынке»
 
Узнайте, как повысить экспертность и увеличить свою ценность для ИТ-рынка. 
Дата и время: 14 февраля, 17:00. 
 
Основные темы вебинара 
·Российские облачные технологии 
·Облако в личных ИТ-проектах 
·Программа бесплатного курса Сloud Native DIY Advanced
·Продвижение в карьере 
·ИТ-сообщество 

Вебинар будет полезен ИТ-специалистам middle- и senior-уровня. 
 
Регистрируйтесь, если хотите разрабатывать стратегии миграции в облако, управлять ИТ-инфраструктурой как кодом, работать с базами данных и кластерами Kubernetes, использовать инструменты кибербезопасности для защиты инфраструктуры.   

Бонус для участников  

Зарегистрируйтесь на вебинар, пройдите курс и получите сертификат до 25 февраля, и мы выдадим вам мерч и бонусы на работу с VK Cloud, а также пригласим на экскурсию в первый офис VK в Доме Зингера в Санкт-Петербурге. 
 
Зарегистрироваться

Senior Java Developer

03 Feb, 11:48


Инициализаторы

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

В Java есть два типа инициализаторов: инициализатор экземпляра и статический инициализатор.

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

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

Senior Java Developer

02 Feb, 20:01


Экземплярный инициализатор

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

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

Senior Java Developer

01 Feb, 18:29


Как используется класс Future?

Класс Future является частью пакета java.util.concurrent, и он используется для представления результата асинхронной операции или задачи, которая выполняется в фоновом потоке. Future позволяет вам управлять и получать результаты выполнения задачи в будущем, даже если она еще не завершилась.

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

Senior Java Developer

01 Feb, 16:04


Как обеспечить стабильность при высокой частоте запуска тасок
Рассказываем в новой статье от бэкенд-разработчика Ильи Григорьева

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

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

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

Читайте статью на Хабре здесь
Больше материалов о технологиях в Яндекс 360: https://ya.cc/t/OZ4inE495pU96D

Senior Java Developer

01 Feb, 15:11


Метод Arrays.asList(T... a)

Метод Arrays.asList(T... a) используется для создания списка (List) на основе массива (array) или набора элементов переменной длины типа T. Этот метод принимает набор элементов типа T в качестве аргументов переменной длины (varargs) и возвращает список, который оборачивает переданные элементы массивом.

Обратите внимание, что список, созданный с помощью Arrays.asList, имеет фиксированный размер, и вы не можете добавлять или удалять элементы из него. Попытки изменить размер списка вызовут исключение UnsupportedOperationException.

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

Senior Java Developer

31 Jan, 19:13


Алгоритм Кнута – Морриса – Пратта

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

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

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

Senior Java Developer

30 Jan, 19:39


Кэширование

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

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

Senior Java Developer

30 Jan, 16:19


🦾👩‍💻🦾 Вы уже опытный Java-разработчик, но хотите освоить глубины JVM и оптимизацию приложений в облаке?

Курс «Java Developer. Advanced» — ваш билет к продвинутым технологиям, которые востребованы в крупных проектах.

✔️ На курсе вы научитесь профилировать приложения, настраивать GC, работать с реактивными подходами и мониторить метрики в Grafana. Пройдете весь путь от JVM до Kubernetes, научитесь анализировать «горячие точки», оптимизировать приложения и настраивать интеграции с Prometheus.

Представьте, как ваши навыки открывают двери в серьёзные проекты с высокими требованиями. Наши преподаватели-практикующие эксперты поделятся опытом, а диплом OTUS станет отличным усилением к вашему резюме.

➡️ Это последний шанс попасть в группу! Регистрируйтесь сейчас и получите скидку: https://otus.pw/bAsY/

🎫 ПРОМОКОД: Java_adv
Начните обучение со скидкой, подробности у менеджеров.

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

Senior Java Developer

30 Jan, 16:18


Java varargs

Java varargs (variable arguments) — это механизм, предоставляемый Java, который позволяет методу принимать переменное количество аргументов одного типа. Он позволяет передавать любое количество аргументов заданного типа в метод, без явного указания массива аргументов.

Для объявления переменного количества аргументов в Java используется троеточие (...) после типа данных аргумента в определении метода.

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

Senior Java Developer

30 Jan, 14:15


👩‍💻 Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса

За 6 месяцев обучения вы научитесь создавать современные Java-приложения, освоите Spring WebFlux и Kafka, а также разберётесь в работе JVM изнутри.

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

Начните свой путь к уровню Middle+!

➡️ ПРОЙТИ ТЕСТ: https://otus.pw/DXu5/

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

Senior Java Developer

30 Jan, 14:07


Отложенная инициализация

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

В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).

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

Senior Java Developer

30 Jan, 11:55


Офер в Яндекс для опытных бэкендеров за два дня

15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секции 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.

Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать.

Узнать подробности и зарегистрироваться.

Senior Java Developer

30 Jan, 11:31


Блочная область видимости

Блочная область видимости (block scope) в Java - это область видимости, определенная фигурными скобками внутри метода, конструктора или другого блока кода, такого как условный оператор, цикл или блок try-catch.

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

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

Senior Java Developer

28 Jan, 20:50


События и слушатели

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

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

Senior Java Developer

23 Jan, 20:20


Сортировка Шелла

Если простыми словами, то сортировка Шелла это алгоритм сортировки массива, который улучшает производительность сортировки вставками.

Он основан на сравнении элементов, находящихся не только рядом, но и на определенном расстоянии друг от друга.

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

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

Senior Java Developer

23 Jan, 17:17


Мечтаешь о той самой работе в Big Tech, но никогда не проектировал системы? Или работаешь на галере с нулевым подходом к проектированию и не знаешь, а как разбираться в архитектуре приложений?

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

Я решил с этим покончить. Больше никаких недо-курсов, которые “готовят к собесу за один месяц с нуля”. Это невозможно, если ты не обладаешь базой. Но все реально, если разобраться в компонентах, которые составляют эти системы.

Приходи на мой Открытый Урок, где за час мы посмотрим на эти самые компоненты. А еще я расскажу про процесс проектирования в Big Tech и что такое system design секция.

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

ЗАПИСАТЬСЯ

PS: недавно проходил собес в один российский Big Tech. Результат можешь увидеть на скрине

Senior Java Developer

23 Jan, 15:01


Переопределение методов в классах наследниках

В Java можно переопределить методы в классах-наследниках с помощью ключевого слова @Override. Переопределение метода позволяет изменить его реализацию в подклассе, сохраняя при этом сигнатуру (имя, типы параметров и возвращаемое значение) метода из суперкласса.

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

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

Senior Java Developer

23 Jan, 09:20


👩‍💻 Хотите, чтобы ваши приложения на Java выдерживали любую нагрузку?

Executors — это не просто инструмент, а секретная «суперсила» JDK для управления потоками. Разберем, как грамотно настраивать пулы потоков и использовать их в реальных проектах.

🗓 На открытом уроке 27 января в 20:00 мск мы покажем, как сделать ваши сервисы быстрее и надежнее, даже если нагрузки растут. Участники получат скидку на большое обучение «Java Developer. Professional».

🎙 Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.

➡️ Успейте зарегистрироваться и узнайте, как улучшить свои навыки в многопоточности с помощью Executors: https://otus.pw/Z7XA/

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

Senior Java Developer

22 Jan, 18:31


Инвертированный индекс

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

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

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

Senior Java Developer

22 Jan, 14:57


Получить атомное время из интернет-часов

Для получения атомного времени из интернет-часов в Java вы можете воспользоваться классом java.net.URL для выполнения HTTP-запроса к одному из сервисов времени, таким как «time.google.com». Затем вы можете обработать полученный ответ и извлечь атомное время.

Обратите внимание, что формат ответа от сервиса времени может различаться, и вам может потребоваться настроить метод parseAtomicTime для вашего конкретного сервиса. Подобные сервисы могут предоставлять атомное время в разных форматах, таких как ISO 8601 или Unix Timestamp.

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

Senior Java Developer

22 Jan, 12:07


⚡️🪫Что делать, если система не справляется с нагрузкой? Узнайте, как эффективно справляться с нагрузками и обеспечивать бесперебойную работу ваших приложений!

🔥23 января в 20.00 мск. приглашаем на открытый вебинар в OTUS, где мы  обсудим подходы для решения проблем, связанных с производительностью системы.

Вопросы вебинара:

- Как правильно реализовать один сервис?
- Что такое нагрузочное тестирование, и как его проводить?
- Как оптимизировать код и улучшить производительность?
- Зачем нужны OpenTelemetry и платформа наблюдаемости?
- Как провести трассировку запроса и оптимизацию запросов к БД?
- Что такое репликация и шардирование в MSA?

Убедитесь, что ваша система готова к любым нагрузкам!


👉Регистрация https://otus.pw/i5O4/

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

Senior Java Developer

22 Jan, 08:50


abstract

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

Это позволяет упростить проектирование классов и повторно использовать код.

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

Senior Java Developer

21 Jan, 19:53


Юнит-тестирование в Java

Юнит-тестирование — это процесс тестирования отдельных блоков кода (юнитов) с целью обеспечения их корректной работы и выявления возможных ошибок и проблем в функциональности. Юнит-тесты должны быть маленькими, изолированными и быстрыми, и они позволяют выявить ошибки и несоответствия в вашем коде на ранних этапах разработки. В Java для написания юнит-тестов часто используется фреймворк JUnit. Вот как написать и запустить юнит-тесты в Java с использованием JUnit.

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

Senior Java Developer

21 Jan, 14:56


Программист - самая востребованная профессия в 2025!

Тогда почему ты опять не получил оффер?

Пока ты боишься говорить о деньгах и мямлишь про свой опыт, кто-то другой занял твое место. Чтобы HR выстраивались в очередь, приходи на лекцию от команды FAANG School.

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

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

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

Приходи на эфир, чтобы выделяться среди конкурентов и самому выбирать офферы.

Senior Java Developer

21 Jan, 14:37


Сервлеты

Сервлеты — это программные компоненты, которые расширяют функциональность сервера, помогают создавать веб-страницы и взаимодействовать с базами данных.

Сервлет получает запрос от браузера, обрабатывает его и отправляет ответ в браузер.

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

Senior Java Developer

21 Jan, 10:10


👋 Меня зовут Николай, я - техлид в крупном банке

На текущий момент провел более 100 собеседований разработчиков уровня middle+, при этом сам регулярно прохожу собеседования и получаю офферы в крупнейшие компании: Яндекс, Альфу, Сбер и др.

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

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

На менторинге показываю каким образом ведется разработка реального проекта, расставляю приоритеты в обучении, готовлю к собеседованиям, даю домашнее задание и провожу ревью, отвечаю на любые вопросы. По окончании курса мы с вами напишем 3 микросервиса и 1 библиотеку (spring boot starter), которые могут вам встретится в реальной работе и станут частью вашего резюме

Все ученики первого потока успешно трудоустроились, три человека получили оффер более 200 тысяч рублей в месяц

Второй поток в самом разгаре, обучаются как ребята смежных IT специальностей (аналитики, специалисты сопровождения, разработчики других ЯП), так и действующие Java разработчики с несколькими годами опыта

Всего обучение прошли или проходят 25 учеников

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

Третий поток начинается 8 февраля, если хотите участвовать - заполните анкету и я с вами свяжусь

Также я веду блог пишу статьи на habr

Senior Java Developer

20 Jan, 18:26


Интерфейс Predicate

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

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

Senior Java Developer

19 Jan, 18:39


Сортировка слиянием (Merge Sort)

Сортировка слиянием - это алгоритм сортировки, который основан на разделении массива на меньшие части, сортировке каждой части и объединении этих частей в отсортированный массив. Он имеет сложность O(n log n) и может быть эффективно использован для сортировки больших наборов данных.

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

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

Senior Java Developer

18 Jan, 20:44


Как вызвать один конструктор из другого?

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

В приведенном выше примере конструктор по умолчанию вызывает конструктор с параметром, передавая ему значение 0.

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

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

Senior Java Developer

16 Jan, 18:46


Класс Properties

Класс Properties — это подкласс Hashtable. Он используется для хранения списков значений, в которых ключ является String, а значение также является String.

Класс Properties используется множеством других классов. Например, это тип объекта, возвращаемый System.getProperties(), когда тот получает внешние значения.

Properties определяет следующие переменную экземпляра. Эта переменная содержит список свойств по умолчанию, связанный с объектом Properties.

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

Методы и классы, объявленные Properties, можно посмотреть здесь.

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

Senior Java Developer

16 Jan, 15:15


«Клиент-серверная архитектура на Java» — это серьёзный апгрейд Java-скиллов. Если хочешь разобраться в тонкостях клиент-серверных приложений и не бояться сложных задач — тебе на этот курс!

Курс построен на формате живых вебинаров и домашних заданий с проверкой.

Старт курса - 25 января

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

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

☕️ Многопоточность в Java: изучение классов Thread и Runnable, использование атомарных типов данных, потокобезопасных коллекций и паттерна пула потоков для эффективной синхронизации и оптимизации задач.

🖥 Разработка графических интерфейсов: создание GUI с помощью библиотек Swing и JavaFX, применение архитектуры MVC и разметки на FXML для разработки удобных пользовательских интерфейсов.

🗄 Работа с базами данных: взаимодействие с базами данных через JDBC API, создание запросов, управление метаданными, предотвращение SQL-инъекций и интеграция этих знаний в разработку распределённых веб-приложений на Java с использованием сервлетов и фреймворков, таких как JSF.

Получить демо-доступ к курсу

Реклама. Информация о рекламодателе

Senior Java Developer

16 Jan, 14:42


Класс Stack

Класс Stack является подклассом класса Vector. Стек является линейной структурой данных, где элементы добавляются и удаляются в соответствии с принципом «последним вошел, первым вышел» (LIFO — Last-In, First-Out).

В Java, класс Stack был часто использован в более ранних версиях для работы со стеками, но в более современных версиях рекомендуется использовать класс Deque (Double-ended queue) из пакета java.util. Deque предоставляет методы для работы как со стеком, так и с очередью.

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

Senior Java Developer

16 Jan, 12:39


👩‍💻 «OpenAPI + Spring».

Приглашаем на открытый урок, где мы разберем:

✔️ Что такое OpenAPI и для чего она нужна.;
✔️ Генерация спецификаций;
✔️Интеграция OpenAPI в Spring-приложения;
✔️Советы по масштабируемости и поддержке.

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

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

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

Senior Java Developer

16 Jan, 12:11


Когда использовать рефлексии?

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

К примеру — обработка класса с аннотациями (пример выше). Извлекая аннотации из объектов класса, можно обрабатывать её каким угодно образом.

Также рефлексии часто применяют в тестировке, а именно для приватных полей и методов. Достаточно получить метод из класса, задать method.isAccessible(true) и можно вызывать его как публичный.

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

Senior Java Developer

15 Jan, 17:06


Логирование данных

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

Суть логеров в записи данных из программы, дополняя её такими данными как время, место, уровень и так далее.

Самым популярным логером на данный момент является Log4J, установить который можно с помощью Maven/Gradle.

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

Senior Java Developer

15 Jan, 14:59


Бесплатный интенсив: Java-разработчик: старт в профессии с нуля.

📆 Когда: 20-21 января в 19:00 по мск.

За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:


✔️ Изучить базовые конструкции языка — переменные, типы данных, условные конструкции, циклы, импорты библиотек.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать консольное приложение и протестировать собственного бота.
✔️ Узнать ответы на интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.

🎁 Подарки для участников
интенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика!


Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:2W5zFJA7L6L

Senior Java Developer

15 Jan, 14:09


Как разделить строку на части?

В Java можно разделить строку на части с помощью метода split() класса String. Метод split() разбивает исходную строку на массив строк, используя заданный разделитель.

В этом примере исходная строка «Это пример строки для разделения» разбивается на части с помощью пробела в качестве разделителя. Однако, если у вас есть другой разделитель (например, запятая или точка с запятой), просто замените значение переменной delimiter на соответствующий разделитель в вашем случае.

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

Senior Java Developer

14 Jan, 17:15


Класс DataOutputStream и его методы

Поток DataOutputStream позволяет записывать примитивные данные в исходный код.

Если используйте объект DataOutputStream, то у Вас есть под рукой вспомогательные методы, которые можно использовать для записи потока или для выполнения других операций над потоком.

Все перечисленные методы можно просмотреть здесь.

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

Senior Java Developer

14 Jan, 15:08


👩‍💻 Как сделать Java-приложения быстрее и эффективнее?

Асинхронное программирование — must-have для современных приложений. Хотите узнать, как использовать NIO2 для максимальной производительности?

🗓 20 января в 20:00 мск — откроем двери в мир Java NIO2! Разберём основы, научим писать асинхронный код и раскроем секреты пропускной способности приложений.

Успейте записаться, чтобы не упустить возможность освоить продвинутые инструменты Java.
А еще участники вебинара получат скидку на обучение на курсе «Java Developer. Advanced».

➡️ Регистрация на вебинар: https://otus.pw/btR5/

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

Senior Java Developer

14 Jan, 14:56


Метод flatMap

Метод flatMap используется в контексте работы с потоками (streams) в пакете java.util.stream. Он представлен в интерфейсе Stream<T> и предназначен для преобразования элементов потока, когда каждый элемент может быть преобразован в ноль или один элемент другого потока.

Метод flatMap применяет функцию mapper к каждому элементу исходного потока и «разворачивает» (сплющивает) поток элементов в один объединенный поток, игнорируя нулевые потоки, которые могут быть результатом преобразования.

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

Senior Java Developer

13 Jan, 12:46


Интерфейс Supplier

Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.

Метод Supplier:

T get();
Где T -- это тип возвращаемого значения.

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

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

Senior Java Developer

12 Jan, 15:34


LeetCode теперь в Telegram!

LeetCode — это сайт, который позволяет быстро готовиться к техническим собеседованиям по программированию. Там публикуются задачи с собеседований в Google и Microsoft с решениями.

Подписывайтесь: @leetcode

Senior Java Developer

11 Jan, 19:31


В чем отличия между TreeSet и HashSet?

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

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

Senior Java Developer

10 Jan, 20:41


➡️ Использование библиотеки JDBI3 для работы с базами данных

JDBI3 — это легковесная библиотека для удобного взаимодействия с базами данных. Она позволяет выполнять SQL-запросы и маппить результаты прямо на объекты Java.

JDBI3 упрощает работу с базами данных благодаря поддержке fluent-интерфейса.

🔗 Ссылочка на доку

Senior Java Developer

09 Jan, 15:17


Приглашаем вас на открытый вебинар: «Реализация простого HTTP-сервера на Java Core»

Дата: 16 января в 20:00 мск
Спикер: Александр Фисунов

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

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

🔥В результате урока вы:
- Узнаете, как использовать базовые возможности Java для создания HTTP-сервера.
- Поймете, как работают application server'ы и контейнеры сервлетов.
- Сможете применить полученные знания для работы с Java веб-приложениями.

Участники всех открытых уроков получат скидку🎁 на большое обучение

👉Регистрируйтесь на открытый вебинар по ссылке: https://otus.pw/Ir1w/

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

Senior Java Developer

09 Jan, 15:05


➡️ Использование библиотеки Takari для создания плагинов Maven

Takari — это библиотека, предназначенная для упрощения разработки Maven-плагинов. Она предоставляет удобные инструменты для создания высокопроизводительных плагинов с минимальным количеством кода.

Senior Java Developer

09 Jan, 12:53


📢Собеседование по Spring? Будьте на шаг впереди интервьюера!

Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью.

📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом.

Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework».

🗓Регистрация открыта: https://otus.pw/ZK2H/

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

Senior Java Developer

09 Jan, 09:56


➡️ Использование блока try-with-resources для автоматического управления ресурсами в Java

Блок try-with-resources обеспечивает автоматическое закрытие ресурсов, таких как файлы, потоки, сокеты и другие, которые требуют освобождения после использования. Это упрощает управление ресурсами и помогает избежать утечек.

🗣 Полезно для работы с любыми ресурсами, которые реализуют интерфейс AutoCloseable.

Senior Java Developer

07 Jan, 19:07


➡️ Использование паттерна "Цепочка обязанностей" (Chain of Responsibility) для обработки запросов

Паттерн "Цепочка обязанностей" позволяет передавать запросы по цепочке обработчиков, где каждый обработчик решает, обработать запрос или передать его дальше по цепочке.

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

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

Senior Java Developer

07 Jan, 17:07


👩‍💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.

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

Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://otus.pw/xqoT/

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

Senior Java Developer

07 Jan, 16:53


➡️ Использование библиотеки Micronaut AOT для оптимизации приложений

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

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

🔗 Ссылочка на доку

Senior Java Developer

07 Jan, 14:51


⚡️ В сети начали массово сливать курсы и книги известных онлайн школ

Вот отсортированная база с тонной материала(постепенно пополняется):

БАЗА (4687 видео/книг):

(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby

Скачивать ничего не нужно — все выложили в Telegram

Senior Java Developer

07 Jan, 13:49


➡️ Использование библиотеки Fastutil для оптимизации работы с коллекциями в Java

Fastutil — это библиотека, предоставляющая эффективные реализации коллекций для примитивных типов данных в Java. Она позволяет существенно сократить использование памяти и улучшить производительность по сравнению со стандартными коллекциями.

Fastutil поддерживает списки, множества, карты и другие структуры для примитивов.
Повышает эффективность работы с большими объемами данных.

🔗 Ссылочка на доку

Senior Java Developer

06 Jan, 18:19


➡️ Использование библиотеки Agrona для высокопроизводительных структур данных в Java

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

Agrona оптимизирует использование памяти и ускоряет обработку данных.
Идеальна для приложений с высокими требованиями к производительности.

🔗 Ссылочка на доку

Senior Java Developer

06 Jan, 15:02


В 2025 не трать время на бесполезные и неактуальные навыки

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

– Пошаговая road map по Java
– Redis - 5 улучшений для твоего пет-проекта
– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Ребята из FAANG School собрали бесплатную библиотеку Java Junior с материалами, которые помогут освоить сложные темы, упростить и ускорить работу, а также получить приглашение от IT-гигантов.

Свежее пополнение - то, без чего не обойтись ни одному джуну - шпаргалка по основным командам SQL!

Доступ открыт всего на сутки - успевай

Senior Java Developer

06 Jan, 14:18


Обработка изображений

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

К примеру, класс java.awt.BufferedImage который позволяет обрабатывать изображения каким угодно способом, хоть попиксельно.

Чтобы загрузить изображение из файла используют ImageIO::read, для записи — ImageIO::write.

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

Senior Java Developer

06 Jan, 12:32


System.arraycopy

System.arraycopy используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Параметры метода включают:

src: Исходный массив, из которого вы хотите скопировать элементы.
srcPos: Начальная позиция в исходном массиве, с которой начнется копирование.
dest: Целевой массив, в который вы хотите скопировать элементы.
destPos: Начальная позиция в целевом массиве, куда будут скопированы элементы.
length: Количество элементов, которое вы хотите скопировать.

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

Senior Java Developer

05 Jan, 18:46


Интерфейс SortedMap

SortedMap — это интерфейс в Java, который представляет собой отсортированную коллекцию ключей и связанных с ними значений. Он расширяет интерфейс Map и предоставляет методы для управления данными в упорядоченном виде.

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

Методы, объявленные SortedMap, можно посмотреть здесь.

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

Senior Java Developer

04 Jan, 18:13


Apache Commons CLI

Apache Commons CLI (Commons Command Line Interface) — это библиотека для обработки аргументов командной строки в Java. Она предоставляет удобный способ определения и обработки аргументов командной строки для ваших Java-приложений. Библиотека Apache Commons CLI упрощает работу с аргументами командной строки, включая разбор аргументов, создание справки и обработку различных опций командной строки.

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

Senior Java Developer

31 Dec, 23:05


с новым годом дорогие подписчики

Senior Java Developer

30 Dec, 16:53


Аргументы командной строки

Аргументы командной строки передается методу main в виде массива строк (String[] args). Когда вы запускаете программу Java из командной строки, вы можете передать дополнительные параметры после имени класса. Эти параметры будут доступны в виде элементов массива args.

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

Senior Java Developer

28 Dec, 20:43


#вопросы_с_собеседований
Можете ли вы объяснить, как работает механизм 'Double Brace Initialization' в Java и в каких случаях его использование может быть неэффективным?

Механизм "Double Brace Initialization" в Java - это способ инициализации объектов, основанный на анонимных внутренних классах, где первые фигурные скобки создают анонимный подкласс, а вторые - блок инициализации. Этот подход может быть неэффективным из-за создания дополнительного класса для каждого использования, что увеличивает использование памяти и может затруднить чтение кода.

Senior Java Developer

27 Dec, 20:41


Micronaut

Micronaut — это современный фреймворк для создания микросервисных приложений на языке Java, Kotlin и Groovy. Он разрабатывался с учетом требований эффективности, производительности и легковесности.

— Легковесность: Micronaut предлагает низкоресурсное потребление благодаря тому, что многие операции выполняются во время компиляции, а не во время выполнения. Это позволяет создавать быстрые и эффективные приложения.
— Инъекция зависимостей во время компиляции: В отличие от многих других фреймворков, которые используют внедрение зависимостей во время выполнения, Micronaut выполняет внедрение зависимостей во время компиляции, что повышает производительность.
— Встроенная поддержка для микросервисной архитектуры: Micronaut предоставляет инструменты и функциональность для создания микросервисов, включая обработку HTTP-запросов, масштабирование и управление конфигурацией.
— Поддержка различных протоколов: Micronaut поддерживает различные протоколы взаимодействия, такие как HTTP, WebSocket, gRPC, RMI и многие другие.
— Встроенная поддержка тестирования: Фреймворк обеспечивает инструменты для написания и запуска тестов, что упрощает разработку надежных приложений.

Для подробной информации о Micronaut и примеров использования рекомендуется обратиться к официальной документации Micronaut.

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

Senior Java Developer

26 Dec, 18:33


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

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

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

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

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

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

#это_база

Senior Java Developer

25 Dec, 19:47


Вложенные классы

Вложенные классы (nested classes) представляют собой классы, объявленные внутри других классов. Вложенные классы могут быть статическими или нестатическими, и они могут использоваться для логической организации кода, повышения инкапсуляции и улучшения читаемости.

Статические вложенные классы (Static Nested Classes):

— Статический вложенный класс объявляется с использованием ключевого слова static.
— Он имеет доступ только к статическим членам внешнего класса и не имеет доступа к нестатическим членам.
— Статические вложенные классы используются, когда внутренний класс не зависит от экземпляра внешнего класса.

Внутренние классы (Inner Classes):

— Внутренние классы не объявляются с использованием ключевого слова static.
— Они имеют доступ ко всем членам внешнего класса, включая нестатические поля и методы.
— Внутренние классы могут быть обычными (обычные вложенные классы), анонимными или локальными.

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

Senior Java Developer

25 Dec, 15:08


👩‍💻 Пройди тест по Java

Spring от А до Я: как быстро доставлять продукт в продакшн и радовать пользователей? 👩‍💻

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://otus.pw/YZF3/

🎫 Начни обучение со скидкой, подробности у менеджеров.

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

Senior Java Developer

25 Dec, 14:40


RecursiveTask<V>

RecursiveTask<V> является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач.

RecursiveTask<V> является подклассом ForkJoinTask<V>. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.

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

Senior Java Developer

24 Dec, 18:44


#вопросы_с_собеседований
Реализуйте в Java собственную реализацию синглтона (singleton). Напишите код и объясните, как работает ваша реализация, а также какие проблемы могут возникнуть при использовании синглтона и как вы можете их решить.

Объяснение:

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

— Приватный конструктор: Конструктор класса сделан приватным, чтобы избежать создания экземпляров снаружи класса.
— Статический метод getInstance: Метод getInstance является статическим, чтобы можно было вызывать его без создания экземпляра класса. Внутри метода используется ленивая инициализация, то есть экземпляр создается только при первом вызове метода getInstance.
— Синхронизация: В рассмотренной реализации используется ключевое слово synchronized для обеспечения потокобезопасности при первом создании экземпляра. Однако это может сказаться на производительности. Существуют и другие подходы к обеспечению потокобезопасности, такие как использование volatile или двойной проверки.

Проблемы синглтона и их решения:

— Ленивая инициализация: В данной реализации используется ленивая инициализация, что может вызвать проблемы в многопоточной среде.
Решение: использование volatile или двойной проверки на null для обеспечения безопасной ленивой инициализации.
— Сериализация: При сериализации и десериализации синглтона могут возникнуть проблемы, поскольку каждая десериализация создаст новый объект.
Решение: переопределить методы readResolve и writeReplace для управления процессом сериализации и десериализации.
— Тестирование: Трудно провести тестирование, так как синглтон предоставляет глобальную точку доступа.
Решение: использование dependency injection (внедрение зависимостей) для более гибкого тестирования.

Senior Java Developer

24 Dec, 14:55


Приглашаем вас на открытый вебинар: «Основы многопоточности в Java»

Дата: 25 декабря в 20:00 мск
Спикер: Борис Кириллов

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

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

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

Участники всех открытых уроков получат скидку🎁 на большое обучение

👉Регистрируйтесь на открытый вебинар по ссылке: https://otus.pw/KDb4/

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

Senior Java Developer

23 Dec, 20:31


Garbage Collection и JVM

JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.

Смотреть статью

Senior Java Developer

23 Dec, 14:56


Хватит разворачивать приложения наугад! Docker — must-have инструмент для современных Java-разработчиков.

🔍 На открытом уроке разберем, как контейнеризация упрощает разработку и развертывание приложений. Узнаете всё: от создания Docker-контейнеров до профилирования.

👉 Запускайте Java-приложения в облаке, тестируйте их под нагрузкой, отлаживайте с точностью хирурга. Начните путь к новой профессиональной высоте!

🗓 Запишитесь на урок «Контейнеризация Java-приложений с Docker» 27 декабря в 20:00 уже сейчас! Участникам — скидки на курс «Java Developer. Advanced»: https://otus.pw/X9YU/

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

Senior Java Developer

23 Dec, 14:55


Jansi

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

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

Senior Java Developer

23 Dec, 10:58


Облако — это конструктор!

The Art of Programming — подкаст об ​​инструментах, технике и разработке ПО. По следам конференции HighLoad 2024 записали новый выпуск, в котором обсуждаем индустрию публичных облаков.

Вместе с Данилой Дюгуровым, CTO MTC Web Services, говорим о новостях индустрии, создании новых облачных платформ, потенциале рынка и принципах формирования топовых команд разработки.

🎧Слушайте The Art of Programming на всех популярных подкаст-площадках.

Senior Java Developer

23 Dec, 09:43


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

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

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

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

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

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

Senior Java Developer

22 Dec, 18:32


⚙️ String.format()

В Java метод String.format() позволяет форматировать строки с использованием плейсхолдеров и спецификаторов. Это удобно для создания строк с динамическими данными.

Senior Java Developer

20 Dec, 18:29


⚙️ String.matches()

В Java метод String.matches() проверяет, соответствует ли строка заданному регулярному выражению. Это удобно для проверки формата строк, таких как email, номера телефонов и т.д.

Senior Java Developer

19 Dec, 18:14


⚙️ Arrays.fill()

В Java метод Arrays.fill() позволяет заполнить массив одним значением или диапазон массива заданным значением. Это удобный способ инициализировать или обновлять данные массива.

Senior Java Developer

18 Dec, 17:59


⚙️ Math.random()

В Java метод Math.random() генерирует случайное число с плавающей точкой от 0.0 (включительно) до 1.0 (исключительно). Это базовый способ генерации случайных чисел.

Senior Java Developer

18 Dec, 15:46


⚡️Хотите стать экспертом в разработке на Spring Framework?

Обучение «Разработчик на Spring Framework» от OTUS — это практический подход к освоению самого востребованного фреймворка для Java-разработчиков. Узнайте, как создавать веб-приложения на микросервисной архитектуре, автоматизировать задачи с Spring Boot и реализовывать высокоуровневые решения!

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

👉Запишитесь на курс сейчас и перейдите на новый профессиональный уровень с дипломом, признанным крупными компаниями: https://otus.pw/aynT/

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

Senior Java Developer

18 Dec, 13:17


Забирай пошаговую roadmap по JAVA

FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить доступ:

– Redis - 5 улучшений для твоего пет-проекта
– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Последнее пополнение - Шпаргалка по Spring, в которой подробно разобрали, что такое паттерн Наблюдатель, и как его реализовать в Java. А также познакомитесь с событиями и научитесь работать с ними в Spring Boot!

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

Senior Java Developer

06 Dec, 20:53


Semaphore

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

Поток должен получить разрешение, чтобы войти в критическую секцию.
Semaphore управляет набором разрешений (permits), а конструктор принимает количество разрешений.
Если разрешений нет, поток ставится в очередь до освобождения.

Метод acquire() получает разрешение, release() — освобождает.

Senior Java Developer

06 Dec, 12:03


Пишите код быстрее и оставляйте больше времени на творчество вместе с AI-ассистентом разработчика

Устали от рутины? Отдайте ее AI!
Заходите на платформу GitVerse и пишите код вместе с AI-ассистентом GigaCode. Он поддерживает более 35 языков, умеет анализировать контекст, дописывать строки и функции в автоматическом и ручном режимах, а еще — писать код по комментариям и делать рефакторинг с помощью коротких команд. Всего за пару минут AI-помощник может оценить проект и трудозатраты на его создание.

Внутри AI есть функция CodeChat — с ней можно оптимизировать или отрефакторить имеющийся код, сгенерировать тесты и документацию, а также объяснить фрагмент кода. Задавать вопросы можно и по всему открытому файлу, и по конкретному фрагменту — просто выделите его в редакторе и сформулируйте запрос к CodeChat.

Хорошие новости — недавно GigaCode обновился и стал еще лучше справляться с задачами разработки: теперь наиболее вероятные продолжения кода будут генерироваться с учётом контекста всего проекта. Не забудьте обновить плагин GigaCode :)

Зарегистрироваться на GitVerse.

Senior Java Developer

05 Dec, 15:01


⁉️ Устали гадать, что творится внутри вашего Java-приложения? Хотите мониторить всё в реальном времени?

🗓 На открытом вебинаре 10 декабря в 20:00 мск мы расскажем, как внедрить Observability в Java-приложения, отслеживать состояние системы и решать проблемы до их появления!

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

Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.

🔗 Регистрируйтесь на вебинар: https://otus.pw/VM4U/

Успейте получить скидку на участие в курсе «Java Developer. Professional».

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

Senior Java Developer

05 Dec, 14:28


⚙️ Stream.reduce()

В Java метод Stream.reduce() выполняет свёртку элементов потока в одно значение, используя заданную ассоциативную функцию. Это мощный инструмент для операций, таких как суммирование, произведение или объединение.

Senior Java Developer

05 Dec, 11:19


Приглашаем на митап IT_One «Джедайские трюки Java, или Как оптимизировать приложения»

📍Офлайн в Москве
🌐 С онлайн-трансляцией
📆 17 декабря в 18:30 (МСК, GMT+3)

В программе — два доклада и круглый стол:

🗣 Рецепты оптимизации Hibernate — Андрей Зяблин (Magnit Tech)
Узнаем, как повысить производительность и функциональность Hibernate.

🗣 Happens-before и откуда он берется — Дмитрий Владимиров (IT_One)
Команды не всегда исполняются в нужном порядке. Выясним, когда это происходит и научимся влиять на последовательность с помощью happens-before.

🗣 Круглый стол «Как грамотно использовать многопоточку, чтобы от нее был профит?»
Разберемся, как выглядит современная многопоточка, сколько ядер должно быть в компании и как определять процессы, которые стоит сделать многопоточными.

Вы сможете задать вопросы спикерам, а авторы лучших вопросов получат призы от IT_One.

Регистрируйтесь на сайте митапа.

Реклама. ООО "ИТ1-Решения". ИНН 9717134195

Senior Java Developer

04 Dec, 14:29


⚙️ Objects.requireNonNull()

В Java метод Objects.requireNonNull() проверяет, что объект не равен null, и выбрасывает NullPointerException, если проверка не пройдена. Это удобный способ защитить код от неожиданных null.

Senior Java Developer

04 Dec, 11:40


Приглашаем Java- и Kotlin-разработчиков на митап от команды МТС Web Services. Приготовили для вас микс из топовых технических докладов и неформального общения за барбекю.

Когда: 6 декабря, 18:00

Где: площадка «Бетон», Кальварийская ул., 17, г. Минск

Программа вечера:

— Расскажем, как строим новое облако в 2024-м
— Поговорим о разработке IAM в облаке
— Обсудим, как создать Development Platform
— Разберёмся, что такое реконсиляция и почему она важна для облачной инфраструктуры

После официальной части — барбекю и нетворкинг!

Регистрация здесь.

Senior Java Developer

03 Dec, 12:43


➡️ Pebble — современный движок шаблонов для Java

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

Компактный синтаксис: интуитивно понятный синтаксис для построения шаблонов.
Шаблоны высокого уровня: поддержка наследования и макросов.
Безопасность: автоматическое экранирование HTML и поддержка WhiteList-фильтров.
Расширяемость: добавление пользовательских функций и фильтров.

🔗 Ссылочка на доку

Senior Java Developer

01 Dec, 17:25


⚙️ Math.max()

В Java метод Math.max() позволяет найти большее из двух чисел. Он работает с различными типами данных, такими как int, double, float, и полезен в задачах сравнения.

Senior Java Developer

01 Dec, 12:14


5 декабря пройдет онлайн-митап для java-разработчиков от Naumen. Спикеры поделятся опытом в промышленной java-разработке, реальными кейсами и полезными рекомендациями.

В программе три доклада:
🔸 Как приручить JSON — Максим Осипов, руководитель группы разработки Naumen SMP
🔸 Прагматика микросервисов: строим большую систему с помощью пачки монолитов — Дмитрий Черкасов, DevRel Jmix
🔸 Бэкэнд изображений в ОК — Руслан Измайлов, ведущий java-разработчик в ОК, VK

Старт митапа 5 декабря в 16:00 мск | 18:00 екб.

Участие как всегда бесплатное, нужна только регистрация.

→ Зарегистрироваться на митап.

Реклама, АО «Нау-сервис», ИНН 6671116364
https://www.naumen.ru/
erid: 2Vtzqx9U7pj

Senior Java Developer

01 Dec, 10:04


⚙️ List.of()

В Java метод List.of() позволяет быстро создать неизменяемый список. Это удобно для создания небольших коллекций с фиксированным набором элементов.

Senior Java Developer

30 Nov, 11:24


⚙️ Arrays.binarySearch()

В Java метод Arrays.binarySearch() выполняет бинарный поиск в отсортированном массиве, возвращая индекс найденного элемента. Если элемент не найден, возвращается отрицательное значение, указывающее потенциальную позицию вставки.

Senior Java Developer

29 Nov, 21:22


⚙️ Comparator.reverseOrder()

В Java метод Comparator.reverseOrder() создаёт компаратор, который сортирует элементы в порядке убывания. Это удобно для работы с сортировкой коллекций, когда нужно изменить стандартный порядок.

Senior Java Developer

29 Nov, 15:05


Закрытый клуб для айтишников

FAANG School, чьи выпускники работают в Яндексе, СБЕРЕ и других гигантах, запустили бесплатное сообщество для всех, кто изучает Java.

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

В чате уже больше 10 000 человек, а новенькие, которые подключатся сейчас, получат доступ к большой библиотеке Java Junior с полезными материалами:

– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Вступай сейчас. Открыли доступ всего на 24 часа!

Senior Java Developer

28 Nov, 16:54


Многопоточность в Java

Смотреть статью

Senior Java Developer

28 Nov, 14:55


⚡️ Приглашаем на открытый урок «Разрабатываем Kafka-appender для логгера».

🗓 05 декабря в 20:00 МСК

Интеграция логирования с системами обмена сообщениями, такими как Apache Kafka, становится все более востребованной в современных Java-приложениях. Однако найти готовый функционал для этой задачи не всегда просто, поэтому часто возникает необходимость разработки собственного Kafka-appender для логгера.

На вебинаре разберем:

✔️ Зачем нужен Kafka-appender для логгера.
✔️ Подходы к разработке собственного Kafka-appender.
✔️ Шаги по созданию Kafka-appender для логгера.
✔️Практические рекомендации

Вебинар пройдет в рамках курса «Java Developer. Professional», все посетители получат welcome-скидку на обучение.

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

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

Senior Java Developer

28 Nov, 13:35


#вопросы_с_собеседований
Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?

Необходимо использовать LRU-алгоритм (Least Recently Used algorithm) и LinkedHashMap с access-order. В этом случае при обращении к элементу он будет перемещаться в конец списка, а наименее используемые элементы будут постепенно группироваться в начале списка. Так же в стандартной реализации LinkedHashMap есть метод removeEldestEntries(), который возвращает true, если текущий объект LinkedHashMap должен удалить наименее используемый элемент из коллекции при использовании методов put() и putAll().

Стоит заметить, что LinkedHashMap не позволяет полностью реализовать LRU-алгоритм, поскольку при вставке уже имеющегося в коллекции элемента порядок итерации по элементам не меняется.

Senior Java Developer

27 Nov, 20:45


#вопросы_с_собеседований
Зачем нужен HashMap, если есть Hashtable?

☕️ Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
☕️ HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
☕️ Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).

Hashtable это устаревший класс и его использование не рекомендовано.

Senior Java Developer

27 Nov, 15:00


Систематизируете и углубите знания разработки на Java на курсе Яндекс Практикума.

За 6 месяцев научитесь тому, что отличает опытного разработчика от новичка:

— Напишете своё приложение‑блог с использованием наиболее популярного на сегодняшний день фреймворка Spring Boot, а также научитесь правильно писать тесты с кешированием контекстов;

— Используя реактивный стек на Spring Boot, напишете веб‑приложение, которое состоит из нескольких сервисов, использует данные из СУБД и Redis в качестве кеша, производит аутентификацию и авторизацию пользователей. Сервисы будут развёрнуты при помощи средств Docker;

— Создадите инфраструктуру банка для совершения трансакции с аудитом операций при помощи микросервисной архитектуры, которая поддерживается экосистемой Spring. Часть микросервисов будут сообщаться между собой через RESTful API, а часть — через стриминговую платформу Apache Kafka. Также будет задействован ELK‑стек для мониторинга и логирования.

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

Начать можно бесплатно!

Senior Java Developer

27 Nov, 14:29


Какова оценка временной сложности операций над элементами из HashMap? Гарантирует ли HashMap указанную сложность выборки элемента?

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

Данная сложность не гарантируется, т.к. если хэш-функция распределяет элементы по корзинам равномерно, временная сложность станет не хуже Логарифмического времени O(log(N)), а в случае, когда хэш-функция постоянно возвращает одно и то же значение, HashMap превратится в связный список со сложностью О(n).

Пример кода двоичного поиска приведен выше.

Senior Java Developer

26 Nov, 19:59


#вопросы_с_собеседований
Сделайте HashSet из ключей HashMap.

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

Senior Java Developer

26 Nov, 14:54


👩‍💻 Начали путь в программировании и хотите практики?

На вебинаре 4 декабря в 20:00 мск вы создадите свой первый сетевой чат на Java!
Вместе разберем, как работать с сетью, потоками и java .io.
Этот вебинар — отличная практика для начинающих.

Это ваш шанс выйти за рамки теории и сделать реальный проект, который отлично подойдет для портфолио.

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

➡️ Регистрируйтесь на вебинар, погружайтесь в мир Java и получайте скидку на большое обучение «Java-разработчик»: https://otus.pw/MacY/

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

Senior Java Developer

26 Nov, 14:21


Метод startsWith()

Метод startsWith() в Java имеет два варианта и проверяет, начинается ли строка с указанного префикса, начиная с указанного индекса или с начала (по умолчанию).

Senior Java Developer

25 Nov, 19:46


Оптимизация строк

При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.

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

Senior Java Developer

25 Nov, 15:20


Позитивный JVM Митап. Никакого Spring
28 ноября, 17:30
Офлайн (Москва) + онлайн-трансляция


Возможность почувствовать вайб Java-конференций уходящего года. В уютном кругу любителей JVM будем говорить только про Core Java.

Александр Богданов: «Кодогенерируй правильно!»
Александр Токарев: «Патчинг байт-кода: когда это нужно»
Александр Ланцов: «По следам 1BRC: трюки и подходы к оптимизации производительности»
Владимир Ситников: «Обратная совместимость в Java-мире»

👉 Узнать больше о докладах и зарегистрироваться

Senior Java Developer

25 Nov, 15:17


Создание объектов только при необходимости

Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.

Senior Java Developer

25 Nov, 13:18


⁉️Хотите погрузиться в мир имитационного моделирования? Узнать, как создать «цифровой двойник» для бизнеса?

27 ноября в 19:00 мск на бесплатном вебинаре мы откроем для вас возможности AnyLogic! Вы изучите основы создания моделей и разберете ТЗ для пункта выдачи товаров. Регистрация

Узнайте, как использовать AnyLogic для оптимизации процессов, сократить затраты и улучшить работу компании. Начните с нашего вебинара и получите практический опыт!

👨‍💻Спикер Никита Власов — инженер по имитационному моделированию с опытом работы в международных компаниях.

🔥Регистрируйтесь прямо сейчас, забронируйте место и получите скидку на большое обучение «Имитационное моделирование на базе AnyLogic»: https://otus.pw/Rcdh/

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

Senior Java Developer

24 Nov, 18:29


Меняем местами две переменные в одной строке

Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a

Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.

Senior Java Developer

23 Nov, 19:45


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

Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.

Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.

Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.

Senior Java Developer

22 Nov, 19:26


Collections.emptyList()

Collections.emptyList() возвращает пустой неизменяемый список.
Это статический фабричный метод из класса Collections, который возвращает пустой список типа List<Object>.

Основные моменты:
— Возвращает пустой список, а не null. Это полезно, чтобы избежать проверок на null.
— Список неизменяемый (immutable). Нельзя добавлять или удалять элементы из него.
— Работает быстрее, чем создание нового списка через new ArrayList().
— Может использоваться как значение по умолчанию или стартовое значение для списка.

#это_база

Senior Java Developer

21 Nov, 20:08


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

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

Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX()
вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.

Senior Java Developer

21 Nov, 14:59


Забирай пошаговую roadmap по JAVA

FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить доступ:

– Redis - 5 улучшений для твоего пет-проекта
– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Последнее пополнение - Шпаргалка по Spring, в которой подробно разобрали, что такое паттерн Наблюдатель, и как его реализовать в Java. А также познакомитесь с событиями и научитесь работать с ними в Spring Boot!

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

Senior Java Developer

21 Nov, 14:46


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

Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.

Выражение записывается в следующей форме:

условие ? выражение1 : выражение2

Если условие выполняется, то вычисляется выражение1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражение2 и его значение становится результатом работы оператора. Оба операнда выражение1 и выражение2 должны возвращать значение одинакового (или совместимого) типа.

Senior Java Developer

20 Nov, 17:23


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

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

Senior Java Developer

20 Nov, 15:08


Бесплатный интенсив: Java-разработчик: старт в профессии с нуля.

📆 Когда: 27-28 ноября в 19:00 по мск.

За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:


✔️ Познакомиться с синтаксисом и основными конструкциями языка Java.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать Telegram-бота с нуля.
✔️ Узнать ответы интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.

🎁 Подарки для участников
интенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика и доступ в закрытое сообщество «Старт в Java» от Хекслета!


Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8K36fP

Senior Java Developer

20 Nov, 14:21


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


Аннотации, которые применяются к другим аннотациям. Все аннотации, которые не отмечены @Target или отмечены им, но содержат константу ANNOTATION_TYPE, также являются мета-аннотациями.

Senior Java Developer

19 Nov, 19:08


#вопросы_с_собеседований
Напишите потокобезопасную реализацию класса с неблокирующим методом BigInteger next(), который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...]

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

Senior Java Developer

19 Nov, 14:59


👩‍💻 Приглашаем вас принять участие в открытом уроке, который посвящён теме «Интернационализация и локализация в приложениях Spring». Вы узнаете, как эффективно реализовать процесс локализации в Spring-приложениях.

Мы рассмотрим работу с классом Locale, использование MessageSource в Spring Boot и без него, способы хранения и смены локали в веб-приложениях, а также локализацию в шаблонах Thymeleaf и сообщений Bean Validation.

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

🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.

Программа вебинара:
✔️ Основы локализации в Spring.
✔️ Инициализация и конфигурация MessageSource.
✔️ Управление локалью в веб-приложениях.
✔️ Практические аспекты локализации.

Этот урок будет полезен Java-разработчикам с опытом 1–3 года, а также Kotlin-разработчикам.

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

🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

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

Senior Java Developer

19 Nov, 14:41


Может ли один блок catch отлавливать сразу несколько исключений?

В Java 7 стала доступна новая языковая конструкция, с помощью которой можно перехватывать несколько исключений одним блоком catch.

Senior Java Developer

19 Nov, 12:39


Уже завтра собеседование на Middle Java с разработчиком из МТС

20 ноября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Марии

Что узнаешь на прямом эфире от ШОРТКАТ:
• Чего ждут от кандидатов на Middle позиции в Java-разработке
• Какие вопросы задают на интервью и зачем
• Как подготовиться к собесу, чтобы получить оффер

Это бесплатно? Бесплатно

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqufTvBQ

Senior Java Developer

18 Nov, 11:51


#вопросы_с_собеседований
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?

Размер массива elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.

Senior Java Developer

17 Nov, 18:44


elastic/elasticsearch ⭐️ 59k

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

https://github.com/elastic/elasticsearch

Senior Java Developer

17 Nov, 14:55


🔞 Java как секс!

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

В канале Java, полегче 🥵! ты найдешь лучшие практики написания кода. Действующий тимлид европейского финтеха, самобытно и с долей юмора, делится секретами 🤫:

Гайд по Kafka(причем тут порноактриса Piper Perri)

Roadmap java разработчика на 2025

Самый кринжовый подарок, сделанный девушке, с помощью программирования

Как java крадет твои деньги

Топ 8 ошибок при составлении резюме

Самые сложные алгоритмы на моей практике. Не трать на них время

Chatgpt telegram bot с нуля на java 

Миллиард тенге. Самая сложная задача

И это только цветочки. Рекомендую! 
В этом канале даже джуны становятся сеньорами 😏

🔈 Подписывайся, это самый простой способ прокачать свои хард-скиллы:  @javezka

Senior Java Developer

17 Nov, 14:35


#вопросы_с_собеседований
Как поведёт себя коллекция, если вызвать iterator.remove()?

Если вызову iterator.remove() предшествовал вызов iterator.next(), то iterator.remove() удалит элемент коллекции, на который указывает итератор, в противном случае будет выброшено IllegalStateException().

Senior Java Developer

16 Nov, 13:48


#вопросы_с_собеседований
Какие существуют unchecked exception?

Наиболее часто встречающиеся:
ArithmeticException, ClassCastException, ConcurrentModificationException, IllegalArgumentException, IllegalStateException, IndexOutOfBoundsException, NoSuchElementException, NullPointerException, UnsupportedOperationException.

Senior Java Developer

16 Nov, 12:05


⚡️Всероссийский Хакатон ФИЦ 2024

🚀Попробуйте себя в одном из предложенных кейсов:
- Разработка алгоритма трекинга людей в видеопотоке с нескольких камер
- Цифровая карта подземных коммуникаций с использованием Cesium
- Симуляция записи в расписание
- Цифровой сервис для ведения реестра зеленых насаждений города Москвы
- Предсказание необходимого количества средств досмотра
- Система контроля и управления доступом
- Семантический делитель текстов
- Разработка сервиса печати этикеток для производителей одежды
И др. кейсы смотрите на сайте: https://фиц2024.рф/hackathon 

Хакатон пройдет в 2 этапа: Отборочный этап в Онлайн, Финал в Офлайн.

🏆Призовой фонд: 6 000 000 руб.
🔥Дедлайн регистрации: 26 ноября, 23:59
📅Даты отборочного этапа: 29 ноября - 2 декабря
🦾Даты финала: 3 - 4 декабря

Зарегистрируйтесь для участия в хакатоне: https://фиц2024.рф/hackathon

#реклама
О рекламодателе

Senior Java Developer

16 Nov, 11:37


#вопросы_с_собеседований
Каким образом реализованы методы hashCode() и equals() в классе Object?

Реализация метода Object.equals() сводится к проверке на равенство двух ссылок(код 1 на картинке).

Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти(код 2 на картинке).

Senior Java Developer

15 Nov, 18:56


Метод before()

Метод before() класса Date проверяет, была ли наша дата раньше той, которую мы передаем в качестве аргумента.

Senior Java Developer

15 Nov, 15:07


👩‍💻 Мечтаете научиться программировать на Java? Пора начинать!

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

Приходите на открытый урок, где мы шаг за шагом создадим игру «Угадай число» с нуля.
Вы познакомитесь с основами языка, поймете, как изменять код и менять функционал программы, освоите первые блоки, которые нужны для старта.

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

Хотите научиться создавать приложения? Узнать, как строятся программы на Java? Этот урок — ваш первый шаг в IT!

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

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

Senior Java Developer

15 Nov, 14:38


#вопросы_с_собеседований
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?

O(N)
. Худший случай - это поиск ключа в HashMap, вырожденного в список по причине совпадения ключей по hashCode() и для выяснения хранится ли элемент с определённым ключом может потребоваться перебор всего списка.

Но начиная с Java 8, после определенного числа элементов в списке, связный список преобразовывается в красно-черное дерево и сложность выборки, даже в случае плохой хеш-функции, не хуже логарифмической O(log(N)).

Senior Java Developer

14 Nov, 19:12


Как конвертировать ArrayList в массив на Java?

Рассмотрим пример простой программы, которая преобразовывает ArrayList в массив в Java.

Мы используем реализацию метода toArray(T[] a) класса ArrayList, чтобы конвертировать ArrayList в массив на Java. «Под капотом» этого метода используется метод Arrays.copyOf(), чтобы конвертировать ArrayList в Array.

Senior Java Developer

14 Nov, 15:00


👩‍💻 Открытый урок «Знакомство с виртуальными потоками Java»

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

Легковесные потоки были введены во многих языках программирования, таких как Go, Kotlin и другие. Теперь Java догнала другие языки по этой функциональности.

На вебинаре разберем:

✔️что такое виртуальные потоки;
✔️ чем они отличаются от обычных потоков;
✔️в чём плюсы и минусы их использования.

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

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

Senior Java Developer

14 Nov, 13:28


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

При помощи:
Collections.unmodifiableList(list);
Collections.unmodifiableSet(set);
Collections.unmodifiableMap(map).

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

Senior Java Developer

13 Nov, 20:54


#вопросы_с_собеседований
Почему хранить пароль предпочтительнее в char[]/byte[], а не в String?

☕️ Строка в виде литерала сразу раскрывает пароль, плюс она всегда хранится в string-пуле
☕️ byte[]/char[] возможно сбросить после использования, и удалить все ссылки на него

Senior Java Developer

12 Nov, 19:05


Объединение двух массивов

Наиболее лаконичный способ объединить элементы двух массивов – это воспользоваться классом ArrayUtils из Commons Lang.

Подробнее можно ознакомиться здесь.

Senior Java Developer

12 Nov, 14:57


👩‍💻 Открытый урок «Интернационализация и локализация в приложениях Spring»

🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.

Узнайте, как эффективно реализовать интернационализацию и локализацию в Spring-приложениях.

На вебинаре разберем:

✔️работу с классом Locale, использование MessageSource в Spring Boot и без него;
✔️ способы хранения и смены локали в веб-приложениях;
✔️ локализацию в шаблонах Thymeleaf и сообщений Bean Validation;
✔️ обсудим, почему не стоит локализовывать исключения;
✔️ проанализируем исходный код для лучшего понимания процессов.

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

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

Senior Java Developer

11 Nov, 10:56


#вопросы_с_собеседований
Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?

✔️Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.
✔️Для создания объекта статического вложенного класса объект внешнего класса не требуется.
✔️Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
✔️Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
✔️В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статического такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.

Senior Java Developer

09 Nov, 19:40


Анализ дампа кучи Java: разбираем на примерах

Всякий раз, когда вы создаете объект, он хранится в области памяти, которая в приложениях для JVM называется «куча». Как вы уже догадались, объем кучи ограничен, и «кто-то» должен хранить объекты в куче. Этот инструмент называется сборщиком мусора (Garbage Collector).

Смотреть статью

Senior Java Developer

08 Nov, 20:56


Final класс

Нельзя расширять класс, объявленный как final. Проще говоря, никакой класс не может наследоваться от данного.

Прекрасным примером final класса в JDK является String. Первый шаг к созданию неизменяемого класса — пометить его как final, и тогда нельзя будет его расширить.

Senior Java Developer

08 Nov, 15:01


Уже применяешь асинхронную архитектуру в работе? Или только думаешь, как её внедрить?

Podlodka Java Crew с 18 по 22 ноября собирает тех, кто знает, как сделать это эффективно!

Пять дней, мощные практические сессии, опытные спикеры:

- "Spring, Micronaut, Quarkus и Helidon — что круче для современного приложения?" Григорий Кошелев и Андрей Когунь — о плюсах и минусах каждого фреймворка💥

- "Проектируем Event Driven-систему с помощью DDD и Event Storming"
Кирилл Ветчинкин поможет понять, как сделать системы масштабируемыми и управляемыми с помощью событий🚀

- "Apache EventMesh: как приготовить Event Mesh"
Павел Бодячевский поможет внедрить Event Mesh в проект🎯

- "Debezium: окно в асинхронный мир данных" Евгений Ефименко покажет, как обрабатывать данные в реальном времени📊

Забирай билет, чтобы перенять опыт профи!🔥

Senior Java Developer

08 Nov, 14:19


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

Модификаторы доступа — это инструмент, при помощи которого можно настроить доступ к классам, методам и переменным.

Бывают следующие модификаторы, упорядоченные в порядке повышения доступа:
1) private — используется для методов, полей и конструкторов. Уровень доступа — только класс, внутри которого он объявлен.
2) package-private(default) — может использоваться для классов. Доступ только в конкретном пакете (package), в котором объявлен класс, метод, переменная, конструктор.
3) protected — такой же доступ, как и package-private + для тех классов, которые наследуются от класса с модификатором protected.
4) public — используется и для классов. Полноценный доступ во всем приложении.

Senior Java Developer

07 Nov, 12:44


Apache Struts

Apache Struts — фреймворк с открытым исходным кодом для создания Java EE веб-приложений. Struts был создан для того, чтобы чётко разделить модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).

https://github.com/apache/struts

Senior Java Developer

06 Nov, 20:11


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

Для различных операционных систем символ разделителя различается. Для Windows это \, для Linux - /.

В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю File.separator.

Senior Java Developer

06 Nov, 15:01


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

Вы можете стать участником исследования, если:
– Ваша роль – продакт-менеджер или senior разработчик (Java, JavaScript, Go, Python)
– Работаете не больше 6 месяцев в таких компаниях, как Яндекс, Авито, VK, Ozon, Альфа, Сбер, Т-Банк и другие
– Находитесь в активном или пассивным поиске вышеуказанных вакансий

Мы ценим ваше время и предлагаем:
– Онлайн-беседу в удобное для вас время продолжительностью 1-1,5 часа
– Полную конфиденциальность
– Вознаграждение 5000 ₽ за участие в интервью

Если вам интересно, напишите @kstrv7
Или заполните анкету https://forms.gle/983QGwsCwQFQXSzT8

Подробнее о нас: ponedelnik.ru

Senior Java Developer

06 Nov, 13:25


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

java.time.ZonedDateTime — аналог java.util.Calendar, класс с самым полным объемом информации о временном контексте в календарной системе ISO-8601. Включает временную зону, поэтому все операции с временными сдвигами этот класс проводит с её учётом.

Документацию можно найти здесь.

Senior Java Developer

05 Nov, 18:14


#вопросы_с_собеседований
Как преобразовать HashMap в ArrayList в Java?

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

Senior Java Developer

05 Nov, 15:22


👩‍💻 Пройди тест по Java

Проверь насколько хорошо ты знаешь Java и готов освоить 👩‍💻 Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://otus.pw/cjAo/

🎫 Начни обучение со скидкой, подробности у менеджеров.

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

Senior Java Developer

05 Nov, 12:12


#вопросы_с_собеседований
Что вы знаете об интерфейсе FileFilter?

Интерфейс FileFilter применяется для проверки, попадает ли объект File под некоторое условие. Этот интерфейс содержит единственный метод boolean accept(File pathName). Этот метод необходимо переопределить и реализовать. Пример прикреплен.

Senior Java Developer

04 Nov, 18:49


dbeaver — бесплатный универсальный инструмент для работы с базами данных и SQL-клиент.

https://github.com/dbeaver/dbeaver

Senior Java Developer

04 Nov, 14:55


erid:2VtzqxQTSBN
Как устроена работа ИТ-специалистов в Т-Банке?

Загляните в канал T-Crew — тут показывают будни команды и делятся полезным:

— Дайджесты вакансий, регистрация на fast track и приглашения от руководителей.
— Анонсы мероприятий. Например, когда пройдет следующий ИТ-каток, ИТ-пикник и другие нашумевшие ивенты.
— Кейсы, статьи и лайфхаки для работы — от методов планирования до карьерного роста.

Подписаться на T-Crew

Senior Java Developer

04 Nov, 12:45


#вопросы_с_собеседований
Что такое Aspect, Advice, Pointcut и JoinPoint в АОП?

Aspect
— класс, который реализует сквозные функции, такие как управление транзакциями.
Advice — методы, которые выполняются, когда в приложении достигается определенный JoinPoint с соответствующим Pointcut.
Pointcut — набор регулярных выражений, которые сопоставляются с JoinPoint, чтобы определить, нужно ли выполнять Advice или нет.
JoinPoint — некая точка во время выполнения программы, например выполнение метода или обработка исключения.

Senior Java Developer

03 Nov, 17:50


Что такое mutable?

Mutable называются объекты, чьи состояния и переменные можно изменить после создания. Например такие классы, как StringBuilder, StringBuffer.

Senior Java Developer

03 Nov, 15:49


Бесплатное IT-образование в 2024

Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления

Выбирайте нужное и подписывайтесь:

👩‍💻 Python: @PythonPortal
🖥 Базы Данных & SQL: @SQL
👩‍💻 Java: @Java_Iibrary
👩‍💻 С/С++: @Cpportal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
👩‍💻 Frontend: @FrontendPortal
⚙️ Backend: @BackendPortal
👩‍💻 C#: @KodBlog
👩‍💻 Golang: @juniorGolang
👩‍💻 PHP: @PHPortal
👩‍💻 Моб. разработка: @MobDev
👩‍💻 Разработка игр: @GameDevgx
👩‍💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign

➡️ Сохраняйте себе, чтобы не потерять

Senior Java Developer

02 Nov, 11:00


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

С помощью ключевого слова super мы можем обратиться к любому члену родительского класса - методу или полю, если они не определены с модификатором private.

Senior Java Developer

01 Nov, 18:43


Разбираем на простых примерах: наследование в Java

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

https://proglib.io/p/razbiraem-na-prostyh-primerah-nasledovanie-v-java-2022-03-10

Senior Java Developer

01 Nov, 15:04


⚡️ Открытый урок «Введение в GraalVM: ускоряем ваши Java-приложения»

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

В современной инфраструктуре всё чаще используются облачные решения, в которых контроль используемых ресурсов напрямую влияет на затраты бизнеса. Поэтому все способы экономии ресурсов важны. Тут на помощь придёт GraalVM!
Но является ли это панацеей?


На вебинаре разберем:

✔️ JIT и AOT: что это такое и в чём разница;
✔️ Причём тут GraalVM и какие особенности его применения.

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

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

Senior Java Developer

01 Nov, 12:17


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

Система управления базами данных (СУБД) - набор средств общего или специального назначения, обеспечивающий создание, доступ к материалам и управление базой данных.

Основные функции СУБД:

☕️ управление данными;
☕️ журнализация изменений данных;
☕️ резервное копирование и восстановление данных;
☕️ поддержка языка определения данных и манипулирования ими.

Senior Java Developer

31 Oct, 16:56


#вопросы_с_собеседований
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?

☕️ OutputStream - это абстрактный класс, определяющий потоковый байтовый вывод;
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.

Senior Java Developer

31 Oct, 14:49


Т-Банк ищет Java-разработчиков уровня middle и senior

23 и 24 ноября можно пройти собеседование за выходные и получить оффер, если всем все понравится.

Вот что вас ждет в компании:

— Выстроенный процесс разработки и запуска проектов.
— Современный стек технологий — здесь быстро внедряют новое в работу.
— Разработка на актуальной версии Java.
— Баланс между использованием самописных и стандартных инструментов.
— Сильное комьюнити и обмен опытом на конференциях и митапах.

Узнайте больше и оставьте заявку до 20 ноября

Senior Java Developer

27 Oct, 18:12


Как устроен HashMap?

HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент.

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

Senior Java Developer

26 Oct, 18:35


Метод Iterable.forEach

Перебирает переданную коллекцию, и выполняет лямбда-выражение action для каждого ее элемента.

Senior Java Developer

25 Oct, 15:08


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

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

Senior Java Developer

24 Oct, 16:07


Переворачиваем изображение на 180 градусов

С помощью следующего фрагмента кода вы можете получить перевернутое на 180 градусов изображение.

Подробнее можно ознакомиться здесь.

Senior Java Developer

24 Oct, 14:05


Java Team Lead и Senior Java Developer в VK

Мы разрабатываем крупнейший мессенджер в России и ищем Java Team Lead/ Senior Java Developer с опытом работы в бэкенде от 5 лет.

Java Team Lead


🔹Обязанности:
— Разрабатывать платформу мессенджера
— Проработать новые фичи продукта
— Проектировать надёжную архитектуру для высоконагруженных систем
— Руководить бэкендерами, повышать эффективность их работы и помогать им развиваться
— выстраивать и оптимизировать процессы разработки, внедрять новые инструменты и методики

🔹Мы ожидаем от кандидата:
— Вы в бэкенде не менее пяти лет — пишете на Java
— Знаете алгоритмы и структуры данных
— Уже управляли командой разработки численностью от 5–7 человек
— Выстраивали процессы разработки
— Проектировали отказоустойчивые и высоконагруженные сервисы — планировали работы и ресурсы, сроки


Senior Java Developer


🔹Обязанности:
— Проектировать архитектуру и разрабатывать новые сервисы в платформе мессенджера
— Решать технически сложные проблемы по масштабированию высоконагруженного распределённого сервиса
— Проектировать надёжную архитектуру для высоконагруженных систем
— Руководить бэкендерами, повышать эффективность их работы и помогать им развиваться
— Выстраивать и оптимизировать процессы разработки, внедрять новые инструменты и методики

🔹Мы ожидаем от кандидата:
— Вы в бэкенде не менее пяти лет — пишете на Java
— Знаете алгоритмы и структуры данных
— Имеете опыт многопоточного программирования
— Понимаете принципы проектирования отказоустойчивых и высоконагруженных сервисов
— Работали в команде

🔹Мы предлагаем:
— Гибкий график работы
— Бонусы и скидки от партнеров
— Офис в центре города
— ДМС
— Профессиональную команду
— Интересные задачи


Контакты: @lkatherinei

Senior Java Developer

24 Oct, 12:15


#вопросы_с_собеседований
Можем ли мы объявить метод как final в интерфейсе?

Нет, мы не можем объявить метод как final, потому что все методы в интерфейсе абстрактны, поэтому он должен быть реализован подклассом, а метод final не может быть переопределен.

Senior Java Developer

24 Oct, 10:13


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

Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:

что такое брокеры сообщений и как они помогают в архитектуре микросервисов
основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
как развернуть и настроить RabbitMQ и Kafka для ваших приложений
практическое использование обоих брокеров на реальных примерах в live demo

🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Ссылка для регистрации: https://otus.pw/AZJfL/

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

Senior Java Developer

24 Oct, 04:28


#вопросы_с_собеседований
Поддерживает ли язык Java множественное наследование?

Это очень хитрый вопрос. Интервьюеры часто говорят: если язык C++ может поддерживать непосредственное множественное наследование, то почему Java не может?

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

Senior Java Developer

23 Oct, 19:02


Метод Character.isWhitespace()

Метод определяет в Java, является ли указанное значение типа char пустым пространством, которое включает в себя пробел, табуляцию или новую строку.

Senior Java Developer

23 Oct, 14:56


О чем хотите поговорить: low-latency-сервисах, переходе на Cassandra или тестировании?

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

Что узнаете из докладов:

— Как разработчики Т-Банка переехали на Cassandra. Будет полезно, если начинаете использовать систему или думаете на нее переходить.
— Когда и как нужно писать low-latency-сервисы. Пригодится, если думаете, что на Java нельзя писать быстрый код.

Что обсудят на дискуссии:

— Основы тестирования, виды тестов и их применение в реальных ситуациях.
— Преимущества и недостатки юнит-тестов.
— Значимость покрытия кода тестами и подходы к оценке качества.
— Влияние внешних интеграций на процесс тестирования.

Встреча пройдет 30 октября на Кремлевской набережной, зд. 33, в крытом парке «Урам».

Участие бесплатное. Узнайте больше и успейте зарегистрироваться

Senior Java Developer

23 Oct, 14:21


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

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

Senior Java Developer

23 Oct, 12:21


🎯 Весь фокус на API — решай реальные задачи и побеждай с Платформой API ВТБ!

Когда: 21 октября — 23 ноября 2024 
Формат: гибридный (онлайн и офлайн) 
Призовой фонд: 2 млн рублей

🔥 Хакатон подойдёт для тебя, если ты:
– Студент или выпускник технического вуза; 
– Backend / Frontend-разработчик;
– Аналитик;
– Архитектор;
– Специалист в области ИБ;
– DevRel.

❗️Выбери свой трек:
• Open API. Создание приложений на основе Open Banking API;
• gRPC. Реализация микросервиса, имплементирующего стандарты СТО БР ФАПИ.СЕК с реализацией на протоколе gRPC;
• Единая платформа аутентификации API. Создание новых подходов к мультифакторной аутентификации.

Прими участие в составе команды или индивидуально. Если нет команды — поможем её собрать!

▶️ Регистрация уже открыта! Подай заявку до 5 ноября, 23:59 МСК по ссылке.

Senior Java Developer

23 Oct, 10:49


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

Да, конечно. Именно через конструктор и задаются значения внутренних переменных enum.

В качестве примера добавим два поля — ageFrom и ageTo — чтобы обозначить возрастные рамки для каждой роли.

Senior Java Developer

23 Oct, 08:48


⁉️Хотите повысить свою квалификацию в Java-разработке?

👩‍💻 Инвестируйте в успех своей карьеры прямо сейчас! На курсе «Java Developer. Professional» вы получите:

✔️ знание актуального стека технологий;
✔️ 96 часов практической работы с детальным разбором технологий изнутри;
✔️ понимание основ функционирования JVM (сборка мусора, byteCode);
✔️ освоение приемов применения многопоточности;
✔️ практику решения сложных задач с подробным код-ревью от экспертных Java-разработчиков;
✔️ расширение возможностей использования языка Java;
- умение использовать современные фреймворки: Spring WebFlux, Kafka, реактивный Postgres, Kubernetes.

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

Готовы прокачать свою востребованность?

➡️ Пройдите короткий тест прямо сейчас, чтобы получить специальную цену на обучение: https://otus.pw/QpOG/

🎁 А еще приятный бонус: до конца октября действует скидка 10% на обучение.

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

Senior Java Developer

23 Oct, 07:55


#вопросы_с_собеседований
Что такое Map.of()?

Map.of() — это метод, представленный в Java 9, который позволяет разработчикам создавать неизменяемый Map, содержащий до десяти пар ключ-значение. Он обеспечивает удобный и лаконичный способ создания Map без необходимости написания большого количества кода.

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

Senior Java Developer

22 Oct, 16:59


Шаблон проектирования: Chain of Responsibility

Данная статья будет полезна начинающим Java разработчиком понять зачем нужен шаблон проектирования «Цепочка ответственности» и как его можно использовать на примерах.

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

Смотреть статью

Senior Java Developer

22 Oct, 15:00


🦾 Ты крутой джавист? Всегда есть куда расти.

Приходи повышать грейд на хардовый курс «Разработчик на Spring Framework» от OTUS.

👩‍💻 Авторская программа, с ней ты освоишь владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5). Получишь умение быстро проходить путь от идеи до production-grade.

🗓 6 ноября в 20:00 мск., пройдет бесплатный открытый урок курса, тема «Spring - разбор (не)стандартных вопросов интервью»

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

Будет интересно!

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

Senior Java Developer

22 Oct, 14:39


Может ли имя класса не совпадать с именем файла?

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

Protected и private классов верхнего уровня не бывает в принципе, а вот на package-protected это ограничение не распространяется. Это значит, что класс без модификатора доступа может иметь любое имя. Также это значит, что рядом с основным публичным классом файла (или вместо него) можно объявить любое количество других классов без модификатора доступа, с произвольными именами. Они будут доступны внутри всего пакета.

Так что ответ – может.

Senior Java Developer

22 Oct, 10:05


Amplicode учит вашу IDE говорить на языке Spring Boot! 

Amplicode – многофункциональный плагин для IntelliJ IDEA Community и Ultimate, упрощает и ускоряет работу с технологиями Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct и т.д.

Основные возможности

Навигация по проекту согласно архитектуре Spring приложения  
Создание объектов сразу в терминах фреймворка вместо Java классов: контроллеры, репозитории, сервисы, сущности, события, DTO, мапперы и т.д.
Палитра и инспектор, позволяющие видеть опции, доступные разработчику в текущем контексте
Умные инжекции, подсказки и исправление ошибок

Это малая часть того, на что способен Amplicode. В настоящий момент возможности доступны абсолютно бесплатно!

Сделано с любовью к разработчикам командой, создавшей суперпопулярный плагин JPA Buddy ❤️

Попробовать Amplicode

Посмотрите как Amplicode помогает разрабатывать на Spring Boot в IntelliJ IDEA! 

#реклама
О рекламодателе

Senior Java Developer

22 Oct, 07:19


Манипуляции с байт-кодом Java

В этой статье мы разберём, как добавить к файлу класса публичный атрибут. Когда загрузчик классов завершит загрузку модифицированного файла класса, мы увидим то поле, которое добавили вручную.

Смотреть статью

Senior Java Developer

21 Oct, 16:10


Какие логические операции и операторы вы знаете?

& : Логическое AND (И);
&& : Сокращённое AND;
| : Логическое OR (ИЛИ);
|| : Сокращённое OR;
^ : Логическое XOR (исключающее OR (ИЛИ));
! : Логическое унарное NOT (НЕ);
&= : AND с присваиванием;
|= : OR с присваиванием;
^= : XOR с присваиванием;
== : Равно;
!= : Не равно;
?: : Тернарный (троичный) условный оператор.

Senior Java Developer

21 Oct, 13:59


Шпаргалка по Spring для Java Junior уже доступна в бесплатной библиотеке от FAANG School.

Только в течение 24 часов вы можете получить доступ:

– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков

Из свежих пополнений – Инструкция по работе с Git (ключевой навык для любого разработчика!)

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

Senior Java Developer

21 Oct, 06:34


#вопросы_с_собеседований
Можно ли использовать строки в конструкции switch?

Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого. При этом:

• участвующие строки чувствительны к регистру;
• используется метод equals() для сравнения полученного значения со значениями case, поэтому во избежание NullPointerException стоит предусмотреть проверку на null.
• согласно документации, Java 7 для строк в switch, компилятор Java формирует более эффективный байткод для строк в конструкции switch, чем для сцепленных условий if-else.

Senior Java Developer

20 Oct, 04:39


⚙️ Более эффективная работа с коллекциями

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

➡️ Эта функция упрощает обработку и классификацию данных.

Senior Java Developer

19 Oct, 15:52


💪 Мощный инструмент в одной строке: Метод of()

Метод of() обеспечивает компактный способ создания неизменяемых коллекций.

🗣️ Этот метод является удобным и эффективным инструментом для создания коллекций с набором известных элементов.

Senior Java Developer

18 Oct, 15:10


➡️ Использование Local-Variable Type Inference

✔️ Функция Local-Variable Type Inference позволяет объявлять локальные переменные без явного указания их типа, что делает код более компактным и улучшает его читаемость

Senior Java Developer

18 Oct, 13:10


♨️ Анализировать множество показателей и не перегружать приложение?
С Java Flight Recorder – это легко.


Приглашаем вас на открытый урок «Обзор инструмента Java Flight Recorder».

🗓 22 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от OTUS.

JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок

Хотите освоить? - приходите на вебинар!

Спикер – Александр Царёв, техлид в Сбере.

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

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

Senior Java Developer

18 Oct, 12:10


➡️ Мощь статических методов: Использование методов интерфейсов

✔️ В Java 8 была введена возможность определения статических методов в интерфейсах, что открыло новые возможности для создания удобных и мощных утилитарных функций прямо в интерфейсах.

🗣В интерфейсе ListUtils определен статический метод max, который находит максимальный элемент в коллекции.

🗣В методе main мы вызываем статический метод max из интерфейса ListUtils, передавая ему список чисел.

🗣Мы выводим найденное максимальное число на экран.

Senior Java Developer

18 Oct, 10:10


Работать ручным тестировщиком круто: можно проверять нестандартные сценарии или поставить себя на место реального пользователя. Но если хочется чего-то большего и ускорить работу над рутинными тест-кейсами — самое время автоматизировать часть задач. Не знаете программирование? Мы научим. 

Приходите в Яндекс Практикум на курс «Автоматизатор тестирования на Java» — за 5 месяцев освоите инструменты автоматизации, основы Java и научитесь покрывать автотестами веб-приложения и API.

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

Senior Java Developer

18 Oct, 06:23


✔️ Использование Flow API для реактивного программирования

Java 9 представила Flow API, который обеспечивает стандартный интерфейс для реализации реактивного программирования.

🗣️ Flow API позволяет создавать асинхронные, нелокальные потоки данных, упрощая работу с реактивными системами.

Senior Java Developer

17 Oct, 20:24


✔️ Использование Collectors.teeing для объединения потоков

Java 12 представила новый метод Collectors.teeing, который позволяет объединить результаты двух различных коллекторов в один итоговый результат.

🗣️ Эта возможность значительно упрощает обработку сложных потоков данных.

Senior Java Developer

17 Oct, 15:10


Yandex Cloud запустил сервис для ускорения разработки продуктов в облаке Yandex Serverless Integrations

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

Сделать это можно благодаря инструменту Yandex Workflows — он позволяет описать последовательность операций с помощью декларативного языка YAML. Сервис автоматически запустит эти процессы и проконтролирует их выполнение.

Помимо этого, Yandex Serverless Integrations включает в себя инструменты EventRouter для передачи событий между сервисами и API Gateway для создания шлюзов между внешними и облачными сервисами по спецификации OpenAPI 3.0.

Читайте подробнее в статье

Senior Java Developer

17 Oct, 13:09


➡️ Сила коллекций: Неизменяемые коллекции в Java

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

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

Senior Java Developer

17 Oct, 11:08


♨️ Анализировать множество показателей и не перегружать приложение?
С Java Flight Recorder – это легко.


Приглашаем вас на открытый урок «Обзор инструмента Java Flight Recorder».

🗓 22 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от OTUS.

JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок

Хотите освоить? - приходите на вебинар!

Спикер – Александр Царёв, техлид в Сбере.

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

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

Senior Java Developer

17 Oct, 10:18


➡️ FEST-Assert — мощная библиотека для упрощения тестирования

FEST-Assert — это библиотека для Java, которая значительно упрощает процесс написания тестов, делая их более выразительными и читаемыми. Она предоставляет удобные и цепочные методы для утверждений, позволяя разработчикам писать тесты, которые легко понимать и поддерживать.

🗣 Если вы хотите сделать свои тесты более читаемыми и выразительными, FEST-Assert — отличный выбор. Эта библиотека упрощает написание тестов и делает их более интуитивно понятными.

🔗 Ссылочка на доку

Senior Java Developer

16 Oct, 18:27


➡️ Использование метода Objects::isNull для удобной проверки на null

Начиная с Java 7, был добавлен метод Objects.isNull(), который позволяет более читаемо проверять объекты на null. Это полезно для улучшения читаемости кода, особенно когда нужно часто проверять переменные на null в сложных конструкциях.

• Objects.isNull() помогает сделать код более выразительным и упрощает проверку объектов, избегая громоздких условных операторов.

Senior Java Developer

16 Oct, 15:07


Хотите научиться разрабатывать парсеры pdf-файлов и создавать полезные приложения?

Приглашаем на открытый урок «Разработка парсера pdf-файла».

🗓 24 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional»

На вебинаре разберем:

- как разработать парсер для выписки ВТБ банка в формате pdf;
- весь путь от идеи до практического применения;
- ответы на все возникающие вопросы.

⬇️ В результате урока вы получите практически полезное приложение с подробностями реализации.

Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.

Все участники вебинара получат специальную цену на обучение!

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

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

Senior Java Developer

16 Oct, 14:57


➡️ Использование метода String::strip для удаления пробелов

Начиная с Java 11, был добавлен метод String.strip(), который удаляет пробелы в начале и в конце строки. В отличие от trim(), он корректно работает с символами пробела, определёнными в Unicode, что делает его более универсальным.

• String.strip() полезен для работы с текстовыми данными, где необходимо гарантированно удалить пробелы в соответствии с международными стандартами Unicode.

Этот метод также предоставляет аналоги для удаления только ведущих или завершающих пробелов: stripLeading() и stripTrailing().

Senior Java Developer

16 Oct, 13:18


⚡️ До конца регистрации на хакатон MORE.Tech от ВТБ остался всего 1 день! Успей подать заявку!

Когда: 11-26 октября 2024
Формат: гибридный (онлайн и офлайн) 
Призовой фонд: 1,5 млн рублей 

🔥 Хакатон подойдёт для тебя, если ты:
– Студент или выпускник технического вуза; 
– Backend / Frontend-разработчик;
– Аналитик;
– Проектный менеджер;
– UX/UI-дизайнер;
– Блокчейн-разработчик (Solidity);
– Специалист в области ИБ.

❗️Выбери свой трек:
1. Озеро данных: большие данные, обработка, хранение и анализ с использованием современных технологий.
2. NFT: система верифицированных достижений и сертификатов на основе блокчейн-токенов.
3. Vault: разработка безопасной системы хранения данных, аналог известного решения Vault от Hashicorp.

▶️ Успей подать заявку до 17 октября, 23:59 МСК по ссылке. 

#реклама
О рекламодателе

Senior Java Developer

16 Oct, 11:53


➡️ Использование метода Collectors.filtering() для фильтрации элементов при сборе в коллекцию

Начиная с Java 9, метод Collectors.filtering() позволяет фильтровать элементы потока перед их сбором в коллекцию. Это полезно, когда нужно собирать только определённые элементы, не прибегая к дополнительным фильтрациям на этапе потока.

• Collectors.filtering() делает код более лаконичным, предоставляя встроенный способ фильтрации элементов в процессе их коллекционирования.

Этот метод позволяет объединять фильтрацию и сбор данных в одну операцию.

Senior Java Developer

16 Oct, 09:51


Ищем автора эталонного кода! 💎

Если вы уверены, что вашему коду подходит звание «Эталонный», а вам — звание «Автор самого красивого кода», то приглашаем принять участие в Конкурсе красоты кода 2.0 и выиграть классные призы от Сбера: iPhone 16 и умную колонку SberBoom.

Опытные эксперты определят победителей в пяти категориях: Backend, Frontend, DevOps, AI и Mobile, — а награждение пройдёт на ключевом IT-событии HighLoad в Москве, 2 и 3 декабря.

Больше 40 участников прошлого конкурса стали частью команды Сбера. Возможно, следующим станете именно вы — переходите по ссылке и изучайте подробности!

Senior Java Developer

16 Oct, 07:21


➡️ JUnit 5 — современный инструмент для модульного тестирования

JUnit 5 — это обновлённая версия популярной библиотеки для тестирования, которая предоставляет мощный и гибкий API для написания модульных тестов. JUnit 5 поддерживает аннотации для удобного создания тестов, расширяемость через расширения, а также работу с различными тестовыми сценариями. Он также лучше интегрируется с современными инструментами и фреймворками.

🗣 JUnit 5 — идеальный выбор для проектов, где необходимо гибкое и масштабируемое тестирование с возможностью использования мощных расширений.

🔗 Ссылочка на доку

Senior Java Developer

15 Oct, 17:01


➡️ TestContainers — инструмент для тестирования с использованием контейнеров Docker

TestContainers — это библиотека, которая позволяет создавать тестовые окружения с использованием Docker-контейнеров. Это особенно полезно для тестирования взаимодействий с базами данных, сообщениями, веб-сервисами и другими инфраструктурными компонентами в изолированной среде.

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

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

🔗 Ссылочка на доку

Senior Java Developer

15 Oct, 15:00


Какая ошибка при использовании метрик – самая опасная ?

Когда мы «молимся» на одни показатели, но игнорируем другие: те, которые не укладываются в нашу картину успеха. Такой перекос опасен для компании: будут страдать и сотрудники, и результаты их работы.

Хотите узнать, как пользоваться метриками, чтобы улучшать процессы, а не просто давить на команду?

Приходите на открытый вебинар «Метрики для оценки работы и производительности команды»

Будет интересно: менеджерам в IT, scrum-мастерам, agile-тренерам, руководителям и тимлидам в отделах разработки.

Вы научитесь:
- усовершенствовать оценку производительности команд
- оптимизировать процессы разработки
- внедрять и развивать метрики в agile и scrum-командах
- соблюдать баланс метрик
- повышать производительность не в ущерб качеству

Спикер: Ирина Метансина – проект-менеджер, agile-практик, бизнес-аналитик с 10-летним опытом в проектном управлении.

17 октября, 19:00 МСК
Бесплатно

Записаться на событие: https://otus.pw/bJar/

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