Java Developer – Telegram
Java Developer
15.6K subscribers
1.89K photos
144 videos
2 files
2.14K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Вопрос с собеседования

Что делает метод clone()?

Ответ: clone() создаёт копию объекта. Реализация по умолчанию делает поверхностное копирование: примитивы копируются, а ссылки на вложенные объекты остаются теми же. Чтобы clone() работал, класс обязан реализовывать Cloneable, иначе будет ошибка CloneNotSupportedException.

Метод обычно переопределяют, чтобы настроить логику копирования или сделать копию глубже. При этом стандартно вызывают super.clone() и дальше вручную дублируют необходимые поля.

Использование clone() считается не самым удобным способом копирования объектов, поэтому в реальных проектах чаще применяют конструкторы копирования или фабричные методы.


tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
👩‍💻 Перевод Spring Boot на HTTPS без ругани браузера

Данная статья рассчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении.

В этой статье разбирается именно работа со Spring Boot и вшитым в него Apache Tomcat.

Читать статью

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5👍3
Вопрос с собеседования

Что такое оптимистичная и пессимистичная блокировки в контексте баз данных?

Ответ: Это два подхода к управлению конкурентным доступом к данным.

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

Оптимистичная блокировка исходит из того, что конфликты редки. Данные читаются без блокировки, а перед фиксацией изменений выполняется проверка версии: не изменил ли их кто-то ещё. Если изменил — транзакция откатывается и повторяется. Такой подход даёт лучшую производительность при низкой конкуренции.


tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Вопрос с собеседования

Что будет, если добавлять элементы в TreeSet по возрастанию?

Ответ: TreeSet основан на самобалансирующемся красно-чёрном дереве. Оно автоматически поддерживает баланс, поэтому порядок добавления элементов (по возрастанию, убыванию или случайный) не влияет на производительность операций — они остаются логарифмическими: O(log n) для добавления, поиска и удаления.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6
Вопрос с собеседования

Почему String считается безопасным ключом для HashMap?

Ответ: Объекты класса String в Java неизменяемы — это значит, что после создания их значение не может быть изменено. Это важно, потому что ключ в HashMap должен оставаться стабильным: и хеш, и сравнение не должны меняться со временем.

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


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
Вопрос с собеседования

Как управлять кешированием в HTTP?

Ответ: Кеширование в HTTP управляется с помощью специальных заголовков, которые определяют, когда и как можно повторно использовать загруженные данные.

▶️ Cache-Control — основной заголовок, задающий правила кеширования: время жизни (max-age), доступность (public, private), запрет кеширования (no-store) и др.

▶️ Last-Modified + If-Modified-Since — позволяют серверу сообщить дату последнего изменения ресурса, а клиенту — запрашивать данные только при обновлении

▶️ ETag + If-None-Match — используют уникальный идентификатор версии ресурса. Если версия не изменилась, сервер отвечает 304 Not Modified

Эти механизмы снижают нагрузку на сеть и ускоряют повторные загрузки.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
👍 Самый простой способ поделиться своим localhost

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

Ключевые особенности:
▶️ Запускается через одну команду или прямо из браузера

▶️ Мгновенно выдаёт публичный URL, которым можно делиться

▶️ Не требует регистрации и сложной настройки


Удобно, когда нужно протестировать вебхук/API или быстро дать доступ к демо прямо с localhost — пробуем тут.

tags: #полезное

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥91
👍2
Что выведет код сверху?
Anonymous Quiz
4%
null
28%
Null
29%
NullPointerException
35%
Ошибка
4%
Ничего
2👍1
👩‍💻 Циклические зависимости в Spring: как находить и устранять

Если в вашем проекте внезапно Spring ругается на circular dependency, вы не одиноки — такие ошибки возникают даже в продуманных архитектурах.

В статье разобраны причины появления циклических зависимостей, показано, как их отследить с помощью Bean Navigation, и даны рабочие способы решения проблемы.

Читать статью

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Вопрос с собеседования

Что такое FutureTask?

Ответ:
FutureTask представляет собой отменяемое асинхронное вычисление и реализует интерфейсы Runnable и Future. Он позволяет запускать задачу, проверять её состояние, отменять выполнение и получать результат по завершении. Если результат ещё не готов, метод получения блокируется до окончания вычисления. FutureTask может оборачивать как Callable, так и Runnable, и благодаря реализации Runnable может передаваться в Executor для выполнения.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
👩‍💻 JDBC: как Java научилась дружить с базами данных?

В статье объясняется, как работает JDBC — стандартный способ подключения Java-приложений к базам данных.

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

Читать статью

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Вопрос с собеседования

Как устроен Message в Kafka?

Ответ:
Сообщение в Kafka — это единица данных, которую продюсер отправляет в топик. Каждое сообщение состоит из следующих компонентов:

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

Значение (value) — основное содержимое сообщения, например строка, JSON, байты и т.п.

Метаданные — включают смещение (offset), временную метку, имя топика и номер партиции.

Все сообщения в партиции упорядочены и неизменяемы. Kafka хранит их как commit log и позволяет читать данные повторно, начиная с любого смещения.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👀1
👩‍💻 Барьеры и модели памяти

В статье на примере реального кейса из Amazon рассказывается о проблемах, которые могут возникнуть при переносе сервисов между архитектурами x86/64 и ARM из-за различий в моделях памяти.

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

Читать статью

tags:
#статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Вопрос с собеседования

Какие типы Statement существуют в JDBC?

Ответ: В JDBC есть три основных типа Statement:

▶️ Statement — используется для простых SQL-запросов без параметров

▶️ PreparedStatement — позволяет подставлять значения через параметры (?), безопасен от SQL-инъекций и эффективен при многократном выполнении

▶️ CallableStatement — предназначен для вызова хранимых процедур в базе данных

tags: #собеседование

📱 Java Developer  | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🖥 Шпаргалка по основным директориям Linux

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

tags: #полезное

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3🔥2
Вопрос с собеседования

Какую проблему решает ExecutorService?

Ответ: ExecutorService отделяет постановку задач от управления потоками. Разработчик работает с задачами, а не с потоками напрямую, а пул потоков берёт на себя создание, планирование и завершение выполнения.

tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5
👩‍💻 От Redis к Kafka Streams: как мы проверяем сетевую доступность 200к устройств

В статье разбирается, как проверять доступность ~200 000 устройств каждые 10 минут, не перегружая базу данных и сервисы.

Автор показывает, почему решение на Redis оказалось излишне сложным, и как Kafka Streams позволяет упростить архитектуру, сохранив масштабируемость и отказоустойчивость.

Читать статью

tags: #статья

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Вопрос с собеседования

Как организовать очередь сообщений через Redis?

Ответ: Очередь сообщений в Redis можно реализовать разными способами. Самый простой вариант — использовать списки, где продюсер добавляет сообщения, а воркер забирает их по FIFO. Это быстро, но требует аккуратной обработки сбоев.

Более надёжный подход — Redis Streams, которые поддерживают группы потребителей и подтверждение обработки сообщений, что позволяет избежать потерь. Pub/Sub для очередей обычно не используют, так как сообщения не сохраняются и могут быть потеряны.


tags: #собеседование

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2
👩‍💻 Как я добился гибкости в приложении и при чем тут ссылки на методы?

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

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

Читать статью

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
👀6