Библиотека собеса по Java | вопросы с собеседований
6.3K subscribers
391 photos
8 videos
417 links
Вопросы с собеседований по Java и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
✔️ Java-тест: Docker edition

Продолжаем тестить новый формат. Представим задачу 👇

У вас есть Spring Boot-приложение. Нужно собрать Docker-образ, который:
1. Основан на официальном JDK 21
2. Поддерживает порт 8080
3. Настраивает часовой пояс контейнера на Москву (Europe/Moscow)


📦 Задание:

Составьте Dockerfile, который корректно запускает приложение в контейнере по условиям выше.

Ставьте →🔥, если зашёл формат. Если нет, то → 🤔

💬 Скидывайте Dockerfile в комментарии, главное прячьте под спойлер.

🐸 Библиотека собеса по Java

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍3👏1🤔1
Что такое transaction propagation в Spring и какие виды существуют?

Propagation (передача транзакции) — политика того, как метод с аннотацией @Transactional будет взаимодействовать с существующей транзакцией.

Виды:

▪️ REQUIRED (по умолчанию): использует существующую транзакцию или создаёт новую, если её нет

▪️ REQUIRES_NEW: всегда создаёт новую транзакцию, при этом приостанавливая текущую

▪️ SUPPORTS: действует в рамках текущей транзакции, если есть, иначе без транзакции

▪️ MANDATORY: бросает исключение, если нет текущей транзакции

▪️ NEVER: запрещает наличие транзакции, если уже есть, бросает исключение

▪️ NESTED: создаёт «вложенную» транзакцию (savepoint внутри основной)

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1👏1
DispatcherServlet в Spring Framework?

DispatcherServlet — это центральный компонент Spring MVC, который выступает в роли Front Controller.
Он принимает все входящие HTTP-запросы, перенаправляет их нужным контроллерам и формирует HTTP-ответ.

🔹 При получении запроса он:

— Определяет нужный Handler (контроллер) через HandlerMapping.

— Передаёт выполнение HandlerAdapter, который вызывает метод контроллера.

— Обрабатывает результат с помощью ViewResolver, чтобы вернуть клиенту нужное представление (например, HTML или JSON).

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
💡 Задача с собесеседования

Недавно в одном известном всем банке кандидату была предложена задача:

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


Вероятности, распределения, матожидание, градиенты — всё это может всплыть на интервью, и даже в продовых задачах.

🎓 Proglib запускает экспресс-курс «Математика для Data Science» — для тех, кто хочет закрыть эти пробелы и понять математику быстро, качественно и без боли.

🔍 На курсе вас ждет:

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

📅 Старт: 6 ноября
Формат: 10 вебинаров и 3 практических проекта
💬 Поддержка: менторы + Telegram-чат
💰 Стоимость: 37 000 ₽ (есть рассрочка)

🔗 Узнать больше и записаться
😁42🔥1
Что такое Lazy Initialization?

Lazy Initialization — это подход, при котором объект создаётся только в момент первого обращения к нему, а не заранее при инициализации класса или приложения.

Такой подход экономит ресурсы (память, CPU) и ускоряет старт программы, особенно если объект может так и не понадобиться.

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🔥1
😵‍💫 Устал от бесконечной подготовки к собесам?

Тогда залетай к нам, есть задачка попроще.

Пройди в нашем боте мини-тест по математике и узнай, готов ли ты к Data Science или стоит что-то подтянуть.

📱 Перейти в бота
😁21
Что такое маркерный интерфейс?

Маркерный интерфейс — это интерфейс, который не содержит методов, но служит для маркировки классов с определённой целью. Его использование позволяет указывать, что объект принадлежит к определённому типу или должен иметь особое поведение, не реализуя дополнительные методы.

🐸 Библиотека собеса по Java

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥1
🔥 Новый курс «Математика для Data Science»

Записывайтесь до 19.10 и получите бонус-курс «Школьная математика» для быстрого освежения знаний! 🚀

🧠 Эксперты-спикеры на курсе:

▫️ Диана Миронидис — преподаватель ВШЭ, автор Яндекс Практикума;

▫️ Ксения Кондаурова — преподаватель Центрального Университета (Т-Банк);

▫️ Маргарита Бурова — академический руководитель программ Wildberries & Russ.

👉🏻 Не упустите шанс улучшить свои навыки
😁3👾1
В чем разница между == и .equals() в Java?

== сравнивает ссылки на объекты (т.е. проверяет, указывают ли две переменные на один и тот же объект в памяти).

.equals() — это метод, предназначенный для сравнения содержимого объектов. По умолчанию в классе Object он работает как ==, но многие классы (например, String, Integer, List) переопределяют его, чтобы сравнивать значения. Также можно самостоятельно переопределить его.

🐸 Библиотека собеса по Java

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥1
В чём разница между Lambdas и Anonymous Classes?

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

Ключевые отличия:

🧩 Синтаксис: лямбда короче и читабельнее.

⚡️ Производительность: лямбды компилируются как invoke-dynamic и не создают новый класс → меньше накладных расходов.

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

🎯 Назначение: анонимные классы подходят, если нужно переопределить несколько методов или иметь состояние. Лямбды — только для одного метода.

🐸 Библиотека собеса по Java

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2👏1
✔️ Java-тест: Concurrency edition

Проверим, как вы дружите с многопоточностью 👇

У вас есть метод doWork(), который выполняет тяжёлую операцию (например, чтение и обработку файла).

📦 Задание:

Нужно запустить ровно 5 потоков, каждый из которых вызывает doWork(), и дождаться завершения всех перед продолжением выполнение основного потока.

Разрешено использовать любые инструменты.

Ставьте → 🔥, если нравится формат. Если нет → 🤔

💬 Решения под спойлер. Сравним, какое будет лучше.

🐸 Библиотека собеса по Java

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👏1
🧠 Математика — движок всего, что мы пишем

Без неё не было бы сортировок, шифрования, графов и даже того самого if с вероятностью успеха в A/B-тесте.

Но главное, математика понятна, если объяснить её на языке разработки.

📘 Курс «Математика для Data Science»:

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

🎓 За 2 месяца вы перестанете просто использовать библиотеки и начнёте понимать, как они работают.

🗓 Старт → 6 ноября

👉 Записаться на курс
😁3🌚1
Что такое Fork/Join Pool?

ForkJoinPool — это специальный пул потоков, оптимизированный для выполнения множества мелких параллельных задач, которые можно рекурсивно делить (fork) и объединять (join).

▪️ Как работает:

Задача делится на подзадачи (метод fork()), каждая выполняется в отдельном потоке.

Когда подзадачи завершаются, результаты объединяются (join()).

— В отличие от обычного ThreadPoolExecutor, каждый поток имеет собственную двустороннюю очередь задач и использует механизм work stealing: если поток простаивает, он "ворует" задачи из очередей других потоков.

▪️ Когда применять:


— Для задач, которые можно разбить на независимые части (например, обработка массивов, вычисления, рекурсивные алгоритмы).
— При необходимости максимально загрузить CPU (по числу ядер).

🐸 Библиотека собеса по Java

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2👏1