У вас закончился пробный период!
Для полного доступа к функционалу, пожалуйста, оплатите премиум подписку
JA
Библиотека собеса по Java | вопросы с собеседований
https://t.me/java_interview_lib
Возраст канала
Создан
Язык
Русский
4.86%
Вовлеченность по реакциям средняя за неделю
11.35%
Вовлеченность по просмотрам средняя за неделю

Вопросы с собеседований по Java и ответы на них.

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

Сообщения Статистика
Репосты и цитирования
Сети публикаций
Сателлиты
Контакты
История
Топ категорий
Здесь будут отображены главные категории публикаций.
Топ упоминаний
Здесь будут отображены наиболее частые упоминания людей, организаций и мест.
⚡️Готовиться к собеседованию стало проще! Ведь конспекты «кабанчика» теперь в Telegram!

Женя Янченко, java-разработчик и тимлид, делает регулярные конспекты самой популярной книги по архитектуре систем — «Высоконагруженные приложения» Мартина Клеппмана (книга с кабанчиком). Подробные разборы репликации, шардирования, транзакций:

— Оглавление постов «кабанчика»

Разбирает и другие технические темы:

— CAP-теорема простыми словами
— Сравнение Kafka и RabbitMQ
— Зачем нужны микросервисы
— Чек-лист: что проверить перед интеграцией

В феврале Женя объявила челлендж по решению алгоритмов — хочет решить 300 задач за год 😱

— Отчет за март

Еще в канале посты про карьеру, менеджеров, веру в себя и другие приключения джуна, мидла и сеньора:

— «Ты не оправдываешь ожиданий»
— Про манипуляции менеджеров
— Зачем компаниям алгособесы
— Как бороться с неуверенностью в себе

📝 и ещё 100+ полезных технических и жизненных постов.

Подписывайтесь, чтобы не потерять полезный канал @jane_yanchenko

Реклама. Янченко Евгения Юрьевна, ИНН 312335648680. Erid 2Vtzqvpf7c7
28.04.2025, 14:04
t.me/java_interview_lib/877 Ссылка
❓ Какие есть подходы к реализации кеширования данных?

1. Простое кеширование с использованием коллекций

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

2. LRU (Least Recently Used) кеширование

Этот метод используется, когда необходимо удалять из кеша давно используемые объекты. Это можно реализовать через LinkedHashMap, у которого есть встроенная поддержка порядка доступа. Подходит для кеширования, где важно ограничить размер кеша и удалять старые данные по мере заполнения.

3. Использование слабых и мягких ссылок

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

WeakReference — используется для более "легких" объектов, которые могут быть собраны сборщиком мусора сразу, как только на них не будет ссылок. Это подходит для краткоживущих данных.

4. Кеш с ограничением по времени (Time-based Caching)

Данные в таком кеше автоматически удаляются или обновляются после заданного времени. Это особенно полезно для данных, которые устаревают со временем, например, результаты запросов к базе данных или API.

5. Распределённое кеширование

Если приложение распределено, кеширование можно реализовать с использованием внешних инструментов, таких как Redis или Memcached, которые позволяют кешировать данные на уровне нескольких серверов и обеспечивать консистентность данных в распределённых системах.

🐸 Библиотека собеса по Java
27.04.2025, 20:28
t.me/java_interview_lib/876 Ссылка
❓ Что такое паттерны проектирования?

Паттерны проектирования — это проверенные временем шаблоны решений типовых задач в проектировании софта. Они помогают писать гибкий, расширяемый и поддерживаемый код.

Существует три группы паттернов:

— Порождающие (как создавать объекты): Singleton, Factory Method, Builder.
— Структурные (как устроить отношения между объектами): Adapter, Decorator, Composite.
— Поведенческие (как объекты взаимодействуют): Observer, Strategy, Command.

🐸 Библиотека собеса по Java
27.04.2025, 00:10
t.me/java_interview_lib/875 Ссылка
❓ Что лежит в основе Spring Framework?

В основе Spring Framework лежит принцип Inversion of Control (IoC), а конкретнее — его реализация через Dependency Injection (DI). Spring управляет созданием и связыванием объектов вместо того, чтобы код делал это вручную. Плюс — модульность, слабое зацепление компонентов, тестируемость.

Также в базу заложены Aspect-Oriented Programming (AOP) для управления сквозной логикой (например, логирование, безопасность) и контейнер для управления жизненным циклом бинов.

🐸 Библиотека собеса по Java
26.04.2025, 00:05
t.me/java_interview_lib/874 Ссылка
❓ Чем ApplicationContext отличается от BeanFactory?

🔹 BeanFactory — минимальное ядро DI контейнера. Способен:

— Загружать и управлять бинами.
— Создавать их по мере необходимости (лениво).
— Делать DI и обращаться по имени/типу.

🔹 ApplicationContext = BeanFactory + плюшки:

— Поддержка i18n (MessageSource).
— Поддержка событий (ApplicationEventPublisher).
— Поддержка автоматической загрузки бинов (@ComponentScan, @Configuration, @Autowired, @Value и др.).
— Чтение из аннотированных конфигураций (@Bean, @Component, и т.д.).
— Интеграция с Spring AOP.
— Расширенный SPI — Environment, ResourceLoader, ApplicationContextAware и пр.

🐸 Библиотека собеса по Java
25.04.2025, 01:45
t.me/java_interview_lib/873 Ссылка
💬 Обратная связь

Ежемесячный опрос по грейдам. Проверим, помог ли контент кому-то повысить уровень.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
24.04.2025, 00:03
t.me/java_interview_lib/872 Ссылка
❓ В чём разница между дизайном и архитектурой ПО?

Архитектура — это высокоуровневая структура системы: какие модули есть, как они взаимодействуют, какие технологии используются.

Дизайн — это низкоуровневая детализация внутри этих модулей: какие классы, как устроены их зависимости, шаблоны проектирования (design patterns), структура методов и данных.

🐸 Библиотека собеса по Java
23.04.2025, 00:17
t.me/java_interview_lib/871 Ссылка
❓ Как бы вы оптимизировали запрос с JOIN?

— Создание индексы на колонках, которые используются для соединений. Это ускорит поиск строк, особенно если соединяемые таблицы большие.

— Если возможно, уменьшить размер данных, участвующих в соединении. Для этого можно использовать подзапросы или фильтровать данные до соединения.

— Использование правильного типа JOIN.

— EXPLAIN для анализа выполнения запроса и выявления узких мест. Это покажет, как именно СУБД обрабатывает запрос и на каких этапах происходят замедления.

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

— Рассмотреть варианты изменения структуры БД (например, денормализация).

🐸 Библиотека собеса по Java
22.04.2025, 00:02
t.me/java_interview_lib/870 Ссылка
❓ Как и где Spring ищет бины?

Spring ищет бины с помощью сканирования классов в указанных пакетах, используя аннотации (@Component, @Service, @Repository, @Controller и кастомные с @Component внутри).

Сканирование начинается с пакета, переданного в @ComponentScan или (по умолчанию) из того, где находится @SpringBootApplication (которая включает @ComponentScan).

Если бин не помечен аннотацией, его можно зарегистрировать вручную через @Bean в @Configuration-классе, BeanDefinitionRegistry или XML-конфиг.

🐸 Библиотека собеса по Java
20.04.2025, 17:03
t.me/java_interview_lib/869 Ссылка
❓ Что делает аннотация @PostConstruct?

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

🐸 Библиотека собеса по Java
20.04.2025, 00:36
t.me/java_interview_lib/866 Ссылка
🤔📝 Псевдокод: когда преподы не шарят, а ты в тупике

Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.

Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.

➡️ Читать статью

🐸Библиотека шарписта
19.04.2025, 00:03
t.me/java_interview_lib/865 Ссылка
❓ Что такое сериализация?

Это процесс преобразования объекта в последовательность байтов, которая может быть сохранена в файл или передана по сети. Это нужно для того, чтобы объекты можно было сохранять (например, в базах данных или на диске) и восстанавливать позже (процесс десериализации).

🐸 Библиотека собеса по Java
19.04.2025, 00:03
t.me/java_interview_lib/864 Ссылка
☕️ Java-челлендж: 10 вопросов, которые заставят мозг кипеть

Уверены, что знаете Java на отлично? Проверьте себя на этих 10 каверзных вопросах, которые могут встретиться на собеседовании или просто сломать код.

Пройдите тест и узнайте, насколько знаете тонкости языка.

🔗 Пройти тест
18.04.2025, 00:43
t.me/java_interview_lib/863 Ссылка
❓ Что такое денормализация?

Денормализация — это процесс преднамеренного введения избыточных данных в базу данных для улучшения производительности.

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

🐸 Библиотека собеса по Java
17.04.2025, 00:03
t.me/java_interview_lib/862 Ссылка
❓ Гарантирует ли ExecutorService корректное завершение всех задач, если вызвать shutdown()?

Нет, вызов shutdown() не гарантирует завершение всех задач. Это только инициирует процесс корректного завершения, но не блокирует выполнение текущих задач. После вызова shutdown():

— Уже выполняющиеся задачи продолжат работать.
— Новые задачи приниматься не будут.

Чтобы убедиться, что все задачи завершены, нужно дополнительно использовать метод awaitTermination(). Он блокирует выполнение потока до тех пор, пока все задачи не завершатся или пока не истечет тайм-аут.

🐸 Библиотека собеса по Java
16.04.2025, 00:10
t.me/java_interview_lib/861 Ссылка
❓ Гарантирует ли ConcurrentHashMap видимость между потоками? Нужно ли дополнительно синхронизировать put() и get() для корректной работы?

ConcurrentHashMap уже обеспечивает необходимую памятную видимость (happens-before) между put() и get() — дополнительная синхронизация не нужна.

Если put() завершился до начала get(), то get() обязательно увидит вставленное значение. Это гарантируется внутренней реализацией: через volatile поля, CAS-операции и memory barriers.

🐸 Библиотека собеса по Java
14.04.2025, 23:59
t.me/java_interview_lib/860 Ссылка
💬 Обратная связь

Какие темы в этом месяце использовать для постов чаще:

🔥 — Java core
👍🏼 — Spring
👾 — Паттерны
😁 — Напишу в комменты свой вариант

🐸 Библиотека собеса по Java
13.04.2025, 18:36
t.me/java_interview_lib/859 Ссылка
💼⌛️ ТОП-5 причин, почему программист не может долго найти работу

Почему некоторые разработчики остаются "между работами" месяцы?

Не всегда дело в нехватке вакансий или «рынок просел». Часто дело в подходе к поиску проекта. Вроде бы есть опыт, стек, даже pet-проекты, но офферов всё нет.

Часто корень проблемы — неумение продать себя правильно. Отказ выполнять тестовые задания, считая их ненужными или обидными. Кроме того, нежелание рассматривать стажировки как стартовую площадку для получения опыта и расширения профессиональных связей также может замедлить процесс трудоустройства. И это далеко не все возможные причины.

🔗 Подробнее в статье

🐸 Библиотека джависта
12.04.2025, 20:02
t.me/java_interview_lib/858 Ссылка
❓ Что делает оператор default?

Оператор default используется в интерфейсах для объявления метода с реализацией по умолчанию. Это позволяет интерфейсам эволюционировать, не нарушая совместимость с уже существующими реализациями.

В switch-операторах default определяет блок кода, который выполняется, если не совпал ни один case.

🐸 Библиотека собеса по Java
11.04.2025, 23:59
t.me/java_interview_lib/857 Ссылка
📦 Главные проблемы распределенных систем (и способы их решения)

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

➡️ В этой статье мы рассмотрим четыре ключевых вызова в разработке таких систем и эффективные методы их преодоления.

🐸 Библиотека программиста
10.04.2025, 21:00
t.me/java_interview_lib/856 Ссылка
❓ Что такое функциональные интерфейсы?

Функциональный интерфейс — это интерфейс с единственным абстрактным методом. Он используется как целевой тип для лямбда-выражений и ссылок на методы. Обозначается аннотацией @FunctionalInterface, но это не обязательно — главное, чтобы был один абстрактный метод. Примеры: Runnable, Callable, Comparator, Function.

🐸 Библиотека собеса по Java
10.04.2025, 00:05
t.me/java_interview_lib/855 Ссылка
❓ Что такое Java Memory Model (JMM)?

Java Memory Model (JMM) — это набор правил и спецификаций, описывающих, как потоки в Java взаимодействуют друг с другом через общую память. JMM определяет, когда изменения, сделанные одним потоком, становятся видимыми другим потокам, и как обеспечить предсказуемость поведения многопоточных программ.

🐸 Библиотека собеса по Java
9.04.2025, 00:13
t.me/java_interview_lib/854 Ссылка
❓ Что такое лямбда?

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

Лямбда выражения появились в Java 8 и работают только с функциональными интерфейсами (интерфейсы с одним абстрактным методом).

🐸 Библиотека собеса по Java
8.04.2025, 00:14
t.me/java_interview_lib/853 Ссылка
💬 Обратная связь

Ваше мнение по контенту:

🔥 — Всё супер
👍🏼 — Нормально
😁 — Есть предложения по улучшению (в комменты)

🐸 Библиотека собеса по Java
6.04.2025, 19:27
t.me/java_interview_lib/852 Ссылка
❓ Можно ли переопределить статический метод?

Статические методы нельзя переопределить, они подвергаются скрытию (hiding). Если в подклассе объявлен статический метод с той же сигнатурой, что и в суперклассе, то метод из суперкласса не переопределяется, а скрывается.

Вызов скрытого метода зависит от типа ссылки, а не от типа реального объекта (полиморфизм не работает со статическими методами).

Это может привести к неожиданному поведению, так как разработчик может ошибочно рассчитывать на переопределение метода, а на самом деле будет вызван метод из класса ссылки, а не объекта.

⚠️ В целом, скрытие статических методов считается плохой практикой из-за того, что это усложняет понимание кода и может вызвать путаницу.

🐸 Библиотека собеса по Java
6.04.2025, 00:11
t.me/java_interview_lib/851 Ссылка
❓ В чём разница между методами submit() и execute() в ExecutorService?

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

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

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

🐸 Библиотека собеса по Java
5.04.2025, 00:13
t.me/java_interview_lib/850 Ссылка
❓ В чём разница между методами submit() и execute() в ExecutorService?

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

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

— submit(Runnable/Callable) также запускает задачу асинхронно, но возвращает объект типа Future. С помощью этого объекта можно получить результат задачи (future.get()), проверить статус её выполнения (future.isDone()), явно обработать исключение, если оно произошло во время выполнения задачи.
4.04.2025, 23:11
t.me/java_interview_lib/849 Ссылка
❓ Как работает @Transactional и какие подводные камни?

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

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

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

🐸 Библиотека собеса по Java
4.04.2025, 00:13
t.me/java_interview_lib/848 Ссылка
❓ Чем отличается @RequestParam от @PathVariable?

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

🐸 Библиотека собеса по Java
2.04.2025, 23:10
t.me/java_interview_lib/847 Ссылка
❓ В чём разница между @Component, @Service и @Repository в Spring?

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

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

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

🐸 Библиотека собеса по Java
1.04.2025, 23:12
t.me/java_interview_lib/846 Ссылка
❓ В чём разница между IO и NIO?

🔹 IO (Input/Output)

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

🔹 NIO (New Input/Output)

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

🐸 Библиотека собеса по Java
31.03.2025, 19:38
t.me/java_interview_lib/845 Ссылка
❓ Что такое JIT-компилятор?

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

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

🐸 Библиотека собеса по Java
30.03.2025, 18:25
t.me/java_interview_lib/844 Ссылка
💬 Обратная связь

Ежемесячный опрос по грейдам. Проверим, стало ли среди нас больше милордов синьоров.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
30.03.2025, 00:44
t.me/java_interview_lib/843 Ссылка
Результаты поиска ограничены до 100 публикаций.
Некоторые возможности доступны только премиум пользователям.
Необходимо оплатить подписку, чтобы пользоваться этим функционалом.
Фильтр
Тип публикаций
Хронология похожих публикаций:
Сначала новые
Похожие публикации не найдены
Сообщения
Найти похожие аватары
Каналы 0
Высокий
Название
Подписчики
По вашему запросу ничего не подошло