0:09 друзья всем привет вы на канале jit
0:11 болты с вами снова макс за время а
0:13 сегодня мы с вами поговорим нет нет не
0:16 обоих 8 годах опыта работы не о том как
0:18 происходит что-то войдя ах нет каких-то
0:21 инсайтов не ужасах небес процесса мы
0:23 сегодня поговорим о долгожданных друзья
0:25 интервью но прежде чем двигаемся дальше
0:28 конечно же подписывайся на канал ставь
0:30 колокольчик напоминаю друзья вносились
0:33 замечательно телеграм-канал то дома
0:35 гостем всю интересную печатную
0:36 литературу которую вы можете почитать
0:38 просто сидя в общественном транспорте
0:40 или дома или перед сном или за завтраком
0:42 в любом месте собственно тут даже я
0:45 отправляя свои персональные посты
0:46 которые адресую эксклюзивно для вас и
0:48 конечно же вы можете посмотреть что
0:50 происходит реально войти какими
0:51 технологиями я пользуюсь реализации
0:54 определенных проектов и какие собственно
0:55 задачи я решаю какие советы могу вам
0:58 передать от себя индивидуально все
1:00 друзья по подписке на телеграм-канал но
1:03 что же мы двигаемся дальше к нашему
1:05 интервью да да да интервенты в интервью
1:08 все любят технический интервью на нашем
1:10 канале и сегодня тот самый долгожданный
1:12 день после перерыва но сегодня у нас
1:15 особенный гость ведь гранж его не придет
1:17 в один в один это бывший мой ученик с
1:20 ними у учился в одной школе да да да это
1:24 не значит что мы сидели за одной партой
1:25 я был его преподавателем или ментолом
1:27 или все вместе он был тем самым study
1:30 рам который пришел в школу компьютерных
1:33 технологий конечно же и решил набраться
1:35 там знаний и опыта и вот сегодня мы
1:37 посмотрим каким образом ему это удалось
1:40 достигли высот и так ли он крут после
1:43 того момента от того момента точнее
1:45 когда он стартанул и где он сейчас
1:47 находится перед тем как мы двинемся
1:50 дальше хочется сразу рассказать вкратце
1:51 что здесь будет много говорим
1:53 исключительно про jar поскольку вадим
1:55 только джаву прошел только java core
1:57 пока что разумеется мы не будем
2:00 затрагивать не базы данных не и spring
2:02 ведь это было бы несправедливо зачем
2:04 пытать человек в правоте технологии или
2:07 пройти нюансы которых еще нет поэтому
2:09 здесь мы полностью этот час углубимся
2:12 исключительно в джаву поговорим о
2:14 насущных вопросах поговорим о
2:15 распространенных вопросов поговорим о
2:17 вопросах с подковыркой или с какими-то
2:20 нюансами и все друзья в этом видео если
2:23 ты сюда дошел значит ты хочешь
2:24 посмотреть те вопросы которые задаются
2:26 на реальных собеседник поэтому погнали в
2:29 нашем мог интервью а один привет
2:31 приветствую тебя на интервью расскажи
2:36 немножко о себе как ты к нам попал в
2:39 принципе и
2:41 куда кучу java почему jab чего не другой
2:44 язык программеры
2:47 газу другим я из одессы я попал в java
2:52 грубо говоря из за того что у меня душа
2:55 лежала всегда вот программированию и
2:57 языкам программирования просто этого
2:59 долгое время не понимал занимался
3:02 какими-то своими проекте коми мелкими
3:04 вот некоторые даже были довольно
3:06 успешными но это все было на уровне
3:09 хобби и в какой-то момент буквально в
3:14 конце прошлого года стал вопрос уже
3:15 сменить профессию и
3:18 я решил как это называется свернуться
3:21 стал с вечерам захотел стать точнее с
3:24 вечером и
3:25 решил пойти на курсы получить уже
3:28 специальность то есть свое баловство там
3:30 и хобби перекинуть уже во что-то
3:33 серьезное чтобы я мог заниматься тем что
3:36 мне нравится и выбрал java почему java
3:40 ну дело в том что я работал с языком
3:43 сишарп java похоже на сишарп это скажем
3:47 такси подобные языки насколько мне
3:49 известно и
3:51 мне показалось что это будет для меня не
3:55 слишком тяжело переключиться сишарпа
3:57 допустим на java харбо мне тоже очень не
4:01 сильно так уж с ним разбирался и
4:04 как раз подумаю будет стимул выучиться
4:07 научиться и я поступил на курс школу или
4:12 это не реклама когда
4:14 и
4:16 собственно говоря там не было никакого
4:19 курсов пасе шар я задумался сначала
4:22 все-таки путина сишарпа там не оказалось
4:24 и
4:26 поступил на java первый базовый уровень
4:30 вот я
4:32 начале зимы в конце осени начале зимы и
4:36 поступил закончим я вот буквально в 20-м
4:39 году почти накануне
4:41 потом у меня была пауза я ждал
4:44 следующего курса и
4:46 вот попал на следующий курс к тебе я
4:51 пока получено его закончил как это можно
4:54 сказать в июне окей а расскажи про
4:57 проекты ты упомянул что есть какие-то
5:00 проекты ты что-то слова о чем они были
5:03 будут снова ну например брать еще такое
5:07 какое то совсем древние если это
5:10 еще будучи студентом я занимался
5:14 созданием
5:15 модификации к играм то есть я там брал
5:18 какие-то небольшие моды делал на
5:20 основании тех средств которые
5:22 предоставляло допустим конкретно карта
5:24 iq игрушка там тот же например warcraft
5:27 3 может кто-то кто помнит из старичков
5:30 там были карты вот и я делал свои там
5:34 карты некоторые там был такой язык
5:36 программирования blizzard назывался джаз
5:39 не знаю даже какой-то процедурный язык
5:42 или нет сейчас даже не вспомню и не
5:45 вникал в эту тему на тот момент я делал
5:48 карты играли с ребятами было весело там
5:51 люди говорили мои друзья типа давай чё
5:54 ты куда ты куда-то не туда пошел учиться
5:56 вот твоего я тогда дело молодое а потом
6:03 со временем чуть чуть более серьезные
6:05 проекты пошли уже связаны это же на
6:09 модификациях к игре у
6:11 меня был проект для игры gta san andreas
6:15 я держал сервер около где-то четыре года
6:18 я выдержал
6:20 там был другой язык программирования
6:23 назывался сам глава
6:25 на нем писал всем клиент-сервер мой
6:27 клиент серверная часть под этот сервер и
6:30 он в принципе не считается ввп языком и
6:34 получается сложилась такая история что
6:37 несколько лет я делал сервер грамм с дил
6:41 там кучу года нагромоздили такую
6:43 архитектуру которую но трудно уже было
6:45 расширять поддерживать со временем начал
6:48 понимать что меня жизнь просто ведет к
6:50 объекту ориентированным языкам и начать
6:53 чтобы с этим разбираться и
6:55 на этом проекте я познакомился зато с
6:59 клиент-серверной частью с языком 2
7:01 углубился со временем еще с шарпом
7:04 чуть-чуть начал заниматься но это чисто
7:06 десктопные какие предложения простенькие
7:09 там таком духе но
7:11 в satrip большой опыт не каешься и я вот
7:15 даже если рассказывает о своем опыте с
7:18 играми когда-то была очень популярная
7:21 игра lineage 2 там тоже на джаве очень
7:24 много черт залазь поэтому это классный
7:26 опыт мне кажется которые несомненно
7:28 можно легко уложить в любой усилий
7:31 резюме и указываю иначе ты уже что-то
7:36 программировал какие-то были попытки мне
7:39 вполне успешно 34 года сервер целый
7:41 держал поддерживал им пользовались
7:44 знаете ты милая но смысл здорово хорошо
7:48 ну давай проверим jal как жало после
7:52 обучения на курсах и разумеется тут мы с
7:55 тобой выйти что хорошо что плохо что
7:57 надо подтягивать что нужно просто
8:00 полировать мы как обычно с лицом пойдем
8:03 спазм вопросов и начнем с
8:05 объектно-ориентированного
8:06 программирования более сколько раз он
8:08 упомянул скажи пожалуйста что такое о п
8:11 и какая его основная идея
8:14 ну
8:16 аббревиатура говорит сама за себя
8:19 объектно-ориентированное
8:20 программирование
8:22 концептуально и на а парадигма
8:25 программирование очень отличается от
8:27 процедурного стиля основная
8:31 но основной принцип здесь начнем
8:34 принципов несколько в этом в этом в этой
8:38 парадигмы программирования но как по мне
8:40 если своими словами сказать да
8:43 объектно-ориентированное
8:44 программирование это именно про
8:46 взаимодействия в программе объектов
8:48 между собой то есть
8:50 классов и объектов между собой с помощью
8:54 трех основных парадигм них правда 4
8:57 сейчас не которые выделяются
9:00 диморфизм и наследование то есть
9:05 а4 но это не совсем парадигмы это
9:08 принципы или снились даже не принципе
9:11 столпы но правильным четыре какой там
9:16 есть 4 но сейчас стали выделять активную
9:19 абстракцию
9:22 [музыка]
9:25 но так и начала есть другое дело она
9:28 держится то ли обобщенно то ли рядом с
9:31 ними и то ли отстранено но данный есть
9:33 хорошо давай поговорим более детально об
9:36 этих стал по март не описать в чем и
9:38 деле инкапсуляции
9:40 но основная идея инкапсуляции
9:43 заключается в том чтобы
9:45 сохранить определенную реализацию
9:49 [музыка]
9:50 скрыть информацию о каких-то деталях не
9:54 нужны для внешнего вмешательства я бы
9:57 здесь привел аналогию с
9:59 автомобилем опять-таки у нас есть
10:02 двигатель мы не должны были знать какие
10:05 то детали без надобности в
10:08 объектно-ориентированном
10:09 программировании
10:10 инкапсуляция реализовано за счет вот
10:13 модификаторов доступа с помощью этих
10:15 модификаторов доступа собственно говоря
10:17 и скрывается какая-то реализация
10:19 программы которая мне нужна для того
10:22 чтобы ей просто не навредить внешне
10:27 ромашки назвать в чем основное различие
10:29 модификаторов доступа и как правило это
10:32 и протектор
10:34 основное различие но со мной различие
10:38 чисто protect это в том что он доступен
10:40 в классах наследников
10:43 концепция в том что они видны внутри
10:45 пакета вот одно но
10:47 говоря про protected вот именно класс
10:50 наследник еще может обращаться к членам
10:53 продукта членом класса окей окей а что
10:57 вообще как пакет что значит
10:59 изолированные в пакете или protected для
11:02 пакета что это собой подразумеваю
11:06 но это подразумевает то что
11:09 определенные классы находятся внутри
11:12 определенная так сказать иерархии под
11:15 названием пакет то есть вроде директории
11:19 папки где видимость находится внутри вот
11:26 смотрите себя вопрос с подвохом мы
11:29 привыкли к тому что когда мы что-то им
11:32 изолируем или инкапсулируем в пределах
11:34 одной зоны мы подрезаю что эта зона
11:37 включает себя все что находится в ней
11:40 этот вопрос представим себе у нас есть
11:42 пакет и
11:44 внутри этого пакета есть еще один пакет
11:47 вложенный собственно во вложенном пакете
11:49 находятся классы он является про его
11:51 будет ли этот класс доступен в пакете
11:54 родительского или только в своем
11:58 ну то есть если в одном пакете кисти еще
12:01 один вложенный пакет
12:03 ложе нам пакете находится какой-то класс
12:06 то он должен быть видим только в
12:09 пределах вот именно своего букета вроде
12:12 а в родительском небо и я правильно по
12:14 родительском не будет здорово правильно
12:16 это правильно окей давай тогда поговорим
12:19 про
12:21 наследование но и капсюля с понятно мы
12:23 закрываем какую-то ре зация чтобы детали
12:26 было поменьше чтобы это все нас как
12:27 разработчиков не смущало и мы поменьше
12:29 ты там слуга но о чем выражается
12:32 наследования зачем она нам нужна
12:34 собственно говоря но следование
12:38 выражаются в том что
12:40 определенный класс является дочерним для
12:43 относительно своего родителя
12:46 иначе говоря он наследуется этого класса
12:50 и при этом он сохраняют определенные
12:53 свойства определенное поведение общая
12:56 для этих двух классов
13:00 благодаря не строится иерархия классов
13:06 хорошо здорово нам
13:08 часто я слышу что говорят наследование
13:12 плохая штука и лучше избегать как ты
13:15 считаешь какие есть альтернативы
13:18 наследуют
13:20 ну
13:22 альтернативно скорее всего
13:24 состоит в полиморфизмы
13:27 для наследования
13:30 не совсем не совсем тебе на мигать
13:34 что-то на мысль
13:36 выражение ассоциации или более детальная
13:39 этого замка композиция да да да
13:44 намекает ассоциация это получается как
13:49 такой принцип
13:50 [музыка]
13:52 как он правильно звучит если я не
13:55 ошибаюсь есть у нас принцип из их
13:59 и
14:01 имеет то есть сайтов как раз про имеет
14:05 отношение
14:06 основная мысль в
14:10 ассоциации идей уточним ассоциации
14:13 заключается в том что у
14:15 нас есть два частных случаев ассоциации
14:19 композиция агрегация вот вот эти вот две
14:24 части
14:25 говорят нам о том что это является как
14:28 бы составной частью класса то есть как
14:31 бы пульт под объектом да абсолютно
14:35 проект с отметки классно выражение я
14:38 владею я использую да да
14:42 окей тогда здесь вопрос такой
14:45 провокационный но коль ты вспомнил про
14:47 агрегацию композицию как частный вид
14:51 ассоциации что относятся к я владею что
14:55 относятся к я использую агрегация или
14:58 композицию то есть роста все на местах
15:01 насколько мне известно композиция на
15:03 являются более таким строгим случаем
15:07 плане ассоциации то есть она
15:10 скорее всего вот именно я владею
15:15 получается агрегация наоборот
15:18 формы она может немножко быть
15:20 обособленно от основного класса скажем
15:23 как сам этот объект или класс
15:26 абсолютно верное лучше и не скажешь
15:28 тогда вот здесь опять возвращаясь к
15:30 предыдущему вопросу
15:31 наследования или композиция почему своей
15:35 точки зрения если можешь обосновать или
15:37 объяснить
15:38 композицию чаще рекомендуют
15:41 использовать чем на слева
15:44 ну мне кажется все таки композиция в
15:47 этом плане несколько гибче будет то есть
15:50 если у нас объект есть как бы внутри
15:52 класса
15:53 так как он является частью этого класса
15:57 то мы можем ну имеем как больше методов
16:02 возможности им управлять
16:03 а если мы говорим про наследование это у
16:06 нас как то более ограничена идет
16:08 функциональность вот программе не сильно
16:12 можем отступать от родителя в этом плане
16:15 мы можем закидывать новые методы но в
16:19 целом твоя идея правильно то есть ты
16:21 говоришь о том что наследование больше
16:23 ориентирована на
16:25 потребление то что предоставляет
16:27 родитель и по сути формирование какой-то
16:29 иерархии то же время композиция это от
16:32 слова compal стали собирать то есть мы
16:34 собираем много готовых объектов или
16:37 каких-то абстракции для
16:39 использования их вместе в одном
16:42 соответствующем классе либо как можем
16:44 угодно в интерфейсе контракт zara мне
16:47 нравятся твои ответы давай тогда
16:49 двинемся дальше поговорим про принципы
16:52 ооп и дизайна слышал ли ты что-то про
16:53 соль и
16:55 да
16:58 но но расскажи-ка выбери одну люблю
17:01 которая тебе больше нравится и расскажи
17:03 про не
17:04 ну допустим мне нравится принцип
17:09 разделения интерфейсов скорее всего
17:10 честно говоря потому что я больше может
17:13 понимаю этот принцип
17:16 буковка вайда интерфейсе грядущем
17:18 принципу просто основная идея этого
17:22 принципа обстоит в том чтобы мы не при
17:24 разработке программы не нагромождали наш
17:27 наш интерфейс лишними какими-то методами
17:30 то есть мы должны разделять эти
17:33 интерфейсы если у нас допустим есть
17:36 примеру какой-то интерфейс днем будет ни
17:39 один метод а там три скажем в нашем
17:42 классе нам необходим допустим только
17:43 один ну пусть даже 2 to 3 становится как
17:47 бы третьим лишним и
17:49 у нас нарушаются вот этот самый принцип
17:51 то есть для этого выхода разделять
17:55 интерфейс и продумывать программу так
17:57 чтобы ну каждый класс не обременял себя
18:00 какими-то лишними ненужными действиями
18:03 вот супер отлично отлично сказано и тут
18:07 меня есть пример по этому поводу
18:08 представим себе у тебя есть класс
18:12 менеджер у него есть два метода никлас
18:16 интерфейс у него есть два метра
18:17 управлять и увольнять кем-то он
18:20 управляет кого-то он увальни
18:22 соответственно этот интерфейс кем-то
18:25 реализуется и только нас появляется
18:28 менеджер соответственно один у которого
18:32 есть только
18:34 действие управлять а у другого менеджера
18:36 и действие управлять и увольнять
18:40 одновременно вот как бы ты поступил бы в
18:42 этом случае создал бы один громоздкий
18:44 интерфейс создал бы несколько
18:46 интерфейсов
18:47 как бы в моем варианте решение у
18:50 скорее всего я бы разделил на 2
18:53 интерфейса разных то есть управлять и
18:55 увольнять отдельно и реализовывал бы
18:58 своими классами какой мне нужен если
19:01 допустим у меня класс может оправдать
19:03 угольной том как бы соответственно мы
19:05 реализовываем два интерфейса там где
19:08 только одно действие делаем реализации
19:11 одного супер а представимся другую
19:13 ситуацию интерфейс который состоит из
19:15 пяти методов это тот же менеджер у него
19:17 каких-то пять методов но вроде как бы
19:19 много очень не будем выдумывать какие-то
19:22 методы просто их 5 и вот у тебя есть два
19:25 менеджера у которых ответственно 5 вот
19:30 этих самых методов подлежат реализации
19:32 будешь ли вот и в этом случае разделять
19:35 интерфейс или оставившего монолитным из
19:39 пяти это вкусная то что вроде как бы он
19:41 большой и 5 методов это не так уж мало
19:44 у
19:46 нас есть класс которым каких-то методов
19:51 вопрос прояснить ещё насильственная есть
19:54 интерфейс у него есть пять методов есть
19:57 два класса которые будут его
19:58 реализовывать и соответственно этим двум
20:01 классам все эти методы будут нужны то
20:04 есть мы точно знаем что двум классам и
20:05 реализующим интерфейсе методу все пять
20:07 методов понадобится но меня смущает сама
20:10 идея да то есть почему бы не разделить
20:11 этот интерфейс на два маленьких вдруг в
20:14 будущем учета понадобится и будет
20:16 менеджер как и задача номер один но это
20:19 какая то далекое будущее может быть даже
20:21 не про не прояснится на состоится этот
20:23 вопрос себе соответственно будешь ли ты
20:26 держать вот этот крупный интерфейс из 5
20:28 методов крупный но все-таки 1 или будешь
20:32 разделять на несколько
20:34 подразумевая то что в будущем
20:36 вероятно а может и нет что-то изменится
20:39 вопрос наверное с подвохом но я отвечу
20:42 как бы вот я чисто бы сделал снова из
20:45 москвы в этом логике если у нас
20:48 интерфейс и спиде методов это как бы уже
20:51 довольно в принципе громоздко звучит с
20:53 одной стороны с другой стороны есть
20:55 понятия баланса какого-то при разработке
20:58 то есть там можно
20:59 без фанатизма относиться к таким вещам
21:02 допустим параллельно приведу пример если
21:06 у нас есть допустим какой-то метод
21:08 который будет работать у нас
21:10 пользователем и там будут методы удалить
21:12 там добавить
21:15 но относятся все базе данных мы будем
21:18 там разделять на 25 интерфейсов образно
21:21 говоря каждый метод то это будет уже
21:23 считаться вот как раз вот этим вот
21:25 нарушением баланса как как грится
21:27 фанатизма и взять эту ситуацию но здесь
21:31 примерно вот что-то такая же ситуация
21:32 вырисовывается с одной стороны нам не
21:34 надо вроде бы ничего менять но 5 методов
21:39 слишком наверное многое что-то можно
21:41 было бы разделить хотят какой-то логики
21:44 разделением так как таковой сейчас может
21:47 и нет по какому принципу делить этот
21:49 интерфейс по поводу баланса очень
21:52 классно сказано никто еще мне так
21:54 никогда не отвечал и тут я с тобой
21:56 соглашусь единственная быта вот что я бы
21:59 скорее сходил бы из нужд самого
22:02 интерфейса и те кто тех объектов или
22:06 доменов которые будут его реализовывать
22:07 потому что если точно знаешь что
22:10 интерфейс нужен именно в таком виде и не
22:12 будет никаких менеджеров отыскать
22:15 обрезала лесу разным функционалом то в
22:18 целом можно оставить эти пять методов
22:20 почему нет если мы посмотрим в
22:22 разнообразные интерфейсы допустим тот же
22:24 самый джипа репозитории
22:26 целой обрастания методов которые
22:28 подлежат реализации и никто это не зря
22:30 потому что они всегда мужчины и они
22:32 всегда будут необходимы для
22:35 работы с базой данных соответственно
22:37 также здесь если мы точно знаем что
22:39 никакой задачи в ближайшем будущем или в
22:42 целом никогда и не будет а там остается
22:44 урезанный менеджер в принципе и это
22:47 разделение сегрегация оно и не нужно
22:49 если мы точно уже сейчас видим что
22:52 появится другая сущность которая будет
22:55 отображать урезанный формат допустим не
22:56 5 методов а два то почему бы сразу
22:58 заранее по сути мы отталкиваемся от
23:01 требований заказчика то что он
23:04 действительно хочет как это будет
23:07 развиваться в будущем но все предугадать
23:09 нельзя но то как ответил вполне себе
23:11 соответствует этой модели круто давай
23:14 поговорим еще отобрал папаверин про
23:17 шаблоны проектирования можешь назвать
23:19 мне
23:20 3 шаблона проектирования который стоит
23:22 точки зрения все больше нравится
23:26 да только когда речь идет в вроде бы и
23:31 знаю там
23:32 десяточку и больше даже сталкиваться
23:36 сейчас тяжело подобрать ну ладно в
23:38 принципе мне нравится паттерн адаптер
23:43 применял и
23:45 [музыка]
23:46 про суть его надо рассказать просто
23:49 ехать а то просто назови 3 а я потом
23:52 выберу из этого все что-нибудь расскажи
23:54 но часто используется до фабричный метод
23:57 понятно он самый простой этом как я уже
24:00 сказал адаптер есть класс и класс прошу
24:03 прощения паттерн наблюдатель который
24:06 основывается на
24:09 механизм обратного вызова так сказал
24:12 подписчик и
24:16 да
24:19 окей хорошо давай поговорим про адаптер
24:22 чем его слона или
24:25 но основная идея как ни парадоксально бы
24:28 но она похожа на
24:30 из реальной жизни то есть у нас есть
24:33 какой-то интерфейс так называемый
24:36 адаптер который адаптирует другой
24:39 интерфейс
24:40 ну то есть он адаптирует два
24:42 несовместимых интерфейс то есть у нас не
24:44 может работать допустим программа с
24:47 каким-то конкретным
24:50 функционалом реализованы посредством
24:52 интерфейса мы создаем еще один интерфейс
24:55 называем его там как-то адаптер вот и с
25:00 помощью манипуляции мы возвращаем там
25:02 объект уже нужного нам интерфейса и
25:04 соответственно выполняем необходимые нам
25:06 действию а
25:07 может привести какой-то пример или жизни
25:11 из программирования не обязательно
25:14 приводите так кода вы просто вот так вот
25:16 реальный пример
25:17 но реальный пример более такой
25:20 действительно реальный пример это вот
25:22 мобильной разработки
25:24 часто на платформе например android ну
25:28 используется этот паттерн потому как там
25:31 нужно приводить
25:33 объекты
25:36 создавать специальный список объектов и
25:39 с помощью адаптера его выводить на
25:42 визуальный
25:43 элемент визуального интерфейса я-то
25:46 реализовано с помощью потока
25:50 хорошо а как это адаптация там
25:53 происходит я не технически хорошо а вот
25:55 в чем сама идея то есть какой то объект
25:58 и
25:59 он он и в африке объекты в чем
26:02 заключается смысл
26:04 адаптации
26:06 но если вот простой вариант реализации
26:10 до пустим том же вот андроиде там
26:13 немножко посложнее это реализовано
26:15 внутренне
26:17 не скажу как просто и вот используется
26:20 на реализацию то там у нас должно быть
26:25 два интерфейса и вот этот интерфейс
26:27 адаптер мы грубо говоря передаем
26:30 необходимый нам интерфейс несовместимый
26:34 а на выходе мы возвращаем совместимый
26:36 интерфейс роли работаем как то так я бы
26:41 ещё мог бы привести себя более
26:43 приземленный пример это
26:45 китайская или американская розетка и а
26:48 земная
26:49 европейского образца покупаем переходник
26:52 приз адаптируем одного другому надзора
26:54 на самом деле круто
26:55 слушай ну вот мы и прошли с pvp можем
26:59 двигаться плавно и справа типа говорит
27:02 здесь про такую самую крутую тему с
27:05 тренинг пол можешь сказать что наш
27:07 string bool зачем он нужен
27:09 да могу сказать том что string bool это
27:15 специальная область памяти
27:17 в которой хранятся у нас экземпляры
27:20 строк
27:22 вот
27:24 собственно говоря в момент создания
27:26 строки там в этом стрим пули создается
27:31 строчки и
27:34 следующий раз при обращении у нас у
27:39 нас проверяется если такая строка в этом
27:42 стрим пуля ступни не создавать заново мы
27:45 ее оттуда получаю
27:48 милана как в целях оптимизации более
27:51 быстрого доступа
27:52 мой особенности вообще самого string
27:56 arizona arizona а скажи пожалуйста вот
27:59 эта область памяти стамбула она
28:00 находится в хиппи или в стык нет она
28:03 находится в тебе
28:06 тогда другой вопрос в чем различие когда
28:10 мы пишем нее string или просто пишем
28:14 string через двойные кавычки и ведь
28:17 многие думают действительности что это
28:20 одно и то же просто двойные кавычки без
28:22 нее string конструктора это сокращенная
28:25 форма ученых различия можно
28:27 охарактеризовать
28:30 так ну различия в том насколько мне
28:34 известно когда мы создаем через new мы
28:37 назначена создаем объект
28:40 не встретишь ни как бы параллельно может
28:45 создасться может
28:47 взяться
28:49 если мы просто через двойные кавычки
28:53 трубку то объект не создается при этом
28:56 то есть он берется чистое стрим было
29:00 на самом деле не совсем так он и
29:03 создается и берется то есть если что-то
29:05 string пули есть через двойные кавычки
29:07 он опада вернет ссылку на него ой с а
29:11 если его нет он просто создаст но если
29:16 быть совсем точным разница между
29:18 оказываемой сокращенной формы и через
29:20 конструкторов вызова оператора не в том
29:23 что оператор new всегда создает новый
29:25 участок в случайной памяти теперь когда
29:29 мы не используем оператор него просто
29:31 двойные кавычки и пишем эта строчка это
29:34 явный указа это я наука занят жильем
29:36 java virtual machine что пожалуйста идеи
29:39 не только не просто архив а
29:40 специализирован область string а то есть
29:43 по сути это такое дентифик от
29:45 окей
29:47 хорошо давайте поговорим про такие
29:50 интересные вещи stringbuilder и тренинг
29:54 вообще между ними ружичка
29:58 различия
30:01 я знаю одно точно различия это в том что
30:03 стрельба фер у нас рассчитана
30:06 работал многопоточной среде то есть там
30:09 все методы
30:11 ключевые они синхронизированы возможно
30:14 даже все синхронизированы точно не знаю
30:16 но
30:18 основное различие именно как раз в этом
30:20 надо единственная на габба .
30:23 другое для обычной работы и понятно что
30:26 2 медленно окей это давний вопрос зачем
30:29 нам нужен stringbuilder или стрельба но
30:32 как бы вроде из моей практике очень
30:34 часто вполне себе достаточно обойтись
30:37 обычной строкой и операциями
30:39 конкатенации которые она предоставляет
30:41 этого вполне
30:43 ну как мы знаем у нас
30:47 не строки у нас объект ньюта болтон
30:51 неизменяемый если мы будем
30:53 конкатенировать огромное количество
30:55 строк то будет просто забивается память
30:59 оперативная
31:01 и соответственно
31:03 мы просто
31:05 нагружаем бесполезным количеством там
31:08 объектов нашу память stringbuilder
31:11 решают эту проблему запросто благодаря
31:13 даже паттерну своему внутреннему вам
31:16 просто на основании своего одного
31:20 экземпляра объекта он себе выстраивается
31:22 строчку с помощью метода append
31:25 таким образом мы спокойно можем
31:28 оптимально
31:30 получать строку огромного этому размеру
31:33 окей а разве не только вы под капотом
31:37 происходит но в методе а по сути же мы
31:40 берем строчку и добавляем к строчке а
31:42 просто к чему когда мы вызываем метод
31:45 append если мы туда передаем строчку или
31:48 она нового и даже если еще не поздно мы
31:50 все равно говорим джиллиан сначала
31:53 создай этот экземпляр строки потом перед
31:55 а его пожалуйста в метод append и потом
31:59 а вот чему-то присоедини так все же что
32:02 там такое под капотом что делает нам
32:05 выигрышные использование stringbuilder а
32:08 когда мы складываем очень много строчек
32:10 между собой противовес конкатенации
32:13 стандартный
32:15 да хороший вопрос
32:18 начинка именно самого stringbuilder а
32:22 [музыка]
32:27 собственно говоря не the top and
32:33 подскажу меня скорее интересует что там
32:36 внутри stringbuilder а как строка
32:39 формируется
32:40 одна большая строка или она хранится в
32:43 каком-то другом пись
32:46 ну
32:47 возможно я ошибаюсь но она
32:51 [музыка]
32:57 этот вопрос и я наверное не смогу аки
33:03 ты правда ответил про конкатенацию
33:05 stringbuilder через append это лучше чем
33:07 компетенции через символ равно это
33:11 правда а двух словах у stringbuilder а
33:13 под капотом находится массив пальчиков
33:16 но соответственно массив символов если
33:18 более точно
33:20 или приводя экстра к подобным типом или
33:24 символа подобным типом соответственно он
33:26 это складывает в массив и потом уже
33:28 массив финальные конвертируется как у но
33:30 главное преимущество в том что мы не
33:33 создаем а промежуточных строк так
33:36 называемых intermediate string которые
33:38 нам просто не нужны которые в процессе
33:39 конкатенации появляются загромождают
33:42 память разумеется и все это влияет на
33:45 производительность как программа сама
33:47 работает но плюс расходование получил
33:49 легко выйти за ее пределы ну как бы
33:52 вполне начал точно хорошо саму идею ты
33:55 уловил о том как детали это можно
33:58 подтянуть
33:59 тут мы поговорили ост-индии хотелось бы
34:02 поговорить о таком выражении boxing n
34:06 box она же называется упаковка авто
34:08 упаковка можно сказать в чем идея
34:12 ну опять-таки насколько мне известно
34:16 авто упаковка его просто распаковка они
34:19 связаны конкретно с классами обертками у
34:23 нас есть примитивные типы данных есть
34:26 над ними обертки то есть ссылочные
34:28 объекты
34:30 внутри
34:32 класса которые с помощью которых можно
34:34 примитив привести в ссылочный виде
34:37 объекта и
34:41 процесс когда мы оборачиваем наш
34:44 примитив класс обертку называются авто
34:47 упаковка и обратный процесс просто
34:50 распаковка супер а представим себе
34:54 мне вполне зашло представим себе
34:57 ситуацию у нас есть тип данных бань и
35:04 его переменная просто обычная переменная
35:07 представлена в виде примитивного типа да
35:10 и тут у нас есть метод с типом данных
35:14 параметрами типа данных short но шорт в
35:18 то же время
35:19 является
35:20 классом обертка то есть это уже объект
35:23 на бокс пишется с большой буквы мы знаем
35:26 что байт он уже чуть шорт и как бы по
35:29 логике если мы передаём байт примитивный
35:33 в качестве параметра который выглядит
35:36 как short объект все должны быть ok но
35:39 тут меня вопрос как будет на самом деле
35:41 будет ли ошибка компиляции будет ли
35:44 какая-нибудь ошибка во время выполнения
35:45 программы или будет все окей и java
35:48 автоматически
35:48 конвертирует байт шорт и этот вызов
35:52 будет валить
35:55 то есть у нас есть параметры объект
35:59 обертка сорт
36:01 внутри метода у нас есть байт не совсем
36:07 у нас есть метод который качестве
36:09 параметров принимает оберт шорт и
36:11 представимся где-то в каком-то методе мы
36:14 делаем вызов собственно этого американцы
36:17 и передаем туда параметр который явно
36:20 является типом данных байк примитивных
36:26 вопрос подвохом ну не знаю
36:30 казалось бы должна сработать по идее авт
36:33 упаковка то есть у нас
36:37 шортами больше диапазон и
36:40 вполне в него укладывается и если мы
36:43 будем передавать
36:46 примитив байт то
36:48 произойдет of the boxing
36:51 компиляции не будет
36:54 на самом деле будет ошибка компиляция
36:56 потому что авто упаковка обычное
36:59 значение которые не являются константами
37:02 если у них тип данных разница но то есть
37:05 байки шорты то разницы по данным авто
37:07 упаковка не сработает с другой стороны
37:10 этого видно то что ты назвал если у нас
37:13 есть
37:14 примитивная константа и в этом случае
37:17 как раз до сперва
37:18 сама java живем она привезет
37:22 соответствующему типу обрежьте если его
37:24 наверно просто python входит я послушал
37:27 разумеется и сама сделает упаковку какие
37:31 надо но это только касается конца не но
37:34 в целом
37:35 в целом все было но мне нравится
37:38 понимание этого это хорошо давай
37:41 поговорим уж заговорили за классы
37:43 обертки зачем еще класса обертки нужны
37:46 если отбросить идею упаковки и
37:48 распаковки уже разобрались зачем это
37:50 надо ну а все-таки не только же ради
37:52 этого она походу создавалась какие
37:54 поймать
37:55 моя первая мысль самое главное конечно
37:59 же работа с коллекциями то есть у нас
38:03 есть generique коллекциях используется
38:06 ими именно благодаря этому то что
38:08 generique не могут работать с
38:10 примитивами мы пользуемся классами
38:12 обертками смотрели только на наши
38:16 налоги примитивов видеообзор дак вот
38:19 скорее всего это самое главное
38:21 предназначение
38:24 одна из согласен 1 ай да еще нашла тебе
38:28 она была мигает эта мысль ну то что
38:32 класса бортко это не считается объектом
38:35 не может возвращать значение но возможно
38:38 нам надо где-то с этим будет работать
38:43 правильно и замечали это просто приводит
38:46 примитивные типа данных в
38:47 объектно-ориентированный формат мы можем
38:49 работать стремись его никак с объектом
38:51 если в этом есть необходимость ведь на
38:53 самом деле класса обертки внутри
38:55 содержит ряд методов и тут хотелось бы
39:00 еще про класс обертки поговорить они ему
39:04 там пины или все-таки ему так
39:07 вот именно класса обертки
39:11 ему так то есть они неизменяемые
39:16 значит что мы не можем изменить сам глаз
39:18 ну там его унаследовать или здесь речь
39:21 идет про инициализацию самого объекта и
39:24 проведения ссылке к этому объекту или
39:27 работа с этой ссылкой как ты washed
39:29 объяснить
39:30 [музыка]
39:32 им сама ссылка остается
39:37 неизменяемой соответственно все значения
39:40 которое мы имеем они тоже их не
39:41 запоминают
39:44 ну правим то есть один объект одна
39:48 ссылка если создаем новый объект на
39:50 основании существующего соответственно
39:52 абсолютно другой объект мы уже
39:54 порождаемого ну
39:56 посмотри этот еще раз так и да еще раз
40:00 углубляемся до поговорим прав имею это
40:02 был класс с точки зрения архитектуры что
40:05 нам нужно сделать для того чтобы создать
40:07 ему табель не кластера джаве о чем нам
40:09 нужно побеспокоиться
40:13 там наверно целый ряд таких требований
40:15 есть из того чтобы я
40:19 предпринял это во-первых сделать конечно
40:22 же класс финальном в первую очередь
40:26 все его поля которые используют объекты
40:30 которые используют my youtube был объект
40:32 их тоже сделать финальными и
40:35 например не использовать цептор и точно
40:39 чтобы нельзя было изменить значение
40:41 поставить конечно же правит модификаторы
40:43 и наверное присваивать значение в
40:46 конструкции
40:50 ну логично весемьдесят убираем как-то
40:53 все ждала его установить если еще
40:55 модификатор доступа правят а что по
40:57 поводу гектаров
40:59 гитарах мы будем возвращать то же самое
41:03 значение которое имеем в качестве поле
41:05 или что-либо другое
41:08 мы узнаем поля нашу возвращают которые
41:12 которые их значения которые они не
41:15 изменяются собственно говоря
41:17 они тут не тут то было нет не совсем так
41:22 на самом деле мы возвращаем же выберем
41:26 про ссылки как правило и и если в гитаре
41:29 даже если мы напишем
41:31 файнал уберемся с центры все равно же
41:35 когда мы возвращаем из соответствующего
41:38 метода значения возвращаются в значении
41:40 ссылка разумеется нам нужно
41:42 побеспокоиться о том чтобы guitar каждый
41:44 раз возвращал новый объект пусть он
41:46 возвращал не тот объект который мы
41:48 реальных они а его копию проще говоря мы
41:51 создаем новую ссылочку отдаем туда
41:54 значение которое хранит текущий объект и
41:58 таким образом
42:00 безопасности но хорошо не вполне я
42:02 вполне удовлетворен твоим ответом до
42:04 поговорим про класс общем это вообще
42:06 такая сами крутая тема расскажи просто
42:09 какие методы в классе объекты ты знаешь
42:12 возможно я знаю все методы ну может не
42:15 сразу вспомнил
42:17 жизненных самый простой этот ту string
42:20 который представляет строковое
42:22 представление нашего объекта
42:26 такие методы для работы с
42:29 многопоточность you
42:30 define audi файл
42:34 далее у нас методы конечно же всеми
42:36 любимых и шпроты eagles если этот клоун
42:40 есть метод файла из которой не
42:43 рекомендуется к использованию
42:45 get close
42:49 ok но вполне достаточно я удовлетворю
42:53 сися давай поговорим про самые крутые в
42:57 методы о которых все всегда говорят
42:59 ipples и хэш-код но здесь не интересует
43:01 идея контракта в чем заключается смысл
43:04 контракта между методами и класса
43:06 хэш-код и вообще зачем это на
43:09 ну контракт я сейчас так своими словами
43:13 в том что ну во-первых если перри
43:17 определяются эклз обязательно нужно
43:19 переопределять и хэш-код то есть и
43:21 наоборот а
43:23 почему
43:26 ну в основном это конечно связано у нас
43:30 при работе с нашими всеми любимыми
43:33 коллекциями хэш web site у нас могут
43:36 возникнуть проблемы при корректной
43:38 работе
43:39 [музыка]
43:40 сравнивать искать
43:44 [музыка]
43:46 структуре искать куда мы запишем этот
43:49 объект у нас не корректно будет
43:51 сравниваться эти объекты между собой и
43:53 возникнет или коллизия или
43:56 больше возникнуть проблема в том что
43:59 объекты на самом деле будет являться
44:01 равным имена и их
44:03 программа интерпретируют как разные
44:09 до на самом деле правда то есть любой и
44:13 галсы хэш-код перу очередь намекает на
44:15 то что это нужно при работе с
44:17 коллекциями базирующемся на сша а
44:20 как это вот обосновал бы это с точки
44:23 зрения джаван то есть коллекция ты потом
44:25 кошмар это всего лишь следствие но какая
44:29 основная причина почему появился вот
44:32 этот самый контракт может быть ты можешь
44:34 его описать так как это java гласит я не
44:37 говорю смыслить технический проект но
44:40 зачем все так
44:44 ну дело в том что
44:58 могу помочь
45:00 [музыка]
45:02 весь к весь как правило когда мы
45:04 переопределяем хэш потом и голос то
45:07 всегда есть какие-то следствия то есть
45:10 что происходит не в большей степени
45:12 здесь это следствие
45:14 основополагающая оно исходит из то есть
45:17 не всегда нам нужен шпор на самом деле
45:19 не класс используется гораздо чаще чем
45:22 хэш-код но все таки вот когда мы
45:27 переопределяем хэш-код почему так важно
45:29 с какой уровень в чем самое сам смысл
45:32 чем сама идея если даже отбросить
45:34 коллекция чего так важно ещё и класс
45:36 переопределить
45:38 ну их был сложно переопределить из-за
45:41 того что его стандартная реализация она
45:43 бывает недостаточно для сравнение
45:46 объектов
45:47 отделяемое курс по
45:49 этому самому контракту
45:52 мы сравниваем поля то есть мы производим
45:56 корректное сравнение объекта по его
45:58 значением более как минимум
46:01 ну учитывая рядом других сравнений вроде
46:04 там ссылок приготовьтесь к тому типу
46:07 поэтому и нам иногда уточнены же часто
46:11 это нужно просто-напросто
46:13 поэтому важно переопределять
46:17 этих методы абсолютно верно потому что
46:21 те свойства которые находятся в объекте
46:24 нас но не хочет быть вычисляется и
46:26 клиента есть 2 объекта однотипных в том
46:29 числе на основании этих же свойствами по
46:31 регулируется хэш-код абсолютно верно так
46:33 же было бы не лишним отметить тот факт
46:35 что даже в самой джаве написано что
46:39 когда переплелись хэш-код необходимо
46:41 перебрать николс и почему само жало это
46:45 или разработчики java это за бред потому
46:47 что когда объекты эквивалентны между
46:51 собой через ментов и класса не всегда
46:52 должны возвращать соответственно
46:55 одинаковый хэш-код там есть исключения
46:58 но тем не менее кстати этого же
47:00 прочитать в самом методе к описанию
47:03 методах обкакалась оптика в их
47:06 официальные доки но кто как ты ответил
47:11 я думаю что мы с объектом закончили но
47:15 вполне я он повел это описал давай
47:19 поговорим про коллекции коль мы уже
47:21 затронули коллекцию коллекция расскажи
47:23 пожалуйста про иерархию коллекции я не
47:26 говорю про конкретная реализация а
47:28 просто и архи интерфейс в калачик райвак
47:32 так ну во главе всех колец и у нас
47:35 интерфейс у
47:38 нас идет интерфейс collection от этого
47:42 интерфейс у нас еще есть три интерфейса
47:44 этого интерфейс лист интерфейс ide и
47:49 интерфейс
47:50 [музыка]
47:55 отдельно силу своей специфики
47:59 а почему о чем его специфика ну его
48:03 специфика именно вы внутренней структуре
48:05 то есть он
48:08 использует иной подход скажем так
48:11 получению хранению данных и сюда и это
48:16 не укладывается в концепцию вот
48:18 интерфейса collection нг-энерго летом
48:20 тех либо стандартных итераций вот
48:22 который производится на достойными
48:24 коллекции отлично более чем резонов до
48:29 поговорим про списке он же интерфейс
48:32 лист мыши назвать две три основных и
48:38 часто используемых по твоей опусти
48:40 версии реализации
48:43 но до две самые распространенные
48:46 реализации это у нас released или как
48:50 говорят динамический массив и
48:53 linkit лист
48:56 4010 еще конечно но этот вес принципе
48:59 хотели использовать ok но вполне
49:03 достаточно давай поговорим о разнице
49:05 между листом и ленте для стоп чем между
49:07 ними базовый отлич
49:10 ну базовое отличие в том что у
49:14 нас коллекция released она хранит
49:19 упорядоченную последовательность
49:21 элементов
49:22 которые могут храниться дубликаты
49:24 которая который можно обращаться по
49:27 индексам и
49:29 кране значение
49:33 самой структуре это обычный массив и
49:38 соответственно благодаря этому у нас
49:39 происходит быстрый доступ к элементам
49:41 венки плести а там немножко другая
49:44 история я звонил сходство тоже это можно
49:47 обращаться по индексу прочие вещи но
49:51 структуре это 2 связный список который
49:54 хранит ссылки на предыдущие элементы
49:56 следующий элемент у него есть быстрый
49:59 доступ последнему первому элементу и
50:05 собственно говоря ну там немножко
50:08 сложнее допустим получить элемент по
50:10 индексу это может вызвать
50:13 очень
50:14 долгий процесс
50:16 но хорошо пока за сложность его
50:19 выговорить спускалась что мы можем
50:22 получить мгновенный доступ а в последнем
50:25 и первому элементу валенки для стен но
50:26 на самом деле в релиз темы тоже это
50:28 можем сделать но морей листе как ты
50:32 отметил это сделано за счет массива мы
50:34 всегда знаем 1 индексы мы всегда имеем
50:36 понимание о том как получить последний
50:38 на то есть лет а минус 1 но тут у меня
50:41 вопрос а в linked листья как устроена за
50:44 счет чего мы можем получить мгновенный
50:46 доступ к первому и последнему индекса с
50:49 учетом того что индексация в ленте для
50:51 стен это фэйк это всего лишь интерфейс
50:54 но по сути индекс он искусствами
50:58 как ты уже сказал массиве понятно как
51:02 можем получить
51:04 объекты последние первые блинги плести
51:07 это устроено с помощью метода в
51:10 специальных сами методы они просто
51:12 ссылаются на более которое хранит себе
51:15 значение первого и последнего элемента
51:16 примеру летние новых элементов linkit
51:20 лист у нас всегда как бы эти значения не
51:25 ну используются в случае надобности они
51:28 там обновляются
51:29 вот поэтому мы всегда имеем
51:31 [музыка]
51:34 но тогда мне вопрос а что это за такие
51:37 методы ведь если я напишу выражение лист
51:41 string равно не улетит лист я буду
51:44 огорчен но при работе с этим объектом у
51:47 меня не будет методов get her ass калики
51:50 класс или что-то в таком духе откуда все
51:52 таки вот эта связь с первым последним
51:56 элементом интерфейса ленте лист
52:01 если я не ошибаюсь
52:03 возможно
52:06 это связано с интерфейсом лист император
52:09 возможно я ошибаюсь не совсем это не
52:13 брали лист оператора это пророчит там
52:16 находится в основании rinker листа
52:19 находится двухстороннюю очередь она
52:21 называется back
52:30 говорим здесь о
52:33 прелести и скорости доступа к элементу и
52:37 в том что мы строим линки для скажи
52:40 пожалуйста вот у меня есть список из
52:43 миллионов элементов мне необходимо
52:46 получить доступ к элементу который
52:48 находится строго посередине что будет
52:51 эффективнее рейз или ли интерес но если
52:54 нам нужно получить доступ к элементы
52:56 элемент тут однозначная а
53:00 почему это мы
53:02 потому что структуре его массив массив
53:06 по массиву с помощью массива как бы
53:08 легко определить позицию элемента и
53:10 достать а
53:13 почему это плохо для
53:15 ленте для ставить там же тоже выпав по
53:18 сути передаю индекс метод же такой же
53:21 get buy чушь тогда валенки для стекла
53:24 как ты уже сказал там фейковый
53:26 индексации сайта есть на самом деле
53:29 каждый объект внутри в структуре indeed
53:33 листа
53:34 отзываются
53:36 он ссылается на следующем и мы не можем
53:39 никак получить данной структуре элемент
53:41 если мы не будем путем перебора
53:43 [музыка]
53:45 двигаться к нужному нам индексу
53:47 соответственно нам надо там середина
53:50 венки плести индекс там 500 тысяч что мы
53:53 будем 500000 до него
53:57 так здорово а что если нам необходимо из
54:02 середины удалителя my вот у нас все тот
54:04 же список не и он элементов и
54:08 элемент который ровно посередине что ты
54:11 применишь релиз или
54:13 [музыка]
54:15 но с удалением здесь проще
54:19 linkit лист в том что он просто бери
54:22 запишет ссылки
54:24 на моды у себя внутри под капотом случае
54:28 с released нам придется избегать массив
54:30 это очень таки будет тоже долго но можно
54:35 так небольшая оговорка на самом деле я
54:38 насколько знаю там достаточно все равно
54:41 оптимизирована под капотом листа и
54:44 практики вот большинство там 90 как мне
54:48 говорили 90 процентов 90 90 процентов
54:53 использовали все равно
54:55 [музыка]
54:58 но это правда но то есть так как тетрис
55:02 это правда и правда то что релиз
55:06 все-таки здесь хуже потому что нужно
55:08 делать смещение при всех оптимизациях
55:10 могут быть оленьки от листа заброс на
55:12 перебрасывание
55:13 ссылок неправда то что релиз чаще
55:16 используется чем лично мне приходилось
55:18 link list 1 5 использует за все подряд
55:22 сказать да да да да да
55:25 задача просто так стоят на самом деле но
55:28 важно понимать что если возьмёмся
55:30 перформансом каким-то и там это играет
55:33 роль то вот это уже понимает нужно .
55:35 хорошо мне нравится поговорим здесь про
55:38 коллекции еще про такие два интересных
55:40 вопроса есть знаменитое выражение файл
55:43 hosts и
55:44 его такой побратим
55:47 брат файл сейф можешь описать в чем
55:51 между ними разница
55:54 с
55:57 ним не встречался с такими понятиями
56:00 может я знаю но оказывается и
56:05 сам себе ситуацию поверим profiles
56:08 представим себе ситуацию я работаю с
56:10 коллекцией я и 3 русь по ней в цепи и
56:14 тут я резко начинаю из коллекции удалять
56:18 элементы
56:20 коллекция от разрешит сделать или будет
56:24 выброшено исключение то есть я выполняю
56:26 method to remove
56:28 но если мы будем через стандартную
56:31 реализацию в каком-то цикле пробегаться
56:34 там форм просто цикл for или там то у
56:38 нас возникнет
56:39 [музыка]
56:44 точно название не помню есть конкурент
56:47 слова там что то такое да да да
56:52 точно канва 9x это и есть то самое dfl
56:56 фас когда мы изменяем коллекцию в обход
56:58 итератора то есть проще говоря мы
57:00 работаем с оригиналом коллекциях и сразу
57:02 же в процессе оперирование через m и
57:04 начинаем удалять элементы то под капотом
57:07 у коллекции есть счетчик этот счетчик
57:09 изменяется от называемых модификаций
57:13 аккаунта и разумеется следующий раз
57:14 когда ты уже что-то попытаешься сделать
57:16 на следующей итерации это все свалится
57:18 потому что был один был один раз
57:21 замечены изменить то есть это как бы
57:24 считается плохо это determinate на когда
57:27 мы работаем с коллекцией и сразу же тут
57:29 начинаем ее урезать и
57:32 вот другой вопрос может быть это тебе
57:34 намекнула что за альтернатива братьям
57:37 файл сейв-файл
57:41 сайт возможно это
57:45 возможность уделить
57:47 безопасно удалить модифицировать
57:49 коллекцию брать элемент во время runtime
57:53 без опасения что у нас возникнет
57:55 смотрите . да ну если горит то кто на
58:00 самом деле не значит в том что вот это
58:02 исключение но не выбрасываются смысл в
58:05 том что во время интегрирования мы
58:06 работаем не с оригиналом коллекция а
58:09 сверху разумеется
58:11 изменение налитую другой копии ни в коем
58:14 случае никакого парад никакой здесь
58:17 проблемы нам не создает хорошая накопит
58:19 другая ссылка ну мне вполне нравится
58:23 твой ответ хорошо давай поговорим с
58:27 тобой еще про колец и конечно же мы не
58:31 можем обойти интерфейс мы кто же сказал
58:34 что у него другая структура
58:35 давай поговорим с тобой про базовую
58:37 реализацию
58:40 еще раз расскажу просто почему так важно
58:43 при работе с у объектов которые она
58:47 хранит переопределять и клаус и школ
58:51 важно это потому
58:54 чтобы у нас правильно коллекциях и шмап
58:58 вычисляла необходимую ячейку корзину
59:02 bucket как она называется
59:04 туда помещала наши ключ-значение
59:08 окей это важно с точки зрения хэш-кода
59:12 для то есть определение личинки методы
59:15 красном важен так как если у нас
59:17 возникнет коллизия вот тогда уже мы
59:19 применяем нет отряхнул он сравнивает уже
59:21 более детально скажем так как disappear
59:25 отлично у
59:27 меня такой провокационный вопрос
59:30 в мире есть и ключ и значение
59:33 что нам нужно а вернее и классе хэш-код
59:37 нужен для ключа или для значения или
59:40 сразу нужно и для ключа и значения
59:42 период для тепла все хэш-код
59:47 целом речь идет в основном про ключ то
59:51 есть мы подключили для дамы что какой
59:55 элемент
59:55 помещаем и
59:57 сравниваем это же объект ключа на иглу
60:01 здесь как бы еще приоритет включениями
60:04 на самом значение как значение просто
60:07 лежит и все
60:08 правильно абсолютно верно то есть мы же
60:10 по ключу выбираем и по плечу вкладам
60:12 разумеется он нас интересует мне
60:14 нравится и еще один вопрос с подвохом
60:17 какая скорость доступа к элементу в hd
60:22 лучшие среднее и худший
60:27 кошмар да
60:32 чуть чуть подумать но вообще шмап это
60:35 довольно быстрая коллекция сама по себе
60:38 и здесь скорость доступа имеет нюансы
60:42 потому как если мы допустим будем
60:44 добавлять элемент то высчитать ключ это
60:48 очень быстро и просто для
60:53 если мы уже будем помещать значения в
60:56 случае коллизии это уже у нас немножко
60:59 сложность выполнения увеличивается и
61:02 соответственно если мы будем получать
61:04 элемент с помощью хэш-кода мы быстро
61:08 находим ячейку в нашем массиве пакете и
61:13 получения самого значения будет зависеть
61:15 от таки о
61:21 окей я понял что ты меньше удобно если
61:24 быть более точным мы знаем что есть
61:27 такое выражение как константное время
61:29 доступа нужен мгновенное линейное время
61:31 доступа логарифмическое время доступа и
61:34 так далее так далее все что можно
61:36 математически обосновать привести к
61:37 скорости и тут у меня вопрос вот какое
61:41 время доступа в лучшем случае к элементу
61:45 по ключу в
61:50 лучшее время доступа будет наверно
61:52 константное
61:55 [музыка]
61:57 случае получается
62:01 ok а средний есть тут место быть или
62:04 все-таки тут либо константное либо
62:07 линейно же
62:11 блин ну тут конечно
62:18 вот только вот эти два кофе на самом
62:22 деле вот если бы это все было бы до java
62:24 8 так бы оно и был бы потому что джова
62:27 исполнительно было и константное либо
62:30 линейного смотри изменился существенно у
62:33 него появилась не просто но до а3 но и
62:36 когда достигает к лизе определенного
62:40 порода соответственно надо
62:42 трансформируется в 30 дает нам
62:45 логарифмическую скорость доступа это
62:46 явно быстрее чем линейный слаб логан
62:49 соответственно появилась и средняя
62:51 скорость и
62:52 это шоу 8 есть он создал 8 массово
62:56 используется тем более 17 появились как
62:59 в это важен в проспект ну здорово в
63:01 целом все как бы коки
63:03 хорошо давай поговорим про другую тему
63:06 которая называется и исключение то есть
63:09 и любят исключением если фрукты работать
63:12 расскажи просто мне про иерархию
63:13 исключений на какие основные аспекты
63:16 необходимо обращать внимание при
63:19 разговоре об ираке я не говорю
63:21 пересчитать мне все возможны исключения
63:22 а вот основные аспекты которые точно
63:25 должен знать любой разработчик
63:27 работающие джаред исключения
63:30 так мы однозначно нужно знать общую
63:34 структуру
63:35 иерархию точнее
63:39 collection она в принципе довольно
63:42 просто есть у нас верху иерархии класс
63:45 сро google
63:48 дальше идет эксепшен эксепшен и
63:53 мы не рассматриваем обычно потому как он
63:56 связан больше java виртуальной машиной
63:58 тому же свои ошибки при нехватке памяти
64:01 там каких-то других проблемах с
64:03 многопоточности там переполнением стыка
64:06 и так далее вот разработчик с ними не
64:09 работает правила
64:11 работы с action и
64:15 класс эксепшен распределяется у нас ещё
64:17 на 20 их важных момента на 2
64:21 2 группы нужно сказать есть у нас
64:24 runtime exception class которые
64:27 который является анчик эксепшен то есть
64:32 непроверяемыми и все остальные которые
64:34 люди на сутки от класса exception
64:36 является чегт к сексу нами то есть
64:38 проверяем вот это такие самые основные
64:42 моменты в иерархии которые нужно знать
64:44 ну а далее вуза детали
64:47 окей здорово то есть абсолютно круг
64:50 сказал есть исключение р-не exception
64:54 г-н проблемы то есть мы на них не нагло
64:57 мы не не властны а почему бы не мы не
65:00 власти технически я могу с ними работать
65:02 вот как ты думаешь почему р.р. мы что
65:06 имеем возможности поработать но чаще
65:09 всего мы этого не делаем как чем связан
65:13 мой взгляд
65:15 это чисто вот мое мнение что мы просто
65:18 не можем никак их обработать ей не можем
65:21 ни какие действия предпринять чтобы
65:23 предотвратить допустим
65:26 ошибки возможно это как-то связано с тем
65:31 что нам oracle там говорит да там
65:35 можете не работать с этим не лезть на
65:37 телом checked исключения пожалуйста
65:40 работаете я понял но вообще на самом
65:42 деле правда ты сказал мы просто не знаем
65:45 где это произойдет и ты можешь провести
65:46 в любой строчки кода во время выполнения
65:48 программы поэтому мы просто не властно
65:51 окей поговорим про исключение
65:53 проверяемые и непроверяемые в чем
65:55 различие между двумя этими видами
66:01 до главные различия там в том что он
66:05 чекнет исключения
66:07 позволяют нам их не обрабатывать во
66:10 время компиляции
66:11 то есть мы можем их проигнорировать у
66:14 нас возникнет бран таймингом исполнение
66:17 программы какой-то эксепшен мы его слове
66:20 мы потом будем думать что как мы сделали
66:24 не так вот чек чек от исключения это
66:28 исключение которое но не дает нам
66:30 возможности
66:32 компилятор просто не дает нам
66:33 возможности проигнорировать их и никак
66:36 не обработать
66:37 окей хорошо
66:39 тогда просеем тогда какие есть
66:42 возможности
66:43 обработки
66:45 проверяемых исключению какие способы
66:48 джалла предоставляют
66:50 мол два способа первый такой ленивый
66:54 способ пробросить куда-то выше
66:56 исключения передать дальше но g-100
67:00 круизов и второй способ это уже
67:03 обработать его с помощью драки и
67:07 предпринять необходимые действия меры
67:10 супер мне нравится а подскажи пожалуйста
67:14 вот тройнич что это такое и зачем он нам
67:19 нужен но то что мы подразумеваем 2 течь
67:22 под обработку
67:24 нутра кечид специальный
67:27 блок механизм java которые позволяют нам
67:30 собственно обработайте подключения и
67:33 сообщить себя разработчику и другим
67:36 разработчикам что вот возникла какая-то
67:38 ошибка в работе программы мы можем там
67:40 указать сообщение
67:45 проинформировать источники этой ошибки
67:48 девяностом было уровнем выше возможно
67:53 по словам цель такой
67:57 супер очень скажет подскажи вот игорь
68:01 строй печь а можно ли написать трой но
68:04 без течь
68:06 насколько я знаю компилятор не даст
68:09 возможности написать течь
68:11 не написали течи проигнорировать на че
68:15 по нижней а знаешь ли какие то есть
68:18 вообще разнообразные формы как можно
68:21 писать strike печь
68:24 то можно добавить лог файл или потери
68:28 речь поэтому как вариант можно
68:32 logitech указать семейства section of
68:36 если у них там одна игра идет один
68:39 родитель вам не обязательно указывать
68:41 там какие-то подробные эксепшен
68:45 случаев в ряде случаев все равно это
68:46 нужно делать а могу ли я просто написать
68:49 про и файл или и выброси стечь
68:57 проверял
68:59 знаю я знаю массу вот точно что печь
69:04 всегда но обязательно нужно указывать то
69:07 есть это как требованию такое
69:09 неофициальное может официально
69:11 разработчики практикой возможно все таки
69:14 можно обеспечить
69:16 бог на самом деле мы можем писать про и
69:20 кич файл или важен цвет пролететь и мы
69:23 можем стать прайм файл или таким образом
69:26 можем исключить стечь но тогда буквально
69:28 ли тоже
69:31 высокий и здесь последний вопрос
69:34 расскажу в чем такая важность стектрейсы
69:37 исключение
69:40 мог поступить рельсу можно определить
69:43 контекст ошибки
69:44 [музыка]
69:46 производить дебаггинга конкретных мест
69:49 программе то есть нам даже больше
69:52 деталей больше подробностей после
69:54 зацепок какой-то ошибки iq собственно
69:58 говоря для того чтобы
70:03 вот
70:05 и т.д. сори перебил то я мне просто
70:08 очень интересно ты сказал такую тему
70:10 контекст ошибки что ты куда знаешь по
70:13 контекстом ошибки
70:15 я как правило я я считаю что контекст
70:19 ошибки это собственно говоря вся
70:21 информация которая у нас выводится и
70:24 когда у нас указывается
70:27 ты багере
70:29 какой строчки возникла ошибка название
70:33 экшена какие-то там дополнительные
70:36 параметры цепочка вызовов которых
70:41 он просто больше может быть 12
70:44 ok супер это классная практически ни
70:48 разу не слышал такого шикарного это про
70:51 исключения респект и теперь следующие
70:55 вопросы
70:56 давай поговорим с тобой про
70:58 соответственно всеми любимую
71:00 долгожданную многопоточности можешь
71:03 просто в рамках многопоточности описать
71:05 такой принцип абсолют или up and be for
71:09 он называется этом бихар или с by far
71:11 cray на русском языке произошло до
71:13 соответственно как ты можешь этот
71:16 принцип описать
71:18 ну в моем понимании
71:21 этот принцип говорит нам о том что
71:27 какой-то
71:29 общий ресурс
71:31 какой-то поток обратился к общему
71:34 ресурсу и
71:35 когда обращаются идет обращение 2 потока
71:38 то
71:40 этот ресурс может измениться и
71:43 говорят что первый поток
71:46 второй поток
71:48 возможно я немножко заблуждаюсь в этом
71:53 термине но на самом деле со выражаться
71:55 более точно смысл заключается в том что
71:58 буквально то что происходит да должно
72:01 быть известно тому что пройдет пост в
72:03 проще говоря события гони к должно
72:06 всегда оставлять след для события об
72:07 этом что произошло событие ну и
72:10 соответственно события а не может быть
72:11 раньше чем события b то есть по сути это
72:13 последовательность ну здорово поговорим
72:17 с тобой еще про штуку как consistent
72:20 ность и от омар ность вот как ты
72:23 подразумеваешь эти два выражения
72:28 ну адамар ность
72:34 это у нас
72:41 если ваш не сильно привязывайся если
72:44 машина своих словах делай
72:48 не принципиально вот такими крутыми
72:50 выражениях оперирует консистенция
72:53 формальность просто попытаюсь описать
72:54 если знаешь что это такое
72:57 ну я просто знаю у нас
73:00 многопоточной библиотеки в пакете есть
73:04 специальные классы для работы вот
73:07 которые считаются атомарных
73:10 бульон и
73:12 они позволяют нам обращаются как бы к
73:16 общему ресурсу без он-то
73:19 синхронизировано к нему обращаться и
73:21 получать
73:24 результаты
73:25 этой переменной допустим
73:28 изменять ее
73:30 сейф 3 скажем так потока безопасно и
73:34 возможно это связано с тем что атомарной
73:36 стопы и
73:39 какой-то потока безопасный
73:42 потокобезопасность ибо я что-то
73:45 специально возможная а как ты видишь вот
73:50 эту потокобезопасность
73:51 вот кто точнее вот что ты вкладываешь в
73:53 идею потока безопасной среды
73:55 но
73:57 именно складываю тот момент что когда у
74:01 нас потоки обращаются к чему ресурсу мы
74:05 должны быть уверены что у нас не будет
74:09 каких-то непредсказуемых там значение
74:12 возникать то есть
74:16 потом окей снять значение единственные
74:19 потоки будут видеть это изменение
74:22 корректный
74:23 манипулировать кей согласен но резона но
74:27 тут черт не хватает а представим себе
74:29 ситуацию что
74:31 что-то с чем-то конкурирует или что-то
74:35 где-то внедряется проникает как угодно
74:38 называть вот как бы ты описал бы эту
74:40 проблему и вложил бы и в идею
74:43 многопоточный
74:45 выжил бы и в идею потокобезопасность
74:49 если кто-то где-то не нравится то как
74:53 говорится это называется настроить
74:55 кондишн
74:56 кто-то
74:59 поток стремится изменить значение
75:02 работает как известно непредсказуемо там
75:05 есть специальные в операционной системе
75:08 процессы которые им управляют
75:10 и мы не можем предсказать это и данное
75:14 поведение вот и называется раз кондишен
75:16 то есть
75:18 абсолютно правильно ответил единстве я
75:21 тащил до что
75:23 консистентная атомарный и так же ты
75:27 отметил принцип видимости и все это как
75:30 бы одно из стальной я составляющей того
75:33 же самого принципа этом by far таким
75:34 образом везде висели видимость и говорит
75:37 о том что потока всегда свои действия
75:39 выполняют и потом вы должен быть у них
75:41 убит
75:43 последовательность консистентной она же
75:46 или последовательная констанции с
75:48 говорит о том что все операции которые
75:50 выполняются и оставляют после себя след
75:52 так или иначе должны
75:54 оставлять такой след который будет
75:57 выстраиваться в последовательную цепочку
75:58 ну то есть проще говоря когда потока из
76:01 двойки делал пятерку разумеется поток
76:03 bad должен из пятерки делать восьмерку
76:06 не должно быть такого что и поток а и
76:08 потом б работают двое из измененным
76:12 значением разумеется атаман с это когда
76:15 операция процессором выполняется
76:18 неделимо полностью либо вообще не
76:20 выполняется
76:22 здорово давай поговорим еще об этом
76:24 интересном понятие который называется д
76:27 лог слышал
76:30 да слышал
76:32 это такое состояние когда у нас
76:36 два потока захватывают монитор и при
76:40 этом они одновременно ждут освобождения
76:42 друг друга
76:44 за руки у нас возникает этот d-блок а
76:49 что такой монитор
76:52 нож привести пример можно ли им как-то
76:54 управлять
76:57 ну прежде всего монитор это можно
77:01 сказать механизм джами такой который
77:04 является
77:07 такой специальный объект только не в
77:09 привычном смысле как объект
77:12 специальный механизм монитор он
77:15 присутствует у нас на объектах или на
77:18 классу и
77:20 с помощью этого монитора у нас
77:28 потоки имеет доступ
77:31 к этому объекту
77:33 вот и могут его захватывать освобождали
77:38 освобождать как ты понимаешь процесс
77:41 захватить монитор что это под собой
77:44 подразумевает какие-то последствия или
77:46 какие-то плюшки добавляются в этот
77:49 момент
77:50 на брюшке добавляются
77:53 в том плане что когда у нас поток
77:58 захватывает монитор
78:00 он может работать внутри
78:04 определенного блока или в мельник блоки
78:07 как правило у нас только вот такие и
78:11 этот поток работает со всеми
78:14 последовательно там данными методами
78:17 вот любой другой поток при этом в это
78:21 время не может попасть
78:24 [музыка]
78:26 тип монитора то есть 10 лет так
78:28 захватывает монитор другие объекты ждут
78:30 и нему окей этому нечего делать да проще
78:34 говоря монитор обеспечивает нам
78:36 последовательность доступа либо один
78:38 поток работает другой туда не должен
78:40 двигаться как раз то что мы обсуждали
78:42 мгновение назад а подскажи вот такую вот
78:45 ситуацию представим себе у тебя есть
78:47 объект у него есть два метода один метод
78:50 синхронизированный а другой метод не
78:53 синхронизированы и
78:55 представим себе поток номер один уже
78:58 захватил монитора и он работает с
79:01 синхронизированным методом этого объекта
79:04 и тут вдруг поток номер два в это же
79:07 самое время пытается поработает с этим
79:10 же объектом но не синхронизированным
79:14 методом запретит ли ему монитор это
79:17 выполнить поставить лего очередь или все
79:20 будет ok и два потока будет одновременно
79:22 работать с разными методами ваш объект
79:28 сколько я знаю
79:30 монитором на объекте являют является сам
79:33 объект то есть
79:35 каким образом у нас если поток
79:38 захватывает
79:40 ну там второй метод первый метод
79:43 работал при этом не может работать с не
79:47 синхронизированы методом
79:49 на самом деле нет может потому что в
79:52 этом смысл
79:54 синхронизация оно отмечается вот этими
79:56 самыми словами синхрониста разумеется
79:59 если даже тот же самый объект и его
80:02 метод не синхронизирован а другой
80:05 синхронизированным то синхронизация
80:07 распространяется только на участке где
80:11 есть синхронизированный метод или
80:13 разумеется синхронизированы
80:16 отсутствие синхронизации ведет к
80:18 бесконтрольному доступа к объекту его
80:22 методом соответствующими частями метода
80:24 поэтому мы прошли писал выше оно
80:27 допустимо
80:29 хорошо но мы тут поговорили с тобой про
80:33 синхронизированы блоки
80:34 синхронизированные методы все здорово
80:36 скажи пожалуйста
80:38 если какие-то другие способы
80:40 синхронизации особенно когда мы говорим
80:42 про коллекции
80:45 да есть собственно говоря они и
80:48 называются синхронизаторы набор классов
80:51 из пакета
80:54 java конкуренции и
80:58 есть потока безопасные коллекции есть
81:02 возможность обернуть коллекцию
81:04 стул коллекцию сделать из нее только
81:08 безопасно
81:09 вот такими способами в принципе можно
81:12 синхронизироваться окей это тогда такой
81:15 вопрос в старину в чем разница между r и
81:19 листы и
81:24 граница там вот только и заключается
81:27 насколько мне известно именно в том что
81:29 методы вектор коллекции они синхронности
81:33 не рекомендуется к использованию ума
81:36 считается устаревшей
81:38 не я уверен что де блики и так но не
81:42 рекомендуется использовать я это правда
81:45 на ноги она не deep реке это правда
81:48 многие называют эти пакеты но она не
81:50 является таковой а в чем скажу о своей
81:53 точки зрения проблема почему гробка мы
81:55 отказались от вектора в пользу и
81:58 реалиста но как бы идея понятна тот
82:00 синхронизированный а этот не
82:02 синхронизированы но тогда вы зря
82:04 набросав чем же все таки проблем ну то
82:06 есть вроде синхронизация то есть это же
82:08 потока безопасности ведь круто это
82:10 хорошо или нет да это круто но
82:14 [музыка]
82:16 именно средства которые которые с
82:19 помощью которых он реализован вектор это
82:21 по-моему просто синхронизированные
82:23 методы
82:25 стало с какой-то момент мне достаточно
82:28 эффективно для того чтобы работать нога
82:30 поточных среде и были созданы и многие
82:33 синхронизаторы со временем и
82:37 начали горы каф делать создавать новые
82:40 коллекции как альтернативное решение
82:42 там это работают эффективнее просто
82:45 напросто ну и со временем она стала
82:47 устаревший
82:52 если более точно выражаться да но во
82:55 первых синхронизация везде это абсурд
82:58 потому что она требует ресурсов из
83:00 представим себе у нас есть список
83:03 который работает многопоточной среде
83:06 из него просто все считывают и
83:09 разумеется синхронизации говорит о том
83:11 что даже считывание будет выполняться
83:12 последовательно
83:13 вместо того чтобы одновременно
83:15 обращаться к его во всем значениям или
83:17 по индексу и так далее то есть это уже
83:19 накладывает производитель но понижение
83:21 производительности ну и разумеется
83:24 это идет в самую глубину этой проблемы
83:27 что сами способы которые как ты скал
83:30 используются для синхронизации вектора
83:32 они более старые они ведут к понижению
83:34 производительности есть уже более
83:37 мягкие способы не блокирующие так
83:40 называемые в новом пакете комками msi
83:43 соответственно но и плюс мы используем
83:45 многопоточный коллекции как на это надо
83:47 они просто потому что она такая и
83:49 по-другому быть не может вот и давай
83:53 перейдем к
83:54 последней теме поговорим про обобщение
83:58 мы шли объяснить что такое обобщение они
84:02 же generique что такое параметризирована
84:05 тип и зачем он может
84:08 собственно говоря об общении дженерики
84:11 это и есть пара металлизированный тип то
84:15 есть это
84:16 специальный параметр который мы передаем
84:19 с помощью угловых скобках даймон
84:22 синтаксисом close метод боя вот и он
84:28 решает ряд проблем ну вот две такие могу
84:32 подчеркнуть
84:34 ну во первых
84:36 нам не нужно создавать
84:39 кучу классов если мы хотим работать с
84:42 разными типами данных можем ограничиться
84:45 одним каким-то generic классом мне потом
84:48 и
84:48 спокойно работать оптимально
84:51 используя
84:53 и
84:55 второй такой
84:58 функция generic типов но это опять таки
85:01 с этим связано с коллекциями мы успешно
85:05 работаем с нашими
85:07 всеми коллекциями из пакета
85:11 этот вопрос
85:14 generique могут работать с примитивными
85:16 типами данных
85:18 ну это мы с тобой говорили еще в начале
85:21 что класса обертки у нас как раз таки и
85:25 их предназначение одной из вот работать
85:27 с коллекциями поэтому ответ нет
85:29 коментируем нас никак не работает
85:32 супер отлично ответственно хорошо давай
85:36 про денники еще потолкуем представим
85:39 себе ситуацию у меня есть класс у этого
85:43 класса как-то уже сказал есть при помощи
85:45 даймонд синтаксиса или изумрудного у
85:48 него я определён какой-то всегда нахну
85:50 неважно какой я хочу чтобы у
85:54 возвращаемых типов данных из метода
85:58 соответственных get
86:00 устанавливался этот параметр что мне
86:03 нужно сделать с учетом того что ты уже
86:06 установил какой-то параметр на уровне
86:08 всего класса то есть я хочу чтобы
86:10 возвращаемый тип данных из метода get
86:12 возвращал тот тип данных который я
86:15 соответственно укажу в качестве
86:17 параметров как это можно вызов или что
86:20 для этого необходимо зад
86:22 но нам нужно
86:25 указать
86:27 возвращаемый тип как темп сигнатуре
86:30 методу
86:31 гендер это получается у нас гендер будет
86:34 ли комментариев были неважные
86:37 соколе собственно говорит ун-т допустим
86:41 или там какая буква кажется то есть наш
86:44 тип
86:45 так хорошо а представимся ситуацию вот
86:50 тот же классу и вот эта буква т тот же
86:54 параметры которые в основании этого
86:56 класса был создан и
86:58 если еще статический метод могу ли эту
87:01 букву д переиспользовать статическое
87:03 метод
87:05 ну если он у нас находится
87:08 более
87:10 джин и речную но и даже нет жены лично в
87:13 пределах
87:15 класса то с единством спали
87:18 мы не можем статическом контексте
87:22 использовать такие поля saber мне не
87:25 враг да супер супер тогда возникает
87:28 вопрос каким образом для но если мы
87:32 классе даже представим себе у нас есть
87:34 статический класс
87:36 этот вопрос знает что это что такое
87:39 статический класс
87:40 ну да статический класс это
87:45 класс которым
87:48 который находится внутри другого класса
87:51 то есть java статический класс находится
87:53 только внутри другого класса являются на
87:55 этот классом и так ладно это право это
88:00 вложенный класс он правильно называется
88:02 вложенный класс сложный класс может быть
88:04 и не статическим и здесь речь идет на но
88:07 здесь идет именно о другом то есть
88:09 представим себе в гараж они зайца
88:12 оптический класс это себе обобщенный
88:14 класс он не вложен него что это сам файл
88:17 это сад это самого и отображение и тут
88:20 возникает вопрос какие признаки
88:21 статического класс то есть это класс не
88:24 это класс текущей у него вложенности
88:27 никаких нет он сам влажностью не
88:29 является ну
88:31 тут скриппс вы просто все его члены
88:34 являются статическими турист полях
88:36 методы и собственно тогда он будет
88:40 называться статически а что по поводу
88:43 конструктора у статического классов
88:47 [музыка]
88:50 сколько я помню статический конструктор
88:56 java
88:59 не применяется ну его некуда но
89:03 если мы говорим о том что статический
89:06 класс
89:06 правило гласит что экземпляр класса
89:10 такова создавать или за потому что это
89:12 стать
89:13 инстанса не будет тогда чё нам нужно
89:16 сделать с конструктором в этом случае
89:18 в любом случае мы объявляем конструктор
89:21 про его ты мы гарантируем и можем
89:23 создать уже объект супер да то что хотел
89:26 знать его как раз обратно возвращает
89:28 generique представим себе что у нас
89:30 утилитарный статический класс у него
89:34 есть какие-то методы статические как на
89:36 уровне статического метода создать джин
89:39 яичный тип ведь мы не можем взять вот
89:42 этот самый джинны личный тип от класса
89:44 мы конечно мы можем создать но ты сам
89:46 сказал что это будет не применимо к
89:49 статическому контекста и тогда вопрос
89:51 как создать
89:52 статический джинны личный метод
89:57 статичный джинни личный метод
90:00 ну
90:02 как его создать там есть ой какой
90:05 определенный синтаксис можно глаз на
90:07 местный марш описать как может быть
90:09 последовательности ли какие-то наметки
90:11 вот как бы ты как-то себе это видишь эти
90:15 вспышки из практики таки флэшбэки
90:19 [музыка]
90:21 по идее мы должны указать generic тип на
90:25 самом классе
90:28 на класс мы же не можем использовать
90:32 generic тип на классе он instance это
90:35 reference это не просто он будет не
90:38 видят
90:42 вопросы с подвохом но может быть может
90:47 не давали такие распространенные чтобы
90:53 сказать что
90:55 статический метод может возрасти
90:57 возвращать generic там
90:59 этого нужно в угловых скобках указать
91:03 наш буковку какую
91:06 [музыка]
91:07 параметр типа
91:09 вот причем это нужно мне не изменяет
91:14 память и к указать после слово static
91:17 именно в случае статическим методом да
91:21 так оно есть мы там и указываем вот тот
91:24 самый даймондс со времен и порядок да да
91:28 да то есть все ты знаешь на самом деле
91:30 все не так просто запомнить
91:33 последовательность где что указывается
91:34 особенно когда пишется от крыс на
91:37 меньшие поставить боку закрыть знак
91:39 больше потом и та же буква идет как
91:41 возвращаемый купить
91:44 да я явно явью что ты знаешь хорошо не
91:49 более чем нравится ответы тут такой
91:51 простой простой
91:53 гора скал буква t может быть нам буква д
91:56 быть да конечно может и не один тип
92:00 generic можно указывать через запятую
92:04 здорово хороший стильного параметрах
92:06 могут быть разные имена это вполне себе
92:08 справедливо
92:09 представим себе ситуацию что я хочу
92:12 иметь ограничения при помощи
92:15 generic of как на уровне
92:19 инстанция или объекта то есть класс в
92:23 основании которого мы объявляем этот
92:25 параметр как не сказать что я хочу
92:27 принимать туда любой тип данных который
92:31 является
92:32 наследником от класса bass entity
92:37 но в таком случае
92:40 используются ограничения в общении то
92:43 есть
92:44 есть такое понятие wild card ? в угловых
92:48 скобках мы собственно говоря его этот
92:52 wild card и указываем extends и название
92:55 класса которого мы хотим
92:57 ограничиваться датскому классу и тогда у
93:00 нас на вход могут приниматься только
93:02 типы которые являются либо этим классом
93:06 его его наследниками но ведь если быть
93:08 точным на уровне класса wildcard не
93:12 допустим то есть я не могу написать имя
93:14 глаз открыть скобку поставить ?
93:16 extend bs en si это правда можно сделать
93:19 на уровне параметрами то до этого же зал
93:22 для аргумента класса это можно сделать
93:25 не аргумент особе свойства класса это
93:27 можно сделать для
93:29 переменной внутри метода в том числе но
93:32 для класса как-то немножко иначе может
93:34 быть
93:35 чем от тебя из правил для класса и
93:39 указывается конкретно этот класс тогда
93:41 таком случае то есть если мы хотим
93:45 ограничиться
93:47 этим классом его наследником это тогда
93:50 мы пишем наш параметр типа вот это
93:54 название класса но
93:56 [музыка]
93:58 java этого не позволю
94:01 если мы напишем что-то вроде класс
94:05 контейнер откроем скобочки и напишем бей
94:08 свинтить и закроем скобочки bass entity
94:11 выражения будет восприниматься как буква
94:13 т просто
94:15 просто много буквиц это всего лишь имя
94:17 параметра псевдоним параметра не более
94:20 чем там тоже можно по сути написать
94:23 также как ты рассказал про wildcard но
94:26 немножко в другой форм ну то есть тоже
94:28 extends тоже боитесь и но чтобы ты
94:31 вместо знака вопроса поставил
94:37 так чуть-чуть без кода видим именно это
94:39 путает дома хорошо я подскажу на самом
94:43 деле все то же самое что с обычной
94:44 параметр только ты пишешь буква т
94:47 соответственно пробел
94:50 да
94:52 да ? действительно wild card вам нужен
94:56 когда мы с параметрами работаем с
94:58 аргументами иначе говоря со свойствами
95:01 класса с переменными локальными там
95:05 можно применять в основании самого
95:08 класса это просто не получится но как
95:10 она устроена хорошо ну на самом деле
95:12 очень хорошо мне здесь последний вопрос
95:16 какой тип данных применяются если у меня
95:19 стоит буква т я когда пишу объект но
95:22 создаю объект как мы как правило пишем
95:24 new контейнер открываем этот домен
95:27 syntax туда вставляем конкретных данных
95:29 которые там будут подставляться
95:31 предложим new контейнер stream и
95:32 конструкт дальше но скобочки концов
95:35 обрезаем ситуацию что я написал new
95:38 контейнер и сразу без вот этого
95:42 изумрудного синтаксиса я вызвал
95:45 скобочки контейнера все будет работать
95:48 компиляция отработает но у меня вопрос
95:50 какой тип данных тогда будет хранить
95:52 ведь мы ничего не указали но тогда
95:55 получается будет храниться отжиг
95:58 и
96:00 дело в том что сами дженерики в принципе
96:04 они во время компиляции они информацию о
96:07 них стираются и все просто приводится
96:12 наш класс отжиг просто приводится к
96:14 нужному типу
96:19 есть хорошо и здорово мне нравится твой
96:22 ответ но вроде как здесь все вроде мы
96:26 все сделали вот мы и подошли к концу я
96:29 думаю что с этим перечнем вопросов ты
96:32 вполне может претендовать уже на
96:34 какие-то реальные собеседования работу
96:37 лично мне более чем понравилось и мне бы
96:41 хотелось узнать твое личное впечатление
96:42 после этого то есть если это было первое
96:45 интервью у тебя вот как ты чувствуешь
96:48 как вот после теракта если ты уже
96:49 проходил когда-либо какого рода интервью
96:52 тот как ощущаешь с тем что было из тем
96:55 что стало победы
96:57 но во первых впечатления супер потому
97:00 что но приятный собеседник очень такие
97:03 вопросы хорошие есть на чем чем подумать
97:06 есть пробелы уже для себя их определил
97:10 конечно же я ради этого сюда и пришел
97:12 собственно это это моё первое интервью и
97:16 так уж вышло что вот она будет на ю тубе
97:19 кошка неожиданностью вышло но в целом
97:22 класс впечатления супер я очень
97:25 благодарен за эту возможность и по
97:28 поводу будущей работы да я понимаю что
97:31 мне еще есть чему стремиться так как я
97:34 не осваивал еще не spring не в не базы
97:37 данных у меня есть конечно небольшой
97:40 опытом по базы по базам данных и как
97:43 говорил уже в начале нашего интервью я
97:46 работала этой сфере немножечко и
97:49 я просто сейчас
97:51 предвкушении
97:53 последнего шага в java это прийти курс
97:56 обучения где я уже свою spring связаны с
98:00 этим технологии и буду уже действительно
98:01 готовиться к реальным собеседованием
98:03 пока вот так проверил себя и в целом
98:07 принципе можно сказать доволен но мне
98:11 кажется ты подготовился более чем
98:13 кардинально вопросы были четкие ответы
98:18 были еще четче то есть ты как будто знал
98:22 свой вперед по самом деле печали ,
98:25 но очень очень чувствуется что ты уделил
98:30 носить на много времени
98:32 образованию и разумеется подготовки в
98:34 целом будущей работе как java
98:37 специалистов в чем я тебя и уверенность
98:41 остальные желаю больших успехов вот
98:43 скажи пожалуйста вот я во всех всегда
98:45 спрашивают вот чтобы ты порекомендовал
98:47 бы тем самым ребятам которые сейчас
98:50 смотрят вот что бы ты им парик regal бы
98:52 чтобы достичь каких-то успехов в любом
98:55 языке про gravity это не только про java
98:57 может быть участь какие-то секреты как
98:59 ты обучался или еще чтобы
99:02 я считаю что не нужно терять время если
99:06 есть стремление и желание посвятить себя
99:09 этой сфере ту нужно действовать нужно
99:11 сквозь где были различных
99:15 тяжестей проблем непонимания даже
99:19 сбрасывать мысли это не моя с этим не
99:22 справлюсь это не получится нужную
99:24 пытаться идти вперед разбираться
99:26 сложности они везде и вот мне 33 года но
99:31 ярко все равно еще иду к своей цели
99:34 просто жалею что потерял время поэтому
99:37 ребята не терять время если вы
99:39 чувствуете что это ваша у вас лежит к
99:42 этому душа то обязательно идите к своей
99:44 цели и добивайтесь результатов никогда
99:48 не останавливайтесь супер это круто
99:51 пожелание большое тебе спасибо я уверен
99:53 все присоединятся и обезображивает себя
99:55 виртуально урок тебе посмотрим ну что на
99:58 сегодня будем закругляться большое
100:00 спасибо вадим был очень приятно тебя про
100:03 интервьюирует действительно была оказана
100:05 очень хорошее качество ответов я
100:08 индивидуально желаю тебе успехов
100:10 прохождение следующего курса и в
100:12 скорейшем получаю опыт и реальных
100:15 интервью в реальных больших компаний и
100:17 чтобы ты занял эту нишу как разработчик
100:21 java разбиться развивался всесторонне
100:24 получал от этого удовольствие а на
100:26 сегодня это всё пока пока спасибо
100:28 огромную дочь и вот так вот друзья вот
100:32 таким образом прошло наше интервью а о
100:34 вопросах вы можете судить самостоятельно
100:36 подумайте и напишите в комментариях как
100:38 бы вы ответили на эти вопросы может быть
100:40 какие то вопросы вас интересуют
100:42 конкретные вы хотели бы их обсудить
100:44 поэтому друзья давайте же переместимся в
100:45 комментарии и там все начнем это
100:47 обсуждать или конечно же с радостью
100:49 подключусь к в вашей миссии в то же
100:51 время если вы считаете что в данном
100:53 интервью недоставало каких-то других
100:55 вопросов смело тоже пишите это в
100:57 комментариях
100:57 ведь с одной стороны это помогает мне
100:59 расширить кругозор чего бы можно кубра
101:02 где-то может быть чего-то много а где то
101:05 чего то наверное и не хватает именно
101:06 ведь вы формируете наши коменти друзья
101:08 еще раз я вас призываю пишите в
101:11 комментариях что вы думаете по поводу
101:12 интервью с технической точки зрения
101:14 хотели бы вы расширить это и все прочее
101:16 что вы думаете я с радостью уступлю с
101:19 вами в переписку как мы часто это идем
101:21 как у нас и принято на канале но она
101:23 сегодня это все друзья напоминаю
101:25 подписывайся на канал ставь колокольчик
101:27 не пропускать самые интересные крутые
101:29 видео напоминаю про наши индивидуальные
101:31 телеграм-канал а где вы можете найти
101:33 куча всякой всячины и разумеется полезно
101:36 для вашей будущей разработки или
101:38 обучения она сегодня это все друзья с
101:40 вами был макс добрынин вы на канале джек
101:42 бал и до новых встреч