Собеседование Java Junior | Jetbulb

Подготовка к собеседованию на Java Developer

Транскрипция видео:

  • друзья всем привет вы на канале jit болты с вами снова макс за время а сегодня мы с вами поговорим нет нет не обоих 8 годах опыта работы не о том как происходит что-то войдя ах нет каких-то инсайтов не ужасах небес процесса мы сегодня поговорим о долгожданных друзья интервью но прежде чем двигаемся дальше конечно же подписывайся на канал ставь колокольчик напоминаю друзья вносились замечательно телеграм-канал то дома гостем всю интересную печатную литературу которую вы можете почитать просто сидя в общественном транспорте

    00:00:09 - 00:01:11

  • или дома или перед сном или за завтраком в любом месте собственно тут даже я отправляя свои персональные посты которые адресую эксклюзивно для вас и конечно же вы можете посмотреть что происходит реально войти какими технологиями я пользуюсь реализации определенных проектов и какие собственно задачи я решаю какие советы могу вам передать от себя индивидуально все друзья по подписке на телеграм-канал но что же мы двигаемся дальше к нашему интервью да да да интервенты в интервью все любят технический интервью на нашем

    00:00:40 - 00:01:39

  • канале и сегодня тот самый долгожданный день после перерыва но сегодня у нас особенный гость ведь гранж его не придет в один в один это бывший мой ученик с ними у учился в одной школе да да да это не значит что мы сидели за одной партой я был его преподавателем или ментолом или все вместе он был тем самым study рам который пришел в школу компьютерных технологий конечно же и решил набраться там знаний и опыта и вот сегодня мы посмотрим каким образом ему это удалось достигли высот и так ли он крут после

    00:01:10 - 00:02:17

  • того момента от того момента точнее когда он стартанул и где он сейчас находится перед тем как мы двинемся дальше хочется сразу рассказать вкратце что здесь будет много говорим исключительно про jar поскольку вадим только джаву прошел только java core пока что разумеется мы не будем затрагивать не базы данных не и spring ведь это было бы несправедливо зачем пытать человек в правоте технологии или пройти нюансы которых еще нет поэтому здесь мы полностью этот час углубимся исключительно в джаву поговорим о

    00:01:43 - 00:02:44

  • насущных вопросах поговорим о распространенных вопросов поговорим о вопросах с подковыркой или с какими-то нюансами и все друзья в этом видео если ты сюда дошел значит ты хочешь посмотреть те вопросы которые задаются на реальных собеседник поэтому погнали в нашем мог интервью а один привет приветствую тебя на интервью расскажи немножко о себе как ты к нам попал в принципе и куда кучу java почему jab чего не другой язык программеры газу другим я из одессы я попал в java грубо говоря из за того что у меня душа

    00:02:14 - 00:03:31

  • лежала всегда вот программированию и языкам программирования просто этого долгое время не понимал занимался какими-то своими проекте коми мелкими вот некоторые даже были довольно успешными но это все было на уровне хобби и в какой-то момент буквально в конце прошлого года стал вопрос уже сменить профессию и я решил как это называется свернуться стал с вечерам захотел стать точнее с вечером и решил пойти на курсы получить уже специальность то есть свое баловство там и хобби перекинуть уже во что-то

    00:02:56 - 00:04:12

  • серьезное чтобы я мог заниматься тем что мне нравится и выбрал java почему java ну дело в том что я работал с языком сишарп java похоже на сишарп это скажем такси подобные языки насколько мне известно и мне показалось что это будет для меня не слишком тяжело переключиться сишарпа допустим на java харбо мне тоже очень не сильно так уж с ним разбирался и как раз подумаю будет стимул выучиться научиться и я поступил на курс школу или это не реклама когда и собственно говоря там не было никакого курсов пасе шар я задумался сначала

    00:03:33 - 00:05:11

  • все-таки путина сишарпа там не оказалось и поступил на java первый базовый уровень вот я начале зимы в конце осени начале зимы и поступил закончим я вот буквально в 20-м году почти накануне потом у меня была пауза я ждал следующего курса и вот попал на следующий курс к тебе я пока получено его закончил как это можно сказать в июне окей а расскажи про проекты ты упомянул что есть какие-то проекты ты что-то слова о чем они были будут снова ну например брать еще такое какое то совсем древние если это

    00:04:23 - 00:06:00

  • еще будучи студентом я занимался созданием модификации к играм то есть я там брал какие-то небольшие моды делал на основании тех средств которые предоставляло допустим конкретно карта iq игрушка там тот же например warcraft 3 может кто-то кто помнит из старичков там были карты вот и я делал свои там карты некоторые там был такой язык программирования blizzard назывался джаз не знаю даже какой-то процедурный язык или нет сейчас даже не вспомню и не вникал в эту тему на тот момент я делал карты играли с ребятами было весело там

    00:05:11 - 00:06:32

  • люди говорили мои друзья типа давай чё ты куда ты куда-то не туда пошел учиться вот твоего я тогда дело молодое а потом со временем чуть чуть более серьезные проекты пошли уже связаны это же на модификациях к игре у меня был проект для игры gta san andreas я держал сервер около где-то четыре года я выдержал там был другой язык программирования назывался сам глава на нем писал всем клиент-сервер мой клиент серверная часть под этот сервер и он в принципе не считается ввп языком и получается сложилась такая история что

    00:05:52 - 00:07:25

  • несколько лет я делал сервер грамм с дил там кучу года нагромоздили такую архитектуру которую но трудно уже было расширять поддерживать со временем начал понимать что меня жизнь просто ведет к объекту ориентированным языкам и начать чтобы с этим разбираться и на этом проекте я познакомился зато с клиент-серверной частью с языком 2 углубился со временем еще с шарпом чуть-чуть начал заниматься но это чисто десктопные какие предложения простенькие там таком духе но в satrip большой опыт не каешься и я вот

    00:06:38 - 00:07:53

  • даже если рассказывает о своем опыте с играми когда-то была очень популярная игра lineage 2 там тоже на джаве очень много черт залазь поэтому это классный опыт мне кажется которые несомненно можно легко уложить в любой усилий резюме и указываю иначе ты уже что-то программировал какие-то были попытки мне вполне успешно 34 года сервер целый держал поддерживал им пользовались знаете ты милая но смысл здорово хорошо ну давай проверим jal как жало после обучения на курсах и разумеется тут мы с тобой выйти что хорошо что плохо что

    00:07:15 - 00:08:39

  • надо подтягивать что нужно просто полировать мы как обычно с лицом пойдем спазм вопросов и начнем с объектно-ориентированного программирования более сколько раз он упомянул скажи пожалуйста что такое о п и какая его основная идея ну аббревиатура говорит сама за себя объектно-ориентированное программирование концептуально и на а парадигма программирование очень отличается от процедурного стиля основная но основной принцип здесь начнем принципов несколько в этом в этом в этой парадигмы программирования но как по мне

    00:07:57 - 00:09:24

  • если своими словами сказать да объектно-ориентированное программирование это именно про взаимодействия в программе объектов между собой то есть классов и объектов между собой с помощью трех основных парадигм них правда 4 сейчас не которые выделяются диморфизм и наследование то есть а4 но это не совсем парадигмы это принципы или снились даже не принципе столпы но правильным четыре какой там есть 4 но сейчас стали выделять активную абстракцию [музыка] но так и начала есть другое дело она держится то ли обобщенно то ли рядом с

    00:08:41 - 00:10:15

  • ними и то ли отстранено но данный есть хорошо давай поговорим более детально об этих стал по март не описать в чем и деле инкапсуляции но основная идея инкапсуляции заключается в том чтобы сохранить определенную реализацию [музыка] скрыть информацию о каких-то деталях не нужны для внешнего вмешательства я бы здесь привел аналогию с автомобилем опять-таки у нас есть двигатель мы не должны были знать какие то детали без надобности в объектно-ориентированном программировании инкапсуляция реализовано за счет вот

    00:09:32 - 00:10:55

  • модификаторов доступа с помощью этих модификаторов доступа собственно говоря и скрывается какая-то реализация программы которая мне нужна для того чтобы ей просто не навредить внешне ромашки назвать в чем основное различие модификаторов доступа и как правило это и протектор основное различие но со мной различие чисто protect это в том что он доступен в классах наследников концепция в том что они видны внутри пакета вот одно но говоря про protected вот именно класс наследник еще может обращаться к членам

    00:10:13 - 00:11:33

  • продукта членом класса окей окей а что вообще как пакет что значит изолированные в пакете или protected для пакета что это собой подразумеваю но это подразумевает то что определенные классы находятся внутри определенная так сказать иерархии под названием пакет то есть вроде директории папки где видимость находится внутри вот смотрите себя вопрос с подвохом мы привыкли к тому что когда мы что-то им изолируем или инкапсулируем в пределах одной зоны мы подрезаю что эта зона включает себя все что находится в ней

    00:10:54 - 00:12:18

  • этот вопрос представим себе у нас есть пакет и внутри этого пакета есть еще один пакет вложенный собственно во вложенном пакете находятся классы он является про его будет ли этот класс доступен в пакете родительского или только в своем ну то есть если в одном пакете кисти еще один вложенный пакет ложе нам пакете находится какой-то класс то он должен быть видим только в пределах вот именно своего букета вроде а в родительском небо и я правильно по родительском не будет здорово правильно это правильно окей давай тогда поговорим

    00:11:40 - 00:12:58

  • про наследование но и капсюля с понятно мы закрываем какую-то ре зация чтобы детали было поменьше чтобы это все нас как разработчиков не смущало и мы поменьше ты там слуга но о чем выражается наследования зачем она нам нужна собственно говоря но следование выражаются в том что определенный класс является дочерним для относительно своего родителя иначе говоря он наследуется этого класса и при этом он сохраняют определенные свойства определенное поведение общая для этих двух классов благодаря не строится иерархия классов

    00:12:19 - 00:13:44

  • хорошо здорово нам часто я слышу что говорят наследование плохая штука и лучше избегать как ты считаешь какие есть альтернативы наследуют ну альтернативно скорее всего состоит в полиморфизмы для наследования не совсем не совсем тебе на мигать что-то на мысль выражение ассоциации или более детальная этого замка композиция да да да намекает ассоциация это получается как такой принцип [музыка] как он правильно звучит если я не ошибаюсь есть у нас принцип из их и имеет то есть сайтов как раз про имеет

    00:13:06 - 00:15:03

  • отношение основная мысль в ассоциации идей уточним ассоциации заключается в том что у нас есть два частных случаев ассоциации композиция агрегация вот вот эти вот две части говорят нам о том что это является как бы составной частью класса то есть как бы пульт под объектом да абсолютно проект с отметки классно выражение я владею я использую да да окей тогда здесь вопрос такой провокационный но коль ты вспомнил про агрегацию композицию как частный вид ассоциации что относятся к я владею что относятся к я использую агрегация или

    00:14:05 - 00:15:53

  • композицию то есть роста все на местах насколько мне известно композиция на являются более таким строгим случаем плане ассоциации то есть она скорее всего вот именно я владею получается агрегация наоборот формы она может немножко быть обособленно от основного класса скажем как сам этот объект или класс абсолютно верное лучше и не скажешь тогда вот здесь опять возвращаясь к предыдущему вопросу наследования или композиция почему своей точки зрения если можешь обосновать или объяснить композицию чаще рекомендуют

    00:14:58 - 00:16:21

  • использовать чем на слева ну мне кажется все таки композиция в этом плане несколько гибче будет то есть если у нас объект есть как бы внутри класса так как он является частью этого класса то мы можем ну имеем как больше методов возможности им управлять а если мы говорим про наследование это у нас как то более ограничена идет функциональность вот программе не сильно можем отступать от родителя в этом плане мы можем закидывать новые методы но в целом твоя идея правильно то есть ты говоришь о том что наследование больше

    00:15:42 - 00:17:05

  • ориентирована на потребление то что предоставляет родитель и по сути формирование какой-то иерархии то же время композиция это от слова compal стали собирать то есть мы собираем много готовых объектов или каких-то абстракции для использования их вместе в одном соответствующем классе либо как можем угодно в интерфейсе контракт zara мне нравятся твои ответы давай тогда двинемся дальше поговорим про принципы ооп и дизайна слышал ли ты что-то про соль и да но но расскажи-ка выбери одну люблю которая тебе больше нравится и расскажи

    00:16:24 - 00:17:43

  • про не ну допустим мне нравится принцип разделения интерфейсов скорее всего честно говоря потому что я больше может понимаю этот принцип буковка вайда интерфейсе грядущем принципу просто основная идея этого принципа обстоит в том чтобы мы не при разработке программы не нагромождали наш наш интерфейс лишними какими-то методами то есть мы должны разделять эти интерфейсы если у нас допустим есть примеру какой-то интерфейс днем будет ни один метод а там три скажем в нашем классе нам необходим допустим только

    00:17:04 - 00:18:26

  • один ну пусть даже 2 to 3 становится как бы третьим лишним и у нас нарушаются вот этот самый принцип то есть для этого выхода разделять интерфейс и продумывать программу так чтобы ну каждый класс не обременял себя какими-то лишними ненужными действиями вот супер отлично отлично сказано и тут меня есть пример по этому поводу представим себе у тебя есть класс менеджер у него есть два метода никлас интерфейс у него есть два метра управлять и увольнять кем-то он управляет кого-то он увальни соответственно этот интерфейс кем-то

    00:17:44 - 00:19:07

  • реализуется и только нас появляется менеджер соответственно один у которого есть только действие управлять а у другого менеджера и действие управлять и увольнять одновременно вот как бы ты поступил бы в этом случае создал бы один громоздкий интерфейс создал бы несколько интерфейсов как бы в моем варианте решение у скорее всего я бы разделил на 2 интерфейса разных то есть управлять и увольнять отдельно и реализовывал бы своими классами какой мне нужен если допустим у меня класс может оправдать угольной том как бы соответственно мы

    00:18:26 - 00:19:46

  • реализовываем два интерфейса там где только одно действие делаем реализации одного супер а представимся другую ситуацию интерфейс который состоит из пяти методов это тот же менеджер у него каких-то пять методов но вроде как бы много очень не будем выдумывать какие-то методы просто их 5 и вот у тебя есть два менеджера у которых ответственно 5 вот этих самых методов подлежат реализации будешь ли вот и в этом случае разделять интерфейс или оставившего монолитным из пяти это вкусная то что вроде как бы он

    00:19:06 - 00:20:18

  • большой и 5 методов это не так уж мало у нас есть класс которым каких-то методов вопрос прояснить ещё насильственная есть интерфейс у него есть пять методов есть два класса которые будут его реализовывать и соответственно этим двум классам все эти методы будут нужны то есть мы точно знаем что двум классам и реализующим интерфейсе методу все пять методов понадобится но меня смущает сама идея да то есть почему бы не разделить этот интерфейс на два маленьких вдруг в будущем учета понадобится и будет

    00:19:42 - 00:20:51

  • менеджер как и задача номер один но это какая то далекое будущее может быть даже не про не прояснится на состоится этот вопрос себе соответственно будешь ли ты держать вот этот крупный интерфейс из 5 методов крупный но все-таки 1 или будешь разделять на несколько подразумевая то что в будущем вероятно а может и нет что-то изменится вопрос наверное с подвохом но я отвечу как бы вот я чисто бы сделал снова из москвы в этом логике если у нас интерфейс и спиде методов это как бы уже довольно в принципе громоздко звучит с

    00:20:16 - 00:21:30

  • одной стороны с другой стороны есть понятия баланса какого-то при разработке то есть там можно без фанатизма относиться к таким вещам допустим параллельно приведу пример если у нас есть допустим какой-то метод который будет работать у нас пользователем и там будут методы удалить там добавить но относятся все базе данных мы будем там разделять на 25 интерфейсов образно говоря каждый метод то это будет уже считаться вот как раз вот этим вот нарушением баланса как как грится фанатизма и взять эту ситуацию но здесь

    00:20:53 - 00:22:08

  • примерно вот что-то такая же ситуация вырисовывается с одной стороны нам не надо вроде бы ничего менять но 5 методов слишком наверное многое что-то можно было бы разделить хотят какой-то логики разделением так как таковой сейчас может и нет по какому принципу делить этот интерфейс по поводу баланса очень классно сказано никто еще мне так никогда не отвечал и тут я с тобой соглашусь единственная быта вот что я бы скорее сходил бы из нужд самого интерфейса и те кто тех объектов или доменов которые будут его реализовывать

    00:21:31 - 00:22:45

  • потому что если точно знаешь что интерфейс нужен именно в таком виде и не будет никаких менеджеров отыскать обрезала лесу разным функционалом то в целом можно оставить эти пять методов почему нет если мы посмотрим в разнообразные интерфейсы допустим тот же самый джипа репозитории целой обрастания методов которые подлежат реализации и никто это не зря потому что они всегда мужчины и они всегда будут необходимы для работы с базой данных соответственно также здесь если мы точно знаем что никакой задачи в ближайшем будущем или в

    00:22:08 - 00:23:17

  • целом никогда и не будет а там остается урезанный менеджер в принципе и это разделение сегрегация оно и не нужно если мы точно уже сейчас видим что появится другая сущность которая будет отображать урезанный формат допустим не 5 методов а два то почему бы сразу заранее по сути мы отталкиваемся от требований заказчика то что он действительно хочет как это будет развиваться в будущем но все предугадать нельзя но то как ответил вполне себе соответствует этой модели круто давай поговорим еще отобрал папаверин про

    00:22:42 - 00:23:52

  • шаблоны проектирования можешь назвать мне 3 шаблона проектирования который стоит точки зрения все больше нравится да только когда речь идет в вроде бы и знаю там десяточку и больше даже сталкиваться сейчас тяжело подобрать ну ладно в принципе мне нравится паттерн адаптер применял и [музыка] про суть его надо рассказать просто ехать а то просто назови 3 а я потом выберу из этого все что-нибудь расскажи но часто используется до фабричный метод понятно он самый простой этом как я уже сказал адаптер есть класс и класс прошу

    00:23:17 - 00:24:46

  • прощения паттерн наблюдатель который основывается на механизм обратного вызова так сказал подписчик и да окей хорошо давай поговорим про адаптер чем его слона или но основная идея как ни парадоксально бы но она похожа на из реальной жизни то есть у нас есть какой-то интерфейс так называемый адаптер который адаптирует другой интерфейс ну то есть он адаптирует два несовместимых интерфейс то есть у нас не может работать допустим программа с каким-то конкретным функционалом реализованы посредством интерфейса мы создаем еще один интерфейс

    00:24:04 - 00:25:43

  • называем его там как-то адаптер вот и с помощью манипуляции мы возвращаем там объект уже нужного нам интерфейса и соответственно выполняем необходимые нам действию а может привести какой-то пример или жизни из программирования не обязательно приводите так кода вы просто вот так вот реальный пример но реальный пример более такой действительно реальный пример это вот мобильной разработки часто на платформе например android ну используется этот паттерн потому как там нужно приводить объекты создавать специальный список объектов и

    00:24:56 - 00:26:21

  • с помощью адаптера его выводить на визуальный элемент визуального интерфейса я-то реализовано с помощью потока хорошо а как это адаптация там происходит я не технически хорошо а вот в чем сама идея то есть какой то объект и он он и в африке объекты в чем заключается смысл адаптации но если вот простой вариант реализации до пустим том же вот андроиде там немножко посложнее это реализовано внутренне не скажу как просто и вот используется на реализацию то там у нас должно быть два интерфейса и вот этот интерфейс

    00:25:39 - 00:27:12

  • адаптер мы грубо говоря передаем необходимый нам интерфейс несовместимый а на выходе мы возвращаем совместимый интерфейс роли работаем как то так я бы ещё мог бы привести себя более приземленный пример это китайская или американская розетка и а земная европейского образца покупаем переходник приз адаптируем одного другому надзора на самом деле круто слушай ну вот мы и прошли с pvp можем двигаться плавно и справа типа говорит здесь про такую самую крутую тему с тренинг пол можешь сказать что наш

    00:26:28 - 00:27:46

  • string bool зачем он нужен да могу сказать том что string bool это специальная область памяти в которой хранятся у нас экземпляры строк вот собственно говоря в момент создания строки там в этом стрим пули создается строчки и следующий раз при обращении у нас у нас проверяется если такая строка в этом стрим пуля ступни не создавать заново мы ее оттуда получаю милана как в целях оптимизации более быстрого доступа мой особенности вообще самого string arizona arizona а скажи пожалуйста вот эта область памяти стамбула она

    00:27:07 - 00:28:52

  • находится в хиппи или в стык нет она находится в тебе тогда другой вопрос в чем различие когда мы пишем нее string или просто пишем string через двойные кавычки и ведь многие думают действительности что это одно и то же просто двойные кавычки без нее string конструктора это сокращенная форма ученых различия можно охарактеризовать так ну различия в том насколько мне известно когда мы создаем через new мы назначена создаем объект не встретишь ни как бы параллельно может создасться может взяться если мы просто через двойные кавычки

    00:28:01 - 00:29:42

  • трубку то объект не создается при этом то есть он берется чистое стрим было на самом деле не совсем так он и создается и берется то есть если что-то string пули есть через двойные кавычки он опада вернет ссылку на него ой с а если его нет он просто создаст но если быть совсем точным разница между оказываемой сокращенной формы и через конструкторов вызова оператора не в том что оператор new всегда создает новый участок в случайной памяти теперь когда мы не используем оператор него просто двойные кавычки и пишем эта строчка это

    00:28:54 - 00:30:14

  • явный указа это я наука занят жильем java virtual machine что пожалуйста идеи не только не просто архив а специализирован область string а то есть по сути это такое дентифик от окей хорошо давайте поговорим про такие интересные вещи stringbuilder и тренинг вообще между ними ружичка различия я знаю одно точно различия это в том что стрельба фер у нас рассчитана работал многопоточной среде то есть там все методы ключевые они синхронизированы возможно даже все синхронизированы точно не знаю но основное различие именно как раз в этом

    00:29:34 - 00:31:05

  • надо единственная на габба . другое для обычной работы и понятно что 2 медленно окей это давний вопрос зачем нам нужен stringbuilder или стрельба но как бы вроде из моей практике очень часто вполне себе достаточно обойтись обычной строкой и операциями конкатенации которые она предоставляет этого вполне ну как мы знаем у нас не строки у нас объект ньюта болтон неизменяемый если мы будем конкатенировать огромное количество строк то будет просто забивается память оперативная и соответственно мы просто

    00:30:21 - 00:31:50

  • нагружаем бесполезным количеством там объектов нашу память stringbuilder решают эту проблему запросто благодаря даже паттерну своему внутреннему вам просто на основании своего одного экземпляра объекта он себе выстраивается строчку с помощью метода append таким образом мы спокойно можем оптимально получать строку огромного этому размеру окей а разве не только вы под капотом происходит но в методе а по сути же мы берем строчку и добавляем к строчке а просто к чему когда мы вызываем метод append если мы туда передаем строчку или

    00:31:05 - 00:32:31

  • она нового и даже если еще не поздно мы все равно говорим джиллиан сначала создай этот экземпляр строки потом перед а его пожалуйста в метод append и потом а вот чему-то присоедини так все же что там такое под капотом что делает нам выигрышные использование stringbuilder а когда мы складываем очень много строчек между собой противовес конкатенации стандартный да хороший вопрос начинка именно самого stringbuilder а [музыка] собственно говоря не the top and подскажу меня скорее интересует что там

    00:31:48 - 00:33:11

  • внутри stringbuilder а как строка формируется одна большая строка или она хранится в каком-то другом пись ну возможно я ошибаюсь но она [музыка] этот вопрос и я наверное не смогу аки ты правда ответил про конкатенацию stringbuilder через append это лучше чем компетенции через символ равно это правда а двух словах у stringbuilder а под капотом находится массив пальчиков но соответственно массив символов если более точно или приводя экстра к подобным типом или символа подобным типом соответственно он

    00:32:36 - 00:34:11

  • это складывает в массив и потом уже массив финальные конвертируется как у но главное преимущество в том что мы не создаем а промежуточных строк так называемых intermediate string которые нам просто не нужны которые в процессе конкатенации появляются загромождают память разумеется и все это влияет на производительность как программа сама работает но плюс расходование получил легко выйти за ее пределы ну как бы вполне начал точно хорошо саму идею ты уловил о том как детали это можно подтянуть тут мы поговорили ост-индии хотелось бы

    00:33:27 - 00:34:40

  • поговорить о таком выражении boxing n box она же называется упаковка авто упаковка можно сказать в чем идея ну опять-таки насколько мне известно авто упаковка его просто распаковка они связаны конкретно с классами обертками у нас есть примитивные типы данных есть над ними обертки то есть ссылочные объекты внутри класса которые с помощью которых можно примитив привести в ссылочный виде объекта и процесс когда мы оборачиваем наш примитив класс обертку называются авто упаковка и обратный процесс просто

    00:34:02 - 00:35:34

  • распаковка супер а представим себе мне вполне зашло представим себе ситуацию у нас есть тип данных бань и его переменная просто обычная переменная представлена в виде примитивного типа да и тут у нас есть метод с типом данных параметрами типа данных short но шорт в то же время является классом обертка то есть это уже объект на бокс пишется с большой буквы мы знаем что байт он уже чуть шорт и как бы по логике если мы передаём байт примитивный в качестве параметра который выглядит как short объект все должны быть ok но

    00:34:50 - 00:36:27

  • тут меня вопрос как будет на самом деле будет ли ошибка компиляции будет ли какая-нибудь ошибка во время выполнения программы или будет все окей и java автоматически конвертирует байт шорт и этот вызов будет валить то есть у нас есть параметры объект обертка сорт внутри метода у нас есть байт не совсем у нас есть метод который качестве параметров принимает оберт шорт и представимся где-то в каком-то методе мы делаем вызов собственно этого американцы и передаем туда параметр который явно является типом данных байк примитивных

    00:35:40 - 00:37:10

  • вопрос подвохом ну не знаю казалось бы должна сработать по идее авт упаковка то есть у нас шортами больше диапазон и вполне в него укладывается и если мы будем передавать примитив байт то произойдет of the boxing компиляции не будет на самом деле будет ошибка компиляция потому что авто упаковка обычное значение которые не являются константами если у них тип данных разница но то есть байки шорты то разницы по данным авто упаковка не сработает с другой стороны этого видно то что ты назвал если у нас

    00:36:26 - 00:37:53

  • есть примитивная константа и в этом случае как раз до сперва сама java живем она привезет соответствующему типу обрежьте если его наверно просто python входит я послушал разумеется и сама сделает упаковку какие надо но это только касается конца не но в целом в целом все было но мне нравится понимание этого это хорошо давай поговорим уж заговорили за классы обертки зачем еще класса обертки нужны если отбросить идею упаковки и распаковки уже разобрались зачем это надо ну а все-таки не только же ради

    00:37:13 - 00:38:33

  • этого она походу создавалась какие поймать моя первая мысль самое главное конечно же работа с коллекциями то есть у нас есть generique коллекциях используется ими именно благодаря этому то что generique не могут работать с примитивами мы пользуемся классами обертками смотрели только на наши налоги примитивов видеообзор дак вот скорее всего это самое главное предназначение одна из согласен 1 ай да еще нашла тебе она была мигает эта мысль ну то что класса бортко это не считается объектом не может возвращать значение но возможно

    00:37:53 - 00:39:22

  • нам надо где-то с этим будет работать правильно и замечали это просто приводит примитивные типа данных в объектно-ориентированный формат мы можем работать стремись его никак с объектом если в этом есть необходимость ведь на самом деле класса обертки внутри содержит ряд методов и тут хотелось бы еще про класс обертки поговорить они ему там пины или все-таки ему так вот именно класса обертки ему так то есть они неизменяемые значит что мы не можем изменить сам глаз ну там его унаследовать или здесь речь

    00:38:39 - 00:40:00

  • идет про инициализацию самого объекта и проведения ссылке к этому объекту или работа с этой ссылкой как ты washed объяснить [музыка] им сама ссылка остается неизменяемой соответственно все значения которое мы имеем они тоже их не запоминают ну правим то есть один объект одна ссылка если создаем новый объект на основании существующего соответственно абсолютно другой объект мы уже порождаемого ну посмотри этот еще раз так и да еще раз углубляемся до поговорим прав имею это был класс с точки зрения архитектуры что

    00:39:22 - 00:40:45

  • нам нужно сделать для того чтобы создать ему табель не кластера джаве о чем нам нужно побеспокоиться там наверно целый ряд таких требований есть из того чтобы я предпринял это во-первых сделать конечно же класс финальном в первую очередь все его поля которые используют объекты которые используют my youtube был объект их тоже сделать финальными и например не использовать цептор и точно чтобы нельзя было изменить значение поставить конечно же правит модификаторы и наверное присваивать значение в конструкции

    00:40:06 - 00:41:27

  • ну логично весемьдесят убираем как-то все ждала его установить если еще модификатор доступа правят а что по поводу гектаров гитарах мы будем возвращать то же самое значение которое имеем в качестве поле или что-либо другое мы узнаем поля нашу возвращают которые которые их значения которые они не изменяются собственно говоря они тут не тут то было нет не совсем так на самом деле мы возвращаем же выберем про ссылки как правило и и если в гитаре даже если мы напишем файнал уберемся с центры все равно же

    00:40:50 - 00:42:21

  • когда мы возвращаем из соответствующего метода значения возвращаются в значении ссылка разумеется нам нужно побеспокоиться о том чтобы guitar каждый раз возвращал новый объект пусть он возвращал не тот объект который мы реальных они а его копию проще говоря мы создаем новую ссылочку отдаем туда значение которое хранит текущий объект и таким образом безопасности но хорошо не вполне я вполне удовлетворен твоим ответом до поговорим про класс общем это вообще такая сами крутая тема расскажи просто какие методы в классе объекты ты знаешь

    00:41:35 - 00:42:50

  • возможно я знаю все методы ну может не сразу вспомнил жизненных самый простой этот ту string который представляет строковое представление нашего объекта такие методы для работы с многопоточность you define audi файл далее у нас методы конечно же всеми любимых и шпроты eagles если этот клоун есть метод файла из которой не рекомендуется к использованию get close ok но вполне достаточно я удовлетворю сися давай поговорим про самые крутые в методы о которых все всегда говорят ipples и хэш-код но здесь не интересует

    00:42:13 - 00:43:46

  • идея контракта в чем заключается смысл контракта между методами и класса хэш-код и вообще зачем это на ну контракт я сейчас так своими словами в том что ну во-первых если перри определяются эклз обязательно нужно переопределять и хэш-код то есть и наоборот а почему ну в основном это конечно связано у нас при работе с нашими всеми любимыми коллекциями хэш web site у нас могут возникнуть проблемы при корректной работе [музыка] сравнивать искать [музыка] структуре искать куда мы запишем этот объект у нас не корректно будет

    00:43:02 - 00:44:36

  • сравниваться эти объекты между собой и возникнет или коллизия или больше возникнуть проблема в том что объекты на самом деле будет являться равным имена и их программа интерпретируют как разные до на самом деле правда то есть любой и галсы хэш-код перу очередь намекает на то что это нужно при работе с коллекциями базирующемся на сша а как это вот обосновал бы это с точки зрения джаван то есть коллекция ты потом кошмар это всего лишь следствие но какая основная причина почему появился вот этот самый контракт может быть ты можешь

    00:43:51 - 00:45:12

  • его описать так как это java гласит я не говорю смыслить технический проект но зачем все так ну дело в том что могу помочь [музыка] весь к весь как правило когда мы переопределяем хэш потом и голос то всегда есть какие-то следствия то есть что происходит не в большей степени здесь это следствие основополагающая оно исходит из то есть не всегда нам нужен шпор на самом деле не класс используется гораздо чаще чем хэш-код но все таки вот когда мы переопределяем хэш-код почему так важно с какой уровень в чем самое сам смысл

    00:44:34 - 00:46:02

  • чем сама идея если даже отбросить коллекция чего так важно ещё и класс переопределить ну их был сложно переопределить из-за того что его стандартная реализация она бывает недостаточно для сравнение объектов отделяемое курс по этому самому контракту мы сравниваем поля то есть мы производим корректное сравнение объекта по его значением более как минимум ну учитывая рядом других сравнений вроде там ссылок приготовьтесь к тому типу поэтому и нам иногда уточнены же часто это нужно просто-напросто поэтому важно переопределять

    00:45:32 - 00:47:04

  • этих методы абсолютно верно потому что те свойства которые находятся в объекте нас но не хочет быть вычисляется и клиента есть 2 объекта однотипных в том числе на основании этих же свойствами по регулируется хэш-код абсолютно верно так же было бы не лишним отметить тот факт что даже в самой джаве написано что когда переплелись хэш-код необходимо перебрать николс и почему само жало это или разработчики java это за бред потому что когда объекты эквивалентны между собой через ментов и класса не всегда

    00:46:18 - 00:47:27

  • должны возвращать соответственно одинаковый хэш-код там есть исключения но тем не менее кстати этого же прочитать в самом методе к описанию методах обкакалась оптика в их официальные доки но кто как ты ответил я думаю что мы с объектом закончили но вполне я он повел это описал давай поговорим про коллекции коль мы уже затронули коллекцию коллекция расскажи пожалуйста про иерархию коллекции я не говорю про конкретная реализация а просто и архи интерфейс в калачик райвак так ну во главе всех колец и у нас

    00:46:53 - 00:48:13

  • интерфейс у нас идет интерфейс collection от этого интерфейс у нас еще есть три интерфейса этого интерфейс лист интерфейс ide и интерфейс [музыка] отдельно силу своей специфики а почему о чем его специфика ну его специфика именно вы внутренней структуре то есть он использует иной подход скажем так получению хранению данных и сюда и это не укладывается в концепцию вот интерфейса collection нг-энерго летом тех либо стандартных итераций вот который производится на достойными коллекции отлично более чем резонов до

    00:47:36 - 00:49:16

  • поговорим про списке он же интерфейс лист мыши назвать две три основных и часто используемых по твоей опусти версии реализации но до две самые распространенные реализации это у нас released или как говорят динамический массив и linkit лист 4010 еще конечно но этот вес принципе хотели использовать ok но вполне достаточно давай поговорим о разнице между листом и ленте для стоп чем между ними базовый отлич ну базовое отличие в том что у нас коллекция released она хранит упорядоченную последовательность

    00:48:29 - 00:50:07

  • элементов которые могут храниться дубликаты которая который можно обращаться по индексам и кране значение самой структуре это обычный массив и соответственно благодаря этому у нас происходит быстрый доступ к элементам венки плести а там немножко другая история я звонил сходство тоже это можно обращаться по индексу прочие вещи но структуре это 2 связный список который хранит ссылки на предыдущие элементы следующий элемент у него есть быстрый доступ последнему первому элементу и собственно говоря ну там немножко

    00:49:21 - 00:50:51

  • сложнее допустим получить элемент по индексу это может вызвать очень долгий процесс но хорошо пока за сложность его выговорить спускалась что мы можем получить мгновенный доступ а в последнем и первому элементу валенки для стен но на самом деле в релиз темы тоже это можем сделать но морей листе как ты отметил это сделано за счет массива мы всегда знаем 1 индексы мы всегда имеем понимание о том как получить последний на то есть лет а минус 1 но тут у меня вопрос а в linked листья как устроена за

    00:50:09 - 00:51:20

  • счет чего мы можем получить мгновенный доступ к первому и последнему индекса с учетом того что индексация в ленте для стен это фэйк это всего лишь интерфейс но по сути индекс он искусствами как ты уже сказал массиве понятно как можем получить объекты последние первые блинги плести это устроено с помощью метода в специальных сами методы они просто ссылаются на более которое хранит себе значение первого и последнего элемента примеру летние новых элементов linkit лист у нас всегда как бы эти значения не

    00:50:45 - 00:52:07

  • ну используются в случае надобности они там обновляются вот поэтому мы всегда имеем [музыка] но тогда мне вопрос а что это за такие методы ведь если я напишу выражение лист string равно не улетит лист я буду огорчен но при работе с этим объектом у меня не будет методов get her ass калики класс или что-то в таком духе откуда все таки вот эта связь с первым последним элементом интерфейса ленте лист если я не ошибаюсь возможно это связано с интерфейсом лист император возможно я ошибаюсь не совсем это не

    00:51:25 - 00:52:57

  • брали лист оператора это пророчит там находится в основании rinker листа находится двухстороннюю очередь она называется back говорим здесь о прелести и скорости доступа к элементу и в том что мы строим линки для скажи пожалуйста вот у меня есть список из миллионов элементов мне необходимо получить доступ к элементу который находится строго посередине что будет эффективнее рейз или ли интерес но если нам нужно получить доступ к элементы элемент тут однозначная а почему это мы потому что структуре его массив массив

    00:52:14 - 00:53:43

  • по массиву с помощью массива как бы легко определить позицию элемента и достать а почему это плохо для ленте для ставить там же тоже выпав по сути передаю индекс метод же такой же get buy чушь тогда валенки для стекла как ты уже сказал там фейковый индексации сайта есть на самом деле каждый объект внутри в структуре indeed листа отзываются он ссылается на следующем и мы не можем никак получить данной структуре элемент если мы не будем путем перебора [музыка] двигаться к нужному нам индексу соответственно нам надо там середина

    00:53:06 - 00:54:35

  • венки плести индекс там 500 тысяч что мы будем 500000 до него так здорово а что если нам необходимо из середины удалителя my вот у нас все тот же список не и он элементов и элемент который ровно посередине что ты применишь релиз или [музыка] но с удалением здесь проще linkit лист в том что он просто бери запишет ссылки на моды у себя внутри под капотом случае с released нам придется избегать массив это очень таки будет тоже долго но можно так небольшая оговорка на самом деле я насколько знаю там достаточно все равно

    00:53:50 - 00:55:31

  • оптимизирована под капотом листа и практики вот большинство там 90 как мне говорили 90 процентов 90 90 процентов использовали все равно [музыка] но это правда но то есть так как тетрис это правда и правда то что релиз все-таки здесь хуже потому что нужно делать смещение при всех оптимизациях могут быть оленьки от листа заброс на перебрасывание ссылок неправда то что релиз чаще используется чем лично мне приходилось link list 1 5 использует за все подряд сказать да да да да да задача просто так стоят на самом деле но

    00:54:41 - 00:56:15

  • важно понимать что если возьмёмся перформансом каким-то и там это играет роль то вот это уже понимает нужно . хорошо мне нравится поговорим здесь про коллекции еще про такие два интересных вопроса есть знаменитое выражение файл hosts и его такой побратим брат файл сейф можешь описать в чем между ними разница с ним не встречался с такими понятиями может я знаю но оказывается и сам себе ситуацию поверим profiles представим себе ситуацию я работаю с коллекцией я и 3 русь по ней в цепи и тут я резко начинаю из коллекции удалять

    00:55:28 - 00:57:01

  • элементы коллекция от разрешит сделать или будет выброшено исключение то есть я выполняю method to remove но если мы будем через стандартную реализацию в каком-то цикле пробегаться там форм просто цикл for или там то у нас возникнет [музыка] точно название не помню есть конкурент слова там что то такое да да да точно канва 9x это и есть то самое dfl фас когда мы изменяем коллекцию в обход итератора то есть проще говоря мы работаем с оригиналом коллекциях и сразу же в процессе оперирование через m и

    00:56:18 - 00:57:44

  • начинаем удалять элементы то под капотом у коллекции есть счетчик этот счетчик изменяется от называемых модификаций аккаунта и разумеется следующий раз когда ты уже что-то попытаешься сделать на следующей итерации это все свалится потому что был один был один раз замечены изменить то есть это как бы считается плохо это determinate на когда мы работаем с коллекцией и сразу же тут начинаем ее урезать и вот другой вопрос может быть это тебе намекнула что за альтернатива братьям файл сейв-файл сайт возможно это

    00:57:04 - 00:58:25

  • возможность уделить безопасно удалить модифицировать коллекцию брать элемент во время runtime без опасения что у нас возникнет смотрите . да ну если горит то кто на самом деле не значит в том что вот это исключение но не выбрасываются смысл в том что во время интегрирования мы работаем не с оригиналом коллекция а сверху разумеется изменение налитую другой копии ни в коем случае никакого парад никакой здесь проблемы нам не создает хорошая накопит другая ссылка ну мне вполне нравится твой ответ хорошо давай поговорим с

    00:57:45 - 00:59:12

  • тобой еще про колец и конечно же мы не можем обойти интерфейс мы кто же сказал что у него другая структура давай поговорим с тобой про базовую реализацию еще раз расскажу просто почему так важно при работе с у объектов которые она хранит переопределять и клаус и школ важно это потому чтобы у нас правильно коллекциях и шмап вычисляла необходимую ячейку корзину bucket как она называется туда помещала наши ключ-значение окей это важно с точки зрения хэш-кода для то есть определение личинки методы красном важен так как если у нас

    00:58:28 - 01:00:01

  • возникнет коллизия вот тогда уже мы применяем нет отряхнул он сравнивает уже более детально скажем так как disappear отлично у меня такой провокационный вопрос в мире есть и ключ и значение что нам нужно а вернее и классе хэш-код нужен для ключа или для значения или сразу нужно и для ключа и значения период для тепла все хэш-код целом речь идет в основном про ключ то есть мы подключили для дамы что какой элемент помещаем и сравниваем это же объект ключа на иглу здесь как бы еще приоритет включениями

    00:59:17 - 01:00:46

  • на самом значение как значение просто лежит и все правильно абсолютно верно то есть мы же по ключу выбираем и по плечу вкладам разумеется он нас интересует мне нравится и еще один вопрос с подвохом какая скорость доступа к элементу в hd лучшие среднее и худший кошмар да чуть чуть подумать но вообще шмап это довольно быстрая коллекция сама по себе и здесь скорость доступа имеет нюансы потому как если мы допустим будем добавлять элемент то высчитать ключ это очень быстро и просто для если мы уже будем помещать значения в

    01:00:05 - 01:01:35

  • случае коллизии это уже у нас немножко сложность выполнения увеличивается и соответственно если мы будем получать элемент с помощью хэш-кода мы быстро находим ячейку в нашем массиве пакете и получения самого значения будет зависеть от таки о окей я понял что ты меньше удобно если быть более точным мы знаем что есть такое выражение как константное время доступа нужен мгновенное линейное время доступа логарифмическое время доступа и так далее так далее все что можно математически обосновать привести к

    01:00:56 - 01:02:14

  • скорости и тут у меня вопрос вот какое время доступа в лучшем случае к элементу по ключу в лучшее время доступа будет наверно константное [музыка] случае получается ok а средний есть тут место быть или все-таки тут либо константное либо линейно же блин ну тут конечно вот только вот эти два кофе на самом деле вот если бы это все было бы до java 8 так бы оно и был бы потому что джова исполнительно было и константное либо линейного смотри изменился существенно у него появилась не просто но до а3 но и

    01:01:38 - 01:03:09

  • когда достигает к лизе определенного порода соответственно надо трансформируется в 30 дает нам логарифмическую скорость доступа это явно быстрее чем линейный слаб логан соответственно появилась и средняя скорость и это шоу 8 есть он создал 8 массово используется тем более 17 появились как в это важен в проспект ну здорово в целом все как бы коки хорошо давай поговорим про другую тему которая называется и исключение то есть и любят исключением если фрукты работать расскажи просто мне про иерархию

    01:02:37 - 01:03:50

  • исключений на какие основные аспекты необходимо обращать внимание при разговоре об ираке я не говорю пересчитать мне все возможны исключения а вот основные аспекты которые точно должен знать любой разработчик работающие джаред исключения так мы однозначно нужно знать общую структуру иерархию точнее collection она в принципе довольно просто есть у нас верху иерархии класс сро google дальше идет эксепшен эксепшен и мы не рассматриваем обычно потому как он связан больше java виртуальной машиной тому же свои ошибки при нехватке памяти

    01:03:14 - 01:04:46

  • там каких-то других проблемах с многопоточности там переполнением стыка и так далее вот разработчик с ними не работает правила работы с action и класс эксепшен распределяется у нас ещё на 20 их важных момента на 2 2 группы нужно сказать есть у нас runtime exception class которые который является анчик эксепшен то есть непроверяемыми и все остальные которые люди на сутки от класса exception является чегт к сексу нами то есть проверяем вот это такие самые основные моменты в иерархии которые нужно знать

    01:04:02 - 01:05:25

  • ну а далее вуза детали окей здорово то есть абсолютно круг сказал есть исключение р-не exception г-н проблемы то есть мы на них не нагло мы не не властны а почему бы не мы не власти технически я могу с ними работать вот как ты думаешь почему р.р. мы что имеем возможности поработать но чаще всего мы этого не делаем как чем связан мой взгляд это чисто вот мое мнение что мы просто не можем никак их обработать ей не можем ни какие действия предпринять чтобы предотвратить допустим ошибки возможно это как-то связано с тем

    01:04:45 - 01:06:14

  • что нам oracle там говорит да там можете не работать с этим не лезть на телом checked исключения пожалуйста работаете я понял но вообще на самом деле правда ты сказал мы просто не знаем где это произойдет и ты можешь провести в любой строчки кода во время выполнения программы поэтому мы просто не властно окей поговорим про исключение проверяемые и непроверяемые в чем различие между двумя этими видами до главные различия там в том что он чекнет исключения позволяют нам их не обрабатывать во время компиляции

    01:05:31 - 01:06:51

  • то есть мы можем их проигнорировать у нас возникнет бран таймингом исполнение программы какой-то эксепшен мы его слове мы потом будем думать что как мы сделали не так вот чек чек от исключения это исключение которое но не дает нам возможности компилятор просто не дает нам возможности проигнорировать их и никак не обработать окей хорошо тогда просеем тогда какие есть возможности обработки проверяемых исключению какие способы джалла предоставляют мол два способа первый такой ленивый способ пробросить куда-то выше

    01:06:12 - 01:07:42

  • исключения передать дальше но g-100 круизов и второй способ это уже обработать его с помощью драки и предпринять необходимые действия меры супер мне нравится а подскажи пожалуйста вот тройнич что это такое и зачем он нам нужен но то что мы подразумеваем 2 течь под обработку нутра кечид специальный блок механизм java которые позволяют нам собственно обработайте подключения и сообщить себя разработчику и другим разработчикам что вот возникла какая-то ошибка в работе программы мы можем там указать сообщение

    01:06:57 - 01:08:28

  • проинформировать источники этой ошибки девяностом было уровнем выше возможно по словам цель такой супер очень скажет подскажи вот игорь строй печь а можно ли написать трой но без течь насколько я знаю компилятор не даст возможности написать течь не написали течи проигнорировать на че по нижней а знаешь ли какие то есть вообще разнообразные формы как можно писать strike печь то можно добавить лог файл или потери речь поэтому как вариант можно logitech указать семейства section of если у них там одна игра идет один

    01:07:46 - 01:09:24

  • родитель вам не обязательно указывать там какие-то подробные эксепшен случаев в ряде случаев все равно это нужно делать а могу ли я просто написать про и файл или и выброси стечь проверял знаю я знаю массу вот точно что печь всегда но обязательно нужно указывать то есть это как требованию такое неофициальное может официально разработчики практикой возможно все таки можно обеспечить бог на самом деле мы можем писать про и кич файл или важен цвет пролететь и мы можем стать прайм файл или таким образом

    01:08:39 - 01:10:04

  • можем исключить стечь но тогда буквально ли тоже высокий и здесь последний вопрос расскажу в чем такая важность стектрейсы исключение мог поступить рельсу можно определить контекст ошибки [музыка] производить дебаггинга конкретных мест программе то есть нам даже больше деталей больше подробностей после зацепок какой-то ошибки iq собственно говоря для того чтобы вот и т.д. сори перебил то я мне просто очень интересно ты сказал такую тему контекст ошибки что ты куда знаешь по контекстом ошибки я как правило я я считаю что контекст

    01:09:26 - 01:11:01

  • ошибки это собственно говоря вся информация которая у нас выводится и когда у нас указывается ты багере какой строчки возникла ошибка название экшена какие-то там дополнительные параметры цепочка вызовов которых он просто больше может быть 12 ok супер это классная практически ни разу не слышал такого шикарного это про исключения респект и теперь следующие вопросы давай поговорим с тобой про соответственно всеми любимую долгожданную многопоточности можешь просто в рамках многопоточности описать такой принцип абсолют или up and be for

    01:10:19 - 01:11:56

  • он называется этом бихар или с by far cray на русском языке произошло до соответственно как ты можешь этот принцип описать ну в моем понимании этот принцип говорит нам о том что какой-то общий ресурс какой-то поток обратился к общему ресурсу и когда обращаются идет обращение 2 потока то этот ресурс может измениться и говорят что первый поток второй поток возможно я немножко заблуждаюсь в этом термине но на самом деле со выражаться более точно смысл заключается в том что буквально то что происходит да должно

    01:11:09 - 01:12:50

  • быть известно тому что пройдет пост в проще говоря события гони к должно всегда оставлять след для события об этом что произошло событие ну и соответственно события а не может быть раньше чем события b то есть по сути это последовательность ну здорово поговорим с тобой еще про штуку как consistent ность и от омар ность вот как ты подразумеваешь эти два выражения ну адамар ность это у нас если ваш не сильно привязывайся если машина своих словах делай не принципиально вот такими крутыми выражениях оперирует консистенция

    01:12:02 - 01:13:22

  • формальность просто попытаюсь описать если знаешь что это такое ну я просто знаю у нас многопоточной библиотеки в пакете есть специальные классы для работы вот которые считаются атомарных бульон и они позволяют нам обращаются как бы к общему ресурсу без он-то синхронизировано к нему обращаться и получать результаты этой переменной допустим изменять ее сейф 3 скажем так потока безопасно и возможно это связано с тем что атомарной стопы и какой-то потока безопасный потокобезопасность ибо я что-то специально возможная а как ты видишь вот

    01:12:53 - 01:14:42

  • эту потокобезопасность вот кто точнее вот что ты вкладываешь в идею потока безопасной среды но именно складываю тот момент что когда у нас потоки обращаются к чему ресурсу мы должны быть уверены что у нас не будет каких-то непредсказуемых там значение возникать то есть потом окей снять значение единственные потоки будут видеть это изменение корректный манипулировать кей согласен но резона но тут черт не хватает а представим себе ситуацию что что-то с чем-то конкурирует или что-то где-то внедряется проникает как угодно

    01:13:50 - 01:15:23

  • называть вот как бы ты описал бы эту проблему и вложил бы и в идею многопоточный выжил бы и в идею потокобезопасность если кто-то где-то не нравится то как говорится это называется настроить кондишн кто-то поток стремится изменить значение работает как известно непредсказуемо там есть специальные в операционной системе процессы которые им управляют и мы не можем предсказать это и данное поведение вот и называется раз кондишен то есть абсолютно правильно ответил единстве я тащил до что консистентная атомарный и так же ты

    01:14:38 - 01:16:13

  • отметил принцип видимости и все это как бы одно из стальной я составляющей того же самого принципа этом by far таким образом везде висели видимость и говорит о том что потока всегда свои действия выполняют и потом вы должен быть у них убит последовательность консистентной она же или последовательная констанции с говорит о том что все операции которые выполняются и оставляют после себя след так или иначе должны оставлять такой след который будет выстраиваться в последовательную цепочку ну то есть проще говоря когда потока из

    01:15:27 - 01:16:35

  • двойки делал пятерку разумеется поток bad должен из пятерки делать восьмерку не должно быть такого что и поток а и потом б работают двое из измененным значением разумеется атаман с это когда операция процессором выполняется неделимо полностью либо вообще не выполняется здорово давай поговорим еще об этом интересном понятие который называется д лог слышал да слышал это такое состояние когда у нас два потока захватывают монитор и при этом они одновременно ждут освобождения друг друга за руки у нас возникает этот d-блок а

    01:16:02 - 01:17:38

  • что такой монитор нож привести пример можно ли им как-то управлять ну прежде всего монитор это можно сказать механизм джами такой который является такой специальный объект только не в привычном смысле как объект специальный механизм монитор он присутствует у нас на объектах или на классу и с помощью этого монитора у нас потоки имеет доступ к этому объекту вот и могут его захватывать освобождали освобождать как ты понимаешь процесс захватить монитор что это под собой подразумевает какие-то последствия или

    01:16:50 - 01:18:32

  • какие-то плюшки добавляются в этот момент на брюшке добавляются в том плане что когда у нас поток захватывает монитор он может работать внутри определенного блока или в мельник блоки как правило у нас только вот такие и этот поток работает со всеми последовательно там данными методами вот любой другой поток при этом в это время не может попасть [музыка] тип монитора то есть 10 лет так захватывает монитор другие объекты ждут и нему окей этому нечего делать да проще говоря монитор обеспечивает нам

    01:17:47 - 01:19:19

  • последовательность доступа либо один поток работает другой туда не должен двигаться как раз то что мы обсуждали мгновение назад а подскажи вот такую вот ситуацию представим себе у тебя есть объект у него есть два метода один метод синхронизированный а другой метод не синхронизированы и представим себе поток номер один уже захватил монитора и он работает с синхронизированным методом этого объекта и тут вдруг поток номер два в это же самое время пытается поработает с этим же объектом но не синхронизированным

    01:18:36 - 01:19:53

  • методом запретит ли ему монитор это выполнить поставить лего очередь или все будет ok и два потока будет одновременно работать с разными методами ваш объект сколько я знаю монитором на объекте являют является сам объект то есть каким образом у нас если поток захватывает ну там второй метод первый метод работал при этом не может работать с не синхронизированы методом на самом деле нет может потому что в этом смысл синхронизация оно отмечается вот этими самыми словами синхрониста разумеется если даже тот же самый объект и его

    01:19:14 - 01:20:46

  • метод не синхронизирован а другой синхронизированным то синхронизация распространяется только на участке где есть синхронизированный метод или разумеется синхронизированы отсутствие синхронизации ведет к бесконтрольному доступа к объекту его методом соответствующими частями метода поэтому мы прошли писал выше оно допустимо хорошо но мы тут поговорили с тобой про синхронизированы блоки синхронизированные методы все здорово скажи пожалуйста если какие-то другие способы синхронизации особенно когда мы говорим

    01:20:03 - 01:21:23

  • про коллекции да есть собственно говоря они и называются синхронизаторы набор классов из пакета java конкуренции и есть потока безопасные коллекции есть возможность обернуть коллекцию стул коллекцию сделать из нее только безопасно вот такими способами в принципе можно синхронизироваться окей это тогда такой вопрос в старину в чем разница между r и листы и граница там вот только и заключается насколько мне известно именно в том что методы вектор коллекции они синхронности не рекомендуется к использованию ума

    01:20:43 - 01:22:15

  • считается устаревшей не я уверен что де блики и так но не рекомендуется использовать я это правда на ноги она не deep реке это правда многие называют эти пакеты но она не является таковой а в чем скажу о своей точки зрения проблема почему гробка мы отказались от вектора в пользу и реалиста но как бы идея понятна тот синхронизированный а этот не синхронизированы но тогда вы зря набросав чем же все таки проблем ну то есть вроде синхронизация то есть это же потока безопасности ведь круто это хорошо или нет да это круто но

    01:21:37 - 01:22:53

  • [музыка] именно средства которые которые с помощью которых он реализован вектор это по-моему просто синхронизированные методы стало с какой-то момент мне достаточно эффективно для того чтобы работать нога поточных среде и были созданы и многие синхронизаторы со временем и начали горы каф делать создавать новые коллекции как альтернативное решение там это работают эффективнее просто напросто ну и со временем она стала устаревший если более точно выражаться да но во первых синхронизация везде это абсурд

    01:22:15 - 01:23:36

  • потому что она требует ресурсов из представим себе у нас есть список который работает многопоточной среде из него просто все считывают и разумеется синхронизации говорит о том что даже считывание будет выполняться последовательно вместо того чтобы одновременно обращаться к его во всем значениям или по индексу и так далее то есть это уже накладывает производитель но понижение производительности ну и разумеется это идет в самую глубину этой проблемы что сами способы которые как ты скал используются для синхронизации вектора

    01:22:58 - 01:24:07

  • они более старые они ведут к понижению производительности есть уже более мягкие способы не блокирующие так называемые в новом пакете комками msi соответственно но и плюс мы используем многопоточный коллекции как на это надо они просто потому что она такая и по-другому быть не может вот и давай перейдем к последней теме поговорим про обобщение мы шли объяснить что такое обобщение они же generique что такое параметризирована тип и зачем он может собственно говоря об общении дженерики это и есть пара металлизированный тип то

    01:23:33 - 01:24:57

  • есть это специальный параметр который мы передаем с помощью угловых скобках даймон синтаксисом close метод боя вот и он решает ряд проблем ну вот две такие могу подчеркнуть ну во первых нам не нужно создавать кучу классов если мы хотим работать с разными типами данных можем ограничиться одним каким-то generic классом мне потом и спокойно работать оптимально используя и второй такой функция generic типов но это опять таки с этим связано с коллекциями мы успешно работаем с нашими всеми коллекциями из пакета

    01:24:15 - 01:26:07

  • этот вопрос generique могут работать с примитивными типами данных ну это мы с тобой говорили еще в начале что класса обертки у нас как раз таки и их предназначение одной из вот работать с коллекциями поэтому ответ нет коментируем нас никак не работает супер отлично ответственно хорошо давай про денники еще потолкуем представим себе ситуацию у меня есть класс у этого класса как-то уже сказал есть при помощи даймонд синтаксиса или изумрудного у него я определён какой-то всегда нахну неважно какой я хочу чтобы у

    01:25:12 - 01:26:39

  • возвращаемых типов данных из метода соответственных get устанавливался этот параметр что мне нужно сделать с учетом того что ты уже установил какой-то параметр на уровне всего класса то есть я хочу чтобы возвращаемый тип данных из метода get возвращал тот тип данных который я соответственно укажу в качестве параметров как это можно вызов или что для этого необходимо зад но нам нужно указать возвращаемый тип как темп сигнатуре методу гендер это получается у нас гендер будет ли комментариев были неважные

    01:25:55 - 01:27:21

  • соколе собственно говорит ун-т допустим или там какая буква кажется то есть наш тип так хорошо а представимся ситуацию вот тот же классу и вот эта буква т тот же параметры которые в основании этого класса был создан и если еще статический метод могу ли эту букву д переиспользовать статическое метод ну если он у нас находится более джин и речную но и даже нет жены лично в пределах класса то с единством спали мы не можем статическом контексте использовать такие поля saber мне не враг да супер супер тогда возникает

    01:26:37 - 01:28:19

  • вопрос каким образом для но если мы классе даже представим себе у нас есть статический класс этот вопрос знает что это что такое статический класс ну да статический класс это класс которым который находится внутри другого класса то есть java статический класс находится только внутри другого класса являются на этот классом и так ладно это право это вложенный класс он правильно называется вложенный класс сложный класс может быть и не статическим и здесь речь идет на но здесь идет именно о другом то есть

    01:27:29 - 01:28:50

  • представим себе в гараж они зайца оптический класс это себе обобщенный класс он не вложен него что это сам файл это сад это самого и отображение и тут возникает вопрос какие признаки статического класс то есть это класс не это класс текущей у него вложенности никаких нет он сам влажностью не является ну тут скриппс вы просто все его члены являются статическими турист полях методы и собственно тогда он будет называться статически а что по поводу конструктора у статического классов [музыка] сколько я помню статический конструктор

    01:28:10 - 01:29:38

  • java не применяется ну его некуда но если мы говорим о том что статический класс правило гласит что экземпляр класса такова создавать или за потому что это стать инстанса не будет тогда чё нам нужно сделать с конструктором в этом случае в любом случае мы объявляем конструктор про его ты мы гарантируем и можем создать уже объект супер да то что хотел знать его как раз обратно возвращает generique представим себе что у нас утилитарный статический класс у него есть какие-то методы статические как на

    01:28:56 - 01:30:13

  • уровне статического метода создать джин яичный тип ведь мы не можем взять вот этот самый джинны личный тип от класса мы конечно мы можем создать но ты сам сказал что это будет не применимо к статическому контекста и тогда вопрос как создать статический джинны личный метод статичный джинни личный метод ну как его создать там есть ой какой определенный синтаксис можно глаз на местный марш описать как может быть последовательности ли какие-то наметки вот как бы ты как-то себе это видишь эти вспышки из практики таки флэшбэки

    01:29:37 - 01:30:55

  • [музыка] по идее мы должны указать generic тип на самом классе на класс мы же не можем использовать generic тип на классе он instance это reference это не просто он будет не видят вопросы с подвохом но может быть может не давали такие распространенные чтобы сказать что статический метод может возрасти возвращать generic там этого нужно в угловых скобках указать наш буковку какую [музыка] параметр типа вот причем это нужно мне не изменяет память и к указать после слово static именно в случае статическим методом да

    01:30:20 - 01:32:07

  • так оно есть мы там и указываем вот тот самый даймондс со времен и порядок да да да то есть все ты знаешь на самом деле все не так просто запомнить последовательность где что указывается особенно когда пишется от крыс на меньшие поставить боку закрыть знак больше потом и та же буква идет как возвращаемый купить да я явно явью что ты знаешь хорошо не более чем нравится ответы тут такой простой простой гора скал буква t может быть нам буква д быть да конечно может и не один тип generic можно указывать через запятую

    01:31:22 - 01:32:46

  • здорово хороший стильного параметрах могут быть разные имена это вполне себе справедливо представим себе ситуацию что я хочу иметь ограничения при помощи generic of как на уровне инстанция или объекта то есть класс в основании которого мы объявляем этот параметр как не сказать что я хочу принимать туда любой тип данных который является наследником от класса bass entity но в таком случае используются ограничения в общении то есть есть такое понятие wild card ? в угловых скобках мы собственно говоря его этот

    01:32:04 - 01:33:39

  • wild card и указываем extends и название класса которого мы хотим ограничиваться датскому классу и тогда у нас на вход могут приниматься только типы которые являются либо этим классом его его наследниками но ведь если быть точным на уровне класса wildcard не допустим то есть я не могу написать имя глаз открыть скобку поставить ? extend bs en si это правда можно сделать на уровне параметрами то до этого же зал для аргумента класса это можно сделать не аргумент особе свойства класса это можно сделать для

    01:32:53 - 01:34:06

  • переменной внутри метода в том числе но для класса как-то немножко иначе может быть чем от тебя из правил для класса и указывается конкретно этот класс тогда таком случае то есть если мы хотим ограничиться этим классом его наследником это тогда мы пишем наш параметр типа вот это название класса но [музыка] java этого не позволю если мы напишем что-то вроде класс контейнер откроем скобочки и напишем бей свинтить и закроем скобочки bass entity выражения будет восприниматься как буква т просто просто много буквиц это всего лишь имя

    01:33:29 - 01:35:06

  • параметра псевдоним параметра не более чем там тоже можно по сути написать также как ты рассказал про wildcard но немножко в другой форм ну то есть тоже extends тоже боитесь и но чтобы ты вместо знака вопроса поставил так чуть-чуть без кода видим именно это путает дома хорошо я подскажу на самом деле все то же самое что с обычной параметр только ты пишешь буква т соответственно пробел да да ? действительно wild card вам нужен когда мы с параметрами работаем с аргументами иначе говоря со свойствами

    01:34:18 - 01:35:40

  • класса с переменными локальными там можно применять в основании самого класса это просто не получится но как она устроена хорошо ну на самом деле очень хорошо мне здесь последний вопрос какой тип данных применяются если у меня стоит буква т я когда пишу объект но создаю объект как мы как правило пишем new контейнер открываем этот домен syntax туда вставляем конкретных данных которые там будут подставляться предложим new контейнер stream и конструкт дальше но скобочки концов обрезаем ситуацию что я написал new

    01:35:02 - 01:36:16

  • контейнер и сразу без вот этого изумрудного синтаксиса я вызвал скобочки контейнера все будет работать компиляция отработает но у меня вопрос какой тип данных тогда будет хранить ведь мы ничего не указали но тогда получается будет храниться отжиг и дело в том что сами дженерики в принципе они во время компиляции они информацию о них стираются и все просто приводится наш класс отжиг просто приводится к нужному типу есть хорошо и здорово мне нравится твой ответ но вроде как здесь все вроде мы все сделали вот мы и подошли к концу я

    01:35:39 - 01:37:11

  • думаю что с этим перечнем вопросов ты вполне может претендовать уже на какие-то реальные собеседования работу лично мне более чем понравилось и мне бы хотелось узнать твое личное впечатление после этого то есть если это было первое интервью у тебя вот как ты чувствуешь как вот после теракта если ты уже проходил когда-либо какого рода интервью тот как ощущаешь с тем что было из тем что стало победы но во первых впечатления супер потому что но приятный собеседник очень такие вопросы хорошие есть на чем чем подумать

    01:36:30 - 01:37:45

  • есть пробелы уже для себя их определил конечно же я ради этого сюда и пришел собственно это это моё первое интервью и так уж вышло что вот она будет на ю тубе кошка неожиданностью вышло но в целом класс впечатления супер я очень благодарен за эту возможность и по поводу будущей работы да я понимаю что мне еще есть чему стремиться так как я не осваивал еще не spring не в не базы данных у меня есть конечно небольшой опытом по базы по базам данных и как говорил уже в начале нашего интервью я работала этой сфере немножечко и

    01:37:07 - 01:38:31

  • я просто сейчас предвкушении последнего шага в java это прийти курс обучения где я уже свою spring связаны с этим технологии и буду уже действительно готовиться к реальным собеседованием пока вот так проверил себя и в целом принципе можно сказать доволен но мне кажется ты подготовился более чем кардинально вопросы были четкие ответы были еще четче то есть ты как будто знал свой вперед по самом деле печали , но очень очень чувствуется что ты уделил носить на много времени образованию и разумеется подготовки в

    01:37:49 - 01:39:21

  • целом будущей работе как java специалистов в чем я тебя и уверенность остальные желаю больших успехов вот скажи пожалуйста вот я во всех всегда спрашивают вот чтобы ты порекомендовал бы тем самым ребятам которые сейчас смотрят вот что бы ты им парик regal бы чтобы достичь каких-то успехов в любом языке про gravity это не только про java может быть участь какие-то секреты как ты обучался или еще чтобы я считаю что не нужно терять время если есть стремление и желание посвятить себя этой сфере ту нужно действовать нужно

    01:38:35 - 01:39:49

  • сквозь где были различных тяжестей проблем непонимания даже сбрасывать мысли это не моя с этим не справлюсь это не получится нужную пытаться идти вперед разбираться сложности они везде и вот мне 33 года но ярко все равно еще иду к своей цели просто жалею что потерял время поэтому ребята не терять время если вы чувствуете что это ваша у вас лежит к этому душа то обязательно идите к своей цели и добивайтесь результатов никогда не останавливайтесь супер это круто пожелание большое тебе спасибо я уверен

    01:39:12 - 01:40:33

  • все присоединятся и обезображивает себя виртуально урок тебе посмотрим ну что на сегодня будем закругляться большое спасибо вадим был очень приятно тебя про интервьюирует действительно была оказана очень хорошее качество ответов я индивидуально желаю тебе успехов прохождение следующего курса и в скорейшем получаю опыт и реальных интервью в реальных больших компаний и чтобы ты занял эту нишу как разработчик java разбиться развивался всесторонне получал от этого удовольствие а на сегодня это всё пока пока спасибо

    01:39:53 - 01:41:05

  • огромную дочь и вот так вот друзья вот таким образом прошло наше интервью а о вопросах вы можете судить самостоятельно подумайте и напишите в комментариях как бы вы ответили на эти вопросы может быть какие то вопросы вас интересуют конкретные вы хотели бы их обсудить поэтому друзья давайте же переместимся в комментарии и там все начнем это обсуждать или конечно же с радостью подключусь к в вашей миссии в то же время если вы считаете что в данном интервью недоставало каких-то других вопросов смело тоже пишите это в

    01:40:28 - 01:41:23

  • комментариях ведь с одной стороны это помогает мне расширить кругозор чего бы можно кубра где-то может быть чего-то много а где то чего то наверное и не хватает именно ведь вы формируете наши коменти друзья еще раз я вас призываю пишите в комментариях что вы думаете по поводу интервью с технической точки зрения хотели бы вы расширить это и все прочее что вы думаете я с радостью уступлю с вами в переписку как мы часто это идем как у нас и принято на канале но она сегодня это все друзья напоминаю

    01:40:57 - 01:41:55

  • подписывайся на канал ставь колокольчик не пропускать самые интересные крутые видео напоминаю про наши индивидуальные телеграм-канал а где вы можете найти куча всякой всячины и разумеется полезно для вашей будущей разработки или обучения она сегодня это все друзья с вами был макс добрынин вы на канале джек бал и до новых встреч

    01:41:25 - 01:42:04

Менторы

Специалисты своей области, которые смогут помочь вам

  • Нигма Нурия
    Нигма Нурия

    Middle .Net Developer

  • Сущенко Татьяна
    Сущенко Татьяна

    Senior Product Manager

  • Гудков Денис
    Гудков Денис

    Middle Python Developer

  • Курочкин Константин
    Курочкин Константин

    Ведущий программист

  • Гудман Макс
    Гудман Макс

    Backend Software Engineer (PHP)

  • Гребенкин Антон
    Гребенкин Антон

    Senior .NET/C# developer

  • Ахназаров Фёдор
    Ахназаров Фёдор

    Middle DevOps Engineer | Tbilisi, Georgia

  • Шорохов Дмитрий
    Шорохов Дмитрий

    Middle C# .NET

  • Жуков Александр
    Жуков Александр

    Senior PHP-разработчик

  • Мазикин Павел
    Мазикин Павел

    Middle python developer

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru