en
Feedback
Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

Open in Telegram

Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot

Show more
6 485
Subscribers
+124 hours
+87 days
+1330 days
Posts Archive
Офер за 2 дня в Яндекс через Weekend Offer Multitrack Это формат быстрого найма для бэкенд-разработчиков с опытом работы от 5 лет на C++, Python, Java/Kotlin или Go. Приглашаем тех, кто умеет принимать архитектурные решения, проектировать сервисы и хорошо понимает многопоточность и низкоуровневые механизмы. Все этапы отбора проходят в течение двух дней: 🟢 14 марта — технические секции. 🟢 15 марта — финальная секция и офер. Далее в рамках программы Multitrack участники выбирают три команды Яндекса, в которых последовательно работают по несколько недель, знакомясь с задачами, внутренними процессами и коллегами. После этого можно выбрать команду, которая понравится больше. Этот подход позволяет сравнить разные проекты внутри Яндекса, оценить задачи изнутри и принять взвешенное решение. Регистрация на участие в программе открыта до 6 марта. Подробности — по ссылке. Реклама. ООО "Яндекс". ИНН 7736207543

Что такое Garbage Collection Roots? GC Roots — это отправные точки для поиска живых объектов сборщиком мусора. К GC Roots относятся: — локальные переменные в стеке активных методовстатические переменныеактивные потоки JNI ссылки GC начинает с roots и проходит граф объектов. Всё, что недостижимо из roots — мусор, подлежит удалению. 🐸 Библиотека собеса по Java #jvm

Что такое Singleton и где он используется? Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
public class DatabaseConnection {
    private static volatile DatabaseConnection instance;

    private DatabaseConnection() {}

    public static DatabaseConnection getInstance() {
        if (instance == null) {
            synchronized (DatabaseConnection.class) {
                if (instance == null) {
                    instance = new DatabaseConnection();
                }
            }
        }
        return instance;
    }
}
Реальные кейсыПул соединений с БД (HikariCP держит один менеджер пула)Логгер (LoggerFactory в SLF4J)Конфигурация приложения (Spring ApplicationContext — де-факто синглтон)Кэш в памяти Подводные камни: проблемы с многопоточностью (решается через volatile + double-checked locking или enum), сложность тестирования, скрытые зависимости. 🐸 Библиотека собеса по Java #patterns

💬 Обратная связь Текущий уровень сложности вопросов? 🔥 — Слишком просто, хочу сложнее 👍🏼 — В самый раз ❤️ — Иногда сложновато 😁 — Часто не понимаю 🐸 Библиотека собеса по Java

✔️ SQL-тест: Топ категорий Google Search Задача из реального интервью в Google 👇 📦 Задание Google хочет проанализировать са
✔️ SQL-тест: Топ категорий Google Search Задача из реального интервью в Google 👇 📦 Задание Google хочет проанализировать самые популярные категории поиска для оптимизации результатов. Таблицы на картинке. Напишите запрос для подсчета общего количества поисков в каждой категории по месяцам за 2024 год. Ставьте → 🔥, если нравится формат. Если нет → 🤔 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise

Какие есть методы в классе Object? Класс Object — это базовый класс для всех классов в Java. Он содержит следующие методы: 🔹 public final Class<?> getClass() – возвращает объект Class для текущего объекта. 🔹 public int hashCode() – возвращает хэш-код объекта. 🔹 public boolean equals(Object obj) – сравнивает объекты на равенство. 🔹 protected Object clone() – создает копию объекта (глубокое/поверхностное копирование зависит от реализации). 🔹 public String toString() – строковое представление объекта. 🔹 public final void notify() – пробуждает один поток, ожидающий монитор объекта. 🔹 public final void notifyAll() – пробуждает все потоки, ожидающие монитор объекта. 🔹 public final void wait() – заставляет поток ждать, пока его не разбудят через notify/notifyAll. 🔹 public final void wait(long timeout) – ждет указанное время или до уведомления. 🔹 public final void wait(long timeout, int nanos) – более точная версия ожидания. 🔹 protected void finalize() – вызывается перед удалением объекта сборщиком мусора (deprecated с Java 9). 🐸 Библиотека собеса по Java #core

Как устроена архитектура брокеров в Kafka? Брокер — это отдельный сервер Kafka. Он принимает сообщения от продюсеров, хранит их на диске и отдаёт консьюмерам. В кластере может быть несколько брокеров. Они работают совместно и знают друг о друге. Топик — это именованный канал, куда продюсеры пишут сообщения, а консьюмеры их читают. Топик делится на партиции. Партиция — это упорядоченный, неизменяемый лог. Партиции распределяются по брокерам. Репликация: у каждой партиции есть один Leader и несколько Follower-реплик. Все записи и чтения идут через Leader, Follower-ы синхронно подтягивают данные. Если Leader падает — один из Follower-ов становится новым Leader-ом. ISR (In-Sync Replicas) — список реплик, которые не отстали от Leader-а. Запись считается подтверждённой только когда все реплики из ISR её получили (если acks=all). Координация: раньше это делал ZooKeeper — хранил метаданные о брокерах, партициях, лидерах. Начиная с Kafka 3.x активно внедряется KRaft. 🐸 Библиотека собеса по Java #core

Как устроена архитектура брокеров в Kafka? Брокер — это отдельный сервер Kafka. Он принимает сообщения от продюсеров, хранит их на диске и отдаёт консьюмерам. В кластере может быть несколько брокеров. Они работают совместно и знают друг о друге. Топик — это именованный канал, куда продюсеры пишут сообщения, а консьюмеры их читают. Топик делится на партиции. Партиция — это упорядоченный, неизменяемый лог. Партиции распределяются по брокерам. Репликация: у каждой партиции есть один Leader и несколько Follower-реплик. Все записи и чтения идут через Leader, Follower-ы синхронно подтягивают данные. Если Leader падает — один из Follower-ов становится новым Leader-ом. ISR (In-Sync Replicas) — список реплик, которые не отстали от Leader-а. Запись считается подтверждённой только когда все реплики из ISR её получили (если acks=all). Координация: раньше это делал ZooKeeper — хранил метаданные о брокерах, партициях, лидерах. Начиная с Kafka 3.x активно внедряется KRaft. 🐸 Библиотека собеса по Java #core

Где хранятся объекты? Объекты хранятся в heap (куче). Ссылки на объекты при этом могут жить в стеке (локальные переменные), в heap (поля других объектов) или в регистрах CPU (оптимизация JIT). 🐸 Библиотека собеса по Java #core

Чем unit-тесты отличаются от интеграционных? Unit-тесты проверяют один изолированный компонент в отрыве от внешних зависимостей. Всё, что не тестируем, заменяем моками. Работают быстро, детерминировано, запускаются при каждом билде. Интеграционные тесты проверяют взаимодействие нескольких компонентов, например, сервис + репозиторий + реальная БД. Здесь уже поднимается контекст, идут реальные вызовы. Работают медленнее, но ловят то, что unit-тесты пропустят: неправильный SQL, проблемы с транзакциями, несовместимость бинов. 🐸 Библиотека собеса по Java #tests

Что такое Spring Data JPA? Spring Data JPA — это абстракция над JPA, упрощающая работу с базами данных. Вместо написания DAO вручную, создаёте интерфейс, и Spring генерирует реализацию. Поддерживает:автогенерацию методов по naming convention@Query для кастомных запросовPaging и Sorting из коробкиSpecification для динамических запросов 🐸 Библиотека собеса по Java #spring

Что такое Spring Boot Actuator? Actuator предоставляет production-ready функции для мониторинга и управления приложением. Эндпоинты:/actuator/health — статус приложения/actuator/metrics — метрики (память, потоки, HTTP запросы)/actuator/env — переменные окружения/actuator/loggers — управление уровнями логирования Можно создавать кастомные эндпоинты. Важно: закрывайте чувствительные эндпоинты в production через Spring Security. 🐸 Библиотека собеса по Java #spring

✔️ Spring-тест: @RateLimit аннотация для методов Напишите production-ready Spring компонент 👇 📦 Задание Реализуйте кастомную аннотацию @RateLimit, которая ограничивает количество вызовов метода с использованием Spring AOP. 🔹 Требования — Использовать Spring AOP — Потокобезопасность — Кэш лимитов — Учитывать имя метода + параметры — Custom exception при превышении Ставьте → 🔥, если нравится формат. Если нет → 🤔 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise

Что такое Fail-Safe итератор? Fail-Safe итератор работает с копией коллекции и не бросает ConcurrentModificationException при модификации. Примеры: CopyOnWriteArrayList, ConcurrentHashMap. Особенности: — не видят изменения, сделанные после создания итераторапотребляют больше памяти (копия данных)подходят для сценариев с редкими изменениями 🐸 Библиотека собеса по Java #core

Что такое Autoboxing и Unboxing? Autoboxing — автоматическое преобразование примитива в класс-обёртку (int → Integer). Unboxing — обратное преобразование (Integer → int). Удобно, но есть подводные камнивозможен NullPointerException при unboxing nullснижает производительность (создание объектов)проблемы с == (сравнивает ссылки, а не значения) 🐸 Библиотека собеса по Java #core

Для чего аннотация @Cacheable в Spring? @Cacheable кеширует результат метода. При повторном вызове с теми же параметрами метод не выполняется, возвращается закешированное значение. Требует @EnableCaching. По умолчанию использует ConcurrentHashMap, но можно подключить Redis, Ehcache, Caffeine. 🐸 Библиотека собеса по Java #spring

🔴 Завтра тестовое собеседование с Java-разработчиком 11 февраля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собес
🔴 Завтра тестовое собеседование с Java-разработчиком 11 февраля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Сергею Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.

Опишите поведение аннотации @Autowired @Autowired — это аннотация Spring Framework для автоматического внедрения зависимостей. Она может применяться к конструкторам, сеттерам, полям и методам. Spring ищет подходящий бин в контексте по типу. Если находит один бин нужного типа — внедряет его. Если бинов несколько — выбрасывает исключение, если не указан квалификатор через @Qualifier. Если бин не найден — тоже выбрасывает исключение, если только не установлен параметр required = false. Начиная с Spring 4.3, если у класса один конструктор, @Autowired можно опустить — Spring автоматически использует его для внедрения. Это считается хорошей практикой, так как делает код менее зависимым от фреймворка. Порядок разрешения зависимостей: сначала по типу, потом по имени бина, если имя поля совпадает с именем бина. Для явного указания используют @Qualifier. 🐸 Библиотека собеса по Java #spring

Зачем нужна аннотация @RestController? @RestController — это специализированная версия @Controller для RESTful сервисов. Объединяет @Controller и @ResponseBody. Без @RestController пришлось бы добавлять @ResponseBody к каждому методу. Результат методов автоматически конвертируется в JSON/XML через HttpMessageConverter. 🐸 Библиотека собеса по Java #spring

💬 Обратная связь Какие вопросы публиковать больше? 👍🏼 — Классика с собесов, чтобы точно набить руку на ближайший 🤔 — Вопросы, которые не встречаются в каждой статье вида "N вопросов для собеса" 🔥 — Больше практики, а то одна теория 🐸 Библиотека собеса по Java