Библиотека собеса по Java | вопросы с собеседований
6.35K subscribers
367 photos
4 videos
255 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Для обратной связи: @proglibrary_feeedback_bot
加入频道
Что такое сервлет?

Сервлет — это Java-класс, который обрабатывает HTTP-запросы и формирует HTTP-ответы в веб-приложениях. Он работает на стороне сервера в контейнере сервлетов (например, Tomcat), реализуя интерфейс javax.servlet.Servlet (чаще — через абстрактный класс HttpServlet).

Основная задача сервлета — выступать в роли контроллера в архитектуре MVC: принимать запросы от клиента, обрабатывать данные (либо делегировать бизнес-логике), и передавать результат обратно клиенту (обычно через HTML или JSON).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между аннотациями @Controller и @RestController в Spring?

@RestController — это сокращение для @Controller + @ResponseBody.
Она используется, когда контроллер возвращает данные (JSON/XML), а не представления (JSP/HTML).

Кратко:

@Controller используется для возврата HTML через шаблонизаторы (например, Thymeleaf).
@RestController — для API, где ответ — это тело (body) с данными, а не страница.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Назовите инструменты для версионирования СУБД.

Среди популярных инструментов для версионирования базы данных чаще всего используются:

▪️ Flyway — простой в настройке инструмент, основанный на SQL- или Java-скриптах, подходит для большинства проектов.

▪️ Liquibase — более гибкий, поддерживает формат XML, YAML, JSON и SQL, имеет возможность откатов, работы с changelog'ами и генерацией диффов.

▪️ Liquibase + Hibernate — можно использовать вместе для генерации changelog'ов из JPA-сущностей.

▪️ Sqitch — мощный, но менее популярный инструмент, ориентирован на работу через VCS и требует ручного управления зависимостями.

💬 Что используете на проекте?

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое «аутентификация» и «авторизация»?

Аутентификация — это процесс проверки личности пользователя (кто он есть). Обычно реализуется через логин и пароль, токены или биометрию. Аутентификация отвечает на вопрос "Кто ты?"

Авторизация — это процесс проверки, имеет ли пользователь доступ к определённым ресурсам или операциям (что он может делать). Авторизация — "Что тебе разрешено?"

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Обратная связь

Какие темы в этом месяце использовать для постов чаще:

🔥 — Java core
👍🏼 — Spring
👾 — Паттерны
😁 — Напишу в комменты свой вариант

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем плюсы Spring Boot относительно чистого Spring?

— Spring Boot предлагает механизм автоматической настройки, который автоматически подбирает параметры конфигурации для вашего приложения в зависимости от добавленных зависимостей, снижая количество необходимого для настройки кода.

— В Spring Boot не нужно писать boilerplate-код для настройки приложения.

— Spring Boot поставляется с встраиваемыми серверами, такими как Tomcat, Jetty или Undertow, что позволяет запускать приложение как standalone Java-программу без необходимости развертывать его на внешнем сервере.

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

— Spring Boot предлагает стандартную структуру каталогов и конфигурационных файлов, что ускоряет запуск и упрощает поддержку проекта.

— Инструменты, такие как Spring Boot CLI и Maven/Gradle плагины, позволяют легко собирать, тестировать и деплоить приложения.

— Spring Boot активно развивается, имеет обширную документацию и поддерживает множество интеграций с другими технологиями.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Elasticsearch?

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему Java считается платформонезависимым языком?

Java достигает платформонезависимости благодаря архитектуре "Write Once, Run Anywhere" (WORA). Исходный код компилируется в байт-код, который выполняется на Java Virtual Machine (JVM). JVM адаптирует байт-код под конкретную операционную систему, обеспечивая совместимость без необходимости перекомпиляции.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Смешные новости про IT теперь в одном канале

Мы запустили @hahacker_news — наш новый юмористический IT-канал.

Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.

👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
В чем разница между == и .equals()?

Оператор == сравнивает ссылки на объекты, то есть их физическое местоположение в памяти. Метод .equals() предназначен для сравнения содержимого объектов. Например, для строк рекомендуется использовать .equals(), так как строки могут быть одинаковыми по значению, но различными по ссылке.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое volatile?

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие методы реализации принципа Инверсия управления (IoC) вы знаете?

Существует три основных метода реализации IoC:

🔹 Внедрение зависимостей (Dependency Injection, DI) — зависимости передаются объекту извне, обычно через конструктор, сеттеры или интерфейсы. Это самый распространённый и гибкий способ.

🔹 Контейнеры управления (IoC Containers) — специализированные фреймворки (например, Spring), которые сами создают и управляют жизненным циклом объектов, внедряя зависимости автоматически.

🔹 Сервис-локаторы (Service Locator) — объект запрашивает свои зависимости у централизованного реестра сервисов. Менее предпочтительный подход из-за скрытой зависимости и сложностей тестирования.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Обратная связь

Ежемесячный опрос по грейдам. Проверим, растёт ли кол-во квалифицированных специалистов.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Docker?

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Где лучше хранить пароль: в String или в char[]?

Лучше использовать char[].
У String содержимое неизменяемо и хранится в пуле строк, что делает её уязвимой: пароль может долго находиться в памяти, и его нельзя явно очистить.
В случае с char[] можно перезаписать содержимое сразу после использования (например, обнулить), снижая риск компрометации данных при дампе памяти или атаке через heap dump.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое this?

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

— Сослаться на поля класса, если локальные переменные или параметры метода имеют такое же имя
— Вызвать другой конструктор в том же классе
— Передать текущий объект как аргумент другому методу или объекту

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🥵 Устали от статей, где эйчары рассказывают, как на самом деле выглядит рынок труда в ИТ?

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

Результаты этого исследования помогут понять, как специалистам искать работу в 2025-м (а компаниям — специалистов).

👉 Если вы готовы сделать свой вклад в исследование — велком: https://clc.to/VGgyNA
Объясните основные отличия между CompletableFuture и Future?

▪️ Future предоставляет базовую возможность получить результат асинхронной операции, но не позволяет легко комбинировать или цеплять действия.
▪️ CompletableFuture — расширение с поддержкой композиции, цепочек, обработки исключений, таймаутов и триггеров. Позволяет писать декларативный, неблокирующий код с методами thenApply(), thenCompose(), exceptionally().

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Объясните различия между ConcurrentHashMap и HashMap?

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

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

С версии Java 8 применяется CAS-логика и синхронизация на уровне bin-ов для модификаций, а чтения выполняются без блокировок.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM