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

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

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

Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
В чем разница между heap и stack?

Heap
используется всеми частями приложения, в то время как stack используется лишь главным потоком выполнения программы.

Каждый раз когда мы создаем объект(практически всегда используя ключевое слово new) - этот объект хранится в heap, а в stack хранится ссылка на этот объект:

Person person = new Person();
тут мы создаем новый объект Person(), после чего он сразу же помещается в heap, а person становится ссылкой на этот объект и хранится в stack.

Stack - упорядоченная структура и работает по схеме LIFO(Last-In-First-Out). у heap весь доступ к объектам происходит по ссылкам из stack.

Heap в разы больше stack, stack работает быстрее благодаря структуре, stack "живет" короткий промежуток времени, в то время как heap "живет" весь "жизненный цикл" программы.
👍35🤬1
Что произойдёт при компиляции данного кода?
👍8🤬3
Heap имеет структуру пирамиды. Это означает что самый большой элемент всегда будет занимать самую высокую позицию. Иллюстрация приведена на рисунке.

Вставляемый новый узел помещается в конец пирамиды. Но согласно условия что дочерний узел не может быть больше родительского, идет проверка с родительским узлом. Если новый элемент меньше - операция вставки закончена, если нет - новый элемент меняется местами с родительским, до момента пока родительского узла не останется(либо родительский элемент не будет больше дочернего).

Благодаря своей пирамидной структуре(если угодно - структура бинарного дерева) вставка/удаление элемента происходит за время O(logN).
👍29🤩3🔥21👏1
Что выведет данный код?
👍13🤬1
Что выведет данный код?
Anonymous Quiz
46%
21435
27%
212435
6%
122345
12%
12435
9%
Ошибка компиляции
👍20🌭3🤬2
Что такое packege access level?

В Java существует 4 модификатора доступа: 3 из них явных и один неявный. Private/public/protected - явные модификаторы, это означает что каждый из них нужно объявлять в коде. Так же существует четвёртый модификатор доступа - packege access level. Его необязательно объявлять в коде, данный модификатор означает что поле/метод будут доступны на уровне пакета или наследникам данного класса.
👍21🤬3
Что означает понятие JIT?

Аббревиатура JIT означает Just-In-Time. В JRE существует подобный компилятор, который компилирует байт-код в собственный машинный код прямо во время выполнения программы. Таким образом повышается производительность Java-программ. В свою очередь JIT компилятор повышает непредсказуемость работы программы и повышает сложность отслеживания причины багов и ошибок. Так же такому компилятору необходимо гораздо больше памяти в сравнении с интерпретируемой компиляцией.
👍231🤬1
Каким будет результат работы программы?
👍17
Каким будет результат работы программы?
Anonymous Quiz
28%
777
33%
666
11%
777 666
26%
ошибка компиляция
3%
ошибка времени выполнения
👍14
Для чего нужна Double Brace инициализация в Java?

Double Brace инициализация
используется в Java для наполнения коллекций(set, list, map, queue) одновременно с их объявлением. В случае если вам необходимо создать unmodifiable коллекцию, без Double Brace инициализации нам будет необходимо создать список, положить туда необходимое кол-во элементов и создать из этого списка unmodifiableList используя Collections класс. Используя Double Brace инициализацию мы имеем возможность "положить" в unmodifiableList все необходимые элементы сразу при объявлении.
👍20🐳2🔥1
Какая первая строка в этой программе станет причиной ошибки компиляции?
👍7
Какая первая строка в этой программе станет причиной ошибки компиляции?
Anonymous Quiz
9%
6
5%
7
23%
9
37%
10
8%
12
6%
13
12%
В этом коде нет ошибок
👍16
Что такое WeakReference и SoftReference в Java? Какая разница между этими понятиями?

WeakReference
и SoftReference упоминается в контексте сборки мусора.

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

WeakReference - в случае если на объект ссылаются только через weak-ссылки, то объект будет удален сразу при обходе сборщиком мусора.

Это критические отличия между этими двумя типами ссылок.
👍35👏2
Для чего используют слово static в Java? Возможно ли переопределить статический метод?

Ключевым словом staticв Java можно пометить поле, метод, блок или внутренний класс и это будет означать что этот субъект принадлежит классу, а не объекту. Иными словами - при изменении субъекта, он одинаково изменится для всех объектов данного класса.

Мы можем перегрузить статический метод, но мы не можем его переопределить, так как он принадлежит классу.
👍51
Вам нравится читать контент на этом канале?

Возможно, вы задумывались о том, чтобы купить на нем интеграцию?

Следуйте 3 простым шагам, чтобы сделать это:

1) Регистрируйтесь по ссылке: https://telega.in/c/javatasks
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
Что будет выведено на экран?
👍13🍌10🥱1
👍22🎉3🏆1
В чем различия ArrayList и LinkedList?

В первую очередь в самой структуре - ArrayList "под коробкой" использует массив, следовательно, каждый раз при вставке элемента будет создаваться новый массив размера n+1(где n размер массива до вставки). Из-за этого для вставки элемента в середину списка потребуется сначала "освободить" место под новый элемент, "сдвинув" все элементы после места вставки влево. Вставка в конец массива происходит за константное время. Доступ же к элементам происходит быстрее благодаря индексу элемента.

В свою очередь в LinkedList каждый элемент "знает" своих соседей. Следовательно, что бы вставить новый элемент(удалить старый) в середину все что нам надо это записать ссылки на соседей и перезаписать у соседей. Однако для доступа по индексу необходимо "перебрать" все элементы и найти нужный индекс. Так же при использовании LinkedList следует помнить про затраты памяти на хранение связи между элементами.
👍43🤨3🤔2🤣2🌚1
Каким будет результат компиляции и выполнения данного кода?
👍15🔥5
Каким будет результат компиляции и выполнения данного кода?
Anonymous Quiz
41%
3,3
3%
0,0
4%
0,3
18%
3,0
8%
Ошибка выполнения
26%
Ошибка компиляции
👍26🔥4🎉2