ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

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

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

前往频道在 Telegram

Вопросы с собеседований по Java и ответы на них. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot

显示更多
6 378
订阅者
-324 小时
-237 天
-5530 天
帖子存档
❓ Где хранятся объекты? Объекты хранятся в 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

✔️ SQL-тест: Фильтрация активных рекламных кампаний Задача из реального интервью в Google 👇 📦 Задание Вы аналитик Google Ad
✔️ SQL-тест: Фильтрация активных рекламных кампаний Задача из реального интервью в Google 👇 📦 Задание Вы аналитик Google Ads. Нужно найти все объявления, которые: — Имеют статус 'active' — Показов больше 500,000 — Обновлены в 2024 году Таблица google_ads на картинке. Напишите SQL-запрос для фильтрации. Ставьте → 🔥, если нравится формат. Если нет → 🤔 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise

❓ Что такое Selector в NIO? Selector позволяет одному потоку обрабатывать множество каналов (network connections).
Selector selector = Selector.open();
channel.register(selector, SelectionKey.OP_READ);

while (true) {
    selector.select();  // блокируется до события
    
    Set<SelectionKey> keys = selector.selectedKeys();
    for (SelectionKey key : keys) {
        if (key.isReadable()) {
            // обработка чтения
        }
    }
}
Один поток может обслуживать тысячи соединений. Это основа high-performance серверов (Netty, Tomcat NIO). 🐸 Библиотека собеса по Java #core

❓ Что такое Lambda выражение? Lambda — это анонимная функция, реализующая функциональный интерфейс. Синтаксис: (параметры) -> { тело } Под капотом компилятор создаёт анонимный класс или использует invokedynamic для оптимизации. 🐸 Библиотека собеса по Java #core

❓ Равен ли Double.NaN сам себе? Double.NaN == Double.NaN возвращает false в соответствии со спецификацией IEEE 754. NaN (Not a Number) представляет недопустимый или неопределённый результат вычислений. По определению, NaN не равен ничему, включая себя. Для корректной проверки используйте Double.isNaN(value). 🐸 Библиотека собеса по Java #core

❓ Что такое пропагация в транзакции? Propagation определяет, как транзакция ведёт себя при вызове из другой транзакции. Основные типы — REQUIRED (default): использует текущую или создаёт новую — REQUIRES_NEW: всегда создаёт новую, приостанавливая текущую — MANDATORY: требует существующую, иначе исключение — NEVER: требует отсутствие транзакции — SUPPORTS: использует если есть, иначе работает без транзакции 🐸 Библиотека собеса по Java #spring

❓ Что такое WeakReference и когда её использовать? WeakReference — это слабая ссылка на объект, которая не препятствует его удалению сборщиком мусора. Если на объект есть только weak references, GC может удалить его при нехватке памяти.
WeakReference<Data> weak = new WeakReference<>(data);
data = null; 
// GC может удалить объект
Data retrieved = weak.get(); // может вернуть null
Используется в кешах (WeakHashMap), где элементы могут быть удалены при нехватке памяти, или для предотвращения memory leaks в listeners. 🐸 Библиотека собеса по Java #jvm

❓ Что делает параметр readOnly = true у @Transactional? readOnly = true — это подсказка для оптимизации, а не строгое ограничение. Что происходит: — Hibernate может пропустить flush (не синхронизировать изменения с БД) — БД может оптимизировать запрос, не создавая блокировки — некоторые драйверы могут использовать read-only соединения Важно: это не запрещает изменения программно. Можно вызвать save(), но изменения не гарантированно применятся. Это именно hint для оптимизации. 🐸 Библиотека собеса по Java #spring

💬 Обратная связь Ваш текущий грейд: 🔥 — Senior 👍🏼 — Middle ❤️ — Junior 😁 — Ещё учусь 🐸 Библиотека собеса по Java