[Ответы] Java Junior реальное собеседование | Collection API | Часть 3

  Рет қаралды 37,453

IT с Виталием Карнаухом

IT с Виталием Карнаухом

3 жыл бұрын

В этом видео я дам ответы на вопросы из 3 части видео с реального собеседования на Junior Java Developer. Сollection API - наверное самый горячий топик на Java cобеседовании, поэтому относиться к нему стоит также с особой внимательностью
Видео с собеседованием: • Java Junior реальное с...
Надеюсь каждому из вас будет полезно послушать информативную часть, а также взять себе на заметку, как примерно нужно отвечать на собеседовании.
Тайм-коды:
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 что это
Друзья! Напишите в комментариях какой вопрос для вас был самым сложным и почему?

Пікірлер: 91
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Тайм-коды: 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 3 жыл бұрын
Природа настолько очистилась, что Виталий вернулся на youtube.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Farid :)
@user-pn5vw7rs5m
@user-pn5vw7rs5m 3 жыл бұрын
Очень радует, как быстро выходит качественный контент. Я счастлив
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Сергей Чамкин Спасибо)
@svetlanamazhaykina6918
@svetlanamazhaykina6918 3 ай бұрын
Спасибо за Ваш труд! Коммент в поддержку канала.
@JGolt
@JGolt 2 жыл бұрын
Очень хорошее видео. Спасибо большое за ответы!
@KX-nn7tq
@KX-nn7tq 3 жыл бұрын
Виталий, продолжай в том же духе, у тебя хорошо получается делать качественный контент по Яве чего не часто встретишь в просторах ютуба, информативно, без воды и доходчиво, вообщем спасибо, ждём ещё видосы по топ вопросам!!!!
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо!
@Krasnolesye
@Krasnolesye 2 жыл бұрын
быстро ввел в курс дела. Спасибо! и за Тайм-коды отдельное
@itwithvitaly
@itwithvitaly 2 жыл бұрын
Спасибо!
@dmii3iy
@dmii3iy Жыл бұрын
Спасибо, очень интересно
@zabidabi7076
@zabidabi7076 3 жыл бұрын
Очень хорошое видео!
@evilenot
@evilenot 2 жыл бұрын
Формат очень интересный, помогает хоть немного представить как проходят собеседования Только вот не удается найти видео с разбором 2-й части собеседования. После первой сразу идет третья
@Katar1x
@Katar1x 3 жыл бұрын
А как все это можно знать, просто изучая java. Я к тому, что так может ответить ТОТ джун, который уже работал. А если это первое собеседование?
@meison7969
@meison7969 3 жыл бұрын
За контент лайк не глядя!!
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо!
@kapralovdenis7800
@kapralovdenis7800 3 жыл бұрын
Спасибо большое, очень полезно. Хотелось бы больше вопросов и больше разбора этих вопросов. Продолжай в том же духе! И хотелось спросить, по Spring задают вопросы на собеседовании?
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо! Да, спрашивают про Spring. На Trainee (практиканта) могут бегло спросить/вообще не спросить, а если это уровень Junior и выше то Spring это обычно must have.
@georgewhite3708
@georgewhite3708 3 жыл бұрын
Крутое видео, спасибо! Единственное что хотел добавить, это насчет LinkedList vs ArrayList. Когда тестил, то во абсолютно во ВСЕХ случаях ArrayList лучше, кроме модификаций в начале Листа))
@Deadly_Darkness
@Deadly_Darkness 2 жыл бұрын
Это в новых версиях оптимизировали ArrayList, поэтому его можно использовать практически всегда.
@user-lh3po3et2q
@user-lh3po3et2q 2 жыл бұрын
@@Deadly_Darkness здраствуйте, а можете уточнить с каких именно версий он оптимизирован?
@nastennn
@nastennn 2 жыл бұрын
Спасибо!
@itwithvitaly
@itwithvitaly 2 жыл бұрын
Так и нужно, я в документе который оставил под видео дал подсказку на счет этого :)
@vadymzdanovych1337
@vadymzdanovych1337 3 жыл бұрын
Привет. Было бы не плохо разобрать HashMap с большим потоком данных с явной коллизией. Спасибо!!!
@user-qx3jt8fw1v
@user-qx3jt8fw1v 2 жыл бұрын
Спасибо
@user-uz1vk3oo6h
@user-uz1vk3oo6h 3 жыл бұрын
Видео информативно. Спасибо. И как по мне то формат оптимальный особенно с практической стороны. Вопросик по LinkedList - альтернативе. Какие то конкретные примеры из проектов, задачек. А то я например 1.5 года изучаю java, и к сожалению, ни одного толкового применения LinkedList не встречал.
@yanslow9083
@yanslow9083 Жыл бұрын
Значит не было кейсов, поговори с коллегами, если такой интерес, в принципе, можешь глянуть, что по этой теме сказал, создатель линк листа Joshua Bloch
@Olga150596
@Olga150596 3 жыл бұрын
большое спасибо! видео позволило быстро повторить многое!!
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо!
@anatoliitaran5357
@anatoliitaran5357 3 жыл бұрын
Крутое видео, сам сейчас веду активную подготовку к собесу. Побольше бы вопросов и ответов на них из розряда "Как устроена JVM? Classloader'ы, участки памяти, GC и их типы, Concurrency API (тема достаточно обширная, как и в коллекции есть много интересных фич), IO/NIO, JDBC/Hibernate/JPA ну и наш любимый Spring. Тебе - мотивации в создании контента.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо)
@yerassylkelsingazin2408
@yerassylkelsingazin2408 3 жыл бұрын
Класное видео! Четкий звук и хороший материал! Java core это хорошо, но вопрос, будешь ли проводить интервью с дальнейшими [Ответами] по фреймворкам Spring, Spring MVC, Spring Boot, Hibernate и т.д. ? Было бы замечательно.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Спасибо! В интервью которое я разбираю небыло вопросов по технологиям, но с я радостью с кем-нибудь из подписчиков его запишу и потом выложу сюда на канал с разборами. Думаю скоро возьму несколько людей из подписчиков (кто захочет) на тестовое собеседование, не только по Java Технологиям, но и по общим вопросам (Паттерны, Парадигмы, HTTP, WEB и тд), а также по JS, React.js, Front End
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Yerassyl Kelsingazin В общем да, в дальнейшем точно будут
@user-vt4cs6yw7o
@user-vt4cs6yw7o 3 жыл бұрын
@@itwithvitaly ну в моем собесе такие вопросы были, только я на большинство ответов не знал) Предлагаю перезаписать интервью, если ты старое не начал обрабатывать) Теперь должно быть интереснее, я чуть больше уже знаю)
@itwithvitaly
@itwithvitaly 3 жыл бұрын
В августе не планировал записывать интервью, а вот в сентябре можем. Но только учти в этот раз будут технологии: Spring Сore, Spring Data, Spring MVC, Spring AOP, Hibernate, Maven, Patterns, Git etc. Пиши мне в сентрябре, обсудим, а пока готовься :)
@user-vt4cs6yw7o
@user-vt4cs6yw7o 3 жыл бұрын
@@itwithvitaly ну в сентябре видно будет) Я подтянул темы с которыми у меня были проблемы на прошлом нашем собесе касательно бута, хибера и мавена и собираюсь на реальные собесы пробоваться в августе) Из списка по сути уже все есть, кроме внутренней кухни даты и аоп, так что до сентября подготовлюсь точно)
@yuliyakanonchyk3931
@yuliyakanonchyk3931 3 жыл бұрын
Спасибо за ваши уроки. Нравятся ваши объяснения. Было бы классно, если бы вы продолжили эту тему и показали нам 100% :) вопросов, которые задают на собеседовании. Все это конечно можно найти и в написанном виде, но я аудиал и читать я долго не могу, а вот слушать - всегда пожалуйста. Успехов вам!
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Здравствуйте, спасибо! Скоро будут и другие ответы и интервью :)
@user-vt4cs6yw7o
@user-vt4cs6yw7o 3 жыл бұрын
Все гуд, только в хештаблице не линкедлисты лежат, а ноды у которых есть поле/ссылка на следующую ноду. По крайней мере в восьмой джаве.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Олег Павлюков Все верно, я имел ввиду не класс LinkedList, а структура данных связный список, который на англ называется linked list :) Нода которая ссылается на следующую ноду это и есть связный список
@user-vt4cs6yw7o
@user-vt4cs6yw7o 3 жыл бұрын
@@itwithvitaly согласен, но думаю это стоит уточнить, а то думаю некоторые уже представили у себя в голове какой то массив LinkedList, что полный фэйл на собесе)
@alexsav7427
@alexsav7427 3 жыл бұрын
@@itwithvitaly а при достижении определенного порога с java 8 связный список меняется на дерево, верно?
@Daniel-mo1iy
@Daniel-mo1iy Жыл бұрын
Как бы это все не забыть)) вроде знаешь, но боишься забыть. А спрашивают про реализацию set внутри ? . Там нужно сказать, что в одном из дженериков подставляется Object? И хранится только по ключу
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Прогоняешь примеры обязательно. Так запоминается лучше
@vetalnosarev1710
@vetalnosarev1710 3 жыл бұрын
Хотел уточнить. Ранее находил информацию что в хеш мап используется массив. при выборе баскета берется "условно" остаток от деления и элементы хранятся в виде дерева, а уже в случае коллизии создается линкед лист для каждого элемента с одинаковым хешом. Подскажите, пожалуйста, ошибочно ли мое понимание или немного по иному рассказано об этой структуре в самом видео?
@itwithvitaly
@itwithvitaly 3 жыл бұрын
При идеальном раскладе 1 баскет - 1 элемент (без коллизий) в таком случае там будет просто один элемент и структура данных там особо не нужна. Изначально там создается линкед лист (структура данных, а не класс LinkedList) при возникновении коллизии, а в случае если их слишком много то лист переформируется в дерево, там прямо в исходниках есть условие после какого кол-ва коллизий (элементов в баскете) линкед лист переформируется в дерево. С их стороны довольно логично было переформировывать линкед лист в дерево, ведь поиск элемента по дереву происходит быстрее, чем в линкед лист.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
А вообще если вам интересны нюансы, то можете открыть исходники HashMap и посмотреть там метод put() там достаточно читаемо написано и в целом можно разобраться, если что непонятно - спрашивайте
@vetalnosarev1710
@vetalnosarev1710 3 жыл бұрын
@@itwithvitaly просто если так то не понятно на каком этапе появляется дерево и не понятно чем структура отличается от массива если линкедлист нужен только при коллизиях. Обязательно посмотрю исходники. Спасибо за обратную связь
@vetalnosarev1710
@vetalnosarev1710 3 жыл бұрын
Не от массива а от листа. Мог бы быть хешлист с необычным расчетом индекса
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Vetal Nosarev Дерево появляется когда кол-во коллизий в баскете превышает заданный в Джаве порог (константу), насколько я помню так что-то около 8 элементов. В момент когда коллизий нет вы правы, это по сути массив с 1 нодой, т.е. можно сказать просто массив с элементом. Если коллизии возникают, то элементы добавляются в конец и получается линкед лист, если таких элементов добавляется слишком много - реформируем лист в дерево.
@alexanderlojhkin8997
@alexanderlojhkin8997 3 жыл бұрын
Ну а что собственно мешает сделать стек из ArrayList? Например таким образом: push - list.add(item); pop - item=list.remove(list.size()-1);
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Мы можем многое, а есть ли в этом смысл? :)
@skycruiser8121
@skycruiser8121 2 жыл бұрын
memory reallocations + копирование остального содержания внутреннего массива из старого в новый
@parallax9930
@parallax9930 3 жыл бұрын
14:48, хэш объекта вычисляется на основе его адреса в памяти, а не на основе его полей, equal в свою очередь сравнивает объекты также по их адресам в памяти, поправьте если ошибаюсь
@itwithvitaly
@itwithvitaly 3 жыл бұрын
David David Хешкод по дефолту возвращает адрес объекта в памяти все верно, про equals тоже верно. Но, для корректной работы хешмапы всегда нужно переопределять equals & hashCode , типичная реализация последнего - сделать калькуляцию на основе полей
@parallax9930
@parallax9930 3 жыл бұрын
​@@itwithvitaly, для String логичен переопределённый equals. а для чего переопределять эти методы для hashmap'а ? там и так всё нормально работает. имхо это фанатизм получается =)
@vitamin2845
@vitamin2845 3 жыл бұрын
Можете объяснить, как правильно реализовывать функцию hashCode для своего класса? Как генерить это число? На основе чего?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Идея умеет
@ioksi4371
@ioksi4371 2 жыл бұрын
Привет На сколько я знаю - в хэшмапе односвязный список, а не линкед лист )
@pashkent83
@pashkent83 2 жыл бұрын
Почему везде говорят, что LinkedList быстрее в середину вставить? Как я понял, быстрее вставить будет в начало и в конец списка, так как основное время у LinkedList занимает именно поиск места куда надо вставлять О(n) и это время будет очень мало, если мы будем это делать в начало и в конец(так как двунаправленный список). А операция вставки занимает O(1). У ArrayList наоборот получается, если мы вставляем в начало списка, то нам придется двигать весь массив данных на одну позицию. Это займет достаточно много времени.
@itwithvitaly
@itwithvitaly 2 жыл бұрын
Потому что операция копирования дорогая по памяти и по времени для ArrayList, быстрее дойти до нужной точки (индекса) чем сделать все манипуляции с ArrayList.
@Wooldik
@Wooldik 3 жыл бұрын
А можешь собеседования на JS разработчика?
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Планирую сделать скоро
@BookwormYevgen
@BookwormYevgen 3 жыл бұрын
Зачем переопределять equals и hashCode? Пробовал оба не переопределять - работает корректно и эффективно решает вопрос коллизий, пробовал только equals переопределить - то же самое - работает корректно и эффективно.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Equals нужно переопределять если требуется чтобы какие то разные объекты давали тrue при сравнении.
@user-yq3co2cv9k
@user-yq3co2cv9k 2 жыл бұрын
Вот вроде послушал все вопросы - всё здорово, всё понятно, но такие фразы в конце типа это всего лишь "10-20% от всех возможных вопросов" немного убивают мотивацию) А что ещё то? Ну ладно, Stack, Queue, ... Так-то ведь почти всё почти и разобрал - нет там ничего мудрёного в коллекциях.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Тоже такие мысли были
@vladlis240
@vladlis240 3 жыл бұрын
А где вторая часть?
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Ошибка в описании, это и есть вторая, поправлю
@MelOmaHcss
@MelOmaHcss 3 жыл бұрын
​@@itwithvitaly это же третья (API итд), а во второй продолжение Java Core и нет разбора от тебя.
@user-ed6po3um7k
@user-ed6po3um7k 3 жыл бұрын
Где ответы второго видео?
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Ошибочка вышла , это 2 видео
@SplashDmg2011
@SplashDmg2011 3 жыл бұрын
"то что"
@onegin5129
@onegin5129 3 жыл бұрын
Про альтернативные применения это точно не для джуна вопрос
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Почему? Это не самый сложный вопрос честно сказать :)
@onegin5129
@onegin5129 3 жыл бұрын
@@itwithvitaly мне сложно представить сложно откуда начинающий программист может это знать ) сомневаюсь что в списке популярных вопросов по Java есть что то похожее
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Onegin Ну, честно сказать на джуна спрашивают и технологии типа Spring, Hibernate, там могут быть вопросы гораздо тяжелее, и их тоже на джуна спрашивают. Если человек совсем начинающий, то это скорее trainee (стажер) которого берут на практику и доучивают. У джунов обычно достаточно неплохие знания, просто нет опыта:)
@user-qz7vz8lq4x
@user-qz7vz8lq4x 2 жыл бұрын
ты только для контента это делаешь, зачем? Если хочешь помочь сделай видео про вся коллекцию
@itwithvitaly
@itwithvitaly 2 жыл бұрын
Это очень затратно по времени, но я думаю все же доделать
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
Он не помог тебе?
@Xokyopo
@Xokyopo 3 жыл бұрын
Я думаю что критично для программиста, это описать алгоритм любой сложности просто. А от простых знаний стандартных библиотек пользы не много, особенно если учесть что код там тоже не безупречен.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Xokyopo Ну, плюс это или минус, но работа на коммерческом проекте это по бОльшей части знание API, а не умение писать алгоритмы.
@itwithvitaly
@itwithvitaly 3 жыл бұрын
Алгоритмы знать надо обязательно, а также структуры данных и базовые понятия, но это видео нацелено на разбор собеседования, а не изучения концептов :)
@Xokyopo
@Xokyopo 3 жыл бұрын
@@itwithvitaly в этом то и дело. Вопросы для сабесов явно не бухгалтер выдает, и тут я думаю стоит задуматься о том насколько эти вопросы хорошо помогут раскрыть кандидата. Вспомнить тут можно анекдот про, человека который устраивался дворником в Apple. (Ваши вопросы так же точны как в этом анекдоте.) Так же, можно провести аналогию с другими рабочими профессиями, вот например монтажник гипсокартона зачем ему знать как устроен шуроповер или из чего сделан гипсокартон? Это ему не поможет в работе абсолютно ничем.
@Xokyopo
@Xokyopo 3 жыл бұрын
Так же, все мы знаем из детства из чего делают дома (на стройки многие бывали я уверен) практически с закрытыми глазами можем весь процесс представить, но многие ли смогут его повторить? Многие ли понимают почему он строится именно так а не иначе? Я думаю вряд-ли, так же, как и знания о реализациях во многих библиотеках, да посмотрел хорошо, но смысл пересказывать код, если не понял как он работает? Как минимум было бы гораздо эффективней попросить написать, какой то базовый класс, описав общее его поведение.
@JIockjoy
@JIockjoy 2 жыл бұрын
@@Xokyopo Прямо мысли мои прочитал, много видел на собеседование вопросов - "расскажите как устроено Map внутри, что под капотом", даже не понимая что тут же сразу этим вопросом убивают принцип черного ящика. Сам автор видео просит раскрыть секрет работы объекта с данными внутри и тут же делает пометку- "ну там какие то операции побитовых сдвигов, но это уже такое", вопрос, зачем тогда вообще смотрел если не разбирался более детально. Я бы к примеру спросил чем отличается операция на процессоре 2+2 от 2*2 ))
@Xokyopo
@Xokyopo 3 жыл бұрын
Сколько бы не знал учитель по "анатомии", хирург из него некудышный.
@Xokyopo
@Xokyopo 3 жыл бұрын
Голос - норм. Звук - норм. Тема только не очень.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
А жизнь как в целом?)
[Ответы] Java Junior реальное собеседование | ООП, Java Core | Часть1
17:26
Osman Kalyoncu Sonu Üzücü Saddest Videos Dream Engine 118 #shorts
00:30
КАКОЙ ВАШ ЛЮБИМЫЙ ЦВЕТ?😍 #game #shorts
00:17
Library vs Framework : В чем разница и как различать?
7:16
IT с Виталием Карнаухом
Рет қаралды 19 М.
Как работает Java - ликбез
8:51
Хороший программист
Рет қаралды 66 М.
Java. Класс Object. Разбор вопросов на собеседование.
21:16
Sergey Arkhipov Java Tutorials
Рет қаралды 29 М.