Техническое интервью Java Developer - Иван Крутиков

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

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

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

    00:00:00 - 00:01:34

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

    00:00:46 - 00:01:52

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

    00:01:19 - 00:02:59

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

    00:02:14 - 00:03:32

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

    00:02:53 - 00:04:05

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

    00:03:29 - 00:05:40

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

    00:04:34 - 00:06:16

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

    00:05:32 - 00:06:42

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

    00:06:06 - 00:08:01

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

    00:07:00 - 00:08:53

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

    00:08:01 - 00:09:26

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

    00:08:43 - 00:10:03

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

    00:09:26 - 00:10:44

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

    00:10:05 - 00:11:07

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

    00:10:36 - 00:11:38

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

    00:11:07 - 00:12:38

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

    00:11:52 - 00:13:33

  • такого что в нем такого интересного его с больным у него это переменная позволяет хранить числа по сравнению с бы этом большего диапазона ранит у поэта 120л типами от минус 120 и тут я припомню 7 или 8 до 127 попал как-то так минус 128 до 120 семей верно потому что 0 это тоже число кажется на первый взгляд почему не -120 8-20 терплю 128 но ситуация в том что 0 это тоже число мы должны учитывать поэтому в положительном смысле мы забрали эту самую 8 этаж ургант миллиардами про какое отличие от n до осени шлось

    00:12:49 - 00:14:46

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

    00:13:48 - 00:15:26

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

    00:14:47 - 00:16:11

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

    00:15:28 - 00:17:05

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

    00:16:19 - 00:17:43

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

    00:17:11 - 00:19:08

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

    00:18:21 - 00:20:13

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

    00:19:17 - 00:20:38

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

    00:19:57 - 00:21:48

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

    00:20:50 - 00:22:43

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

    00:22:00 - 00:23:40

  • приходят от отдыха [музыка] самые всеми любимые the eagles и хэш-код но drive a big wheels и хэш-код мы объединим по дну потому что слишком и туда один есть еще два на tefal tefal с потолками и того еще один этот трек слушай круто смотри у тебя все получилось на самом деле ты на ты назвал пять да мы некоторые из них может сгруппировать в одну одно ну потому что это по смыслу подход и принципе нас таки учат если горит двигался и хэш-код это явно они даже джая в документации идут вместе да есть такое понятие а контракт

    00:22:54 - 00:24:25

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

    00:23:45 - 00:25:50

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

    00:24:51 - 00:26:36

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

    00:25:46 - 00:27:23

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

    00:26:35 - 00:27:58

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

    00:27:19 - 00:29:13

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

    00:28:14 - 00:29:29

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

    00:28:54 - 00:30:23

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

    00:29:36 - 00:31:25

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

    00:30:30 - 00:31:53

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

    00:31:27 - 00:32:37

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

    00:32:02 - 00:33:54

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

    00:32:58 - 00:34:06

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

    00:33:32 - 00:34:42

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

    00:34:05 - 00:36:00

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

    00:35:05 - 00:36:23

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

    00:35:42 - 00:37:22

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

    00:36:32 - 00:37:56

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

    00:37:15 - 00:38:36

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

    00:37:55 - 00:40:02

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

    00:38:59 - 00:40:16

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

    00:39:38 - 00:40:52

  • posted to в этом варианте у нас еще 300 метров память отожмется и буквально совсем скоро мы столкнёмся с каким-нибудь out of memory exception то есть у нас закончится память хиппи и наше приложение просто лишь поэтому со стройками все обстоит гораздо сложнее нам необходимо беспокоиться о том чтобы никто не создавал их дубликатов то есть мы создали один расположили it up stream full если это эквивалентная строка тогда конечно же возвращаем ссылку на то что уже имеется чтобы водить огромное количество однотипных объектов которые

    00:40:14 - 00:41:31

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

    00:40:54 - 00:42:12

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

    00:41:32 - 00:43:11

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

    00:42:21 - 00:43:47

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

    00:43:04 - 00:44:30

  • отличием мы видим здесь память обратно то что мы говорили пару минут назад постройки тяжеловесные объекты и ведь так что у нас вы такой цикл мы будем прибавлять строку строку к строке и у нас пойдет игра со момент память закончится а вот и stringbuilder тоже прибавляет нибудь но операция эй-би-си + d либо эй-би-си up and die через три builder появится так то через плюс у нас появится множество сколько здесь даже не знаю как под капотом строка устроен что это топа на массив символ да а вот stringbuilder

    00:43:46 - 00:45:49

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

    00:44:51 - 00:46:11

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

    00:45:32 - 00:47:01

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

    00:46:16 - 00:47:25

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

    00:46:51 - 00:48:23

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

    00:47:36 - 00:49:45

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

    00:48:44 - 00:50:10

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

    00:49:38 - 00:52:10

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

    00:50:54 - 00:52:15

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

    00:51:37 - 00:53:26

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

    00:52:30 - 00:54:01

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

    00:53:23 - 00:55:13

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

    00:54:19 - 00:55:45

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

    00:55:04 - 00:56:41

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

    00:56:05 - 00:57:31

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

    00:56:55 - 00:58:27

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

    00:57:43 - 00:59:30

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

    00:58:36 - 01:00:15

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

    00:59:25 - 01:00:47

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

    01:00:04 - 01:01:35

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

    01:00:54 - 01:02:20

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

    01:01:37 - 01:03:36

  • чтобы реализовать методы экзекьютора i get get нам будет возвращать финальную структура сорт будет выполнять сортировку сортировку он будет выполнять по ключу потому что финальная структура у нас является map на у нее есть long вот ключ и он ее значение мы будем выполнять в этом случае сортировку о ключик нам необходимо отсортировать наши значения сам метод execute направлен на выполнение следующей задачи нам необходимо найти все элементы которые приходят в массиве создать структуру виде map longlong

    01:02:35 - 01:04:04

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

    01:03:20 - 01:04:44

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

    01:04:02 - 01:05:16

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

    01:04:40 - 01:05:52

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

    01:05:16 - 01:06:39

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

    01:05:58 - 01:07:20

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

    01:06:39 - 01:08:44

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

    01:10:33 - 01:11:47

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

    01:11:09 - 01:12:22

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

    01:11:47 - 01:13:03

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

    01:12:24 - 01:13:42

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

    01:13:04 - 01:14:14

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

    01:13:39 - 01:15:19

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

    01:14:24 - 01:16:12

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

    01:15:52 - 01:17:38

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

    01:16:50 - 01:19:09

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

    01:18:04 - 01:19:31

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

    01:18:48 - 01:20:08

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

    01:19:28 - 01:20:42

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

    01:20:06 - 01:21:34

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

    01:20:49 - 01:22:01

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

    01:21:29 - 01:22:49

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

    01:22:09 - 01:23:25

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

    01:22:45 - 01:24:08

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

    01:23:28 - 01:24:42

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

    01:24:07 - 01:25:12

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

    01:24:40 - 01:25:59

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

    01:25:19 - 01:26:36

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

    01:25:58 - 01:27:46

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

    01:26:52 - 01:28:02

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

    01:27:26 - 01:27:48