КОМЕНТАРІ •

  • @itwithvitaly
    @itwithvitaly 4 роки тому +17

    Тайм-коды:
    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-oze
    @sno-oze 4 роки тому +29

    Природа настолько очистилась, что Виталий вернулся на youtube.

  • @СергейЧамкин
    @СергейЧамкин 4 роки тому +5

    Очень радует, как быстро выходит качественный контент. Я счастлив

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Сергей Чамкин Спасибо)

  • @svetlanamazhaykina6918
    @svetlanamazhaykina6918 8 місяців тому +1

    Спасибо за Ваш труд! Коммент в поддержку канала.

  • @KX-nn7tq
    @KX-nn7tq 4 роки тому +4

    Виталий, продолжай в том же духе, у тебя хорошо получается делать качественный контент по Яве чего не часто встретишь в просторах ютуба, информативно, без воды и доходчиво, вообщем спасибо, ждём ещё видосы по топ вопросам!!!!

  • @Krasnolesye
    @Krasnolesye 2 роки тому +2

    быстро ввел в курс дела.
    Спасибо! и за Тайм-коды отдельное

  • @kapralovdenis7800
    @kapralovdenis7800 4 роки тому +14

    Спасибо большое, очень полезно. Хотелось бы больше вопросов и больше разбора этих вопросов. Продолжай в том же духе! И хотелось спросить, по Spring задают вопросы на собеседовании?

    • @itwithvitaly
      @itwithvitaly 4 роки тому +2

      Спасибо! Да, спрашивают про Spring. На Trainee (практиканта) могут бегло спросить/вообще не спросить, а если это уровень Junior и выше то Spring это обычно must have.

  • @meison7969
    @meison7969 4 роки тому +3

    За контент лайк не глядя!!

  • @yuliyakanonchyk3931
    @yuliyakanonchyk3931 4 роки тому +4

    Спасибо за ваши уроки. Нравятся ваши объяснения. Было бы классно, если бы вы продолжили эту тему и показали нам 100% :) вопросов, которые задают на собеседовании.
    Все это конечно можно найти и в написанном виде, но я аудиал и читать я долго не могу, а вот слушать - всегда пожалуйста.
    Успехов вам!

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Здравствуйте, спасибо! Скоро будут и другие ответы и интервью :)

  • @JGolt
    @JGolt 2 роки тому +1

    Очень хорошее видео. Спасибо большое за ответы!

  • @georgewhite3708
    @georgewhite3708 3 роки тому +2

    Крутое видео, спасибо! Единственное что хотел добавить, это насчет LinkedList vs ArrayList. Когда тестил, то во абсолютно во ВСЕХ случаях ArrayList лучше, кроме модификаций в начале Листа))

    • @Deadly_Darkness
      @Deadly_Darkness 2 роки тому

      Это в новых версиях оптимизировали ArrayList, поэтому его можно использовать практически всегда.

    • @василинасемёнова-ы5н
      @василинасемёнова-ы5н 2 роки тому

      @@Deadly_Darkness здраствуйте, а можете уточнить с каких именно версий он оптимизирован?

  • @yerassylkelsingazin2408
    @yerassylkelsingazin2408 4 роки тому +6

    Класное видео! Четкий звук и хороший материал! Java core это хорошо, но вопрос, будешь ли проводить интервью с дальнейшими [Ответами] по фреймворкам Spring, Spring MVC, Spring Boot, Hibernate и т.д. ? Было бы замечательно.

    • @itwithvitaly
      @itwithvitaly 4 роки тому +3

      Спасибо! В интервью которое я разбираю небыло вопросов по технологиям, но с я радостью с кем-нибудь из подписчиков его запишу и потом выложу сюда на канал с разборами. Думаю скоро возьму несколько людей из подписчиков (кто захочет) на тестовое собеседование, не только по Java Технологиям, но и по общим вопросам (Паттерны, Парадигмы, HTTP, WEB и тд), а также по JS, React.js, Front End

    • @itwithvitaly
      @itwithvitaly 4 роки тому +2

      Yerassyl Kelsingazin В общем да, в дальнейшем точно будут

    • @ОлегПавлюков-я2я
      @ОлегПавлюков-я2я 4 роки тому +3

      @@itwithvitaly ну в моем собесе такие вопросы были, только я на большинство ответов не знал) Предлагаю перезаписать интервью, если ты старое не начал обрабатывать) Теперь должно быть интереснее, я чуть больше уже знаю)

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      В августе не планировал записывать интервью, а вот в сентябре можем.
      Но только учти в этот раз будут технологии: Spring Сore, Spring Data, Spring MVC, Spring AOP, Hibernate, Maven, Patterns, Git etc. Пиши мне в сентрябре, обсудим, а пока готовься :)

    • @ОлегПавлюков-я2я
      @ОлегПавлюков-я2я 4 роки тому +1

      @@itwithvitaly ну в сентябре видно будет) Я подтянул темы с которыми у меня были проблемы на прошлом нашем собесе касательно бута, хибера и мавена и собираюсь на реальные собесы пробоваться в августе) Из списка по сути уже все есть, кроме внутренней кухни даты и аоп, так что до сентября подготовлюсь точно)

  • @Katar1x
    @Katar1x 3 роки тому +4

    А как все это можно знать, просто изучая java. Я к тому, что так может ответить ТОТ джун, который уже работал. А если это первое собеседование?

  • @ГлебВалерьевич-у6ы
    @ГлебВалерьевич-у6ы 2 роки тому +1

    Спасибо

  • @dmii3iy
    @dmii3iy 2 роки тому +1

    Спасибо, очень интересно

  • @OffAnta
    @OffAnta 4 роки тому +4

    Крутое видео, сам сейчас веду активную подготовку к собесу. Побольше бы вопросов и ответов на них из розряда "Как устроена JVM? Classloader'ы, участки памяти, GC и их типы, Concurrency API (тема достаточно обширная, как и в коллекции есть много интересных фич), IO/NIO, JDBC/Hibernate/JPA ну и наш любимый Spring. Тебе - мотивации в создании контента.

  • @zabidabi7076
    @zabidabi7076 4 роки тому +3

    Очень хорошое видео!

  • @vadymzdanovych1337
    @vadymzdanovych1337 4 роки тому +7

    Привет.
    Было бы не плохо разобрать HashMap с большим потоком данных с явной коллизией.
    Спасибо!!!

  • @evilenot
    @evilenot 3 роки тому +2

    Формат очень интересный, помогает хоть немного представить как проходят собеседования
    Только вот не удается найти видео с разбором 2-й части собеседования. После первой сразу идет третья

  • @АльбертСвірський
    @АльбертСвірський 3 роки тому +1

    Видео информативно. Спасибо. И как по мне то формат оптимальный особенно с практической стороны. Вопросик по LinkedList - альтернативе. Какие то конкретные примеры из проектов, задачек. А то я например 1.5 года изучаю java, и к сожалению, ни одного толкового применения LinkedList не встречал.

    • @yanslow9083
      @yanslow9083 Рік тому

      Значит не было кейсов, поговори с коллегами, если такой интерес, в принципе, можешь глянуть, что по этой теме сказал, создатель линк листа Joshua Bloch

  • @nastennn
    @nastennn 2 роки тому +2

    Спасибо!

    • @itwithvitaly
      @itwithvitaly 2 роки тому

      Так и нужно, я в документе который оставил под видео дал подсказку на счет этого :)

  • @ОлегПавлюков-я2я
    @ОлегПавлюков-я2я 4 роки тому +6

    Все гуд, только в хештаблице не линкедлисты лежат, а ноды у которых есть поле/ссылка на следующую ноду. По крайней мере в восьмой джаве.

    • @itwithvitaly
      @itwithvitaly 4 роки тому +6

      Олег Павлюков Все верно, я имел ввиду не класс LinkedList, а структура данных связный список, который на англ называется linked list :) Нода которая ссылается на следующую ноду это и есть связный список

    • @ОлегПавлюков-я2я
      @ОлегПавлюков-я2я 4 роки тому +4

      @@itwithvitaly согласен, но думаю это стоит уточнить, а то думаю некоторые уже представили у себя в голове какой то массив LinkedList, что полный фэйл на собесе)

    • @alexsav7427
      @alexsav7427 4 роки тому +1

      @@itwithvitaly а при достижении определенного порога с java 8 связный список меняется на дерево, верно?

  • @vetalnosarev1710
    @vetalnosarev1710 4 роки тому +3

    Хотел уточнить. Ранее находил информацию что в хеш мап используется массив. при выборе баскета берется "условно" остаток от деления и элементы хранятся в виде дерева, а уже в случае коллизии создается линкед лист для каждого элемента с одинаковым хешом. Подскажите, пожалуйста, ошибочно ли мое понимание или немного по иному рассказано об этой структуре в самом видео?

    • @itwithvitaly
      @itwithvitaly 4 роки тому +2

      При идеальном раскладе 1 баскет - 1 элемент (без коллизий) в таком случае там будет просто один элемент и структура данных там особо не нужна. Изначально там создается линкед лист (структура данных, а не класс LinkedList) при возникновении коллизии, а в случае если их слишком много то лист переформируется в дерево, там прямо в исходниках есть условие после какого кол-ва коллизий (элементов в баскете) линкед лист переформируется в дерево. С их стороны довольно логично было переформировывать линкед лист в дерево, ведь поиск элемента по дереву происходит быстрее, чем в линкед лист.

    • @itwithvitaly
      @itwithvitaly 4 роки тому

      А вообще если вам интересны нюансы, то можете открыть исходники HashMap и посмотреть там метод put() там достаточно читаемо написано и в целом можно разобраться, если что непонятно - спрашивайте

    • @vetalnosarev1710
      @vetalnosarev1710 4 роки тому +1

      @@itwithvitaly просто если так то не понятно на каком этапе появляется дерево и не понятно чем структура отличается от массива если линкедлист нужен только при коллизиях. Обязательно посмотрю исходники. Спасибо за обратную связь

    • @vetalnosarev1710
      @vetalnosarev1710 4 роки тому

      Не от массива а от листа. Мог бы быть хешлист с необычным расчетом индекса

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Vetal Nosarev Дерево появляется когда кол-во коллизий в баскете превышает заданный в Джаве порог (константу), насколько я помню так что-то около 8 элементов. В момент когда коллизий нет вы правы, это по сути массив с 1 нодой, т.е. можно сказать просто массив с элементом. Если коллизии возникают, то элементы добавляются в конец и получается линкед лист, если таких элементов добавляется слишком много - реформируем лист в дерево.

  • @Daniel-mo1iy
    @Daniel-mo1iy 2 роки тому +1

    Как бы это все не забыть)) вроде знаешь, но боишься забыть. А спрашивают про реализацию set внутри ? . Там нужно сказать, что в одном из дженериков подставляется Object? И хранится только по ключу

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому +1

      Прогоняешь примеры обязательно. Так запоминается лучше

  • @alexanderlojhkin8997
    @alexanderlojhkin8997 3 роки тому +3

    Ну а что собственно мешает сделать стек из ArrayList? Например таким образом: push - list.add(item); pop - item=list.remove(list.size()-1);

    • @itwithvitaly
      @itwithvitaly 3 роки тому +1

      Мы можем многое, а есть ли в этом смысл? :)

    • @skycruiser8121
      @skycruiser8121 3 роки тому

      memory reallocations + копирование остального содержания внутреннего массива из старого в новый

  • @Olga150596
    @Olga150596 4 роки тому +3

    большое спасибо! видео позволило быстро повторить многое!!

  • @pashkent83
    @pashkent83 2 роки тому +1

    Почему везде говорят, что LinkedList быстрее в середину вставить? Как я понял, быстрее вставить будет в начало и в конец списка, так как основное время у LinkedList занимает именно поиск места куда надо вставлять О(n) и это время будет очень мало, если мы будем это делать в начало и в конец(так как двунаправленный список). А операция вставки занимает O(1). У ArrayList наоборот получается, если мы вставляем в начало списка, то нам придется двигать весь массив данных на одну позицию. Это займет достаточно много времени.

    • @itwithvitaly
      @itwithvitaly 2 роки тому

      Потому что операция копирования дорогая по памяти и по времени для ArrayList, быстрее дойти до нужной точки (индекса) чем сделать все манипуляции с ArrayList.

  • @parallax9930
    @parallax9930 4 роки тому +2

    14:48, хэш объекта вычисляется на основе его адреса в памяти, а не на основе его полей, equal в свою очередь сравнивает объекты также по их адресам в памяти, поправьте если ошибаюсь

    • @itwithvitaly
      @itwithvitaly 4 роки тому +2

      David David Хешкод по дефолту возвращает адрес объекта в памяти все верно, про equals тоже верно. Но, для корректной работы хешмапы всегда нужно переопределять equals & hashCode , типичная реализация последнего - сделать калькуляцию на основе полей

    • @parallax9930
      @parallax9930 4 роки тому +1

      ​@@itwithvitaly, для String логичен переопределённый equals. а для чего переопределять эти методы для hashmap'а ? там и так всё нормально работает. имхо это фанатизм получается =)

  • @vitamin2845
    @vitamin2845 3 роки тому +1

    Можете объяснить, как правильно реализовывать функцию hashCode для своего класса? Как генерить это число? На основе чего?

  • @ioksi4371
    @ioksi4371 3 роки тому +1

    Привет
    На сколько я знаю - в хэшмапе односвязный список, а не линкед лист )

  • @Wooldik
    @Wooldik 4 роки тому +3

    А можешь собеседования на JS разработчика?

    • @itwithvitaly
      @itwithvitaly 4 роки тому +3

      Планирую сделать скоро

  • @BookwormYevgen
    @BookwormYevgen 3 роки тому +1

    Зачем переопределять equals и hashCode? Пробовал оба не переопределять - работает корректно и эффективно решает вопрос коллизий, пробовал только equals переопределить - то же самое - работает корректно и эффективно.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

      Equals нужно переопределять если требуется чтобы какие то разные объекты давали тrue при сравнении.

  • @СергейЧайка-ъ7ц
    @СергейЧайка-ъ7ц 3 роки тому +2

    Вот вроде послушал все вопросы - всё здорово, всё понятно, но такие фразы в конце типа это всего лишь "10-20% от всех возможных вопросов" немного убивают мотивацию) А что ещё то? Ну ладно, Stack, Queue, ... Так-то ведь почти всё почти и разобрал - нет там ничего мудрёного в коллекциях.

  • @vladlis240
    @vladlis240 4 роки тому +5

    А где вторая часть?

    • @itwithvitaly
      @itwithvitaly 4 роки тому

      Ошибка в описании, это и есть вторая, поправлю

    • @MelOmaHcss
      @MelOmaHcss 3 роки тому

      ​@@itwithvitaly это же третья (API итд), а во второй продолжение Java Core и нет разбора от тебя.

  • @ГамидГасанов-ю4я
    @ГамидГасанов-ю4я 4 роки тому +2

    Где ответы второго видео?

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Ошибочка вышла , это 2 видео

  • @Adios-m9r
    @Adios-m9r 3 роки тому +2

    ты только для контента это делаешь, зачем? Если хочешь помочь сделай видео про вся коллекцию

    • @itwithvitaly
      @itwithvitaly 2 роки тому +1

      Это очень затратно по времени, но я думаю все же доделать

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому +1

      Он не помог тебе?

  • @onegin5129
    @onegin5129 4 роки тому +3

    Про альтернативные применения это точно не для джуна вопрос

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Почему? Это не самый сложный вопрос честно сказать :)

    • @onegin5129
      @onegin5129 4 роки тому +2

      @@itwithvitaly мне сложно представить сложно откуда начинающий программист может это знать ) сомневаюсь что в списке популярных вопросов по Java есть что то похожее

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Onegin Ну, честно сказать на джуна спрашивают и технологии типа Spring, Hibernate, там могут быть вопросы гораздо тяжелее, и их тоже на джуна спрашивают. Если человек совсем начинающий, то это скорее trainee (стажер) которого берут на практику и доучивают. У джунов обычно достаточно неплохие знания, просто нет опыта:)

  • @SplashDmg2011
    @SplashDmg2011 4 роки тому +2

    "то что"

  • @Xokyopo
    @Xokyopo 4 роки тому +5

    Сколько бы не знал учитель по "анатомии", хирург из него некудышный.

  • @Xokyopo
    @Xokyopo 4 роки тому +2

    Я думаю что критично для программиста, это описать алгоритм любой сложности просто. А от простых знаний стандартных библиотек пользы не много, особенно если учесть что код там тоже не безупречен.

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Xokyopo Ну, плюс это или минус, но работа на коммерческом проекте это по бОльшей части знание API, а не умение писать алгоритмы.

    • @itwithvitaly
      @itwithvitaly 4 роки тому +1

      Алгоритмы знать надо обязательно, а также структуры данных и базовые понятия, но это видео нацелено на разбор собеседования, а не изучения концептов :)

    • @Xokyopo
      @Xokyopo 4 роки тому +1

      @@itwithvitaly в этом то и дело. Вопросы для сабесов явно не бухгалтер выдает, и тут я думаю стоит задуматься о том насколько эти вопросы хорошо помогут раскрыть кандидата.
      Вспомнить тут можно анекдот про, человека который устраивался дворником в Apple. (Ваши вопросы так же точны как в этом анекдоте.)
      Так же, можно провести аналогию с другими рабочими профессиями, вот например монтажник гипсокартона зачем ему знать как устроен шуроповер или из чего сделан гипсокартон? Это ему не поможет в работе абсолютно ничем.

    • @Xokyopo
      @Xokyopo 4 роки тому +1

      Так же, все мы знаем из детства из чего делают дома (на стройки многие бывали я уверен) практически с закрытыми глазами можем весь процесс представить, но многие ли смогут его повторить? Многие ли понимают почему он строится именно так а не иначе? Я думаю вряд-ли, так же, как и знания о реализациях во многих библиотеках, да посмотрел хорошо, но смысл пересказывать код, если не понял как он работает? Как минимум было бы гораздо эффективней попросить написать, какой то базовый класс, описав общее его поведение.

    • @JIockjoy
      @JIockjoy 2 роки тому

      @@Xokyopo Прямо мысли мои прочитал, много видел на собеседование вопросов - "расскажите как устроено Map внутри, что под капотом", даже не понимая что тут же сразу этим вопросом убивают принцип черного ящика. Сам автор видео просит раскрыть секрет работы объекта с данными внутри и тут же делает пометку- "ну там какие то операции побитовых сдвигов, но это уже такое", вопрос, зачем тогда вообще смотрел если не разбирался более детально. Я бы к примеру спросил чем отличается операция на процессоре 2+2 от 2*2 ))

  • @Xokyopo
    @Xokyopo 4 роки тому +2

    Голос - норм. Звук - норм.
    Тема только не очень.