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

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

@java_interview_lib

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

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

Учиться у нас: clc.to/3wECtA

Для обратной связи: @proglibrary_feeedback_bot
Subscribers
6.45K
Photos
438
Videos
12
Links
733

Showing posts older than #1184 · Back to latest

Older Posts 19 shown
Post #1183 1.76K
💬 Обратная связь

Первый опрос по грейдам в этом году. Ваш грейд:

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

🐸 Библиотека собеса по Java
  • 👍 42
  • 😁 33
  • 🔥 28
  • ❤ 20
Post #1182 5.42K
Как бы вы оптимизировали запрос с JOIN?

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

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

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

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

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

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

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

#core #лучшее2025
  • 👍 16
  • 🔥 2
  • ❤ 1
  • 👏 1
Post #1181 1.95K
Что такое авторизация и аутентификация?

▪️ Аутентификация — процесс проверки подлинности субъекта (пользователя или системы) на основе предоставленных им учетных данных (например, пары логин/пароль, сертификата или токена). Она подтверждает, что субъект является тем, за кого себя выдаёт.

▪️Авторизация — процесс определения прав и привилегий аутентифицированного субъекта в рамках определённой системы или ресурса. Она определяет, какие действия или ресурсы доступны субъекту после успешной аутентификации.

Аутентификация устанавливает личность субъекта, а авторизация — его полномочия в системе.

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

#core #лучшее2025
  • 👍 13
  • 👏 3
  • 🔥 1
Post #1180 1.84K
Какие бывают гарантии доставки сообщений в Kafka?

В Kafka существует три уровня гарантий доставки сообщений:

1️⃣ At most once (максимум один раз)

Сообщение может быть потеряно, но никогда не будет обработано дважды. Producer отправляет сообщение и не ждет подтверждения (acks=0). Самый быстрый, но ненадежный вариант.

2️⃣ At least once (минимум один раз)

Сообщение гарантированно доставлено, но может быть обработано несколько раз. Producer ждет подтверждения от лидера (acks=1) или всех реплик (acks=all). При повторной отправке возможны дубликаты. Используется чаще всего.

3️⃣ Exactly once (ровно один раз)

Сообщение доставляется и обрабатывается строго один раз. Достигается через idempotent producer (enable.idempotence=true) и транзакции. Самый надежный, но с небольшим оверхедом по производительности.

Выбор зависит от задачи: для логов подойдет at most once, для финансовых операций — exactly once, для большинства случаев — at least once с идемпотентной обработкой.

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

#core #лучшее2025
  • 👍 8
  • 🔥 2
  • ❤ 1
  • 👏 1
Post #1178 2.01K
👀 Задача: Разработка высоконагруженного сервиса кеширования (middle+)

В компании возникла необходимость повысить производительность системы за счёт внедрения распределённого кеша.

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

▪️ Условия:

1. Высокая доступность: сервис должен быть устойчив к сбоям и обеспечивать непрерывную работу.
2. Масштабируемость: возможность горизонтального масштабирования для обработки увеличивающегося объёма данных.
3. Консистентность данных: обеспечение согласованности данных между узлами кеша.
4. Управление устареванием: реализация механизма автоматического удаления устаревших данных из кеша.

💡 Ключевые моменты:

— Выбор технологии: определение подходящего решения для распределённого кеширования (например, Redis, Memcached или собственная реализация).
— Репликация и шардирование: обеспечение надёжности и производительности через распределение данных и их дублирование.
— Алгоритмы замещения: выбор и реализация стратегий удаления устаревших или редко используемых данных (например, LRU, LFU).

✔️ Решение:

Использовать Redis в режиме кластеризации для обеспечения распределённого хранения данных. Настроить репликацию для повышения отказоустойчивости и реализовать механизм шардирования для равномерного распределения нагрузки.

Применить алгоритм LRU (Least Recently Used) для автоматического удаления устаревших данных. Внедрить системы мониторинга (например, Prometheus) и логирования для оперативного отслеживания состояния кеша и быстрого реагирования на возможные проблемы.


Реализация на картинке 👆🏻

#лучшее2025
  • 👍 8
  • ❤ 4
  • 👏 2
  • 🔥 1
Post #1177 1.71K
🎄 С Новым Годом, будущие Java-разработчики!

Пусть в новом году все собеседования заканчиваются офферами, вопросы по многопоточности больше не пугают, а разница между HashMap и ConcurrentHashMap будет понятна на автомате 🎁

Готовьтесь к собесам вместе с нами — впереди много полезного контента! 🔥

🐸 Библиотека собеса по Java
  • 🔥 16
  • 🎉 8
  • ❤ 6
Post #1176 2.41K
Почему Spring по умолчанию создает бины как singleton?



На самом деле это исторический баг! Изначально Spring создавал новый бин для каждого запроса, но один из разработчиков забыл добавить new в цикле, и все бины стали синглтонами. Теперь это называют фичей для совместимости с легаси-кодом! 🎅

Праздничный факт: Если добавить @Scope("christmas"), Spring будет создавать новый бин только 31 декабря! Идеально для сезонных акций! 🎄

✔️

Почему singleton — это дефолт:

→ Производительность: создание объекта — дорогая операция (выделение памяти, вызов конструктора, DI). Создавать бин на каждый запрос — огромные издержки.

→ Управление системными ресурсами: многие бины инкапсулируют ресурсы операционной системы или сети, которые дорого создавать и должны быть общими.

→ Естественная модель для stateless компонентов: 90%+ бизнес-логики в Spring — stateless операции. Создавать новый объект для каждого вызова бессмысленно.

→ Экономия ресурсов: один EntityManager, один RestTemplate, один connection pool

→ Кэширование: бин может безопасно кэшировать данные (если они read-only)

→ Простота жизненного цикла: @PostConstruct выполнится один раз

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

@spring
  • 😁 9
  • 👍 6
  • ❤ 1
  • 🔥 1
Post #1175 1.95K
WANTED: JAVA-ЭКСПЕРТ

Разыскивается мастер JVM, способный разложить по полочкам всё: от Garbage Collector до тонкостей Spring. Хватит скрывать знания за корпоративными стенами.

Приметы:

— в совершенстве знает Java (знание Go или Python будет плюсом);
— понимает, что на самом деле спрашивают на интервью в топовых компаниях;
— обладает талантом объяснять сложные темы доступным языком;
— готов качать своё медийное имя.

Условия:

— гонорар за подготовку материалов для собеседований;
— статус лидера мнений в Java-сообществе;
— методическая поддержка от команды Proglib Academy.

Явка с повинной

P.S. Знаешь Java-гуру, который засиделся в тени? Сдай его нам.
  • ❤ 1
Post #1174 1.65K
💬 Обратная связь

Какие планы на новогодние праздники?

🎉 — Ем салатики и отдыхаю
🤔 — Какие праздники, буду работать
⚡️ — Буду учиться и писать пет проектики
😁 — Просто ответ, если ничего другого не подошло))

🐸 Библиотека собеса по Java
  • 🎉 25
  • ⚡ 23
  • 🤔 7
  • 😁 4
Post #1173 2.03K
Как выбрать между монолитом, модульным монолитом и микросервисами при проектировании системы?

Выбор зависит от нескольких факторов: размера команды, требований к масштабированию и сложности бизнес-логики.

🔹 Монолит подходит для MVP, стартапов и небольших команд. Все в одном приложении — проще разрабатывать, тестировать и деплоить. Минус — со временем становится сложно поддерживать из-за связанности компонентов.

🔹 Модульный монолит — это компромисс. Архитектура разбита на модули с четкими границами, но все еще в одном деплойменте. Отличный вариант, когда нужна структура микросервисов без их операционной сложности. Позволяет в будущем безболезненно выделить модули в отдельные сервисы.

🔹Микросервисы выбираем, когда есть реальная необходимость: разные части системы масштабируются по-разному, работают большие независимые команды, нужна изоляция отказов. Но это дорого — требуется инфраструктура для мониторинга, трейсинга, service discovery, обработки распределенных транзакций.

#patterns

🐸 Библиотека собеса по Java
  • 👍 13
  • 🔥 1
  • 🥰 1
  • 👏 1
Post #1172 1.79K
Почему нельзя использовать ArrayList в многопоточной среде?



Если два потока одновременно добавят элементы, они создадут ситуацию, где список существует в двух состояниях одновременно (квантовая суперпозиция данных).

✔️

ArrayList не thread-safe, потому что все операции не синхронизированы. При concurrent доступе возникают три основные проблемы:

1. Race condition при модификации.
2. ConcurrentModificationException.
3. Нарушение инвариантов (самое опасное).

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

#concurrency
  • 👍 12
  • 🔥 2
  • 👏 1
  • 😁 1
Post #1171 1.94K
Чем отличается процесс от потока?

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

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

🔹 Поток — это "легковесная" единица выполнения, которая работает в рамках одного процесса и использует общую память этого процесса.

В Java потоки одного процесса могут совместно использовать объекты и переменные, что значительно упрощает взаимодействие между ними по сравнению с процессами. Однако такая общая память влечет за собой риски, такие как состояния гонок и необходимость синхронизации, чтобы избежать конфликтов при одновременном доступе к ресурсам.

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

#concurrency
  • 👍 9
  • ❤ 2
  • 🔥 1
  • 👏 1
Post #1170 1.75K
💬 Обратная связь

Какие вопросы публиковать больше?

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

🐸 Библиотека собеса по Java
  • 👍 42
  • 🤔 25
  • 🔥 14
Post #1169 5.21K
✔️ Collections Challenge: Реализация Custom HashMap

Напишите упрощённую версию HashMap с нуля 👇

📦 Задание

Реализуйте SimpleHashMap<K, V> — собственную реализацию хеш-таблицы без использования готовых Map.

📋 Требования


1. Основная функциональность


→ put() — добавить/обновить пару ключ-значение
→ get() — получить значение по ключу (null если нет)
→ remove() — удалить элемент, вернуть старое значение
→ containsKey() — проверка наличия ключа
→ size() — текущее количество элементов
→ keySet() — множество всех ключей

2. Внутренняя структура

→ Использовать массив buckets (корзин)
→ Collision resolution через связный список (chaining)
→ Начальная ёмкость — 16 элементов
→ Load factor — 0.75

3. Обязательные фичи


→ Автоматическое расширение (resize) при превышении load factor
→ Корректная работа с null ключами
→ Правильный расчёт hashCode (учитывать equals/hashCode contract)
→ Обработка коллизий

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

💬 Пишите решение в комментариях, главное прячьте под спойлер.

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

#practise
  • 🔥 11
  • 👍 2
  • ❤ 1
Post #1168 1.81K
Где лучше хранить пароль: в строке или в массиве символов?

Пароль лучше хранить в массиве символов.

— Строки в Java неизменяемы, и их нельзя явно удалить из памяти. Они остаются там до сборки мусора, что может привести к утечке пароля.
— Массив можно очистить вручную после использования (путём перезаписи значения), что даёт больший контроль над временем хранения данных.


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

#core
  • 👍 12
  • ❤ 3
  • 🔥 2
Post #1167 1.85K
В чем разница между fail-fast и fail-safe итераторами?



Fail-fast итераторы — это те, которые быстро падают при первой же ошибке, потому что написаны на скорострельном C++. А fail-safe итераторы работают медленно, зато безопасно, потому что каждый элемент проверяется антивирусом перед возвратом.

✔️

🔹 Fail-fast итераторы:

Бросают ConcurrentModificationException при структурном изменении коллекции во время итерации.
Проверяют modCount (счетчик модификаций) при каждом вызове next().
Используются в большинстве коллекций из java.util (ArrayList, HashMap, HashSet).
Работают на оригинальной коллекции.

🔹 Fail-safe итераторы:

Работают на копии/снимке коллекции, поэтому не бросают исключений.
Используются в java.util.concurrent коллекциях (CopyOnWriteArrayList, ConcurrentHashMap).
Могут не отражать актуальное состояние коллекции (weakly consistent).
Потребляют больше памяти из-за копирования.

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

#core
  • 👍 7
  • 🔥 3
  • 😁 3
  • ❤ 1
Post #1166 1.88K
Почему нельзя использовать LocalDateTime для работы с временными метками в распределенных системах?



Потому что LocalDateTime — это местное время, а в распределенных системах все серверы находятся в разных городах! Если один сервер в Москве показывает 15:00, а другой в Владивостоке — 22:00, то база данных не знает, как решить противоречия.

✔️

LocalDateTime не хранит информацию о часовом поясе и смещении относительно UTC, что делает его непригодным для распределенных систем

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

#core
  • 👍 11
  • ❤ 1
  • 🔥 1
  • 🤔 1
Post #1165 2.01K
Для чего нужна HashMap?



HashMap нужна исключительно для того, чтобы было что спросить на собеседовании. Без неё интервьюеры бы не знали, как отсеивать кандидатов.

✔️

HashMap — это реализация структуры данных hash table, которая обеспечивает быстрый доступ, вставку и удаление элементов по ключу в среднем за O(1).

Основные сценарии использования:

1️⃣ Кеширование и мемоизация — когда нужен быстрый доступ к часто используемым данным.

2️⃣ Подсчет частоты элементов — классическая задача с O(n) сложностью.

3️⃣ Индексация для быстрого поиска — когда нужно избежать линейного перебора.

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

#core
  • 👍 8
  • 😁 4
  • 🔥 1
  • 🥱 1
Post #1164 1.86K
Spring — это не вся Java

На собеседованиях любят гонять по «кишкам» языка, конкурентности и алгоритмам. Если ты знаешь только фреймворк, шаг влево-вправо грозит провалом.

Новогодняя акция 1 + 2:

Покупаешь один курс, получаешь три. Оплачивается только позиция с максимальным чеком.

Java-набор:

— Алгоритмы и структуры данных (база Enterprise);
— Архитектуры и шаблоны проектирования.

Подготовиться к офферу

Актуально до 31 декабря.
Нужен совет? @manager_proglib
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →