Java Guru 🤓 – Telegram
Java Guru 🤓
13.1K subscribers
918 photos
15 videos
793 links
Канал с вопросами и задачами с собеседований!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrSQZ

Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Что будет в результате компиляции и выполнения данного кода?
Anonymous Quiz
42%
1
37%
2
6%
Ошибка выполнения
15%
Ошибка компиляции
👍16
GC и различные его виды в JVM. Какой объект считать достижимым. Как происходит сборка мусора (своими словами).

Виды GC:
• Serial Stop the World
• Parallel
• CMS (В чем недостаток по сравнению с Parallel?)
• G1 (Назвать отличие от CMS)
• Shenandoah
👍16
Что будет выведено на экран в результате компиляции и выполнения следующего кода?
👍153
👍26👎5👏1🍌1
Generics: В чем преимущество, как работают? Что такое type-erasure? В чем отличие от шаблонов C++?

• Типы дженерики обеспечивают параметрический полиморфизм, т.е выполнение идентичного кода для различных типов. Типичный пример — коллекции, итераторы
• type-erasure — это стирание информации о типе-параметре в runtime. Таким образом, в байт-коде мы увидим List, Set вместо List<Integer>, Set<Integer>, ну и type-cast'ы при необходимости
• В отличие от дженериков в Java, в С++ шаблоны в итоге приводят к компиляции метода или типа для каждого специфицированного типа параметра (специализация шаблона). Да простят меня здесь адепты С++.
👍251
Какое имя у бина реализованного в данном классе?

#Spring
👍14🔥1
👍26🔥1
Generics: Метод принимает ссылку на List<Parent>. Child наследуется от Parent. Можно ли в метод передать List<Child>?

В типе аргумента нужно указать List<? extends Parent>
24👍4❤‍🔥1
Что будет в результате компиляции и выполнения следующего кода?
12👍4🔥3👏1
Что будет в результате компиляции и выполнения следующего кода?
Anonymous Quiz
46%
7 4
13%
5 2
7%
ошибка времени выполнения
34%
ошибка компиляции
👍16🔥43🎉1
Hard-references, weak references, soft-references, phantom-references

• Hard-references — стандартные ссылки на объекты, которые становится eligible for collection после недостижимости из root set
• Weak-references — объекты могут быть удалены при наличии слабой ссылки на него в любое время
• Soft-references — объекты могут удалятся GC при недостатке памяти
• Phantom-references — объекты не доступны напрямую по ссылкам, перед удалением помещаются в очередь на удаление. Нужны для более безопасной финализации ссылок (вместо finalize)
12👍5🔥3🎉2
Какое значение по умолчанию имеет атрибут scope?

#Spring
Anonymous Quiz
12%
request
65%
singleton
10%
session
14%
prototype
👍204🔥3🌭3🤩2
Какими способами можно сконструировать объект в Java?

• Через конструктор
• Через статический factory-method
• Через паттерн Builder
👍364🌚4🔥3
Каким будет результат работы программы?
👎1410👍3
Рассказать про classloader'ы и их иерархию. Из за чего, например, может возникать NoClassDefFoundError, NoSuchMethodError?

Иерархия classloader'ов
1. Bootstrap
2. System
3. Application

NoClassDefFoundError может возникнуть, если нужной библиотеки с этим классом нет в classpath
NoSuchMethodError может возникнуть из-за несовместимости ваших библиотек, если зависимая библиотека A вызывает метод из старой версии библиотеки B, но в classpath есть более новая версия библиотеки B, c другой сигнатурой этого метода
18👍8🤩2👌1
Какой результат компиляции и выполнения программы?
👍13🐳4👎21🍌1
synchronized. wait/notify/notifyAll. Как есть примитивы аналоги из пакета j.u.c?

Дальше тезисы:
• synchronized — ключевое слово, обозначающее скоуп критической секции. Можно ставить напротив объявления метода, или в виде блока в коде.
• wait() — ожидание треда до тех пор, пока он не будет разбужен другим тредом через notify/notifyAll.
• У wait() есть перегруженные версии с таймаутами.
• Тред ставится в wait-set на объекте
• Перед вызовом wait() нужно захватить монитор на данном объекте (через synchronized)
• Магия wait() — он отпускает лок на мониторе объекта после вызова, так чтобы в дальнейшем другой тред мог захватить монитор и вызвать notify/notifyAll
• notify() — будит один из ожидающих тредов, но Важно! — лок на объекте не отпускает, т.е ожидающий тред разбужен будет, но с ожиданием входа в критическую секцию объекта (т.к как будто остановился на synchronized). Так что если после notify есть тяжелые операции, это затормозит ожидающий тред, т.к тред с notify еще не отпустил монитор
• notifyAll() — будут разбужены все треды в wait-set, но при этом далее между тредами происходит contention («сражение») за монитор
• Тред на wait() может быть разбужен также через interrupt, или через spurious wake-up, или по таймауту
• Так что условие выполнения, которого ожидает тред, проверяется в цикле while, а не в if
• Примитив-аналог —
Condition
👍17🔥5
Что будет в результате компиляции и выполнения данного кода?
👍19👎31
Что будет в результате компиляции и выполнения данного кода?
Anonymous Quiz
28%
c
29%
a b c
9%
c b a
34%
Ошибка компиляции
👍21