Java. Класс Object. Разбор вопросов на собеседование.

  Рет қаралды 30,015

Sergey Arkhipov Java Tutorials

Sergey Arkhipov Java Tutorials

3 жыл бұрын

В данном видео я разбираю вопросы по классу Object на собеседование для начинающих Java разработчиков. Это вопросы из моего личного списка, те что я сам время от времени задаю.
Привожу их тут, чтобы помочь в подготовке, так как практика показывает, что часто этим вопросам уделяется недостаточно внимания:
1.Все классы в Java наследуются от Object, как вы думаете, почему так сделано?
2.Можно ли создать экземпляр класса Object?
3.Зачем кому-то может понадобится создавать экземпляр класса Object?
4.Опишите методы класса Object.
5.Особенности методов wait, notify, notifyAll
6.Что такое хэш-код. Что за значение позвращает метод hashCode класса Object?
7.Как связаны между собой методы equals и hashCode? Что будет, если переопределить equals не переопределяя hashCode? Что будет если у объекта-ключа HashMap изменится хэш-код? Какие могут возникнуть проблемы?
8.Метод finalize, для чего нужен?
Так же рекомендую посмотреть видео, более подробно раскрывающие вопросы:
1) Подробный разбор методов equals() и hashCode():
• Java. Методы equals и ...
2) Методы wait() и notify():
• Java. Многопоточность....
Хорошая статья о реализации hashCode() класса Object для желающих погрузиться в вопрос:
habr.com/ru/company/mailru/bl...
Поддержать канал💰:
yoomoney.ru/to/410018856244871
Наша группа в Telegram:
t.me/ArhiTutorials
#ArhiTutorialsJava #ityoutubersru

Пікірлер: 47
@veygard
@veygard 3 жыл бұрын
Спасибо за видео! Было очень интересно послушать какие вопросы могут задаваться джуну. Ну, и ответы, конечно, тоже. Я только обучаюсь, и недавно разбирался с HashCode и Equals. Позвольте для новичков, которые будут смотреть комменты, добавить немного инфы: Может возникнуть вопрос: зачем нужно сравнение по HashCode , если он не дает чёткого ответа равны ли объекты или нет? почему не использовать только equals? Дело в скорости реализации методов. Так как сравнение HashCode это сравнение двух цельных чисел, то это очень быстрая операция. Сравнение по equals занимает больше времени. Поэтому мы сначала сравниваем по хеш-коду: хэш разный? значит объекты точно разные - сравнение можно закончить. Хеш - одинаковый? Тогда нужно сравнить объекты еще через equals.
@user-hf7sh7jp7u
@user-hf7sh7jp7u 3 жыл бұрын
Как-же круто вы обьясняете, нет слов!).
@NikolaiStiazhkin
@NikolaiStiazhkin 11 ай бұрын
Сергей, спасибо !!! вы очень помогли, всё по полочкам... !!!
@TheDergraue
@TheDergraue 3 жыл бұрын
Сергей, спасибо, всё понятно и доходчиво 👍
@smthsmth111
@smthsmth111 3 жыл бұрын
Хорошее, доходчивое объяснение. Спасибо!
@user-lk5uv9ps4o
@user-lk5uv9ps4o 3 жыл бұрын
Спасибо, приятно слушать
@zvuk3316
@zvuk3316 3 жыл бұрын
Спасибо! Хорошо объясняете.
@Andrzej3935
@Andrzej3935 2 жыл бұрын
Спасибо, очень полезно!
@user-mm6pl5re8l
@user-mm6pl5re8l 3 жыл бұрын
Спасибо за хорошие видео))
@maywr3893
@maywr3893 Жыл бұрын
классное объяснение, спасибо
@Libra7by
@Libra7by 2 жыл бұрын
Очень крутое интервью. Просим больше! И про Андроид, в том числе.
@user-bt9hx3ik6e
@user-bt9hx3ik6e 3 жыл бұрын
очень классное видео.спасибо! спасибо! можно видео по коллекциям? как они работают?как устроены? что на собеседовании по ним спрашивают?
@user-it9tl7qv8c
@user-it9tl7qv8c 3 жыл бұрын
жду продолжения)
@vyacheslavlevinsky7601
@vyacheslavlevinsky7601 3 жыл бұрын
Большое спасибо
@djadjaandrey
@djadjaandrey 11 ай бұрын
Thanks a million!!!👍👍👍
@svalyavasvalyava9867
@svalyavasvalyava9867 2 жыл бұрын
Спасибо!!!
@user-fz9hw9ws6c
@user-fz9hw9ws6c 2 жыл бұрын
16:45 супер объяснили! спасибо
@KnockNeo8701
@KnockNeo8701 3 жыл бұрын
Класс!
@Van8983
@Van8983 3 жыл бұрын
Больше java)) разбор вопросов для собеседований) плз.
@user-se4gg9sk4b
@user-se4gg9sk4b 2 жыл бұрын
До просмотра я думал что hashCode() класса object возвращает именно адрес в памяти. После объективного опровержения этого факта (причем с визуализацией) я понял что можно довольно долго обладать ошибочными знаниями и даже не подозревать об этом. Теперь, одной тайной для меня стало больше. Однако кроме всего прочего хочу отметить что слухи и домыслы (а так же предрассудки) не берутся на пустом месте и часто имеют под собой порой хоть и не логичное но объяснение, поэтому осмелюсь выдвинуть свою гипотезу происхождения этого числа. Я думаю что при формировании hash code у объекта класса object встроенный алгоритм МОЖЕТ использовать ПЕРВОНАЧАЛЬНЫЙ адрес в памяти этого объекта и сохраняет его где-то в метаинформации самого инстанса класса object. Могу сразу же привести аргументы против моей теории. Так как первые GC (например Serial) создавали свои объекты на относительно ограниченном участке в памяти (eden space чего не скажешь о G1 например) говорить что числовое пространство велико не представляется возможным. Я всего лишь учусь и тем более не являюсь ни Middle ни Senior java разработчиком и готов "словить на себя" все помидоры которые полетят в мою сторону, но на сколько под собой имеет смысл такое восприятие картины формирования hashCode у объекта класса Object? Сильно ли дико будет выдвинуть такое "свое" мировозрение например на собеседовании на первую работу какому-нибудь из собеседующих или жди беды?
@caffeinejavacode1475
@caffeinejavacode1475 3 жыл бұрын
Подскажите ресурс где с примерами объясгяют Concurrency спасибо!
@anjelomanoranjan
@anjelomanoranjan 11 ай бұрын
Идеальное видео. Спасибо огромное. Хотелось бы видео посвящённое анализу ошибок. Из-за чего у приложения и сервера могут быть ошибки, сбои в работе? Каковы главные причины этих ошибок, сбоев? Что нужно для поиска причины и устранения ошибок и сбоев?
@Андрей-Зубков
@Андрей-Зубков 3 жыл бұрын
Я бы сделал ещё одну проверку на null над синхронайзд if (database == null)
@arhitutorials
@arhitutorials 3 жыл бұрын
Правильно. Без этой проверки ненужный заход в synchronized блок происходит каждый раз, когда надо получить instance, что очень нехорошо сказывается на производительности.
@avpmk
@avpmk 9 ай бұрын
Тогда не будет hb между созданием объекта и чтением ссылки на него (если, конечно, нет volatile поля или других действий с hb ребром). Если объект не иммутабельный (без final полей) можно прочитать его в не консистентном состоянии.
@ryazhartur
@ryazhartur 2 жыл бұрын
На 11:52 опечатка: должно быть min int -2….48, а max int 2….47
@sergeyka347
@sergeyka347 Жыл бұрын
Пример использования Object: logger.error("one two three: {}", new Object[] {"something went wrong"});
@_._Nazar_._
@_._Nazar_._ 3 жыл бұрын
enum NaturalOrderComparator implements Comparator { INSTANCE; } Синглтон (Сериализация, Потокобезопасность)
@antonstezhkin5991
@antonstezhkin5991 2 жыл бұрын
Хитро!
@user-upKo-s-tik
@user-upKo-s-tik Жыл бұрын
А где сам этот код пишется? Что за программа нужна?
@Dennis84918
@Dennis84918 3 жыл бұрын
нвсчет sinhronized и создание базы данных: я бы перед блоком синхронайзед добавил бы if (database != null) return database; ибо синхронайзед дорогая вещь и ни к чему заходить в этот блок, если база уже есть. В самом блоке нужно ЕЩЕ РАЗ проверить.
@IrkDrago
@IrkDrago 15 күн бұрын
Без volatile на database этого недостаточно
@MrTheMaks
@MrTheMaks 3 жыл бұрын
6:42 в таком случае сам метод стоит сделать synchronized, переменную инстанса volatile. Это моё не профессиональное мнение.
@arhitutorials
@arhitutorials 3 жыл бұрын
Проблема в том, что syncronized нужен только один раз для инициализации синглтона. Все последующие обращения лишь читают database, а синхронизация просто тратит ресурсы впустую. Нужно написать код так, чтоб если database != null, то синхронизацию не делать. Да и вообще, так ли нужен в данном случае синглтон, который будет инициализироваться из разных потоков? Почему бы не вынести инициализацию в отдельный метод и вызывать его в методе onCreate() класса Application. В Android во многих случаях можно гарантировать, что инициализация будет выполнена в UI потоке, и синхронизация тогда не нужна. Правда тогда это уже не будет такой красивый паттерн, как сейчас, зато дешево надежно и практично.
@sfiirwuejnn
@sfiirwuejnn 3 жыл бұрын
Получается HashSet это вроде двумерный массив?
@arhitutorials
@arhitutorials 3 жыл бұрын
Ага, а список - это частный случай дерева, которое не разветвляется)
@viktor.florinskiy
@viktor.florinskiy Ай бұрын
а что за число 31 в функции хешкод?
@arhitutorials
@arhitutorials Ай бұрын
Нужно простое число, чтоб получилась хорошая хэш-функция. Это связано со свойствами простых чисел.
@nikkie_cold
@nikkie_cold 2 жыл бұрын
Лике подписон
@Qnoize
@Qnoize 2 жыл бұрын
Подожите, а что значит, что если хэшкоды не равны мы ничего не можем сказать об этих объектах. Согласно контракту если хэшкоды не равны, то объекты и не равны, функция хэшкода как раз и нужна для простого сравнения объетов, тк сравнение по хэшкоду куда "дешевле" чем сравнение по иквалсу. В конце исправился, а в начале ошибка
@UnitXXVII
@UnitXXVII 3 жыл бұрын
Это на Джуна? вы че угараете? что за вопросы!
@arhitutorials
@arhitutorials 3 жыл бұрын
А что тут такого? На джуниора как раз базу спрашивают, а что еще спрашивать? На синьора вопросы другие, например: как бы вы организовали сервис синхронизации событий с google календарем, или, как бы вы реализовали планировщик смс рассылки. Это я так, примерно написал. У мидлов и синьоров уже есть опыт работы, и вместо теории лучше просто обсудить прошлые проекты и принятые на них технические решения.
@CBET0MuP
@CBET0MuP 3 жыл бұрын
Неадекватное интервью
@avpmk
@avpmk 9 ай бұрын
6:43 Работать будет корректно. Но при каждом получении инстанса захватывать блокировку дорого. Лучше свалить эту задачу на класслоудер (статический класс holder завести) или вообще инстанцировать один раз самому и не маяться фигнёй с защитой от того чтобы нельзя было создавать второй инстанс. Чтобы не просовывать ссылочку везде руками можно об этом попросить Dagger или какой-нибудь другой DI.
@avpmk
@avpmk 9 ай бұрын
12:07 Ну почему же совсем ничего, это значит что есть шанс, что и объекты равны или это вообще тот же самый объект)
Java. Рисуем звезды в 3D пространстве.
34:15
Sergey Arkhipov Java Tutorials
Рет қаралды 7 М.
Became invisible for one day!  #funny #wednesday #memes
00:25
Watch Me
Рет қаралды 47 МЛН
Was ist im Eis versteckt? 🧊 Coole Winter-Gadgets von Amazon
00:37
SMOL German
Рет қаралды 32 МЛН
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 7 МЛН
ОДИН ДЕНЬ ИЗ ДЕТСТВА❤️ #shorts
00:59
BATEK_OFFICIAL
Рет қаралды 8 МЛН
Java. Методы equals и hashCode.
15:05
Sergey Arkhipov Java Tutorials
Рет қаралды 37 М.
Java. Разбираемся с монадами.
20:20
Sergey Arkhipov Java Tutorials
Рет қаралды 10 М.
100+ Linux Things you Need to Know
12:23
Fireship
Рет қаралды 265 М.
Выпуск 22. hashCode() и equals() - самое главное.
21:16
Изучаем Java
Рет қаралды 28 М.
РАЗБОР вопросов с СОБЕСЕДОВАНИЙ / Автоматизация ТЕСТИРОВАНИЯ на JAVA
37:05
TeachMeSkills Школа программирования
Рет қаралды 24 М.
Became invisible for one day!  #funny #wednesday #memes
00:25
Watch Me
Рет қаралды 47 МЛН