Библиотека собеса по Java | вопросы с собеседований
Відкрити в Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot
Показати більше6 490
Підписники
+124 години
+137 днів
+1530 день
Архів дописів
❓ Что такое Java Memory Model (JMM)?
Java Memory Model (JMM) — это набор правил и спецификаций, описывающих, как потоки в Java взаимодействуют друг с другом через общую память. JMM определяет, когда изменения, сделанные одним потоком, становятся видимыми другим потокам, и как обеспечить предсказуемость поведения многопоточных программ.
🐸 Библиотека собеса по Java
❓ Что такое лямбда?
Лямбда — это краткая форма записи анонимного класса с одним методом. Позволяет писать компактный и читаемый код, особенно при работе с коллекциями и потоками.
Лямбда выражения появились в Java 8 и работают только с функциональными интерфейсами (интерфейсы с одним абстрактным методом).
🐸 Библиотека собеса по Java
💬 Обратная связь
Ваше мнение по контенту:
🔥 — Всё супер
👍🏼 — Нормально
😁 — Есть предложения по улучшению (в комменты)
🐸 Библиотека собеса по Java
❓ Можно ли переопределить статический метод?
Статические методы нельзя переопределить, они подвергаются скрытию (hiding). Если в подклассе объявлен статический метод с той же сигнатурой, что и в суперклассе, то метод из суперкласса не переопределяется, а скрывается.
Вызов скрытого метода зависит от типа ссылки, а не от типа реального объекта (полиморфизм не работает со статическими методами).
Это может привести к неожиданному поведению, так как разработчик может ошибочно рассчитывать на переопределение метода, а на самом деле будет вызван метод из класса ссылки, а не объекта.
⚠️ В целом, скрытие статических методов считается плохой практикой из-за того, что это усложняет понимание кода и может вызвать путаницу.
🐸 Библиотека собеса по Java
❓ В чём разница между методами submit() и execute() в ExecutorService?
И submit(), и execute() используются для запуска задач в пуле потоков, но между ними есть важные отличия:
— execute(Runnable) запускает переданную задачу асинхронно, но не возвращает никакого результата. Если во время выполнения возникнет исключение, оно не передаётся явно обратно.
— submit(Runnable/Callable) также запускает задачу асинхронно, но возвращает объект типа Future. С помощью этого объекта можно получить результат задачи (future.get()), проверить статус её выполнения (future.isDone()), явно обработать исключение, если оно произошло во время выполнения задачи.
🐸 Библиотека собеса по Java
❓ В чём разница между методами submit() и execute() в ExecutorService?
И submit(), и execute() используются для запуска задач в пуле потоков, но между ними есть важные отличия:
— execute(Runnable) запускает переданную задачу асинхронно, но не возвращает никакого результата. Если во время выполнения возникнет исключение, оно не передаётся явно обратно.
— submit(Runnable/Callable) также запускает задачу асинхронно, но возвращает объект типа Future. С помощью этого объекта можно получить результат задачи (future.get()), проверить статус её выполнения (future.isDone()), явно обработать исключение, если оно произошло во время выполнения задачи.
❓ Как работает @Transactional и какие подводные камни?
@Transactional говорит Spring обернуть метод в транзакцию. Если всё прошло — делается commit, иначе rollback.
🔹 Особенности:
— Работает только при вызове метода извне, т.к. Spring создаёт прокси.
— Не откатывает по checked exceptions по умолчанию.
— Не работает на private и final методах.
🐸 Библиотека собеса по Java
❓ Чем отличается @RequestParam от @PathVariable?
▪️ @RequestParam — извлекает значение из query-параметров URL, например:
/users?id=5
▪️ @PathVariable — извлекает из части пути, например: /users/5
🐸 Библиотека собеса по Java❓ В чём разница между @Component, @Service и @Repository в Spring?
Все три аннотации делают класс Spring-бином, но различаются по семантике:
— @Component: базовая аннотация, универсальный бин без конкретной роли.
— @Service: указывает, что класс содержит бизнес-логику. Используется для читаемости и логической группировки.
— @Repository: помечает DAO-слой (доступ к данным). Плюс Spring автоматически оборачивает методы в блок try-catch для DataAccessException.
⚠️ Разница не в функциональности, а в намерении разработчика. Spring их обрабатывает по-разному только для @Repository (например, при работе с базой данных).
🐸 Библиотека собеса по Java
❓ В чём разница между IO и NIO?
🔹 IO (Input/Output)
— Потоково-ориентированный подход (stream-oriented).
— Блокирующий ввод-вывод (thread блокируется, пока операция не завершится).
— Не поддерживает неблокирующие операции.
— Нет встроенных средств буферизации, требует ручной реализации.
— Подходит для простых задач, небольших файлов и данных.
🔹 NIO (New Input/Output)
— Буферно-ориентированный подход (buffer-oriented).
— Поддерживает неблокирующий ввод-вывод (non-blocking).
— Позволяет работать с каналами (channels), буферами (buffers), селекторами (selectors).
— Эффективен при работе с большим количеством одновременных подключений и крупными данными.
— Производительность выше за счёт асинхронности и сокращения потоков.
🐸 Библиотека собеса по Java
❓ Что такое JIT-компилятор?
JIT (Just-In-Time) компилятор — это компонент JVM, который компилирует байт-код в машинный код непосредственно во время выполнения программы, а не до старта приложения. Его задача — улучшить производительность, оптимизируя код, исходя из реальных условий работы программы.
JIT компилирует только те части кода, которые реально исполняются, и может применять различные оптимизации для ускорения работы приложения. Это позволяет сочетать гибкость интерпретируемого байт-кода и производительность нативного кода.
🐸 Библиотека собеса по Java
💬 Обратная связь
Ежемесячный опрос по грейдам. Проверим, стало ли среди нас больше милордов синьоров.
Ваш грейд:
🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
🐸 Библиотека собеса по Java
❓ Что такое сервлеты?
Сервлеты — это Java-классы, которые обрабатывают HTTP-запросы и формируют HTTP-ответы на стороне сервера. Они работают внутри сервлет-контейнера (например, Tomcat), расширяя функциональность веб-сервера. Обычно используются для создания динамического контента, например, генерации HTML на лету или обработки форм.
Сервлет реализует интерфейс javax.servlet.Servlet (чаще через HttpServlet) и переопределяет методы вроде doGet(), doPost(). Их жизненный цикл включает три ключевых этапа: инициализация (init() ), обработка запроса (service()/doX() ), уничтожение (destroy() ).
🐸 Библиотека собеса по Java
❓ Что такое Spring Core?
Spring Core — это основа всего фреймворка Spring. Он предоставляет механизм Inversion of Control (IoC) и Dependency Injection (DI), позволяя создавать гибкие, легко тестируемые и слабо связанные компоненты.
Вместо того чтобы объект сам создавал свои зависимости (например, через new), Spring сам внедряет нужные зависимости во время выполнения.
🔹 Компоненты
— ApplicationContext: основной контейнер Spring, где хранятся все бины.
— BeanFactory: облегчённый контейнер, из которого вырос ApplicationContext.
— Конфигурация бинов: XML, Java-класс (@Configuration), аннотации (@Component, @Autowired).
🐸 Библиотека собеса по Java
Зимний режим OFF. Весна начинается с апгрейда.
Если чувствуешь, что за зиму навыки подзастыли — пора их разморозить.
📦 Включили весеннюю распродажу: скидка –35% на курсы до конца марта.
Выбирай направление и выходи из спячки:
— Алгоритмы и структуры данных — чтобы собеседования в Яндекс, Ozon и другие были как уровень easy
— Математика для Data Science — для тех, кто не хочет просто «жать на кнопки», а понимать, что под капотом
— Архитектуры и шаблоны — если хочется мыслить как senior и прокачать системное мышление
— Python, Frontend, основы IT — для тех, кто стартует путь в разработке
👾 Proglib Academy — это как старая добрая 8-битная игра, но вместо врагов — практические задачи и собеседования.
Мы просто упаковали сложное обучение в пиксельную обёртку, чтобы тебе было чуть веселее прокачиваться.
🧠 Отогревай мозги, прокачивай скиллы и хватай свой power-up до конца марта.
👉 Выбрать курс
❓ Что такое принципы SOLID?
SOLID — это аббревиатура из пяти принципов объектно-ориентированного дизайна, предложенных Робертом Мартином, которые помогают делать код гибким, расширяемым и легко поддерживаемым.
S — Single Responsibility Principle
Класс должен иметь только одну причину для изменения, то есть одну зону ответственности.
O — Open/Closed Principle
Классы должны быть открыты для расширения, но закрыты для изменения. Расширяйте поведение через наследование или композицию, не изменяя уже написанный код.
L — Liskov Substitution Principle
Подтипы должны заменять базовый тип без нарушения логики. Везде, где ожидается базовый класс, должен корректно работать и его наследник.
I — Interface Segregation Principle
Много специализированных интерфейсов лучше одного общего. Клиенты не должны зависеть от интерфейсов, которые они не используют.
D — Dependency Inversion Principle
Зависимости должны быть от абстракций, а не от конкретных реализаций. Модули верхнего уровня не должны зависеть от модулей нижнего уровня — оба должны зависеть от абстракций.
🐸 Библиотека собеса по Java
🔍Тестовое собеседование на Middle Java-разработчика завтра
26 марта(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Илья Аров, старший разработчик в Т1, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwRjebJ
❓ В чём разница между Heap и Stack?
Stack — это область памяти, где хранятся примитивные типы данных и ссылки на объекты, а также контекст выполнения методов (фреймы). Он работает по принципу LIFO (последний зашёл — первый вышел), быстро выделяет и освобождает память, но объём ограничен. Живёт до конца выполнения потока.
Heap — это область памяти, где хранятся все объекты. Примитивные поля объектов тоже попадают в Heap, но только как часть самого объекта. Управляется сборщиком мусора (GC), доступ к данным медленнее, чем в Stack, но размер больше. Объекты в heap живут, пока на них есть ссылки.
🐸 Библиотека собеса по Java
❓ Что такое AOP?
AOP (Aspect-Oriented Programming) — это парадигма программирования, позволяющая вынести повторяющийся функционал (например, логирование, безопасность, транзакции) в отдельные модули, называемые аспектами, и "вшить" их в бизнес-логику без изменения её кода.
AOP позволяет разделить технический и бизнес-код, избавляя от дублирования и улучшая читаемость.
🔹 Ключевые термины:
— Join Point: точка в выполнении программы (например, вызов метода).
— Advice: код, который выполняется на Join Point (например, до/после метода).
— Pointcut: выражение, определяющее, где именно применять Advice.
— Aspect: класс, содержащий Advice и Pointcut.
— Weaving: процесс внедрения аспектов в код.
🐸 Библиотека собеса по Java
💬 Как оставлять комментарии в чате нашего канала
В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.
❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.
✅ Как присоединиться к чату, чтобы бот вас не забанил
— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас все-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
