Тайм-коды: 0:55 List vs ArrayList vs Linked List 5:31 LinkedList альтернативное применение 9:54 HashMap подробно 14:21 Про хэш код 15:46 Когда 2 разных объекта могут дать одинаковых хэшкод 17:58 Контракт equals & hashCode 18:41 LinkedHashMap что это
@sno-oze4 жыл бұрын
Природа настолько очистилась, что Виталий вернулся на youtube.
@itwithvitaly4 жыл бұрын
Farid :)
@СергейЧамкин4 жыл бұрын
Очень радует, как быстро выходит качественный контент. Я счастлив
@itwithvitaly4 жыл бұрын
Сергей Чамкин Спасибо)
@svetlanamazhaykina6918 Жыл бұрын
Спасибо за Ваш труд! Коммент в поддержку канала.
@KX-nn7tq4 жыл бұрын
Виталий, продолжай в том же духе, у тебя хорошо получается делать качественный контент по Яве чего не часто встретишь в просторах ютуба, информативно, без воды и доходчиво, вообщем спасибо, ждём ещё видосы по топ вопросам!!!!
@itwithvitaly4 жыл бұрын
Спасибо!
@Krasnolesye3 жыл бұрын
быстро ввел в курс дела. Спасибо! и за Тайм-коды отдельное
@itwithvitaly3 жыл бұрын
Спасибо!
@meison79694 жыл бұрын
За контент лайк не глядя!!
@itwithvitaly4 жыл бұрын
Спасибо!
@JGolt2 жыл бұрын
Очень хорошее видео. Спасибо большое за ответы!
@Katar1x4 жыл бұрын
А как все это можно знать, просто изучая java. Я к тому, что так может ответить ТОТ джун, который уже работал. А если это первое собеседование?
@dmii3iy2 жыл бұрын
Спасибо, очень интересно
@ГлебВалерьевич-у6ы2 жыл бұрын
Спасибо
@georgewhite37084 жыл бұрын
Крутое видео, спасибо! Единственное что хотел добавить, это насчет LinkedList vs ArrayList. Когда тестил, то во абсолютно во ВСЕХ случаях ArrayList лучше, кроме модификаций в начале Листа))
@Deadly_Darkness3 жыл бұрын
Это в новых версиях оптимизировали ArrayList, поэтому его можно использовать практически всегда.
@василинасемёнова-ы5н2 жыл бұрын
@@Deadly_Darkness здраствуйте, а можете уточнить с каких именно версий он оптимизирован?
@yuliyakanonchyk39314 жыл бұрын
Спасибо за ваши уроки. Нравятся ваши объяснения. Было бы классно, если бы вы продолжили эту тему и показали нам 100% :) вопросов, которые задают на собеседовании. Все это конечно можно найти и в написанном виде, но я аудиал и читать я долго не могу, а вот слушать - всегда пожалуйста. Успехов вам!
@itwithvitaly4 жыл бұрын
Здравствуйте, спасибо! Скоро будут и другие ответы и интервью :)
@nastennn3 жыл бұрын
Спасибо!
@itwithvitaly3 жыл бұрын
Так и нужно, я в документе который оставил под видео дал подсказку на счет этого :)
@zabidabi70764 жыл бұрын
Очень хорошое видео!
@vadymzdanovych13374 жыл бұрын
Привет. Было бы не плохо разобрать HashMap с большим потоком данных с явной коллизией. Спасибо!!!
@OffAnta4 жыл бұрын
Крутое видео, сам сейчас веду активную подготовку к собесу. Побольше бы вопросов и ответов на них из розряда "Как устроена JVM? Classloader'ы, участки памяти, GC и их типы, Concurrency API (тема достаточно обширная, как и в коллекции есть много интересных фич), IO/NIO, JDBC/Hibernate/JPA ну и наш любимый Spring. Тебе - мотивации в создании контента.
@itwithvitaly4 жыл бұрын
Спасибо)
@alexanderlojhkin89974 жыл бұрын
Ну а что собственно мешает сделать стек из ArrayList? Например таким образом: push - list.add(item); pop - item=list.remove(list.size()-1);
@itwithvitaly4 жыл бұрын
Мы можем многое, а есть ли в этом смысл? :)
@skycruiser81213 жыл бұрын
memory reallocations + копирование остального содержания внутреннего массива из старого в новый
@kapralovdenis78004 жыл бұрын
Спасибо большое, очень полезно. Хотелось бы больше вопросов и больше разбора этих вопросов. Продолжай в том же духе! И хотелось спросить, по Spring задают вопросы на собеседовании?
@itwithvitaly4 жыл бұрын
Спасибо! Да, спрашивают про Spring. На Trainee (практиканта) могут бегло спросить/вообще не спросить, а если это уровень Junior и выше то Spring это обычно must have.
@Olga1505964 жыл бұрын
большое спасибо! видео позволило быстро повторить многое!!
@itwithvitaly4 жыл бұрын
Спасибо!
@ОлегПавлюков-я2я4 жыл бұрын
Все гуд, только в хештаблице не линкедлисты лежат, а ноды у которых есть поле/ссылка на следующую ноду. По крайней мере в восьмой джаве.
@itwithvitaly4 жыл бұрын
Олег Павлюков Все верно, я имел ввиду не класс LinkedList, а структура данных связный список, который на англ называется linked list :) Нода которая ссылается на следующую ноду это и есть связный список
@ОлегПавлюков-я2я4 жыл бұрын
@@itwithvitaly согласен, но думаю это стоит уточнить, а то думаю некоторые уже представили у себя в голове какой то массив LinkedList, что полный фэйл на собесе)
@alexsav74274 жыл бұрын
@@itwithvitaly а при достижении определенного порога с java 8 связный список меняется на дерево, верно?
@evilenot3 жыл бұрын
Формат очень интересный, помогает хоть немного представить как проходят собеседования Только вот не удается найти видео с разбором 2-й части собеседования. После первой сразу идет третья
@Daniel-mo1iy2 жыл бұрын
Как бы это все не забыть)) вроде знаешь, но боишься забыть. А спрашивают про реализацию set внутри ? . Там нужно сказать, что в одном из дженериков подставляется Object? И хранится только по ключу
@Das.Kleine.Krokodil2 жыл бұрын
Прогоняешь примеры обязательно. Так запоминается лучше
@parallax99304 жыл бұрын
14:48, хэш объекта вычисляется на основе его адреса в памяти, а не на основе его полей, equal в свою очередь сравнивает объекты также по их адресам в памяти, поправьте если ошибаюсь
@itwithvitaly4 жыл бұрын
David David Хешкод по дефолту возвращает адрес объекта в памяти все верно, про equals тоже верно. Но, для корректной работы хешмапы всегда нужно переопределять equals & hashCode , типичная реализация последнего - сделать калькуляцию на основе полей
@parallax99304 жыл бұрын
@@itwithvitaly, для String логичен переопределённый equals. а для чего переопределять эти методы для hashmap'а ? там и так всё нормально работает. имхо это фанатизм получается =)
@АльбертСвірський3 жыл бұрын
Видео информативно. Спасибо. И как по мне то формат оптимальный особенно с практической стороны. Вопросик по LinkedList - альтернативе. Какие то конкретные примеры из проектов, задачек. А то я например 1.5 года изучаю java, и к сожалению, ни одного толкового применения LinkedList не встречал.
@yanslow9083 Жыл бұрын
Значит не было кейсов, поговори с коллегами, если такой интерес, в принципе, можешь глянуть, что по этой теме сказал, создатель линк листа Joshua Bloch
@pashkent833 жыл бұрын
Почему везде говорят, что LinkedList быстрее в середину вставить? Как я понял, быстрее вставить будет в начало и в конец списка, так как основное время у LinkedList занимает именно поиск места куда надо вставлять О(n) и это время будет очень мало, если мы будем это делать в начало и в конец(так как двунаправленный список). А операция вставки занимает O(1). У ArrayList наоборот получается, если мы вставляем в начало списка, то нам придется двигать весь массив данных на одну позицию. Это займет достаточно много времени.
@itwithvitaly3 жыл бұрын
Потому что операция копирования дорогая по памяти и по времени для ArrayList, быстрее дойти до нужной точки (индекса) чем сделать все манипуляции с ArrayList.
@vetalnosarev17104 жыл бұрын
Хотел уточнить. Ранее находил информацию что в хеш мап используется массив. при выборе баскета берется "условно" остаток от деления и элементы хранятся в виде дерева, а уже в случае коллизии создается линкед лист для каждого элемента с одинаковым хешом. Подскажите, пожалуйста, ошибочно ли мое понимание или немного по иному рассказано об этой структуре в самом видео?
@itwithvitaly4 жыл бұрын
При идеальном раскладе 1 баскет - 1 элемент (без коллизий) в таком случае там будет просто один элемент и структура данных там особо не нужна. Изначально там создается линкед лист (структура данных, а не класс LinkedList) при возникновении коллизии, а в случае если их слишком много то лист переформируется в дерево, там прямо в исходниках есть условие после какого кол-ва коллизий (элементов в баскете) линкед лист переформируется в дерево. С их стороны довольно логично было переформировывать линкед лист в дерево, ведь поиск элемента по дереву происходит быстрее, чем в линкед лист.
@itwithvitaly4 жыл бұрын
А вообще если вам интересны нюансы, то можете открыть исходники HashMap и посмотреть там метод put() там достаточно читаемо написано и в целом можно разобраться, если что непонятно - спрашивайте
@vetalnosarev17104 жыл бұрын
@@itwithvitaly просто если так то не понятно на каком этапе появляется дерево и не понятно чем структура отличается от массива если линкедлист нужен только при коллизиях. Обязательно посмотрю исходники. Спасибо за обратную связь
@vetalnosarev17104 жыл бұрын
Не от массива а от листа. Мог бы быть хешлист с необычным расчетом индекса
@itwithvitaly4 жыл бұрын
Vetal Nosarev Дерево появляется когда кол-во коллизий в баскете превышает заданный в Джаве порог (константу), насколько я помню так что-то около 8 элементов. В момент когда коллизий нет вы правы, это по сути массив с 1 нодой, т.е. можно сказать просто массив с элементом. Если коллизии возникают, то элементы добавляются в конец и получается линкед лист, если таких элементов добавляется слишком много - реформируем лист в дерево.
@vitamin28454 жыл бұрын
Можете объяснить, как правильно реализовывать функцию hashCode для своего класса? Как генерить это число? На основе чего?
@Das.Kleine.Krokodil2 жыл бұрын
Идея умеет
@yerassylkelsingazin24084 жыл бұрын
Класное видео! Четкий звук и хороший материал! Java core это хорошо, но вопрос, будешь ли проводить интервью с дальнейшими [Ответами] по фреймворкам Spring, Spring MVC, Spring Boot, Hibernate и т.д. ? Было бы замечательно.
@itwithvitaly4 жыл бұрын
Спасибо! В интервью которое я разбираю небыло вопросов по технологиям, но с я радостью с кем-нибудь из подписчиков его запишу и потом выложу сюда на канал с разборами. Думаю скоро возьму несколько людей из подписчиков (кто захочет) на тестовое собеседование, не только по Java Технологиям, но и по общим вопросам (Паттерны, Парадигмы, HTTP, WEB и тд), а также по JS, React.js, Front End
@itwithvitaly4 жыл бұрын
Yerassyl Kelsingazin В общем да, в дальнейшем точно будут
@ОлегПавлюков-я2я4 жыл бұрын
@@itwithvitaly ну в моем собесе такие вопросы были, только я на большинство ответов не знал) Предлагаю перезаписать интервью, если ты старое не начал обрабатывать) Теперь должно быть интереснее, я чуть больше уже знаю)
@itwithvitaly4 жыл бұрын
В августе не планировал записывать интервью, а вот в сентябре можем. Но только учти в этот раз будут технологии: Spring Сore, Spring Data, Spring MVC, Spring AOP, Hibernate, Maven, Patterns, Git etc. Пиши мне в сентрябре, обсудим, а пока готовься :)
@ОлегПавлюков-я2я4 жыл бұрын
@@itwithvitaly ну в сентябре видно будет) Я подтянул темы с которыми у меня были проблемы на прошлом нашем собесе касательно бута, хибера и мавена и собираюсь на реальные собесы пробоваться в августе) Из списка по сути уже все есть, кроме внутренней кухни даты и аоп, так что до сентября подготовлюсь точно)
@Wooldik4 жыл бұрын
А можешь собеседования на JS разработчика?
@itwithvitaly4 жыл бұрын
Планирую сделать скоро
@vladlis2404 жыл бұрын
А где вторая часть?
@itwithvitaly4 жыл бұрын
Ошибка в описании, это и есть вторая, поправлю
@MelOmaHcss4 жыл бұрын
@@itwithvitaly это же третья (API итд), а во второй продолжение Java Core и нет разбора от тебя.
@BookwormYevgen3 жыл бұрын
Зачем переопределять equals и hashCode? Пробовал оба не переопределять - работает корректно и эффективно решает вопрос коллизий, пробовал только equals переопределить - то же самое - работает корректно и эффективно.
@Das.Kleine.Krokodil2 жыл бұрын
Equals нужно переопределять если требуется чтобы какие то разные объекты давали тrue при сравнении.
@ioksi43713 жыл бұрын
Привет На сколько я знаю - в хэшмапе односвязный список, а не линкед лист )
@ГамидГасанов-ю4я4 жыл бұрын
Где ответы второго видео?
@itwithvitaly4 жыл бұрын
Ошибочка вышла , это 2 видео
@СергейЧайка-ъ7ц3 жыл бұрын
Вот вроде послушал все вопросы - всё здорово, всё понятно, но такие фразы в конце типа это всего лишь "10-20% от всех возможных вопросов" немного убивают мотивацию) А что ещё то? Ну ладно, Stack, Queue, ... Так-то ведь почти всё почти и разобрал - нет там ничего мудрёного в коллекциях.
@Das.Kleine.Krokodil Жыл бұрын
Тоже такие мысли были
@Adios-m9r3 жыл бұрын
ты только для контента это делаешь, зачем? Если хочешь помочь сделай видео про вся коллекцию
@itwithvitaly3 жыл бұрын
Это очень затратно по времени, но я думаю все же доделать
@Das.Kleine.Krokodil Жыл бұрын
Он не помог тебе?
@SplashDmg20114 жыл бұрын
"то что"
@onegin51294 жыл бұрын
Про альтернативные применения это точно не для джуна вопрос
@itwithvitaly4 жыл бұрын
Почему? Это не самый сложный вопрос честно сказать :)
@onegin51294 жыл бұрын
@@itwithvitaly мне сложно представить сложно откуда начинающий программист может это знать ) сомневаюсь что в списке популярных вопросов по Java есть что то похожее
@itwithvitaly4 жыл бұрын
Onegin Ну, честно сказать на джуна спрашивают и технологии типа Spring, Hibernate, там могут быть вопросы гораздо тяжелее, и их тоже на джуна спрашивают. Если человек совсем начинающий, то это скорее trainee (стажер) которого берут на практику и доучивают. У джунов обычно достаточно неплохие знания, просто нет опыта:)
@Xokyopo4 жыл бұрын
Я думаю что критично для программиста, это описать алгоритм любой сложности просто. А от простых знаний стандартных библиотек пользы не много, особенно если учесть что код там тоже не безупречен.
@itwithvitaly4 жыл бұрын
Xokyopo Ну, плюс это или минус, но работа на коммерческом проекте это по бОльшей части знание API, а не умение писать алгоритмы.
@itwithvitaly4 жыл бұрын
Алгоритмы знать надо обязательно, а также структуры данных и базовые понятия, но это видео нацелено на разбор собеседования, а не изучения концептов :)
@Xokyopo4 жыл бұрын
@@itwithvitaly в этом то и дело. Вопросы для сабесов явно не бухгалтер выдает, и тут я думаю стоит задуматься о том насколько эти вопросы хорошо помогут раскрыть кандидата. Вспомнить тут можно анекдот про, человека который устраивался дворником в Apple. (Ваши вопросы так же точны как в этом анекдоте.) Так же, можно провести аналогию с другими рабочими профессиями, вот например монтажник гипсокартона зачем ему знать как устроен шуроповер или из чего сделан гипсокартон? Это ему не поможет в работе абсолютно ничем.
@Xokyopo4 жыл бұрын
Так же, все мы знаем из детства из чего делают дома (на стройки многие бывали я уверен) практически с закрытыми глазами можем весь процесс представить, но многие ли смогут его повторить? Многие ли понимают почему он строится именно так а не иначе? Я думаю вряд-ли, так же, как и знания о реализациях во многих библиотеках, да посмотрел хорошо, но смысл пересказывать код, если не понял как он работает? Как минимум было бы гораздо эффективней попросить написать, какой то базовый класс, описав общее его поведение.
@JIockjoy3 жыл бұрын
@@Xokyopo Прямо мысли мои прочитал, много видел на собеседование вопросов - "расскажите как устроено Map внутри, что под капотом", даже не понимая что тут же сразу этим вопросом убивают принцип черного ящика. Сам автор видео просит раскрыть секрет работы объекта с данными внутри и тут же делает пометку- "ну там какие то операции побитовых сдвигов, но это уже такое", вопрос, зачем тогда вообще смотрел если не разбирался более детально. Я бы к примеру спросил чем отличается операция на процессоре 2+2 от 2*2 ))
@Xokyopo4 жыл бұрын
Сколько бы не знал учитель по "анатомии", хирург из него некудышный.