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

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
В чём разница между Heap и Stack?

Stack — это область памяти, где хранятся примитивные типы данных и ссылки на объекты, а также контекст выполнения методов (фреймы). Он работает по принципу LIFO (последний зашёл — первый вышел), быстро выделяет и освобождает память, но объём ограничен. Живёт до конца выполнения потока.

Heap — это область памяти, где хранятся все объекты. Примитивные поля объектов тоже попадают в Heap, но только как часть самого объекта. Управляется сборщиком мусора (GC), доступ к данным медленнее, чем в Stack, но размер больше. Объекты в heap живут, пока на них есть ссылки.

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

SOLID — это аббревиатура из пяти принципов объектно-ориентированного дизайна, предложенных Робертом Мартином, которые помогают делать код гибким, расширяемым и легко поддерживаемым.

S — Single Responsibility Principle
Класс должен иметь только одну причину для изменения, то есть одну зону ответственности.

O — Open/Closed Principle
Классы должны быть открыты для расширения, но закрыты для изменения. Расширяйте поведение через наследование или композицию, не изменяя уже написанный код.

L — Liskov Substitution Principle
Подтипы должны заменять базовый тип без нарушения логики. Везде, где ожидается базовый класс, должен корректно работать и его наследник.

I — Interface Segregation Principle
Много специализированных интерфейсов лучше одного общего. Клиенты не должны зависеть от интерфейсов, которые они не используют.

D — Dependency Inversion Principle
Зависимости должны быть от абстракций, а не от конкретных реализаций. Модули верхнего уровня не должны зависеть от модулей нижнего уровня — оба должны зависеть от абстракций.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Зимний режим OFF. Весна начинается с апгрейда.

Если чувствуешь, что за зиму навыки подзастыли — пора их разморозить.

📦 Включили весеннюю распродажу: скидка –35% на курсы до конца марта.

Выбирай направление и выходи из спячки:

— Алгоритмы и структуры данных — чтобы собеседования в Яндекс, Ozon и другие были как уровень easy

— Математика для Data Science — для тех, кто не хочет просто «жать на кнопки», а понимать, что под капотом

— Архитектуры и шаблоны — если хочется мыслить как senior и прокачать системное мышление

— Python, Frontend, основы IT — для тех, кто стартует путь в разработке

👾 Proglib Academy — это как старая добрая 8-битная игра, но вместо врагов — практические задачи и собеседования.

Мы просто упаковали сложное обучение в пиксельную обёртку, чтобы тебе было чуть веселее прокачиваться.

🧠 Отогревай мозги, прокачивай скиллы и хватай свой power-up до конца марта.

👉 Выбрать курс
Что такое Spring Core?

Spring Core — это основа всего фреймворка Spring. Он предоставляет механизм Inversion of Control (IoC) и Dependency Injection (DI), позволяя создавать гибкие, легко тестируемые и слабо связанные компоненты.

Вместо того чтобы объект сам создавал свои зависимости (например, через new), Spring сам внедряет нужные зависимости во время выполнения.

🔹 Компоненты

ApplicationContext: основной контейнер Spring, где хранятся все бины.
— BeanFactory: облегчённый контейнер, из которого вырос ApplicationContext.
— Конфигурация бинов: XML, Java-класс (@Configuration), аннотации (@Component, @Autowired).

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

Сервлеты — это Java-классы, которые обрабатывают HTTP-запросы и формируют HTTP-ответы на стороне сервера. Они работают внутри сервлет-контейнера (например, Tomcat), расширяя функциональность веб-сервера. Обычно используются для создания динамического контента, например, генерации HTML на лету или обработки форм.

Сервлет реализует интерфейс javax.servlet.Servlet (чаще через HttpServlet) и переопределяет методы вроде doGet(), doPost(). Их жизненный цикл включает три ключевых этапа: инициализация (init() ), обработка запроса (service()/doX() ), уничтожение (destroy() ).

🐸 Библиотека собеса по 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
Что такое JIT-компилятор?

JIT (Just-In-Time) компилятор — это компонент JVM, который компилирует байт-код в машинный код непосредственно во время выполнения программы, а не до старта приложения. Его задача — улучшить производительность, оптимизируя код, исходя из реальных условий работы программы.

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

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

🔹 IO (Input/Output)


Потоково-ориентированный подход (stream-oriented).
Блокирующий ввод-вывод (thread блокируется, пока операция не завершится).
Не поддерживает неблокирующие операции.
Нет встроенных средств буферизации, требует ручной реализации.
Подходит для простых задач, небольших файлов и данных.

🔹 NIO (New Input/Output)

Буферно-ориентированный подход (buffer-oriented).
Поддерживает неблокирующий ввод-вывод (non-blocking).
Позволяет работать с каналами (channels), буферами (buffers), селекторами (selectors).
Эффективен при работе с большим количеством одновременных подключений и крупными данными.
Производительность выше за счёт асинхронности и сокращения потоков.

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

Все три аннотации делают класс Spring-бином, но различаются по семантике:

@Component: базовая аннотация, универсальный бин без конкретной роли.
@Service: указывает, что класс содержит бизнес-логику. Используется для читаемости и логической группировки.
@Repository: помечает DAO-слой (доступ к данным). Плюс Spring автоматически оборачивает методы в блок try-catch для DataAccessException.

⚠️ Разница не в функциональности, а в намерении разработчика. Spring их обрабатывает по-разному только для @Repository (например, при работе с базой данных).

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

▪️ @RequestParamизвлекает значение из query-параметров URL, например: /users?id=5
▪️ @PathVariableизвлекает из части пути, например: /users/5

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает @Transactional и какие подводные камни?

@Transactional говорит Spring обернуть метод в транзакцию. Если всё прошло — делается commit, иначе rollback.

🔹 Особенности:

— Работает только при вызове метода извне, т.к. Spring создаёт прокси.
— Не откатывает по checked exceptions по умолчанию.
— Не работает на private и final методах.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между методами submit() и execute() в ExecutorService?

И submit(), и execute() используются для запуска задач в пуле потоков, но между ними есть важные отличия:

— execute(Runnable) запускает переданную задачу асинхронно, но не возвращает никакого результата. Если во время выполнения возникнет исключение, оно не передаётся явно обратно.

— submit(Runnable/Callable) также запускает задачу асинхронно, но возвращает объект типа Future. С помощью этого объекта можно получить результат задачи (future.get()), проверить статус её выполнения (future.isDone()), явно обработать исключение, если оно произошло во время выполнения задачи.

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