Подготовка к собеседованию на Java Developer
Менторы
Специалисты своей области, которые смогут помочь вам
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
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
друзья всем привет вы на канале jet бал и с вами майк с добрыми что ж у нас давненько не было каких-нибудь технических интервью сегодня тот день настал мы с вами вновь пришли чтобы посмотреть какие задают вопросы как на них отвечать и в принципе чего ждать от технического интервью но прежде чем мы продолжим подписывайся высказалась от этого ещё не сделал и ставь колокольчик чтобы быть в курсе всех наших событий и конечно же самых последних интервью и что же а мы тем не менее начнем сегодня в наших гостях очень интересный парень
00:00:02 - 00:01:08
парень которого избили да да почему вы сбили вы узнаете когда просмотрите это видео целиком и зовут его зама он уже знакомимся языками программирования он работал все шарпом он работал с пойти нам и он даже не знаю то что он еще джуно он уже имеет работу да да да да он уже развивается семимильными шагами продвигается вперед очень быстро и стремительно тем не менее его очень сильно интересует java и он хочет быть все более подкованным развиваться в этом направлении и быть в курсе последних и инновации этого языка что ж давайте
00:00:35 - 00:01:45
проверим вместе насколько он крут какими знаниями он обладает и чего ему в будущем придется подтянуть погнали друзья привет азамат я себя приветствую на нашем интервью на позицию junior java developer расскажи немножко о себе откуда ты нас узнал и как принципе сюда папа привет максим да я получается сидел виду ничего не предвещало и сказать событий и не рекомендации свой канал интересно парень рассказывает спрашивайте по java заинтересовался захотелось у самой протянут видео набор сделан посыпать спасибо скажи ты уже связан с
00:01:10 - 00:02:51
жанной как-то или это только первый как сказать получается я работаю с мая и java разработчика в профильной компании и учатся у меня есть высшее образование информационной безопасности автоматизированных систем и я закончу получается вот в августе в июле-августе и соответственно уже испытываем себя свои возможности а про текущая позиция она насколько сильно связана с разработкой связано джарты грешна косвенная каким-то образом все таки может быть есть возможности для саморазвития для использования джавы как таковой
00:02:05 - 00:03:38
этом все на жареная имеют у скорее знаешь старые технологии старые всякие проекты которые в современных довольно часто лишь понял тебя понял а какую версию java вы используете кстати на счет этого когда я пришел когда пришел мой получается куратор говорит востановить сеть давай ставь 16 там конечно для большинства получается программа мускулистому 8 11 [музыка] звучит очень круто но можем может быть сразу прыгать уже на 17 17 буквально недавно вышла да мы как раз записывали на выкл было задано на youtube ролик можно
00:02:55 - 00:04:37
посмотреть в описании ссылку да это клёво что вы пытаетесь использовать новые технологии максимально насколько это возможно потому что это бои нас как разработчиков хорошо а что ты ожидаешь после того вот мой проблем с тобой собеседования какие по и ожидания после что это тебе даст что ты предвкушаешь что ты предчувствовать начну с того что к самой джерри пришел как раз связанный именно так я до этого писал на шарпе на питоне и но джори вообще не прикасался наверное вследствие того что получается на android studio да там для
00:03:53 - 00:05:13
того чтобы регулировать это диод выключается сами трубки там нужна была инструкция которого мне на старом процессоре нет поэтому я быстро в этом запускает вот именно самой java для начала 7 то есть вот у меня я сделал тестовые задания очень быстро и меня приняли я начал звучать уже в пути лица все чтобы быстро-быстро хотя бы тех кто не изучает уже достаточно а что у компании за продукт чем она занимается у дохлого вообще покушать или нет имеется ввиду я прекрасно понимаю что есть м да так называемый ноги сложно agreement речь не
00:04:37 - 00:06:06
об этом имеется ввиду но официально официальной страничке вот наверняка когда приходишь на встанут skype и компании там написано чем они занимаются это публичная информация и в деталях рассказать конечно технические данные мы я спрашивать не буду что это секретно вероятно то есть какое основное направление при компании в рамках айти гражданская разработка получается сфере до базовой станции и получается [музыка] знаешь который знаешь вот получается раньше у там были там всяческую помощь интересно интересно особенно каким
00:05:30 - 00:06:51
образом java соотносится круто но хорошо здорово звучит реально клево и необычайно я ещё такого не слышал на самом деле но от классно позже наверное спрошу тебя о том какие твои ощущения и чего вы все-таки достигли может быть вас есть уже киты заказчики предположим которые то использую публично чаще всего компании рассказывать тем они сотрудничают и эта информация не секретная так сказать хорошо ну что ж будем тогда начинать наши джалла собеседования немножко поговорили немножко настроились узнали о твоем
00:06:18 - 00:07:27
скелет начнем с простого скажи в чем разница между гдк и джильи что это такое и какие у них базовые отличие получается с родителями сама верхний углерод hit by big tit получается набор для разработчика которые включают себе собственный этого а джерри это java необходимо собственно для того чтобы пользователь который не хочет разрабатываем на долю хочешь просто запустить java приложение то ему нужен как раз таки jamboree что просто запустить приложение тому же здесь окей а вот тут и задам вопрос представим себе ситуацию это
00:06:53 - 00:08:32
вполне такая типичную ситуацию у нас есть linux новая машина ну или unix подобная машина у нас предположим установлена команда а пакет да я хочу скачать себе джаву чтобы запускаетесь мое приложение какой же метод собрал spring бутово приложения или просто джерка экзекьютив и следовательно я такой ход захожу в пакеты и у меня там каким-то чудным образом g d к нет он не предлагает только джерри стоит ли мне этого бояться или так и должно быть и почему ну если только для того чтобы запустить учиться жить
00:07:45 - 00:09:06
the jury должно хватить принципе для того чтобы именно изменять модифицировать добавляешь и соответственно пейджер а что нам правильно самом деле ответ то есть мы говорим о том что это типа production или типа тестовый январь момент уже все разработана или по-крайней мере артефакты для тестирования готов следовать иначе нам там еще разрабатывать зачем давал отметки а какой вот ключевое отличие но ты говоришь нужно изменяется обновлять что позволяет нам это изменение обновления делать что вот есть в гдк такого чего
00:08:27 - 00:09:41
нет при подогреве ну предположим нам же нужно мы знаем какое слово байт-код интересная нам же нужно каким-то образом тобой байт-код создать то есть нам нужно наши java классики преобразовать в байку на 4 java файлы пошли преобразоваться в класс файлы преобразовывать что написанный java код в байт-код уже на каждой операционной системе выполняются послами но это концерт а кто позволяет нам это выполнить ну то есть если если мы с тобой сделаем иерархию нас вот есть source code сверху нарисован снизу у нас уже идет жильем ки
00:09:05 - 00:10:24
конкретный под конкретную операционку операционную систему чуть чуть выше 2 мог у нас байт-код а что находится между ссор с кодом и подходов ну на самом на самом деле до между подходом и обычным source кодом имеется виду наш исходный код между ним стоит компилятор то есть вы сначала компилироваться разумеется потом мы сможем пользоваться это и есть выразительная сказал бы отличие гдк у джерри хорошо хорошо звучит давай тогда я продвинемся немножечко дальше поговорим уже более а специфичных темах для разработки
00:09:58 - 00:11:08
знаешь ли ты чем разница между переменной локальной переменной которая относится к объект в чем разница между так называемым инстанции риабал и local вере был на английском языке выражаешься ну локальная переменная получается на может использоваться только учится на объект может переходить от ok ok а скажи является ли аргумент метода локальные переменные ведь он тоже переходит чисто так гипотетические практически мы можем сделать серию вызовов методов внутри методов ли передавать это мента он тоже ведь
00:10:41 - 00:12:08
переходит как она все-таки является инстанции или [музыка] примет внутри получается окей хорошо хорошо удара тогда поговорим немножко о примитивных типов данных мозгова релиза локальной переменной мы загорелись за instance variable скажи вот чем отличаются локальные переменные локально порог а примитивные типы данных от типов данных ссылочных до чем их отличие основная про память надо сказать что примитивные типы получается не хранятся в степени складывается получается ссылочной они хранятся только
00:11:30 - 00:12:57
ссылки happy уже лежат данный объект не ok ok звучит звучит резонно на самом деле реально звучит аризона но давайте подумаем ещё никогда я к тебе пошарю сейчас экран на зоне мы с тобой подумаем одной задачкой вместе одну секундочку я буду просто рисовать задача заключается следующем приступаем задачи и вот теперь у нас есть следующий объект у него нарисуем вроде какого-то квадратиками внутри него находятся какие-то поля допустим стрим к а затем mb возьмем там флот c это какой-то реальные о бже о бже
00:12:25 - 00:14:03
один экземпляр но ты сказал что у нас есть две области памяти 1 тест iq и 2 это хит вот в таком также отметил что ссылочные типы данных хранятся в степь соответственно но при этом ты заметил что хит хранит внутри себя какие-то объекты и просто проводят на них ссылку соответственно по себе приблизительно так на то есть что наш объект пойдет и будут храниться в happy но тогда у меня хитрый вопрос что нам остается по поводу примитивных типов данных ведь винты флот это примитивный тип данных в рамках
00:13:24 - 00:14:47
какого-то объекта где они будут храниться в стеке или в хиппи с учетом того что ты сказал что примитивы хранятся в стеке а ссылочные типы данных хиппи и где же будут храниться свойства примитивного и по для конкретного объекта хиппи или в стеке [смех] я короче 50 я предположу я предположу что они хранятся все такие встречи вот именно этим спринтера да и он обращается здесь идет понятно как frends the object datalogic quantum понятное дело и очень получается что исходя из того что ты говоришь что половина объектов хранится
00:14:06 - 00:15:53
вернее половина состояния объекта хранится в хеппи а другая часть уходит у нас соответственно стек то есть string у нас уходит хит вместе с объектом куда-то вот сюда а вот как раз наши примитивы уходят отдельно стек от где-нибудь здесь и вот сюда вот так правильно понял ну и сказать то что бы сказал а теперь давай подумаем логично ли это с учетом того что объект это какая-то целостная величина единица какая то логично ли хранить его состояние отдельно и с учётом того что стек существует очень короткий промежуток
00:15:15 - 00:16:36
времени ведь мы знаем что стек это участок памяти который существует недолго он очень быстро отрабатывает удаляются и память вычищается следовательно как только один стек предположим номер один этот стек наш стек номер один перестанет существовать следует сильно мы рискуем потерять состоянии примитивных значений для объекта 1 который хранится в happy уверен ли ты после вот этого сказанного что мы все-таки храним отдельно после такого логичного объяснения приходит сомнение почему как все-таки как правильно в стеке
00:15:55 - 00:17:20
хранить все целиком в хеппи я хранить все целиком или все-таки храним по раздельности кусок там кусок на самом деле на самом деле если так подумать то получается любой любой объект любой код жаре он является объект ориентирован то есть получается используется класс и каждый у каждого объекта будет получается каком количестве нескольких ссылок таких моментов он типа на примитивные типа данных и если сказать что примитивными хранятся встречи то я наверно думаю что у них хранятся комбинирован и может быть даже у каждого весла денег
00:16:38 - 00:18:17
нет на самом деле на самом деле все проще в стойке хранятся только локальной переменной локальные переменные могут быть даже и ссылочными и примитивными то есть смысл в том что локальная переменная она просто создана в рамках стыка и как только стек перестанет существовать мы ссылку на этот участок памяти будучи хит или примитивный в стек мы ее теряем и в этом и смысл локальной переменной когда мы создаем объект если объект составной он может состоять из примитивных типов данных внутри и ссылочных типов данных все ссылки на эти
00:17:34 - 00:18:50
значения хранятся вместе с объектом в хеппи чтобы не потерять иначе мы рискуем получить не консистентные объект когда у нас какое-то значение потерялась а какой то есть таком смысле не и вот собственные разница между локальными переменными и инстанции ривалдо и в том числе как это отражается при создании объектов и хранить объектов в рамках которых есть примитивные типы данных поэтому еще раз резюмируя все хранится вместе с объектом happy это правильно записывать на дороге тогда двигаемся потихонечку дальше и будем
00:18:11 - 00:19:29
разбирать нашу тему следующий вопрос давай поговорим с тобой про все тех же примитивные типы данных скажи почему примитивные типы данных называют строго типизированные и статичным типизированный ну то есть вообще принципе когда говорят java она строго типизированные и то же время статичных эти зерна в чем это выражается с твоей точки зрения как ты считаешь почему строго типизированные в плане того что ты не можешь например там за наших куда метод возвращает что-то и присваиваешь результат к примеру каком-то тип то в
00:18:53 - 00:20:12
этом случае в этом случает не можешь присвоить ему другой тип возникнет exception на себе это сделать ok ok то есть любой тип мы знаем заблаговременно то есть и мы не можем его нарушить да то есть это отчасти и статичность и строгость типизация ok а в чем еще остро вас типизация выражается джайв и чем это связано с примитивными типами данных может пожалуйста в чем да конечно чем строгость типизации выражается если мы говорим о примитивных типов dunk ну может быть у них есть что то такое вот можем не может с ними работать как с
00:19:38 - 00:21:11
обычными то есть из за этого примите туда же обзавелись бокс покрывается но это скорее ограничений ну то есть если я поймаю ты говоришь про а класса обертки но это скорее дополнение для того чтобы java сделать максимально френдли к а по стилю но тут речь о другом может быть они хранятся как-то по-особенному у них есть какие-то какой-то объем значений которые не могут принимать получается [музыка] а чем это связано но значит да ты прав то есть максимальный диапазон значений котором можем работа с чем это
00:20:35 - 00:22:06
связано конечно с памятью то есть сложи памяти получает у нас получится не skoda 30 единиц это которая представляет последовательность и на самом деле то есть вот именно эти переменные обусловлен тем что сколько возможно абсолютно верно на самом деле ты прав именно в этом заключается обычное архитектурной арифметика ничего более за этим невзора круто это мне нравится этот раз хорошо давай тогда двигаться дальше перейдем ближе к объектно-ориентированного программирования вот несколько раз пытались его заточили так обходили
00:21:32 - 00:22:55
расскажи что такое класс обжиг и какая его основная идея java зачем он нужен класс общества которого наследуется все остальные джаве путине я наследница нужно для того чтобы привести все классы к единому виду чтобы у них были вот определенные методы которые часто используются окей а подскажи мне вот ты говоришь есть единый ведь единый какой-то способ выражения надо и нам явно указывать то что мы наследуем ся или расширяемся от объекта но предположим у меня есть какой-то класс класс а надо ли мне писать extends отдых
00:22:16 - 00:23:50
или нету смысла это проект а с какой как это связано с самой идеей объектно-ориентированном программе мы знаем что в основе lp лежит три столпа и 1 оберточка да да капец полиморфизм исследование инкапсуляция то же время все это выражается какой-никакой абстракции скажи почему отто глаз обжиг все-таки существует и каким образом вот эти столпы и обертка позволяют нам этим здорово пользоваться и как он вообще отражает этот класс эти три принципа [музыка] получается последование то что полиморфизм периоде
00:23:07 - 00:24:43
усилятся сомневаюсь ну инкапсуляция в большой степени касается какой-то внутренний реализацию если говорить про класс объекта он максимально открыт да тут можем от инкапсуляция опустить разве что сказать что не капсюля ции уступает classic сам сам класс которых себе хранит эти методы как контейнер и мы ими пользуемся здорово на самом деле так она есть а вот расскажи ты затронул polymax говорят что мы можем его видоизменять но ведь если не ломаем ли мы вообще самую идею программной инженерии применяя
00:24:16 - 00:25:33
объектно-ориентированное программирование смысл что нам все можно переопределять ведь там столько методов ту string хэш-код и квас очень часто мы их переопределяя и все таки почему же в таком варианте разработчики java имеется ду те кто придумали java они не придумали какие-то дополнительные классики которые мы будем включать допустим не только о бже пересчетом какой-нибудь хэш-код обжиг который хранил бы предположим себе метод хэш-код и метод и курс на то есть почему они сделали все таки 1 вместо
00:24:57 - 00:26:10
нескольких как тогда much [музыка] ну мышцы можно можно все sdk данного класса хорошо но тоже правильно все на самом деле вполне здравая мысль мы не можем впихнуть больше чем мы можем впихнуть соответственно это наше ограничение по крайней мере для java смотри не кажется ли тебе что идея сама очень я бы сказал бы такая странная что создавать classic с реализацией который мы по-любому в 100 процентах случаях или в 99 процентов случаях будем переопределять или все таки это не так да на самом деле не всегда нужно пилить
00:25:32 - 00:27:03
если нам нужно сравнивать ссылки то есть только вот чтобы два объекта были один и тот же объект чтобы дефолтный плюс вообще подойдет к какому то есть вместо там ссылка одинаковый труд но главное учитывать то что если брином хэшкод ну на самом деле это правда ты прав то есть не надо обязательно переопределяет сам по себе класс обжиг предоставляет вполне себе базовую реализацию и с этой базовой реализации любой класс может жить нормально и беспрепятственно то есть у нас нету проблемы выполнения программы в ран
00:26:31 - 00:27:52
тайме или проблемы с компиляции то есть хочешь пользуйся дефолтном не хочешь определять если есть олег узора тут разобрались хорошо мне нравится хорошо бы ты затронул такую клёвую тему я очень сильно люблю все безумно любят а называется она контракт между эклз и хэш-код что ты можешь по этому поводу рассказать получается хэш-код необходимы но недостаточно условия для того чтобы объект бликами от мисаки а знаешь ли ты про условия контракта там есть несколько принципов которым безусловно нам приходится пользоваться
00:27:16 - 00:28:47
каждый день знаешь ли пикну как и называются эти принципы и можешь ли ты их охарактеризовать я могу я могу напомнить они называются рефлексивность симметричность не так далее а нескольких 500 точно слышал либо ты о них что-либо на самом деле на самом деле как то не очень то есть сам метод все конечно видел делать но вот насчет этих вот принцип название на самом деле может быть перед названием не знаешь вполне может быть может быть просто не не дошел бы они называются рефлексивно симметричность транзитивность consistent насти принцип
00:28:03 - 00:29:50
над на это на самом деле все можно почитать официальные доки к методу eagles то есть прямо открыть классе копчик и почитать к нему java док ну ладно допустим просто это это пять принципов на основании которых мы можем судить что метод и голос работает правильно по сути это правило его конструирования хорошо а слышал ли ты про правила хэш-код ну то есть если у него как какой-то контракт с эклз и как ты мог бы это описать то есть вот уигглз есть правило переопределения у хэш-кода есть правила его работы в соотношении с
00:29:06 - 00:30:26
методом эклз слышал ли ты что-то про этом ну то есть получается хэш-код должен максимально максимально попытаться по крайней мере инфицировать объект и полями то есть три поля он должен из этих трех полей сконструировать . ну если и с помощью этого хэш-кода получается вы классе мы смотрим то есть двух объектов мы смотрим кишку только при совпадении мы можем сказать что объект может быть [музыка] один а если я спрошу следующая может ли быть у двух разных объектов одинаковый хэш-код до на самом деле на самом деле
00:29:46 - 00:31:53
вы не на самом деле есть же получается но хэш-код возвращать ну то есть ним сам накладывает получается ограничение но и тому же зачастую массивах использовать коллекции где он используется зачастую там происходит деление остатка деления коллизии возможными но как раз таки хэш-код может быть одинаков но объекты могут быть при этом разные ok ok хорошо хорошо тогда мы двигаться немножечко дальше ну то есть тут сразу на место нужно почитать больше про эклз и хэш-код контракт на нем как они взаимодействуют
00:30:53 - 00:32:45
и правила их собственное определение время записать же правильно отметил хорошо тогда будем двигаться немножечко дальше перейдем к более сложным вопросом и поговорим о том как в принципе устроена наша дрова уже в деталях то есть мы затронули такие базовые вещи расскажи поговорим об исключениях что ты знаешь про иерархию исключением с чего они начинаются и на какие категории перри мог бы их поделить получается все исключения наследуются потом еще и деление и но это уже ошибки скорее сильный холод
00:31:51 - 00:33:31
к сексу делится на 4 ч то есть учиться runtime это у нас все остальные которые содержатся в станет а в чем разница между чек и анчик ты исключения то есть проверяемые не проверяем такой частый вопрос адский частый вопрос в чем разница да конечно получается да мы пишем какой-то под метод который может выбросить какое-то исключение чек то есть он мы обязаны но обработать в то время как инфект может вылезти откуда угодно ну самое разное время после во время именно во время выполнения рисуют они внутренне
00:32:44 - 00:34:19
табуляции окей окей но в целом чертежи тоже может попасть во время выполнения программы разве нет [музыка] он получается давай попробуем решить тогда небольшую задачку и так задача состоит следующим образом необходимо создать исключение для обработки ошибки при вычисление периметра то есть у нас есть интерфейс джем и прилагали у нее есть метод периметр соответственно при этом участке вычисление может провести какая-то либо ошибка абстрактные но мы должны это дело правильно подать чтобы вызывающая
00:33:37 - 00:34:58
сторона понимала чего ожидать по нашему контракту то есть что ожидать от вызов метода периметр и если что-то пойдет не так второй момент нам нужно изменить интерфейс таким образом чтобы периметр можно было вычислять для любой геометрической фигуры поскольку сейчас у нас столько сквер завтра добавится triangle после завтра добавится пентагон разумеется мне у них разные формула вычисления и мне хотелось бы чтобы эта формула соответственно применялась удобно легко и интерфейс был максимально для этого готов с учетом разные
00:34:28 - 00:35:39
реализации разные способы вычисления и конечном итоге дать возможность обработать исключение для вызывающей стороны то есть сейчас у нас есть подобие вызова мы создали наш сквер джейми белл игры мы вызвали и вероятно что здесь может быть какое-то исключение и разумеется этот код тоже нужно завершить таким образом чтобы здесь было какое-то резонно исключение и предположим и его отловили и его обработали то есть по сути пункт 3 исходят из пункта 1 но главное чтобы это было все явно очевидно для разработчиков
00:35:03 - 00:36:10
которые будут использовать этот код то есть вызывающая сторона или клиент ну что ж ты готов назвать погнали время пошло тебя есть пять десять минут помялись есть вопросы смело их за давай мы с тобой находимся в онлайн режиме и просто чет пишет [музыка] если будут какие-то компиляции он ее ошибки не переживай не концентрируется в них моей трише я вижу что ты пишешь я понимаю приблизительно о чем идет речь поэтому не ставьте целью сделать скотт компиляции он стать целью завершить программу так чтобы достигнуть пункта 12
00:35:37 - 00:36:49
3 на [музыка] самом деле на самом деле не обязан что-то делать пилинг и научились принципе нет но или заключается в том что по сути в периметре будет что то вроде такого a + b + c + d если мы говорим про квадрат да то есть по сути вот это и есть задача номер два каким-то таким образом мы можем сюда поместить реализацию какую-то конкретную с учетом того что у нас может быть и треугольника в треугольнике 4 стороны не поэтому тут можно подумать ну оставлю себе это для как псевдокод такой ну хорошо
00:36:16 - 00:37:50
не переживай у тебя время есть время побежала у нас есть время сконцентрируйся попробую маленькая подсказка попробую задачи решать подпункта 1 пункта 3 ну то есть 1 2 3 ты сейчас кинулся решать задачу через пункт 2 я бы рекомендовал бы начать с пункт 1 ну предположим на что-то в треке че у тебя будет если будет вообще trike печь или если что-то пойдёт так разумеется тебе необходимо это обработать или выбрать какой-то если там все хорошо у него там квадрат соответственно ритер не все хорошо там и а если
00:37:08 - 00:38:44
он выбросит исключение [музыка] хорошо хорошо звучит интересно а давай подумаем я сдамся вопрос о ведь это про пункт 1 создать исключение для обработки ошибки что-то произошло допустим и тогда мне вопрос вот ты выбрасываешь исключение фрау new illegal state exception первый вопрос который возникает действительно не подходит нам и сообщение потому что illegal стоит exception это что-то больше про состояние стоит состоянии думаешь ли ты что это правильно и исключение при выбросе когда у нас проблема может быть
00:38:32 - 00:39:45
на уровне аргументов или в принципе на уровне решения арифметических задач на самом деле наверняка [музыка] р.р. ты знаешь да что р.р. это все-таки р-р датой ском и gary moore error это не совсем правильно хорошо я подскажу слышал ли ты что-то про исключение illegal аргументы здесь еще допустим арифметик exception да [музыка] ну да то есть есть куча вариантов которые больше джая подходят ну примени тот который считаешь нужным своей точки зрения [музыка] [музыка] ну выбери уже что-нибудь момент хорошо
00:39:27 - 00:41:04
хорошо тогда вопрос тебе нужно изменить что-то в интерфейсе на самом деле надо бы чтобы но но я пока что не про параметр я все про пункт 1 если у тебя какая то не consistent ность в методе интерфейса и том какое исключение ты выбрасываешь действительности в периметр хорошо теперь двигаемся дальше давай посмотрим я хочу я построю вверх к нашему методу моими посмотрим да то есть по сути сделал следующая illegal аргумент exception здесь но но с учетом того что мы лишаем какую-то специфическую задачу в рамках
00:40:53 - 00:42:19
бизнес-задач то есть предположим нас какая-то геометрической для те кому пишем этом в интересах какой-то компании здраво ли выбрасывать illegal аргумент xoчy с учетом того что это очень популярное исключение в джаве она используется чуть не везти самой же java и самими джа-джа в разработчиками так и другими искали для другими программным обеспечением написаны на джаве имеет ли смысл на самом деле стоило бы начать который может использоваться давай попробуем названием да все что угодно мы времена не будем
00:41:45 - 00:43:05
тыкаться можешь просто нам сайте любой этом доме exception этого будет вполне достаточно не трать время на имена прошло больше [музыка] ну здесь предположим теперь и определишь конструкторы да так на за я сделал за тебя чтобы сэкономить время чуть-чуть соответственно не то мы бы сдал в нашем классики конструктор съесть кончились у нас два исключения вернет вами два конструктора для исключения готова что теперь тебе нужно изменить с учетом того что ты создал новое исключение а теперь у меня вопрос
00:42:34 - 00:43:57
касательно и имя дали сказал что make my new не будем сильно придираться но все-таки чего в имени не хватает до слова except в лице тоже из ключей но вместо нам нужно как-то выделить я на за что класс 1000 до в основном все все хорошо здорово теперь мы сделали как думаешь почему у нас сейчас ругается строчка номер 33 вот это да принцип бережный мы должны отдать ее либо сообщение сообщение с другом они 3 см и случае передавать сообщения хороший ли хороший тон не передавать сообщение но я очень часто
00:43:27 - 00:44:53
вижу много у многих начинающих разработчиков они просто выбрасывают исключением без какого-либо сообщения хорошо ли это или плохо какой твой личном деле таких исключений может быть куча ты можешь следить где происходит ошибка из-за того что ты не будешь ничего что до имеет смысл водить ну только на уровне лагера скорее но ведь исключения по-любому блогер попадет но мы говорим о том что когда выбрасывается исключение оно рано или поздно все равно попадается своим стеком стеком исключение попадает стектрейсы
00:44:12 - 00:45:32
попадает в файл логирование либо просто в консоль будет поэтому по любому это увидим но все-таки ты говоришь что да это важно указывать но почему это такой же указывать то есть мы потом чё-то не найдем но это логично предположить что мы можем получить 20 исключений с одним и тем же сообщениям о какой все-таки ценность этого сообщения ну нашли моего а что нам это дает ну что скорее разделять их что было темно понять чем корень проблемы но хорошо но предположим у нас выброшена 20 одинаково исключений с одинаковой
00:44:54 - 00:46:08
ошибкой ну как бы нокий мы поняли а вот черт именно мы поняли что 120 раз выбросилась сообщением одним и тем же что реально мы здесь понимаю вот как ты думаешь фиксики да правильно то есть мы улавливаем контекст проблемы то есть исключение с ошибкой я на нам указывает на то что мы сделали не так и что пошло мир потому что молчаливо исключение ни о чем не говорит сообщение в ступор и вернет тупорылое сообщения ни о чем не говорит потому что она слишком сжато или слишком непонятно а вполне себе развернуто
00:45:32 - 00:46:47
нормальное человеческое сообщение связано с исключением в чёткости и в краткости объясняют а что произошло то есть иначе говоря она дарит нам контекст проблем это позволяет нам легко делать анализ и вероятно даже легко предугадываете где произошла ошибка и что нам нужно защитить если вообще нужно что-то фиксе с точки зрения кона вот хорошо давай тогда продвинемся чуть чуть дальше мы вроде как бы забрались да мы определились с тобой сигнатуре метода исключения ну а теперь скажи мне закончить с строчкой предпри какой нибудь сообщение
00:46:09 - 00:47:24
добавить не знает своей точки зрения как посчитаешь какое али удара мне нравится ну а как ты думаешь почему ошибка не ушла ну да да да да ошибка есть да и вот что-то в этом случае сделаешь именно так и у меня возникает вопрос логически вы выбросите чески выбросить исключение для того чтобы его же тут и обработать имеет хорошо хорошо уже неплохо мне нравится как ты к этому отнесся довольно таки неплохо и давай тогда подумаем ещё надо дни моментом по сути мы выполнили пункт 1 на выполнили пункт 3 то есть мы создали исключение
00:46:47 - 00:48:24
обработка исключения и дали возможность его обработать вот пожалуйста здесь мы по большому счету делаем но jam & tricks экшен и что-то с ним потом как-то его обрабатываем остался последний вопрос самый простейший или сам и интереснейшие как нам решить пункт 2 если у тебя решение предположим за несколько минут как и у нас с тобой есть там две минуты вот ну что бы ты предпринял чтобы действительности нашей интерфейс джами 3 лайнеры мог позволять реализовываться разным фигурам потому что это сквер у
00:47:59 - 00:49:12
него a + b + c + d у треугольника triangle там просто a + b + c вот чтобы ты сделал чтобы мы могли создавать разные реализации и каждая ре зация была готова принимать разнообразные параметры зависимости от своей ситуации как бы ты изменил текущей интерфейс не обязательно до конца реализовывать можно просто на словах общем так он на самом деле как то есть у нас появляются с тобой предположим класс triangle здесь называют triangle соответственно implements джо метро легри ну и так далее чтобы ты сделал так чтобы они работали
00:48:36 - 00:50:16
хорошо и при этом вычисляли периметр для любой фигуры возможно [музыка] ну я же должен буду так и так переопределять классе треугольника ну да на самом деле для каждого класса но ведь там могут быть разные параметры abcd a b c a b c d e f как вот эту проблему решить то есть по сути здесь когда мы реализуем это все мы инкрементируем у нас должно быть что-то вроде there a + b + c как мне добиться вот это чтобы откуда я возьму a + b + c вот откуда возьмете аргумент на самом деле [музыка] получается
00:49:33 - 00:51:16
[музыка] то есть по сути будет какое-то количество аргумент очень хорошо принципе неплохой вариант а если еще какие-то альтернативы ну вот как бы ты бы еще об этом сделал предположим я не хочу работать в баланс мне интересно более какое-то элегантные форм вот какие вариации ты еще знаешь ну или какие вариации тебе в голову вы пришли вообще первый вариаций шанин голову это проверять инстансов [музыка] это выстрел в ногу это выстрел в ногу по сути это убивает идею полиморфизм абстракции то есть мы могли бы создать
00:50:52 - 00:52:10
универа универсальный год класс джон и при lider и им пулы там делает миллиарды instance of но мы знаем что это дело недолговечна технически она работает но на ближайшем изменение кода у нас все рассыпется давая эту идею сразу отбросим какие еще варианты но если прям минимализме не можете использовать но все-таки это уже вариант это да ну то есть вере был органах и то есть наш а что думаешь насчет какого-то может быть специфического типа данных до можно создать какой-то специфический [музыка] реализации интерфейса
00:51:33 - 00:53:08
в треугольнике будет сообщать нам о том что такая хорошо а можно ли эту проблему решить вот если мы заговорили о специфическом типе данных можем ли мы эту проблему решить при помощи предположим какого-нибудь фичи которая появилась джаве 8 выражение ну как бы лямбда выражения драчуна вот чтобы что тебе 1 из функциональных интерфейсов тебя 1 наводит на мысль tata tatra получается беру тушь самую то наверное какой нибудь надо оператор не точнее вам по сути нужно выполнить какое-то действие или получить какие-то значения
00:52:32 - 00:54:11
то есть все очень ситуации то есть выполнить действие вернуть например да это получается у нас ну как вариант на самом деле все зависит от того какую задачу мы будем решать или точнее в каком русле мы будем решать можем при мне сопла и потому что он поставит на уже соответствующую операцию разумеется мы можем применить и подумать что то в виде функции то есть когда значение мы получаем снаружи перейдем в эту функцию получаем какой-то обновленные и результат просто function он работает с одним аргументом в данном
00:53:37 - 00:54:54
случае и он не совсем нам подходит носа флаер тоже крутая штука потому что в конечном итоге что мы можем сделать мы можем здесь поставить самая на то есть сад life какой-то тип данных соответственно его сюда затем и простота и делаем что его вызываем и конкурируем соответственно мы делаем обработку за get возвращаем здесь у нас года был соответственно здесь тоже будет домов мы делаем какие-то расчеты и если происходит у нас исключение там и разумеется если там может произойти зависимости от ситуации мы его
00:54:18 - 00:55:42
соответственно здесь обрабатывает там печь какой-нибудь и скажем какойнибудь до горизонта это просто пример и выбросим здесь уже наше специфическое исключение ну принципе твой мысль вполне отражает то что я хотел нужно хорошо давай тогда двигаться дальше закончим с этой задачей и будем двигаться немножечко дальше немножко напряг синюшка разрядился вместе с этим всем наряду и это ведь круто это позволяет это позволяет действительно поглотится в стрессовую ситуацию во время собеседования ведь очень часто приходится решать
00:55:00 - 00:56:24
разнообразные задачи тогда подвинемся немножечко дальше будем говорить дальше проживу и про более сложные соответственно вопросы давай поговорим о том что такое сокрытие методы целом слышал о таком выражении или я могу назвать по другому можно ли переопределить метод в статическом классе у нас статический класс статический метод не можно ли переопределить статический метод определить нельзя [музыка] через через 2 класс но а чем это связано почему почему статический метод анализа переопределить потому что он вызывается раньше всех а
00:55:42 - 00:57:21
[музыка] вот в рамках наследование как-то себе думаешь вот в рамках наследования имеет ли смысл наследоваться от статики вообще ну да ну то есть мы говорим о том что есть наследуем полиморфизмом консультации наследование один из столпов соответственно все таки почему статический метод нельзя или определить если там какое-то наследование подвергается ли она идей нас любить переопределения может быть только в рамках следуй [музыка] позже у нас эстетическими мы хотим его переопределить но на самом деле
00:56:59 - 00:58:38
[музыка] мы можем получается вызвать как мы обычно мы переопределяем метод если происходит дать но sense перепилить нет получается сам учится метод вызываем дал переопределяем его до него что-то делаем потом после него можешь сделать но вмешиваемся о структуре обычному статически он существует сам по себе и зачем чтобы снизить если можно будет оказывать но пера кстати к не имеет никакой связи с объектов да то есть мы говорим объектно-ориентированное программирование эти крутится вокруг объекта статика это что-то что лишено
00:58:02 - 00:59:23
этой этого смысла разумеется когда мы говорим про наследованием под наследованием мы подразумеваем что у нас есть какой то объект и выполняется так называемый runtime полиморфизм когда во время выполнения программы java джиллиан да она видит что у нас есть реальный объект он обладает этим методом пусть до штаб можем абстрактным или или реализованным но он переопределена разумеется она вызывает соответствующие нет когда мы говорим про статику тут не то место для разговора о наследовании потому что
00:58:53 - 01:00:03
технический наследоваться мы можем но при этом всем в рамках статического метода это работать не будет потому что у нас нету ссылки на объект объекта то нет разумеется мы можем ссылаться на класс класс это статика разумеется это немножко другая история поэтому ты правильно начал думать пока шлюшка вопрос непростой и такой процесс называется сокрытия методов или меток hit me that heaven то есть когда мы в рамках наследования статических классов пытаемся переопределить родитель насти но по факту мы его не переопределяет и
00:59:28 - 01:00:46
даже intel о содеянном не позволит этого сделать она не предложит нам никаких вариаций по сути мы создаем свой собственный который привязывается к нашему текущему классу с точно такой же сигнатурой как у наследника а вернее как у родителя и при этом мы его просто перекрываем поэтому это есть перекрыть науки хорошо но мысли в принципе светлые в направлении давай поговорим про исключение самая такая интересная тема чаще всего затрагивает поговорим в чем разница у нас между r и листон и вектор вот знаешь ли ты такие в
01:00:07 - 01:01:27
реализации листовые вот в чем между ними разница да вектор используются [музыка] обсе говорит что он-де прикиде приедет ли он на самом деле на самом деле мне кажется для него есть какие-то применению но очень низких до на самом деле он не deep реки он есть он остается таким как есть и претерпит он на словах если мы откроем тот же самый хеш ты был бы в случае с шмап его предыдущая альтернатива старая он тоже синхронизирован ты прав но он не депре кей как как это прям официально кроме его просто призывает не используют их на
01:00:47 - 01:02:20
официальном уровне но при этом пожалуйста никто от него избавляться пока что судя по всему не собирается поэтому он не приедет только условно ну ладно в чем и базовое отличие ну хорошо здесь оставим дальше не будем углубляться в эту тему там еще из нектара вопрос о нам их опустим весь это не единиц отличие но ключевое давай поговорим про листовые коллекции нам известно что у нас есть интерфейс лист какая основная идея вот что лежит в основе интерфейс листа список отличается ok но допустим set мы тоже
01:01:47 - 01:03:19
можем сказать что это какой-то тип списка более-менее и тут у меня вот все-таки еще раз вопросам суточным вот лист вот сам интерфейс в чем его несомненное отличие от интерфейса ссср предположим или в чем он действительно выигрывает и в то же время проигрывать получается может быть точнее могут быть только уникальные [музыка] учатся вместе могут повторяться обычно эллинизации защита на ночь то есть еще что есть еще в интерфейсе лист чего в принципе нету в интерфейсе сет и не будет [музыка] давай подумаем другую сторону как в
01:02:32 - 01:04:12
интерфейсе лист осуществляется доступа к элементам [музыка] мы говорим про интерфейс как происходит взять ее элементов видимо да иначе горят доступ к элементу как получить какой-то элемент в интерфейсе лист оскал приотстал бы самый его релевантный способ потому что способов есть много на самом деле но немного несколько но при этом самый вот релевантные способ для него а что в этом методе get про ты гришь get get что в этом методе get такого особенного чего нет предположено в сети [музыка] порядковый номер называется правильно
01:03:38 - 01:05:05
я чет и нечет [музыка] но line подскажу in индекс это называется какое в массиве индексация да правильно а если возможность по индексу получить в сети значению [аплодисменты] насколько я знаю что можно по индексу zip но при этом не гарантирует точно-точно [музыка] я так думаю что нет я же [музыка] самом деле [музыка] но безусловно да это это это уже детали эти детали нас интересует сейчас на самом деле но отвечу подскажу с этим невозможно получить значения по yandex потому что у самого интерфейса сет нету такой
01:05:00 - 01:06:53
возможности у него даже метода get нет на самом деле метод get он свойственен данном случае листу если мы откроем интерфейс то мы увидим соответственно там такой метод abstract не реализован интерфейса сет такого нет то нет поэтому мы не можем с интерфейсом цель работать как с порядковым номером или получать значение индекса ну ладно хорошо ничего страшного как бы это такое это не самое самое печальное что может быть в листах снова вернемся тогда быстренько здесь и закроем тему с коллекциями поговорим про кажешься коль уж значит ты
01:06:50 - 01:08:14
затронул что у него под капотом hirschmann как это устроено под капотом звучит как-то странно хэш сета под капотом у него кошмар как это устроено получается это значение в течение которым вы хотите положить из него вычисляется вот и проверяется на такие поют а вот используется ли значения ну то есть флешмоб она состоит исключая значения ты говоришь the cursed хранит под капотом кошман следовательно headset используют или полностью механизма кошмар то есть он использует это и учи значение или что-то
01:07:33 - 01:09:09
одном использую это скорее удачные крещенские не использует а именно у нас остаются только значение со своей реализации сыты а на самом деле он использует ключ-значение его не значение его не интересует целиком давай решение более небольшую несложную задачку про сыр на самом деле она займет нас какое-то количество небольшого времени и так она с тобой есть класс в и вот такое вот значение у него есть какое-то какие-то значения a and b соответственно у нас есть с тобой сет будет он хранить в илью и
01:08:35 - 01:10:12
под капотом у него хэштег затем я создаю два раза вылью в или конструктор можем флот для разнообразия еще дан был один и один f и второе точно такое же собственно далее я добавляю вильнюс соответственно в1 в2 задача следующие ну-ка тебе вопрос ты сказал что значение в сети хранятся уникальные то есть значение повторяться не могут но если мы с тобой все эти напишем в edius за пустимся то ты увидишь что на самом деле значение повторяться могут tostring я пока еще сдела [музыка] мы видим что значение одинаковые
01:09:31 - 01:11:30
тем не менее ты заявил о том что сет и headset хранить только уникальное значение собственно и решить проблему уникальность этой задачи решить проблему уникальности значений задача ясна ok час тогда я перейду презентационный мод ну и здесь мы начнем соответственно и так задача следующая ты сказал что fixed может хранить в принципе сохранить только уникальных значений у но вот наша реализация мы видим у нас есть hash сэв который будет хранить в илью у нас есть два экземпляра вылью которая абсолютно идентичны друг
01:10:54 - 01:12:20
другу первое значение второе значение соответствует такому же объекту мы добавили в руках и как бы в надежде на то что там будет всего лишь одно значение но тем не менее если мы выполним нашу программу при реализации текущей им флот у нас есть значение конструктор tostring для обучения в день в консоль если мы запустим это все соответственно что мы выйдем мы будем приятно удивлены тому что на самом деле уникальность не соблюдено почему не понятно ведь и задачи заключается в том что в ты решил эту проблему ведь ты
01:11:43 - 01:12:58
сказал что сет ранить только уникальное значение ну что ты готов давай рассказывай что нужно изменить и в чем проблема собственно на самом деле что 10 проблем заключается в том что у нас есть 2 ссылки два объекта ссылочным и их хэш под николас не может полной мере описать их разница между собой то есть они он сравнивает их скорее по ссылке а не по значению внутри то есть из за того что у них разные ссылки из-за этого мы смогли добавить два практически одинаковых на глаз объектов окей как можно эту проблему тогда решить
01:12:20 - 01:14:06
предположим что это так как эту проблему можем решить переопределите хэш-код и никлас чем нам это поможет в конечном итоге чтобы мы могли более глубоко понимать и них сопоставимость а что значит более глубоко и чтобы он проверял все окей окей что будем переопределять будешь передать руками или можем генерировать [музыка] это дама сосет образа тебя это сделал то есть вот наш методы и куски хэш-код или определенным то есть мы не сомневаемся в их правильности они работают нормально запустим нашу программу ещё разочек и
01:13:13 - 01:14:55
проблема решилась на самом-то деле она лишилась но давай подумаем ещё более глубоко ты говоришь о том что сопоставляется ссылки и все в таком духе но как бы это не совсем так это не совсем не далеко не совсем так в чем же все таки проблема своей точки зрения если ты знаешь ли может быть порассуждать в чем заключается проблема что у нас были допущены была допущена ситуация при которой два объекта абсолютно одинаковых по сути попала в сердце это напрямую связано с устройством самого кажется это как он работает
01:14:20 - 01:15:44
[музыка] [аплодисменты] там были объединены с другими хэшкод но это же не cacib относится и так вилью относится может быть тебе что-то говорит о том что под капотом находится хэш и он как-то на это реагирует если подниму на свободу получить используется фишман или для определения а [музыка] что этот хэш нам дает по большому счету что на основании хэша мы вычисляем в хэш мобиль мыслей правильно в какую картинку музыки не получается наш а что-то от что за корзинка на самом деле знаешь ли ты как и что за корзинка лежит
01:15:05 - 01:16:49
в основе их кошмар долетит лист но если там будет еще не больше например collision нас ничего не будет 64 в общем то тогда помещается но на самом деле линьки 200 есть но долинке глиста еще нужно добраться reset о том как к этому линьки для сту добраться до если происходит кризис получается [музыка] но при этом куда закинуть не понял в баке получается да да да но что такое bucket знаешь ли ты что такое флешмоб bucket да и то есть массив на самом деле если ты откроешь кошмар ты увидишь это и есть
01:16:29 - 01:18:07
массив то есть массив массив его ячейка хранит под капу себя ужели энкиду из линьки блистеры внутри какая это внутри структура которая находится в ячейке известный абсолютно правы безусловно ты не должен знать прямо сию секунду все в деталях мысли твои правильные и светлые здесь потому что на основании хэш-кода вычисляется индекс для доступа к ячейке к этому пакету следовательно если у нас два разных skoda одно и то же значение будет находиться технический в нашем мотиве разумеется будет два баки то
01:17:36 - 01:18:53
разных с одним и тем же значением поскольку каждый раз генерируешь разнообразный хэш-код и здесь мы возвращаемся к теме однако на вопрос который ты не ответил на изначально то есть контракт между никлаус и хэш-код соответственно что каждый раз когда мы генерируем но на это просто взрыв цел каждый раз когда мы имеем два одинаковых значения эквивалент как между собой значит они должны возвращать одинаковый хэш-код и на этом принципе и работает собственно но это как раз ты ответил правильно вы всегда были проблемы с
01:18:15 - 01:19:20
переопределение метода и круг ну лан то так хорошо мне нравится определенным не нравится как ты подошел пиком вопрос это очень достойного уважения подвинемся немножко дальше тогда будем постепенно закруглять нашу удочки и поговорим с тобой про такие вещи которые называются sql то есть расскажи мне вот что такое джитибиси джар джар чем его идеи там и [музыка] запросы хорошо а что лежит в основе ну то есть понятное дело это какой-то способ соединения а что лежит реально в основе ну то есть какая идея запросам и раньше и бирже
01:18:47 - 01:20:26
девисе могли отправляют нам никто не мешает подключиться отправить запрос ну чтобы все это приходи в java коде парсить реализовать но предположим пришло ну а что ты скажешь по поводу того что есть разнообразная база данных с ними связываться язык далеко не едим по разнообразных баз данных даже sql у них разнообразный syntax он синтаксис он может меняться следует сильно чем ниже сделать их разнообразный интерфейс подключения разнообразные способы свои правила и все-таки в отчете решает би-би-си что он нам даёт такого вот
01:19:45 - 01:21:16
клёвого что мы предположим не можем добиться в обычном время то есть ли какие были проблемы способность ну да да да именно так потому что в этом и он эту проблему решает не проблема подключиться проблемам подключиться универсально потому что разные базы данных разные правила разбиты rfi если матч говоря следовательно задача люди вещей в этом и заключается что мы посредством одного интерфейса определяли способы взаимодействия 4 контракт а уже конкретная реализация интерфейса знает как нам работать с конкретные базы
01:20:37 - 01:21:56
данных то есть иначе говоря мы подключили в майскую драйвер а если в коде пользуемся обычными джитибиси с ними интерфейсами то следовательно нам черныш там мой скрыл мы изменили на sql lite ok с точки зрения кода ничего не меняется меняется только подключения к базе данных поэтому это такой себе своеобразный полиморфизм в данном случае они давай тогда продвинемся дальше расскажу просто в чем разница между таблицы между полем и между записью иначе говоря trebl филл и рекорд чем между ними разница
01:21:16 - 01:22:25
позво запись таблица таблица ниже содержит строки представляет собой какой-то набор данных получается который в обычной жизни таблице можно встретить получается насчет запись запись и поле записи запись это получается у нас какой-то форме наш объект то есть у него есть какие-то понять какие-то свойства и мы их перечисляем в этих каждого объекта каждый научитесь то есть как бы ты бы стал бы что такое вот так более бы совокупно что такое записи на один уроки можно ли сказать что запись эта совокупность полей
01:21:50 - 01:23:46
[музыка] ну вообще не так что запись собственных состоит из спален хорошо узором расскажи мне что такое нормализация какие уровни нормализации ты знаешь пока просто назови какие уровни нормализация признаешь а потом уже подумаем какую-то расскажу нормализации я вспоминаю ну ты знаешь что в базе данных есть уровни нормализации но речь идёт лишь говоря нормальные формы их несколько какая их основная идея сам на самом деле [музыка] но можно предположить на самом деле что ты говоришь про я скорее если честно я скорее не знаю
01:23:19 - 01:24:45
но хорошо допустим бросим понять само понятие нормальной формы или нормализации сможешь ли ты охарактеризовать что значит первая нормальная форма 1 нормально да но зачастую есть их несколько на самом деле больше чем пальцев у меня на руке но есть всегда три самых базовых вот что ты можешь сказать про первую сердца я ну хорошо давай тогда не будем здесь тебя мучают по ним отпусти моих это будет себе на запись разобраться поговорим поговорим о другой штуки более интересный уже связано с школ ближе
01:24:42 - 01:26:20
скажи пожалуйста посредством чего мы можем сделать идентификацию записи в нашей таблице да как это называется всё хорошо действительно что такое прайма реки с точки зрения спел какой категории сущностей бы сказал ей просто сущности разнообразным к какой категории сущности прайма реки относится [музыка] но нет речь не отом он относится есть вот воспевал есть вещи которые у нас позволяют запрещать что-то сделать с базы данных или принуждать что-то делать при работе с таблицей как как назвать нет автоинкремент это уже
01:25:45 - 01:27:26
детали [музыка] позволяет работать таблицы обращаться не совсем работать скорее работать в правильном обращении имеется ввиду он накладывает какие-то требования при работе с этой таблице он заставляет нас что-то делать при работе с этой таблице он сигнализирует если мы нарушили эти правила при работе stars таблиц как эта штука называется сказал [музыка] ну или принуждают но сделать что-то так иметь игре правильно не слышал ли ты что-то про ограничение на английском называется конце скорее нет чем да скорее ничего хорошо
01:26:49 - 01:28:23
хорошо это зато зато это честный ответ запиши себе в том числе constraints ну ладно не будем говорить часа контент когда вернемся к прайморить и попробуем с ним поговорить какими основными признаками про велики чаще всего обладает является ли он уникальным а [музыка] может ли быть он мал [музыка] не должен или может я понял я похуй я похоже нашел твою ахиллесову пяту за сегодняшний день самую страж это базу данных ну ничего страшного все снова начинают именно поэтому здесь на самом деле он цветном он не может быть на у он not all
01:27:53 - 01:29:29
он в том числе уникально потому что это какая-то единица который характеризует какую-то конкретную запись и понятное дело но знал даже если бомба нам бы это было бы странно потому что вот большим случае он может быть один иначе потом как его характеризовать если их много и поэтому он нотном в принципе хорошо а слышал ли ты затронул auto increment что это нам дает зачем это нужно чтобы не прописывать видишь них сразу [музыка] хорошо правильным и тут у меня оброс хитренький доступен ли в разных реализациях или су
01:28:55 - 01:30:36
бдд bms да то есть допустим sql postgres edge туда the bass так далее доступным ли auto increment без бед во всех базах данных [музыка] на [музыка] самом деле я думаю что [музыка] хорошо знаешь ли ты так думаешь тогда ответь на вопрос какими-то базами данных пользовался уже но на самом деле только в некоммерческом плане да да да это вполне подходит тут просто наведёмся на мысль марс [музыка] в отличное сравнение в москве сто процентов есть автоинкремент и я держит над водою а вот если вам в postgres и
01:29:47 - 01:31:40
как ты решал эту проблему вот я помню что не мог найти один климент с этого зло не определенные затруднения на самом деле его там и нет и не будет потому что такая такая база данных как postgres она обладает не авто инкрементом она обладает sequence игре последовательности это еще одна последовательность которую в принципе не нужно использовать мои стрел потому что есть оттенка методе я просто я молодой у нас есть сущность sequence мы и привязываем какой-то таблицы или нескольких таблиц стс необходимость и у
01:30:57 - 01:32:09
нее и счетчик с которого мы стартуем и как он увеличивается то есть плюс 1 плюс 1 при каждом использовании sequence а следовательно увеличивается значение и он по сути и храни последние или следующее значение в москве есть автоинкремент он делает это проще потому что поставил просто конструкция автоинкремент и все работают сыпать gres так нас не пройдет и скоро call дтп с тоже хорошо давай тогда sql или с этой историей заверши там и поговорим с тобой про spring и тут уже будем завершать наше нашу рыбалку
01:31:39 - 01:32:59
сворачивать наши удочки расскажи мне пожалуйста что лежит в основе фреймворка spring сам основном spring [музыка] если точнее его реализации здорово а теперь расскажи мне то четко отметил что есть инверсия управление это принцип ну то есть удара это правильно его реализация dependency injection какие-то еще альтернативы знаешь реализации инверсии управления и это только одна из них да и на самом деле понимает хорошо хорошо тогда тогда отбросим этот вопрос и давай тогда поговорим в рамках dependency injection и в принципе
01:32:18 - 01:33:55
спринга как это происходит с премье на основании чего происходит внедрение зависимости с премьер может ли ты описать это процесс как он звучит и как вам происходит spring контекст получается бедны какие-то может через xml можем через активацию можем через аннотации но обычно java конфигурации и [музыка] их объявили [музыка] вообще надо написать можешь начать lifecycle на принципе это ты уже начал описывать просто ведь не совсем лайфхак лайфхаков жизнь жизнь пусть по большому счету но ты начал с
01:33:27 - 01:35:05
того как создавать сиком как конфигурировать by me неплохое начало на самом деле ты затронул при варианты конфигурации xml потом аннотацию и java конфиг ответ не здесь пожалуйста на вопрос какую из них бы ты выбрал и какой из них бы ты выбросил бы из спринга и почему хорошо допустим выбрасываем xml а какой то выбрал бы скорее как то узнаешь комбинацию именно java конфетки она собственно окей хорошо а теперь объясни почему бы ты выбросил оксана на самом деле он не настолько плох но контексте современных реально ты пишешь жало код
01:34:32 - 01:36:26
ты хочешь писать его на джаве ты хочешь девушка там но при этом ты и завалишь культ америки там бен и на самом деле наверное это удобно если ты делаешь это в контексте какого-то все сиди проекта которые не нужно нельзя перезапускать но при этом надо поменять рубины интересно если это не стоит вам просто конечно уж интеграции молодец правильно я абсолютно здравая мысль именно поэтому даже разработчики с тремя они не выбрасывают xml потому что здесь скорее не вопрос времени а вопрос применяемости ведь если
01:35:33 - 01:37:08
вопрос заключается в том что у нас нет возможности r&d площадь apple наше приложение каждый раз переустанавливать перезапускать но при этом нам нужно менять какие-то зависимости to xml конфигурация незаменимо потому что оно статично мы в нее вру боимся мы можем ее грантами изменять если в этом есть какая необходимость и затем разумеется и и считывать когда мы привязываемся к коду разумеется код это кот его необходимо компилировать да ты правильно ответил и это круто хорошо тогда пойдем еще немножко дальше копнем тебе ты поговорил
01:36:23 - 01:37:35
про spring контекста или spring-a контейнер в целом мы можем сказать что это близко одно и то же там фигурирует несколько понятий not у меня вопрос как нам создать spring контейнер или spring контекст какие способы какой как в принципе это можно сделать как заставить spring это сделать ну смотри ситуация живет довольно таки просто и когда мы запускаем с вами spring все вместе он как-то работает ведь он как-то работает он как то понимает что нужно выполнять подгрузку бену нужно где-то их искать и так далее так далее
01:36:59 - 01:38:21
вот как он это делает вот как бы делал бы ты если бы у тебя не было бы там spring будто плетей шин дело просто пишем с премии будут applications and как бы делать как бы делал бы ты чтобы запустить spring приложений если бы получается определяем печаль и посмотреть на что они нравятся то есть на лишенец смотрим собой то есть объявить например для одного обе на нужен другой бин соответственно вызвать это другой и потом уже запихнуть его чтобы нам но это немножко тогда мы идем в разрез домой идеи инверсии управлению
01:37:43 - 01:38:56
то есть тут скорее вопрос не как реализовать инверсию управления как запустить инверсию управления со спаррингом ну то есть у тебя есть string все его зависимости которые тебе нужны условно говоря spring core оба обобщим и тебе необходимо инициализировать spring контейнер и чтобы в нем появились соответствующие бен и вот какой наипростейший способ это сделать [музыка] можно [музыка] конфигурации [музыка] хорошо давай давай давай тогда зайдем в интерфазе для тебя пошарив его всегда козел у тебя есть какой-то классик вот у
01:38:28 - 01:39:56
нас есть classic мы здесь нам нужно star to do us part of spring applications spree кпп далее у тебя есть какой-то класс бим а ну то есть какой-то бин а не важно не важно что внутри абсолютно у тебя есть bmb потом dependency бен dependency а и б в том числе но короче вот такие вот by me и тебе необходимо это благополучно все запустить то есть чтобы в конечном итоге я вот здесь такой ход герб бен там класс been a получим если как как ты думаешь что здесь не хватает что стоит точки зрения здесь нужно сделать чтобы добраться до
01:39:18 - 01:40:59
выполнения вот этой строчке 9 нам нужно сначала взять конфигурации с емелей или конфигурации то есть чтобы поняла что здесь зависимости и потом уже с помощью хорошо хорошо ты горишь xml но ты предложил xml выбрать ну то есть оксана не используем я тут всегда кожу потому что меня за зависимости не подключены какой тогда экземпляр тебе в голову приходит нам нужно создать письма здесь какой-то контекст да то есть мы уже разобрали что нам нужно создать контекст вот так вот контекст get бен соответственно какого какой экземпляр
01:40:09 - 01:41:49
контекста нам нужно создать если бы мы предположим не хотели бы пользоваться xml вот какие есть варианты java конфигурации земляков 20 до а знаешь ли как он называется джала кафе грешником тесто не знаю просто очень хорошо хорошо то что уже очень верное название значит resale на самом деле я сам не помню не скажу точно как называется по-моему называется она тришин configuration бла-бла-бла контекст неважно но правильно абсолютно правильно вызвать какой-то и допустим annotation бен configuration контекста моему вот так
01:40:59 - 01:42:25
называется хорошо коль мы об этом заговорили предположим мы написали правильно имя что этому контексту не хватает откуда он знает что been a и b откуда он знает что это нужно взять из [музыка] клана здесь у нас здесь правда annotations то есть мы напишем своим там просто конфликт на то есть хорошо java конфиг хорошо мы создаем здесь classic дантон джалла конфиг что мне дальше необходимо сделать куда мисс кормить это java конфиг чтобы вот этот контекст заработал сначала объявить класс нотации configuration и
01:41:42 - 01:43:32
запихнуть не конструктор получается этот класс java конфликта класс ноги тогда здесь получается здесь configuration какой-то пишем волшебный а сюда отдаем гола конфиг хорошо звучит резонно а чё за аннотация configuration что это такое но она говорит джами о том что здесь находится спринт и федерации для что то есть что какие бы не могут там быть внутри но тот же начал у нас нет да и поэтому наносите и поэтому теперь внутри объявлять бен и ну получать на надо объявить бен при коридоры будет возвращать нам
01:42:42 - 01:44:22
экземпляра класса каждым из класса который нам нужен хорошо что для этого нам нужно сделать ну давай на одном простом бине на одном простом аннотация бен получается ничего не [музыка] есть паблик nokia ведаешь понимая чудо горишь паблик и мы возвращаем тот бен который мы хоть ноги хорошо не будем понятно дал это интуитивно просто коде хорошо правильно подскажи если у нас какая-то возможность создавать бен и не используя аннотацию пин-код меня она бесит на самом деле я ее люблю я очень часто и прибегаю
01:43:49 - 01:45:14
это на самом деле отдельный разговор потому что многие разработчики настолько привязаны к своим каким-то определенным вещам которые не любят что они просто пренебрегают другими это правильно сказал что скорее комбинация аннотации и java конфигурации чем что-то 1 потому что зависимости от ситуации мы легко можем обыгрывать их идут не вопрос вот бен есть разобрались configuration есть как нам еще проинициализировать предположим бен б если я не хочу его создавать в качестве аннотации bim через аннотацию принесла
01:44:37 - 01:45:45
еще какой-то способ человек компании компания а что если что за компом [музыка] будет вызываться в бога допустим стали лишь компом и будет она так работать или нет откуда своим поймет что такое компом нет я не понимаю вот я spring well сюжетку стрелять понимает мне горишь компания такая-то надо вниз на самом деле самом деле я тогда задам наводящий вопрос компании относятся к java конфигурации или аннотация [музыка] 20 по конфигурации она тришин configuration и java конфиг мы же видим что бен это тоже технической аннотация
01:45:11 - 01:46:52
вот бен это java конфиг или это annotation конфиг это будет драме потому что да потому что или в том что мы привязываем и сами ручками создаем экземпляр и просто сообщаем чтобы вот этот экземпляр будет будущем вином в этом заключается java конфиг мы не делаем создание экземпляра автоматическим его руками отдаем просто вызывается соответствующий метод где происходит инициализация в этом ты плюшка что мы можем этим оркестре ровать удобно если в этом есть необходимость а вот компонент вроде она танца но
01:46:32 - 01:47:44
все-таки это java конфиг или annotations да правильно и тогда у меня возникает вопрос как spring понимает что бен это метод который нужно вызвать чтобы в контейнере появился соответствующий как spring понимает ее конфигурации да абсолютно верно теперь возникает другой вопрос если это работает вполне себе логично предсказуемы то есть комп благодаря configuration аннотации spring понимает где искать предполагаемые потенциальные кандидаты в бен и как стая точки зрения понимает spring где искать самодостаточные отдельные классы которые
01:47:08 - 01:48:37
будут будущий ребенок то есть здесь мы по сути создали метод который нужно вызвать чтобы менты чтобы экземпляр been a появился в контейнер благодаря нато цыбин spring это по имени благодаря аннотации configuration spring поймет где искать аннотацию бен мне кажется что с компоненты работает так же самое только вопросов благодаря чему spring поймет что нужно взять экземпляр класса b и создатель просто через spring что здесь ему не хватает как и думаешь нет они не пока они не подходят 100 просо ну то есть configuration а то для бена в
01:47:59 - 01:49:11
данном случае а вот для аннотации бен а вот для аннотации компонент это не пройдет но может быть ты говорил поиск да вот может быть нужно как как это критерий поиска каким-то образом задач как можно найти посредством аннотации ну то есть аннотация такой сигнал как маячок я здесь возьми создания как он поймет что это именно его маяк а именно ему его нужно создать да будет что что имя есть имя есть имя по умолчанию имя по умолчанию это имя класса маленькая имя есть [музыка] найти не то чтобы зайти на эти 1 ряд и
01:48:46 - 01:50:23
когда идешь в магазин и покупаешь там хлеб ты же идешь хлебный отдел там написано хлеб ты понимаешь это да то есть но у тебя в голове уже задача стоит мне необходимо найти и хлеб то есть три триггере что по большому счету на слова хлеб вероятные обязательно идти в магазин ваш ты зайдёшь q это булочную отдель и вот как бы spring своей точки зрения мог бы это делать [музыка] мог бы входить все классы и смотреть нежность правильно а теперь возникает вопрос какой способ ну да действительно обходить все все что не попасть
01:49:39 - 01:50:59
возникает вопрос как мы это можем сделать знаешь ли ты способ ну может его использовал или не использовала если не использовался разговор с разговорить нет потому что мы вряд ли ты угадаешь название без в названии и хорошо хорошо идея правильно нужно сказать где искать то есть ты же не выходишь за хлебом просто куда-то в космос ты идешь конкретную область где потенциально будет бог а следовательно есть такая тема который называется компонент scan компонент скан благодаря компонент скан мы можем указать несколькими способами
01:50:19 - 01:51:32
где искать аннотации можно указать при помощи пакета предположим удовольствием там konger бал и он будет искать все классы которые находятся в пакете can get poll разумеется если он идёт нам компонент он возьмет его из-за использует если он найдет там еще какой-то класс он проинициализируем благодаря этому можем делать сужению опуститесь напишем интервью следовательно он будет искать только к может bold в интервью все что находится в этом пакете включая его под пакет в целом сампе нормально прикидываешь как это может сработать это
01:50:55 - 01:52:05
уже неплохо ничего страшного не расправился не знаешь своим довольно таки обширная тема давай тебя я тебя еще мочкану одним вопросом не очень хочется вот себе знать и тут мы завершим если и заливания кровью через три наш кровавый spring что ты знаешь про скорлупы springen иначе говоря жизненный цикл ты за борт и затронула в самом начале но это немножко другая сторона больше идет уже кабина что ты знаешь про жизненный цикл бинов springer синюю done to the request сессии волосы хорошо расскажу по поводу request сессия global
01:51:30 - 01:53:07
цельсия это старая тема действительно есть the quest есть сессия но также сейчас уже есть websocket соответственно и да это было раньше в некоторых версиях да сейчас уже немножко поменялось обнови знания на в целом правильный ответ правильный ответ не на вопрос что из того что ты перечислил является применимым для любой версии для любой для любого приложения описано спринт написанное на спринте ты начните перечислил 5 из не или четыре или пять не суть но сто процентов не все из них применимые для всех случаев но
01:52:20 - 01:53:41
есть те несколько которые будут работ для любого приложения силы [музыка] ралли расскажи мне разницу между символ тоном и прототайп синглтон получается при in цивилизации контекста он создает тому же последующие разы обращается не не заходя то есть он возвращает уже тут то же самое век подсовывает его прототайп получается каждый раз уже будет вызывать возвращать уже что-то по крайней пытаться завещательного вектор ok вот перед нами код да то есть наш кусок кода наш конфига наша конфигурация подскажите пожалуйста вот что мне нужно
01:53:00 - 01:54:45
в коде изменить с точки зрения классика java комплект чтобы у нас бен был предположим синглтон круто а что нужно сделать для того чтобы был про the tight asshole а где скол прописать это число слевина эта аннотация и чем не а надо удалять скобочки открыть прототайп побег на самом деле не обязательно писать именно скобочках прототайп премию эту саму строку той можно у него есть специальные специальный и нам с перечислено перечислением то есть можно там найти его сразу сюда вместо строки подставить
01:53:59 - 01:55:41
который вернет специальное значение то есть не просто не имеет смысла писать в руками но хорошо вариант рабочий для такого варианта пуки а скажи мне пожалуйста будет ли эта штука работать если я school поставлю не здесь беру его и спина осколок поставлю вот здесь на на прямо напротив нашего классика бен будет ли такая тема работать да нет не будет говоря вероятности вы никуда от нее не уйдем хорошо объясню в двух словах ситуация заключается в том что аннотация споук прототайп работать двух комбинаций
01:54:59 - 01:56:25
либо когда у нее есть бен рядом либо когда это на уровне annotation configuration то есть когда у нас стоит с тобой бен и сколко тогда они вместе работу то есть она связана когда у нас ее здесь нет но при этом чем у нас с тобой конфигурация на уровне аннотации то есть com помним и вот здесь поставившие то в этом случае оно тоже будет работать то есть потому что она первую очередь 3 делится на бен и потом на кому помню разумеется компонент бен ты можешь поставить только на уровне метода следовательно метод должен знать
01:55:50 - 01:57:07
какой экземпляр в scope prototype или синглтон создавать все должно быть на уровне метода когда мы говорим про аннотацию следовательно тоже должно быть вместе компаньон предположим и сколь бы тогда она будет работать если ты создашь эту штуку на уровне класса а потом вызовешь бен сатисфакции так сказать не будет бен увидит аннотацию он проигнорирует холл потому что он понятия не имеет что сделал ведь мы с тобой вместе руками создаем этот bing spring ничего про это не знает следовательно информации нет он
01:56:28 - 01:57:45
действует по умолчанию поэтому здесь быть осторожным и правильно конечно же сделать вот так ну что же мне на самом деле очень понравилось так уверенно сначала по спаррингу и это очень на самом деле клёво классно продолжай в том же духе и вы тем не менее подошли плавно с тобой к концу понятное дело море эмоции ты волновался вопросы какие-то новые что-то это здорово всегда расскажи как по себе чувствуешь [музыка] огромным учебником который поджарю пустая есть он умеет вот вот такой по голове просто
01:57:08 - 01:58:30
для это я это запишу парень которого избили окей хорошо а вот какие выводы ну то есть ты прошел собеседование биты калаш то есть ты работаешь ты прекрасно понимаешь каково это приходить в новую сферу но вот как киты сделал выводы после вот такого я бы сказал бы далеко не самого глубокого технического собеседования вот что ты можешь сказать после этого самом деле сказывается то что я начал учить эльзы совсем недавно то что именно не знаю его тонкости то есть даже по тому самому джалла кора у меня возникает просто
01:58:00 - 01:59:27
мутоны каких-то узи мастями например по сколько всего я не знаю на самом деле не это нам нравится я хочу исправить чтобы уже дальнейшем мог совершенно четко понял понял так что ты предпримешь предложим ближайшей перспективе там месяц два три полгода что ты на основании вот этого интервью будешь предпринимать я скорее дело ну понимаешь что знание которые если я зазубрил не выветрится через две индии там через два месяца поэтому наверное наверное с кресел придется плену приобретать уже более практически
01:58:46 - 02:00:10
медным это бред проекты какие-нибудь еще одно свободное время и пытаться как-то восполнить за некий абсолют абсолютно верно а вот ты сказал про подпроекты откуда ты черпаешь я сказал бы какую-то музу вот для всех наших зрителей очень частый вопрос блин макс где взять патрик я не знаю откуда взять эту идею я очень часто слышу от своих учеников макс как мне придумать какой-то подпроекты блин не знаю вот что ты здесь порекомендуешь ребятам откуда брать как проект с моей точки зрения вот где взять идею для пэт проекта особенно
01:59:41 - 02:01:10
когда идей может быть многое не все не везде применишь что технологию которую хотели на самом деле действительно сложно найти какой-то хороший проект или что-то годное с применением технологий готовите нужно заучить но вообще я как я исхожу из того что например ученые не хватает например я лежу и существовать чтобы переключить серия напишу чтобы я мог очистили работа писать ему чтобы он нашел элемент на странице на странице через усиление давай следующей весной я понял в общем лень двигатель прогресса
02:00:25 - 02:01:57
в сто процентов и тут я с тобой согласен как никак иначе действительно этот факт хорошо хорошо мне на самом деле очень отрадно что у тебя такое позитивное настроение и и ты готов дальше бороться за свое будущее безусловно развиваться и у тебя уже есть сформированных это планы безусловно я и все наши зрители присоединяются в поддержке и тебя и я более чем уверен у тебя все получится но тем ни менее будем на сегодня закругляться у нас гостях был азамат он конечно уже битый калач и тем не менее он открыл для себя много новых
02:01:13 - 02:02:28
интересных вещей которые стоят и предстоит еще выучить в будущем а за вам большое тебе спасибо твои последние слова если это было смотреть на бога не снять семью я думаю они будут благосклонны хорошо большое спасибо ну что ж вот на избили с вами азамата его в принципе он был этому рад поскольку это интервью показала где он силен и где он слаб с моей точки зрения он довольно таки круто справлялся со всеми задачами со всеми вопросами которые мы задавали но обратите внимание каждый раз когда он чего-то не знал он
02:01:51 - 02:03:00
делал какие-то пометки делайте это записи это очень классная черта любого инженера поскольку в будущем когда будешь проводить анализ собственных знаний или так сказать ревизию будет понятно где оступился и где необходимо что-то по теме поскольку это главный вопрос каким образом не понять где я силён или где я слаб там где мы сильны мы как правило всегда знаю потому что мы на эти вопросы отвечаем как правило на автомате а где же мы слабы не всегда происходит удар слабое место поэтому это самая бумажка это самое протоколирование
02:02:30 - 02:03:31
позволяет нам быть в курсе своих собственных знаний которые хранятся в нашей голове друзья что же напоминаю вы на канале jet болты с вами макс добрынин подписывайся на наш канал ставь колокольчик если ещё этого не сделал и до новых встреч на нашем канале пока друзья
02:03:00 - 02:03:31