Библиотека собеса по Java | вопросы с собеседований
6.33K subscribers
353 photos
4 videos
170 links
Вопросы с собеседований по Java и ответы на них.

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

Учиться у нас: https://proglib.io/w/08c603b6

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что такое переопределение методов?

Переопределение метода (Method Overriding) — это процесс, при котором подкласс предоставляет свою реализацию метода, уже определённого в родительском классе.

🔹 Основные правила

— Метод в подклассе должен иметь ту же сигнатуру.
— Должен быть такой же или более широкий уровень доступа.
— В подклассе можно ослабить ограничения исключений, но нельзя добавить новые.
— Если метод в родительском классе объявлен как final, static или private, его нельзя переопределить.
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет на 2025-й — будьте осторожнее с выбором работы.

IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.

Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦‍♂️

Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:

— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер

Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.

Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
📊 Как себя чувствует IT-рынок в 2025 году?

Друзья, запускаем важное исследование рынка труда в IT!

Нам очень важно понять:

• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост

🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье

Ваши ответы помогут составить реальную картину происходящего в индустрии.

🔗 Пройти опрос
Please open Telegram to view this post
VIEW IN TELEGRAM
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.

Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.

👉 Список самого важного
В чем разница между map() и flatMap()?

Оба метода используются для трансформации данных в Stream, но с ключевыми отличиями:

▪️ map(Function<T, R>) применяет функцию к каждому элементу потока и возвращает поток с преобразованными элементами (Stream<R>).

▪️ flatMap(Function<T, Stream<R>>) делает то же самое, но ожидает, что функция вернет Stream<R>, а затем "выпрямляет" вложенные потоки в один Stream<R>.

📌 Пример:
List<String> words = List.of("Hello", "World");

// map(): превращает каждое слово в список символов
List<List<Character>> mapped = words.stream()
.map(word -> word.chars()
.mapToObj(c -> (char) c)
.toList())
.toList();

// flatMap(): превращает каждое слово в поток символов и "сплющивает" их в один поток
List<Character> flatMapped = words.stream()
.flatMap(word -> word.chars()
.mapToObj(c -> (char) c))
.toList();

System.out.println(mapped); // [[H, e, l, l, o], [W, o, r, l, d]]
System.out.println(flatMapped); // [H, e, l, l, o, W, o, r, l, d]
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое база данных?

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

🔹 Основные виды БД


▪️ Реляционные (SQL) — данные хранятся в таблицах, используются SQL-запросы (например, PostgreSQL, MySQL).
▪️ Нереляционные (NoSQL) — данные могут храниться в виде документов, графов, пар "ключ-значение" и т. д. (например, MongoDB, Redis).
Please open Telegram to view this post
VIEW IN TELEGRAM
Найти работу теперь так же просто, как заказать такси 🚗

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

1️⃣ Регистрируешься за 2 минуты
2️⃣ Проходишь AI-интервью в любое время
3️⃣ Получаешь персональные вакансии и пре-офер от Сбера

💡 Без стресса, без ожидания, без звонков "через недельку" – просто бери и делай!

🔗 Попробуй прямо сейчас! 👉 https://clc.to/GkOTTA

Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzqxUqFAv
Что такое Docker?

Docker — это платформа для контейнеризации, которая позволяет упаковывать приложение и его зависимости в изолированные контейнеры.

✔️ Основные преимущества

▪️ Позволяет запускать приложение в любом окружении без зависимости от хост-системы.
▪️ Облегчает развертывание и масштабирование сервисов.
▪️ Упрощает CI/CD за счёт предсказуемости окружения.

✔️ Ключевые концепции

▪️ Образ (Image) — шаблон для создания контейнера.
▪️ Контейнер (Container) — запущенный экземпляр образа.
▪️ Dockerfile — файл с инструкциями по сборке образа.
▪️ Docker Compose — инструмент для управления многоконтейнерными приложениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие проблемы решает enum?

1️⃣ Безопасность и читаемость кода — заменяет строковые или числовые константы, делая код понятнее и исключая ошибки из-за опечаток.
2️⃣ Типобезопасность — исключает возможность присвоения некорректного значения.
3️⃣ Группировка связанных констант — позволяет логически объединять значения, относящиеся к одной категории.
4️⃣ Дополнительные возможности — может содержать методы и поля, расширяя функциональность.
5️⃣ Перформанс и память — использует внутреннюю кешированную таблицу значений, что ускоряет сравнение и доступ к значениям.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Основы математики в Machine Learning / Deep Learning

🗓 6 марта приглашаем вас на прямой эфир, где мы подробно разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML.
(ссылка)

🌟 Спикер: *Мария Горденко* – Старший преподаватель ФКН НИУ ВШЭ, НИТУ МИСИС, аспирант департамента анализа данных и искусственного интеллекта ФКН НИУ ВШЭ, а также преподаватель на курсе Алгоритмы и структуры данных в proglib academy.


Место работы: Инженер-программист, ведущий эксперт НИУ ВШЭ, цифровой ассистент и цифровой консультант НИУ ВШЭ.


😮 На вебинаре вы узнаете:

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

🔵 Линейную алгебру: изучим векторы, матрицы, собственные векторы и собственные значения.

🔵 Математический анализ: разберем производные и разложение функций в ряд Тейлора.

🔵 Практику: применим полученные знания на реальных кейсах из области Machine Learning и Deep Learning.

🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.

👉 Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!

📌 Регистрация по ссылке: https://proglib.io/w/38262362
Чем отличается ArrayList от LinkedList?

ArrayList — это динамический массив, а LinkedList — двусвязный список.

🔹 Структура данных

— ArrayList хранит элементы в массиве, доступ к элементу по индексу O(1).
— LinkedList хранит узлы, каждый из которых содержит ссылку на следующий и предыдущий, доступ O(n).

🔹 Операции вставки и удаления
— В ArrayList вставка/удаление в середине требует сдвига элементов (O(n)).
— В LinkedList вставка/удаление занимает O(1), если есть ссылка на нужный узел.

🔹 Использование памяти
— ArrayList хранит только данные.
— LinkedList требует памяти на ссылки между элементами.

💬 Вы хоть раз использовали LinkedList? Что это был за кейс?
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
💬 Обратная связь

Какое ощущение вызывают посты последний месяц?

😁 — Вопросы скучные и слишком простые
👍🏼 — Вопросы нормальные
🔥 — Много нового и интересного
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие проблемы могут возникнуть при использовании synchronized, и как их решать?

1️⃣ Блокировки (Blocking)

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

2️⃣ Взаимная блокировка (Deadlock)

— Возникает, когда два потока блокируют друг друга, ожидая освобождения ресурсов.
— Решение: явный порядок блокировки, использование tryLock() с таймаутом

3️⃣ Отсутствие гибкости

— Synchronized не дает возможности проверки состояния блокировки.
— Решение: Использовать Lock, который позволяет проверить, занята ли блокировка (isLocked()) и настроить приоритет выполнения.

4️⃣ Проблема ложного пробуждения (Spurious Wakeup)

— Поток может быть пробужден без явного вызова notify().
— Решение: всегда использовать while, а не if при ожидании wait().
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Serial Garbage Collector?

Serial GC — это однопоточный сборщик мусора, работающий по принципу "Stop-the-World". Он останавливает выполнение всех потоков во время сборки мусора и использует копирующий алгоритм для молодых поколений (Young Gen) и компактирующий алгоритм для старших (Old Gen).

🔹 Как работает

1️⃣ В молодом поколении (Minor GC) используется копирующая стратегия: выжившие объекты перемещаются из Eden в Survivor, а из Survivor в Old Gen.
2️⃣ В старом поколении (Major GC / Full GC) выполняется уплотнение памяти для уменьшения фрагментации.
3️⃣ Так как GC работает в одном потоке, во время сборки остановка приложения неизбежна.

🔹 Когда использовать

В одноядерных системах или при ограниченных ресурсах, где многопоточный GC создаст больше нагрузки.
В маленьких JVM (до 1-2 ГБ памяти), где G1 или Parallel GC будут избыточны.
В приложениях без жестких требований к паузам, например, в небольших утилитах или CLI-инструментах.
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между Comparator и Comparable?

▪️ Comparable используется для естественного порядка объектов. Класс, реализующий Comparable, должен переопределять метод compareTo(T o), который определяет порядок сортировки.

▪️ Comparator применяется, когда требуется несколько способов сортировки или невозможно изменить код сравниваемого класса. Он реализует метод compare(T o1, T o2).

📌 Главные отличия

— Comparable встраивается в сам класс, Comparator – это отдельный класс.
— Comparable задаёт естественный порядок, Comparator позволяет кастомизировать сортировку.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что происходит, если в Spring Bean с @Scope("prototype") внедрить другой Bean с @Scope("singleton")?

В prototype-Bean будет всегда один и тот же экземпляр singleton-Bean, так как Singleton создаётся один раз при запуске контекста Spring и переиспользуется во всех зависимостях.
Please open Telegram to view this post
VIEW IN TELEGRAM