seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

#вопросы_с_собеседований
В чем разница между интерфейсами Comparable и Comparator?

Основное различие между интерфейсами Comparable и Comparator заключается в том, что в Comparable "зашит" один-единственный алгоритм сравнения объектов, в то время как Comparator представляет собой внешнюю заменяемую настройку. Архитектурно, Comparable - это интерфейс значения, в то время как Comparator - настройка контейнера.

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

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

Senior Java Developer

newSingleThreadExecutor()

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

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

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

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

Senior Java Developer

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

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

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

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

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

Senior Java Developer

🔥 Готовы проникнуться волшебством алгоритмов?

📆 3 июля в 20:00 мск на открытом уроке у вас будет возможность познакомиться с настоящим маленьким чудом — алгоритмом поиска подстроки в строке Кнута-Морриса-Пратта.

🎥 Вебинар приурочен к старту онлайн-курса «Алгоритмы и структуры данных» в OTUS, и проведет его Евгений Волосатов, опытный программист.

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

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

👉 Зарегистрируйтесь на встречу: https://otus.pw/1OWk/

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

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

Senior Java Developer

Попади в команду Дзена всего за два дня!

8-9 июля Дзен приглашает backend-разработчиков на Hiring Days. Сейчас ребята ищут коллег в команды инфраструктуры и продуктовой разработки, нужен опыт от двух лет и готовность работать с высоконагруженным сервисом, в который приходит до 150 тысяч запросов в секунду и от 30 миллионов пользователей каждый день.

На Hiring Days всё как обычно, но без контестов и долгих ответов: вы оставляете заявку, с вами связываются организаторы — и, если всё хорошо, зовут на секции и высылают оффер за выходные.

Регистрация открыта до 5 июля. И да, всё онлайн!

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

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

Аннотация Entity

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

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

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

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

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

Senior Java Developer

👨‍💻 Хотите освоить лучшие инструменты по разработке микросервисной архитектуры?

Ответьте на 11 вопросов, чтобы проверить достаточно ли ваших навыков, чтобы строить архитектуру микросервисов и попасть на курс — «Microservice Architecture» от OTUS.

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

👉 Пройти тест https://otus.pw/F4YQ/

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

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

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

Senior Java Developer

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

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

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

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

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

Senior Java Developer

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

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

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

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

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» вы получите навыки управления проектами в облаке, а также научитесь настраивать сети, правильно хранить данные и разворачивать виртуальные машины.

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

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

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

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