Библиотека собеса по Java | вопросы с собеседований
Ir al canal en Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot
Mostrar más6 465
Suscriptores
-224 horas
-37 días
-1130 días
Carga de datos en curso...
Canales Similares
Nube de Etiquetas
Menciones Entrantes y Salientes
---
---
---
---
---
---
Atraer Suscriptores
agosto '26
agosto '26
+57
en 1 canales
julio '26
+70
en 2 canales
Get PRO
junio '26
+73
en 2 canales
Get PRO
mayo '26
+83
en 3 canales
Get PRO
abril '26
+87
en 2 canales
Get PRO
marzo '26
+81
en 2 canales
Get PRO
febrero '26
+121
en 4 canales
Get PRO
enero '26
+93
en 1 canales
Get PRO
diciembre '25
+96
en 5 canales
Get PRO
noviembre '25
+112
en 2 canales
Get PRO
octubre '25
+94
en 1 canales
Get PRO
septiembre '25
+95
en 1 canales
Get PRO
agosto '25
+78
en 3 canales
Get PRO
julio '25
+98
en 0 canales
Get PRO
junio '25
+70
en 0 canales
Get PRO
mayo '25
+78
en 0 canales
Get PRO
abril '25
+133
en 1 canales
Get PRO
marzo '25
+283
en 52 canales
Get PRO
febrero '25
+176
en 31 canales
Get PRO
enero '25
+207
en 35 canales
Get PRO
diciembre '24
+179
en 35 canales
Get PRO
noviembre '24
+326
en 37 canales
Get PRO
octubre '24
+284
en 35 canales
Get PRO
septiembre '24
+299
en 35 canales
Get PRO
agosto '24
+289
en 35 canales
Get PRO
julio '24
+275
en 35 canales
Get PRO
junio '24
+272
en 31 canales
Get PRO
mayo '24
+429
en 37 canales
Get PRO
abril '24
+474
en 37 canales
Get PRO
marzo '24
+299
en 29 canales
Get PRO
febrero '24
+373
en 29 canales
Get PRO
enero '24
+392
en 24 canales
Get PRO
diciembre '23
+900
en 26 canales
Get PRO
noviembre '23
+229
en 3 canales
Get PRO
octubre '23
+369
en 22 canales
Get PRO
septiembre '23
+1 761
en 0 canales
| Fecha | Crecimiento de Suscriptores | Menciones | Canales | |
| 26 agosto | +1 | |||
| 25 agosto | +3 | |||
| 24 agosto | +3 | |||
| 23 agosto | +1 | |||
| 22 agosto | +3 | |||
| 21 agosto | 0 | |||
| 20 agosto | +3 | |||
| 19 agosto | +2 | |||
| 18 agosto | +1 | |||
| 17 agosto | +3 | |||
| 16 agosto | +1 | |||
| 15 agosto | +2 | |||
| 14 agosto | +2 | |||
| 13 agosto | +2 | |||
| 12 agosto | +4 | |||
| 11 agosto | +2 | |||
| 10 agosto | +2 | |||
| 09 agosto | +6 | |||
| 08 agosto | +1 | |||
| 07 agosto | +2 | |||
| 06 agosto | 0 | |||
| 05 agosto | +2 | |||
| 04 agosto | +2 | |||
| 03 agosto | +6 | |||
| 02 agosto | +2 | |||
| 01 agosto | +1 |
Publicaciones del Canal
❓ Что такое "diamond problem" и как его решает Java?
«Diamond problem» возникает при множественном наследовании, когда класс может унаследовать одну и ту же реализацию от разных родителей.
В Java классы не поддерживают множественное наследование, а только интерфейсы позволяют такое. Если два интерфейса имеют одинаковый default-метод, то компилятор потребует явного переопределения в классе. Это и есть решение проблемы.
🐸 Библиотека собеса по Java
#tests
| 2 | 👅 Самое сложное — выбрать не курс, а направление
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.
Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎
🔗 Узнать подробнее
🏃♀️ Proglib Academy | 610 |
| 3 | Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇 | 778 |
| 4 | ❓ Как работает ConcurrentHashMap?
ConcurrentHashMap использует сегментирование / распространённые блокировки (в новых версиях — на уровне бакета), что позволяет нескольким потокам читать и писать без полной блокировки карты. Операции get делаются без блокировки, put и remove используют ограниченную блокировку (или CAS) лишь на отдельных сегментах или узлах.
В отличие от Collections.synchronizedMap(...), который блокирует весь объект на каждую операцию, ConcurrentHashMap даёт более высокую конкурентность и масштабируемость.
🐸 Библиотека собеса по Java
#concurrency | 1 092 |
| 5 | ❓ Что такое нагрузочное тестирование?
Нагрузочное тестирование — это проверка поведения системы под различными уровнями нагрузки. Цель — понять, как приложение работает при большом количестве одновременных пользователей или запросов.
Обычно проверяем:
— время отклика при росте нагрузки
— максимальное количество пользователей, которое система выдерживает
— точку деградации производительности
— стабильность при длительной работе
Используем инструменты типа JMeter, Gatling или K6.
🐸 Библиотека собеса по Java
#tests | 1 040 |
| 6 | 🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
⚡️ Предзапись на осенний поток уже открыта
🏃♀️ Proglib Academy | 757 |
| 7 | Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇 | 733 |
| 8 | ❓ Что такое @Qualifier и когда его использовать?
@Qualifier используется для разрешения конфликтов при внедрении зависимостей, когда существует несколько бинов одного типа.
Без @Qualifier Spring не знает, какой бин внедрить, и выбросит NoUniqueBeanDefinitionException.
@Bean
@Qualifier("primary")
public DataSource primaryDB() { ... }
@Bean
@Qualifier("secondary")
public DataSource secondaryDB() { ... }
@Autowired
@Qualifier("primary")
private DataSource dataSource;
Альтернатива — использовать @Primary для бина по умолчанию.
🐸 Библиотека собеса по Java
#spring | 815 |
| 9 | ❓ Для чего используется ключевое слово this?
this — это ссылка на текущий объект внутри его метода или конструктора. Оно нужно для:
— Разрешения конфликта имён (например, между полем класса и параметром метода).
— Вызова других конструкторов этого же класса.
— Передачи текущего объекта в качестве аргумента в методы или конструкторы других классов.
— Возврата ссылки на текущий объект (часто используется в паттерне Builder или для чейнинга методов).
🐸 Библиотека собеса по Java
#core | 811 |
| 10 | ❓ Разница между Statement и PreparedStatement?
— Statement используется для выполнения простых SQL-запросов без параметров. Он формирует запрос как строку и каждый раз компилирует его заново, что может быть медленно и небезопасно.
— PreparedStatement предварительно компилируется базой данных и позволяет задавать параметры через плейсхолдеры. Что повышает производительность при многократном выполнении одного запроса и защищает от SQL-инъекций (данные не конкатенируются со строкой запроса, а подставляются корректно).
Поэтому в реальных проектах почти всегда используют PreparedStatement.
🐸 Библиотека собеса по Java
#core | 872 |
| 11 | У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
🔗 Занять место со скидкой
🏃♀️ Proglib Academy | 593 |
| 12 | Когда название файла уже само по себе считается техническим долгом 👇 | 713 |
| 13 | ❓ Как работает HashMap внутри? Что происходит при коллизии и при достижении load factor?
HashMap — массив бакетов (Node[] table). Ключ хешируется, хеш определяет индекс бакета: index = hash & (capacity - 1
Что происходит при put(key, value):
Считается hash(key) — не просто hashCode(), а с дополнительным перемешиванием старших битов ((h = key.hashCode()) ^ (h >>> 16)). Это снижает коллизии при маленьком размере таблицы.
Находится бакет по индексу. Если пустой — кладём первым. Если нет — коллизия.
🔹 Коллизия:
До Java 8 → связный список в бакете. Поиск O(n) в худшем случае.
С Java 8 → когда в бакете больше 8 элементов и capacity >= 64, список превращается в красно-чёрное дерево. Поиск становится O(log n). Обратно в список — при сжатии ниже 6 элементов.
// Упрощённо: Node в списке или TreeNode в дереве
static class Node<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
}
🔹 Load factor и resize:
По умолчанию capacity = 16, loadFactor = 0.75. Порог = capacity * loadFactor = 12.
Как только элементов стало больше 12 — начинается resize(): таблица удваивается до 32, все элементы перераспределяются по новым бакетам. Это O(n) операция.
Поэтому если заранее знаете размер — задавайте начальную ёмкость:
// Хотим 1000 элементов без resize:
// 1000 / 0.75 ≈ 1334, берём следующую степень двойки
Map<String, Integer> map = new HashMap<>(2048);
🐸 Библиотека собеса по Java
#core | 830 |
| 14 | ✔️ Java-тест: ретраи с экспоненциальной задержкой
Напишите production-ready ретраер 👇
📦 Задание
Реализуйте утилиту, которая повторяет операцию при временном сбое:
public <T> T executeWithRetry(Supplier<T> operation) {
// Ваша реализация
}
📋 Требования
— Максимум N попыток.
— Экспоненциальная задержка: 100ms → 200ms → 400ms… с верхней границей (cap).
— Добавить jitter (случайный разброс), чтобы избежать «thundering herd» при массовых ретраях.
— Ретраить только временные ошибки, бизнес-ошибки пробрасывать сразу.
— Корректно обработать прерывание (InterruptedException + восстановление флага interrupt).
— После исчерпания попыток пробросить последнее исключение (с сохранением причины).
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸Библиотека собеса по Java
#practise | 789 |
| 15 | ✔️ Java-тест: ретраи с экспоненциальной задержкой
Напишите production-ready ретраер 👇
📦 Задание
Реализуйте утилиту, которая повторяет операцию при временном сбое:
public <T> T executeWithRetry(Supplier<T> operation) {
// Ваша реализация
}
📋 Требования
— Максимум N попыток.
— Экспоненциальная задержка: 100ms → 200ms → 400ms… с верхней границей (cap).
— Добавить jitter (случайный разброс), чтобы избежать «thundering herd» при массовых ретраях.
— Ретраить только временные ошибки, бизнес-ошибки пробрасывать сразу.
— Корректно обработать прерывание (InterruptedException + восстановление флага interrupt).
— После исчерпания попыток пробросить последнее исключение (с сохранением причины).
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸Библиотека собеса по Java
#practise | 16 |
| 16 | ✔️ Java-тест: ретраи с экспоненциальной задержкой
Напишите production-ready ретраер 👇
📦 Задание
Реализуйте утилиту, которая повторяет операцию при временном сбое:
public <T> T executeWithRetry(Supplier<T> operation) {
// Ваша реализация
}
📋 Требования
— Максимум N попыток.
— Экспоненциальная задержка: 100ms → 200ms → 400ms… с верхней границей (cap).
— Добавить jitter (случайный разброс), чтобы избежать «thundering herd» при массовых ретраях.
— Ретраить только временные ошибки, бизнес-ошибки пробрасывать сразу.
— Корректно обработать прерывание (InterruptedException + восстановление флага interrupt).
— После исчерпания попыток пробросить последнее исключение (с сохранением причины).
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise | 1 |
| 17 | 📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git»
Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом 💡
🔜 На курсе «ИИ для разработчиков» участники работают со своими проектами и учатся делать AI частью ежедневной разработки: планировать задачи, писать код, проверять изменения, готовить PR и автоматизировать рутину.
До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽ 🥳 И получить бессрочный доступ ко всем материалам курса.
🔗 Посмотреть, как устроен курс
🏃♀️ Proglib Academy | 863 |
| 18 | 🥳 До конца июля сохраняются две приятные вещи: специальная цена и бессрочный доступ к материалам курса. Подробнее — в посте 👇 | 906 |
| 19 | ❓ Что такое Phantom Reference и зачем она нужна?
PhantomReference — самая слабая ссылка в Java. Отличается от WeakReference тем, что get() всегда возвращает null.
Используется для отслеживания момента, когда объект удалён из памяти. После удаления объекта PhantomReference помещается в ReferenceQueue.
В отличие от finalize(), это надёжный способ отследить удаление объекта. Используется редко, в основном во внутренних механизмах или для управления off-heap памятью.
🐸 Библиотека собеса по Java
#jvm | 965 |
| 20 | ❓ Какие есть методы в классе 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 | 814 |
