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
Не переводи стрелки, собака!

📱 Java Developer | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43🤣163
Вопрос с собеседования

Что такое множество в Java и какие существуют его стандартные реализации?

Ответ: Множество (Set) в Java — это коллекция без повторяющихся элементов. Оно реализуется через интерфейс java.util.Set. Стандартные реализации в JDK:

HashSet — основан на хеш-таблице, не сохраняет порядок элементов, допускает null.

LinkedHashSet — расширяет HashSet, сохраняет порядок добавления.

TreeSet — реализует NavigableSet, хранит элементы в отсортированном порядке по Comparable или Comparator.

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

CopyOnWriteArraySet — потокобезопасная реализация на базе CopyOnWriteArrayList, используется, если читающих потоков больше, чем записывающих.

Эти классы покрывают разные сценарии: от высокой производительности до потокобезопасности и сортировки.


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
👩‍💻 Лучшие практики применения

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

Автор подробно освещает ключевые технические аспекты Kafka, приводя наглядные примеры, реальные кейсы и рекомендации по настройке.

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

tags: #статья

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

Что такое CORS и CSRF?

Ответ: CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который контролирует, какие внешние источники (домены) могут обращаться к ресурсам сайта. Он защищает пользователя от несанкционированных запросов со сторонних сайтов и реализуется через HTTP-заголовки, которые сервер явно разрешает или запрещает.

CSRF (Cross-Site Request Forgery) — это тип атаки, при которой злоумышленник заставляет браузер пользователя выполнить нежелательный запрос к сайту, на котором пользователь уже аутентифицирован. Защита от CSRF обычно реализуется с помощью CSRF-токенов, проверки заголовков и настройки cookie.


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

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥1
👩‍💻 Как должен выглядеть правильный Docker Image для Spring Boot приложения?

В статье показано, как собрать Docker-образ Spring-приложения с готовыми средствами для диагностики и мониторинга.

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

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

tags: #статья

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

Какие существуют модели авторизации и в чём их отличия?

Ответ: Авторизация определяет, какие действия и ресурсы разрешены пользователю после аутентификации. Основные модели авторизации различаются тем, как принимается решение о доступе.

Ролевая модель (RBAC) основана на ролях. Пользователю назначаются роли, а каждая роль определяет набор разрешённых действий. Модель проста в реализации и широко используется, но плохо подходит для сложных и динамических правил доступа.

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

Атрибутная модель (ABAC) принимает решение о доступе на основе атрибутов пользователя, ресурса и контекста, например времени, местоположения или типа запроса. Это самая гибкая модель, но и самая сложная в реализации и сопровождении.

Итог: RBAC подходит для простых систем, permission-based — для более точного контроля, ABAC — для сложных бизнес-правил и динамических политик доступа.


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

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2
👩‍💻 Hibernate Best Practices для начинающих

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

Автор разбирает, как задавать id, настраивать связи между сущностями, избегать N+1, использовать ленивую загрузку, кэш второго уровня и корректно работать с equals, hashCode и исключениями.

⛓️ Читать статью

tags: #статья

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

Где хранятся объекты?

Ответ: Все объекты, создаваемые через new, размещаются в куче (heap) — области памяти, управляемой сборщиком мусора. Ссылки на эти объекты могут храниться в стеке, если они являются локальными переменными внутри метода. Таким образом, объект — в куче, ссылка на него — в стеке.

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

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

Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?

Ответ: Метод clone() определён в классе Object, потому что он реализует базовый механизм побитового копирования объекта средствами JVM (через native-реализацию). Он объявлен как protected, чтобы не допустить прямого вызова вне класса, если метод не переопределён.

Интерфейс Cloneable при этом — маркерный, без методов. Он служит лишь индикатором того, что объект допускает клонирование. Если объект не реализует Cloneable, а метод clone() всё же вызывается, будет выброшено исключение CloneNotSupportedException. Это позволяет обеспечить контроль над тем, какие классы разрешают копирование, и избежать некорректного поведения при клонировании по умолчанию.


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

📱 Java Developer | 📲 MAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
👩‍💻 Mockito и как им пользоваться

В статье рассказывается, как использовать Mockito для написания модульных тестов в Java без зависимости от реальных сервисов и баз данных.

Автор объясняет, как создавать моки, задавать их поведение и проверять вызовы — с примерами кода и интеграцией с JUnit.

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

tags: #статья

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

Почему в Java интерфейс может иметь методы с реализацией (default)? Это не противоречит идее интерфейса?

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

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


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

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

Что делает метод 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