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

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

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

Для обратной связи: @proglibrary_feeedback_bot
加入频道
В чем разница между == и .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
Как устроены аннотации?

Аннотации в Java — это механизм добавления метаданных к элементам программы. С помощью @Retention указывается, на каком этапе аннотация доступна: только в исходном коде (SOURCE), в байткоде (CLASS), или в рантайме (RUNTIME). @Target определяет, к чему можно применять аннотацию: к полям, методам, параметрам, конструкторам и т. д. Эти параметры управляют поведением аннотации и тем, как фреймворки её интерпретируют, особенно во время рефлексии.

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

Вы следите за этим каналом потому что:

🔥 — Готовлюсь к скорому собеседованию
👍🏼 — Просто поддерживаю себя в тонусе
❤️ — Использую для учёбы в целом
😁 — Другая цель (напишу в комментариях)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Для чего нужен enum в Java?

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

Enum — это полноценный класс, он может содержать поля, методы и реализовывать интерфейсы. Используется, когда набор значений ограничен и заранее известен (например, дни недели, статусы заказа и т.п.).

Преимущества:

Типобезопасность (нельзя присвоить значение вне набора)
Удобство в switch-выражениях
Возможность добавлять поведение (методы)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем отличие между StackOverflowError и OutOfMemoryError?

StackOverflowError возникает, когда стек вызовов переполняется, обычно из-за глубокой или бесконечной рекурсии. Каждый вызов метода занимает место в стеке, и при превышении лимита памяти стека JVM выбрасывает StackOverflowError.

OutOfMemoryError — ошибка нехватки памяти в куче (heap). Она появляется, когда JVM не может выделить дополнительную память для объектов, потому что вся доступная heap-память исчерпана.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
😱 Вся правда об увольнениях в IT в 2025-м

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

Но для этого нам нужна ваша помощь! Мы собираем данные от разработчиков, тестировщиков, менеджеров и всех, кто работает в ИТ, чтобы создать честное исследование о:

— реальных причинах массовых увольнений
— судьбе тех, кто остался за бортом IT-рынка
— том, сколько времени сейчас нужно на поиск работы

Почему это важно? Потому что сила в правде. Зная реальную ситуацию, вы сможете лучше понимать тренды рынка и планировать карьеру.

⚡️Пройдите опрос и помогите всему сообществу: https://clc.to/yJ5krg
Что такое Spring Bean Scope?

Spring Bean Scope определяет жизненный цикл и видимость бина в контейнере.

Основные виды:

▪️ singleton (по умолчанию) — один экземпляр на весь контейнер.
▪️ prototype — новый экземпляр при каждом запросе.
▪️ request — бин живёт в рамках HTTP-запроса.
▪️ session — бин живёт в рамках HTTP-сессии.
▪️ application — бин живёт в рамках веб-приложения.
▪️ websocket — бин на время WebSocket-сессии.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👾 AI-агенты — настоящее, о котором все говорят

На днях мы анонсировали наш новый курс AI-агенты для DS-специалистов 🎉

Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи!

На обучении вы соберете полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.

🎓 В рамках курса вы научитесь:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

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

Старт 5 июля, а при оплате до 1 июня действует дополнительная скидка и бонус — эксклюзивный лонгрид по API и ML от Proglib.

Начните осваивать тему уже сейчас 👉 https://clc.to/Cttu7A
Библиотека собеса по Java | вопросы с собеседований pinned «👾 AI-агенты — настоящее, о котором все говорят На днях мы анонсировали наш новый курс AI-агенты для DS-специалистов 🎉 Это продвинутая программа для тех, кто хочет получить прикладной опыт с LLM и решать сложные задачи! На обучении вы соберете полноценные…»
Что такое инкапсуляция?

Инкапсуляция — это механизм объединения данных (переменных) и методов, работающих с этими данными, в одном классе, с ограничением прямого доступа к внутренним компонентам объекта. В Java инкапсуляция достигается с помощью модификаторов доступа (private, protected, public), а также через предоставление публичных методов для чтения и изменения значений полей.

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