seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

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

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

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

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

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

Senior Java Developer

Разбираемся с GraalVM, AOT и JIT

Если вы хотите разобраться, что такое GraalVM, как он работает, и в чем различия между Just-In-Time (JIT) компиляцией и Ahead-Of-Time (AOT) компиляцией, то это руководство — именно то, что вы искали.

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

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

Senior Java Developer

string-pool

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

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

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

Senior Java Developer

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

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

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

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

Senior Java Developer

Joker в поисках спикеров🕵️‍♂️

Joker — крупнейшая конференция для опытных Java-разработчиков от JUG Ru Group.

Если вы эксперт в Java и хотите поделиться знаниями или интересным кейсом компании, подавайте заявку на выступление. Расскажите о JVM/Runtime, тулинге или фреймворках, архитектуре или о чем-то нетривиальном, связанном с Java.
Полный список тем — на сайте. И не стесняйтесь предлагать свои.

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

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

Подавайте заявки до 4 июля на сайте.

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

Senior Java Developer

Level up для разработчиков, тимлидов и админов. 🗓 28 июня в 20:00 мск состоится вебинар «Авторизация и аутентификация в микросервисной архитектуре». Открытый урок пройдет в преддверии старта онлайн-курса «Microservice Architecture» в OTUS.

👨‍💻 Спикером выступит Сергей Кривонос, руководитель по развитию платформы API Management в АО ДОМ.РФ, эксперт с 8-летним опытом создания архитектуры систем и преподаватель курса OTUS.

На занятии:
- расскажем про различные паттерны аутентификации и авторизации,
- рассмотрим сессионную аутентификацию на основе кук и токенов (jwt),
- рассмотрим работу identity провайдеров.

👉 Пройдите вступительный тест, чтобы записаться на урок — https://otus.pw/VGKWM/

Вебинар приурочен к старту онлайн-курса «Microservice Architecture» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.

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

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

Senior Java Developer

🪙 Освой Spring и требуй повышения зарплаты!

Готов?

Пройди тест по Spring и проверь свои знания.

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

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

🔥 БОНУС
26 июня
, в 20:00 (мск) пройдет бесплатный открытый урок курса - «Метрики и HealthChecks в Spring Boot приложении». Запишитесь.

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

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

Senior Java Developer

Casting

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

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

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

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

Senior Java Developer

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

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

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

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

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

Senior Java Developer

❓Какие 10 самых распространённых ошибок
делают новички в Java?

🔥Рассказываем карточках.

⚠️Полное погружение в программирование на одном из самых популярных языков ждет вас на специализации «Java-разработчик» в OTUS.

Практический опыт 15 месяцев обучения вы закрепите на трёх проектных работах, которые дополнят ваше портфолио и повысят уверенность в новых скиллах.

Подробнее о программе курса: https://otus.pw/w5Q2/

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

Senior Java Developer

Бесплатный курс по облачным технологиям от экспертов Cloud․ru

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

Ответ на этот вопрос вы найдете на вебинаре облачного провайдера Cloud․ru, где в прямом эфире эксперты компании расскажут, как обучение на новом курсе поможет легко и быстро разобраться в многообразии IaaS- и PaaS-сервисов.

⚡С помощью курса «Быстрый старт в Cloud․ru Advanced» вы получите навыки управления проектами в облаке, а также научитесь настраивать сети, правильно хранить данные и разворачивать виртуальные машины.

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

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

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

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

Senior Java Developer

Интерфейс AutoCloseable

Интерфейс AutoCloseable представляет объект, который удерживает свои ресурсы до тех пор, пока он не будет закрыт.

Метод close() объекта, который реализует интерфейс AutoCloseable, вызывается автоматически, когда ресурсы больше не нужны. Эти ресурсы - это объекты, которые должны быть закрыты, как только приложение прекращает их обработку, чтобы они могли быть собраны сборщиком мусора и освободить память.

Оператор try-with-resources гарантирует, что все объявленные ресурсы будут закрыты в конце оператора.

В этом примере мы объявляем экземпляр класса BufferedReader, чтобы прочитать файл "test.txt".
Как только мы закончим чтение файла, метод close() для BufferedReader вызывается автоматически, освобождая ресурсы, связанные с чтением файла.
Результатом работы этого кода будет вывод содержимого файла "test.txt" в консоль. Если файл не существует или произошла другая ошибка ввода-вывода, будет выведен соответствующий стек трассировки.

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

Senior Java Developer

Интерфейс Function

Function — это функциональный интерфейс, который представляет функцию, принимающую один аргумент и возвращающую результат. Он определен в пакете java.util.function и предоставляет метод apply().

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

В этом примере мы создаем функцию half, которая принимает целое число и возвращает его половину в виде числа с плавающей точкой. Затем мы применяем эту функцию к числу 10 и выводим результат.
Результатом выполнения этого кода будет 5.0.

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

Senior Java Developer

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

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

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

Atomic типы, такие как AtomicInteger, AtomicLong, AtomicBoolean и т. д., предоставляют методы для выполнения атомарных операций, таких как get(), set(), getAndSet(), compareAndSet() и т. д.

Они полезны в многопоточном программировании, когда необходимо обеспечить целостность данных при одновременном доступе к общим данным из нескольких потоков. Использование Atomic типов может помочь избежать ошибок синхронизации и улучшить производительность по сравнению с использованием блоков synchronized, так как они не требуют блокировки.

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

Senior Java Developer

SoftReference

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

*Обратите внимание, что сборщик мусора не гарантирует, что он будет немедленно вызван или выполнен при вызове System.gc(). Это просто предложение JVM выполнить сборку мусора, и JVM может проигнорировать это предложение в зависимости от своей реализации и текущего состояния.

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

Senior Java Developer

Мечтали о космосе, а работаете в опенспейсе?

Мы тоже… Но мечты же должны сбываться! Поэтому мы создали свои мультивселенные и решили провести там настоящие соревнования по спортивному хакингу IT’s Tinkoff CTF.

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

Задания будут интересны разработчикам, SRE- и QA-инженерам, аналитикам и другим ИТ-специалистам. А еще вы сможете потренироваться на тестовых заданиях и выбрать лигу по своим скиллам.

Лучшим командам — вселенский почет и денежные призы до 360 000 рублей!

Покорять мультивселенные отправимся 15 и 16 июля. Участвовать можно онлайн и очно в 14 ИТ-хабах Тинькофф по всей России. Офлайн-участников ждут квизы, настолки, крутой мерч и нетворкинг с экспертами.

🚀Переходите на IT’s Tinkoff CTF, читайте подробности и регистрируйтесь!

Да пребудут с вами силы мультивселенной капибары!
(Упс… кажется, мы спалили первую пасхалку, Хьюстон)

Ерид: LdtCKaSxo

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

Senior Java Developer

🔥 Тест для разработчиков, тимлидов и архитекторов!🔥

Ответьте на 11 вопросов и узнайте, достаточно ли у вас знаний, чтобы пройти онлайн-курс «Software Architect» в OTUS.
Курс поможет прокачать весь арсенал навыков, необходимых архитектору ПО. 

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

💣 Пройдете тест и получите:
✔️ Живое общение с экспертами-практиками
✔️ Лучшие открытые уроки прошлых наборов курса
✔️ Продвинутые темы и практика на «боевых» задачах уровня Middle+
✔️ Скидку на прохождение онлайн курса «Software Architect».

Курс доступен в рассрочку.

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

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

Senior Java Developer

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

Еще можно работать из любого города и получить ДМС со стоматологией. Детали тут: https://l.tinkoff.ru/prof-it.tinkoff

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

Senior Java Developer

Runnable

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

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

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

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

Senior Java Developer

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

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

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

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

Senior Java Developer

Удачное и неудачное использование Optional

Optional — это контейнер для объекта, который может содержать или не содержать значение null.

Удачным примером использования Optional является метод orElseGet(), который позволяет вернуть значение по умолчанию, если значение Optional равно null. (изображение 1)

Неудачным примером использования Optional является метод get(), который вызывает исключение NoSuchElementException, если значение Optional равно null. (изображение 2)

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

Senior Java Developer

#вопросы_с_собеседований
Почему современные фреймворки используют в основном только unchecked exceptions?

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

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

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

Senior Java Developer

⚡️ Пройдите тест на знание основ алгоритмов и оцените свой уровень.

❗️ Тест подходит для любого языка программирования.

💪 Сможете сдать – получите запись мастер-класса по алгоритмам
повышающий ваш уровень.

📌 Еще больше полезных знаний ждет вас на онлайн-курсе «Алгоритмы и структуры данных» в OTUS

👉 Пройти тест на знание алгоритмов: https://otus.pw/5Q38/

Хотите посмотреть как проходят занятия на курсе? Приходите на бесплатный открытый урок курса.

📢📢 Регистрация на открытый урок 03.07 а 20:00 мск: «Автомат Кнута-Морриса-Пратта».

Регистрируйтесь сейчас - напомним в день вебинара!

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

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

Senior Java Developer

BufferedInputStream

BufferedInputStream — это конкретный подкласс FilterInputStream, который оборачивает (буферизует) входной поток в буферизованный поток, делая операции чтения на потоке более эффективными и быстрыми.

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

В этом примере мы создаем объект FileInputStream для чтения файла test.txt. Затем мы оборачиваем этот поток в BufferedInputStream, чтобы увеличить эффективность чтения. Мы читаем каждый байт из файла и выводим его на консоль. После завершения чтения мы закрываем оба потока.
Например, если файл test.txt содержит строку "Привет, мир!". Тогда результатом выполнения этого кода будет вывод этой строки на консоль.

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

Senior Java Developer

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

Fail-safe поведение относится к итераторам коллекций. Это означает, что итератор не бросит ConcurrentModificationException, даже если коллекция была изменена во время итерации.

Это достигается за счет создания копии коллекции в момент создания итератора. Таким образом, итератор работает с копией коллекции, а не с оригинальной коллекцией, что позволяет избежать ошибок согласованности.

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

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

Senior Java Developer

Интерфейс Cloneable

Интерфейс Cloneable используется для указания, что класс может быть клонирован. Он не содержит методов и служит только как маркер, указывающий на то, что класс поддерживает интерфейс Cloneable.
Метод clone() является защищенным методом класса Object. Поэтому, чтобы использовать клонирование в своем классе, вы должны переопределить этот метод и сделать его публичным.

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

В этом примере мы создаем класс Student, который реализует интерфейс Cloneable и переопределяет метод clone(). В методе main() мы создаем объект original и клонируем его в объект clone. Затем мы меняем имя в клонированном объекте и видим, что имя в оригинальном объекте остается неизменным. Это демонстрирует, что клонирование создает новый, независимый объект.

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

Senior Java Developer

❓Хотите создавать бэкенд Java-приложений с использованием Groovy? Тогда приходите 27 июня в 20:00 мск на открытый урок «Shared Libraries в Jenkins» в OTUS. На занятии мы посмотрим, как расширять пайплайны в Jenkins с помощью внешних библиотек и научимся их писать.

Встреча приурочена к запуску онлайн-курса «Groovy Developer» в OTUS.

⚡️Спикер: Андрей Поляков, старший разработчик в Unlimint и преподаватель курса.

На занятии мы рассмотрим:
- Подключение библиотек в пайплайнах
- Структуру shared-libraries
- Особенности подключения и глобальные настройки
- Возможности Groovy при написании shared-библиотек

🔥Вебинар будет полезен DevOps-инженерам и Java-разработчикам, которые хотят научиться создавать и настраивать сборки Java Backend проектов.

Для участия зарегистрируйтесь: https://otus.pw/t2gC/

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

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

Senior Java Developer

Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.

Ближайшие мероприятия:

• 14 июня - 5 июля — Fast Track для бэкенд-разработчиков и SRE, офер за 2 дня в команды: Yandex Cloud, Yandex 360, Yandex Infrastructure.
• 15-16 июля — Fast Track для Java-разработчиков, офер за 2 дня в одну из команд Crowd.

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

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

Senior Java Developer

Никакие платные курсы больше не нужны — по этим 4 каналам можно освоить Frontend-разработку с нуля 👇

📌Senior Frontend — JS, HTML и CSS

📌Frontend Interview — как проходить собеседования

📌Web Craft — только Web-разработка

📌Frontender Libs — библиотеки для фронтендеров

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

Senior Java Developer

🔥 Переходите на новый уровень в JS-разработке и разнообразьте свою работу!

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

Ответишь — пройдешь на продвинутый курс «JavaScript Developer. Professional» от OTUS по специальной цене + получишь видео-курс по Git в подарок

👉 ПРОЙТИ ТЕСТИРОВАНИЕ
https://otus.pw/lbc0/

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

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