Техническое интервью Java Developer - Алексей Ботя

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

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

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

    00:00:00 - 00:01:11

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

    00:00:35 - 00:01:47

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

    00:01:11 - 00:02:43

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

    00:01:57 - 00:03:39

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

    00:02:47 - 00:03:53

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

    00:03:21 - 00:04:29

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

    00:03:55 - 00:05:04

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

    00:04:29 - 00:06:07

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

    00:05:14 - 00:06:39

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

    00:06:07 - 00:07:30

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

    00:06:54 - 00:08:05

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

    00:07:30 - 00:08:53

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

    00:08:12 - 00:09:55

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

    00:09:03 - 00:10:27

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

    00:09:45 - 00:11:15

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

    00:10:31 - 00:11:53

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

    00:11:12 - 00:12:56

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

    00:12:05 - 00:13:30

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

    00:12:48 - 00:14:07

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

    00:13:28 - 00:14:34

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

    00:14:00 - 00:15:20

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

    00:14:40 - 00:16:11

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

    00:15:26 - 00:16:39

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

    00:16:02 - 00:17:02

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

    00:16:32 - 00:17:40

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

    00:17:06 - 00:18:10

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

    00:17:37 - 00:18:47

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

    00:18:13 - 00:19:16

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

    00:18:44 - 00:19:47

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

    00:19:16 - 00:20:42

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

    00:19:59 - 00:21:20

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

    00:20:44 - 00:21:53

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

    00:21:18 - 00:22:41

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

    00:22:00 - 00:23:15

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

    00:22:38 - 00:24:14

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

    00:23:26 - 00:24:39

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

    00:24:02 - 00:25:25

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

    00:24:44 - 00:26:09

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

    00:25:25 - 00:26:46

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

    00:26:07 - 00:27:30

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

    00:26:54 - 00:28:07

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

    00:27:30 - 00:28:33

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

    00:28:01 - 00:28:56

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

    00:28:28 - 00:29:55

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

    00:29:12 - 00:30:57

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

    00:30:04 - 00:31:50

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

    00:30:59 - 00:32:47

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

    00:31:53 - 00:33:04

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

    00:32:28 - 00:33:50

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

    00:33:09 - 00:34:15

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

    00:33:42 - 00:34:45

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

    00:34:13 - 00:35:35

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

    00:34:55 - 00:36:12

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

    00:35:34 - 00:37:08

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

    00:36:28 - 00:38:02

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

    00:37:20 - 00:38:52

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

    00:38:06 - 00:39:15

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

    00:38:40 - 00:40:00

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

    00:39:20 - 00:40:53

  • подано come into the интеджер до объект ну этот класс интеджер у него примитивный интерната кусок стены поэтому мы про записывал он полноценное название то есть по сути он не работает с примитивными типами данных но возможность поработать с ними имеется ну да окей окей хорошо хорошо это правильно действительно потому что ты очень здорово это отметил поскольку есть классы обертки с которыми при помощи которых мы можем работать то есть у нас есть en dat fancy примитивных тип данных у него класс обертка или объект обертка да но

    00:40:05 - 00:41:33

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

    00:40:50 - 00:42:06

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

    00:41:28 - 00:42:54

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

    00:42:11 - 00:43:37

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

    00:42:54 - 00:43:57

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

    00:43:26 - 00:44:27

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

    00:43:56 - 00:45:22

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

    00:44:39 - 00:45:56

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

    00:45:19 - 00:46:33

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

    00:45:57 - 00:47:26

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

    00:46:41 - 00:48:13

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

    00:47:28 - 00:49:22

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

    00:48:25 - 00:49:38

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

    00:49:01 - 00:50:16

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

    00:49:38 - 00:50:44

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

    00:50:11 - 00:51:38

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

    00:51:02 - 00:52:29

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

    00:51:45 - 00:53:03

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

    00:52:24 - 00:53:37

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

    00:53:01 - 00:54:17

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

    00:53:39 - 00:54:57

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

    00:54:18 - 00:55:15

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

    00:54:47 - 00:56:19

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

    00:55:33 - 00:56:57

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

    00:56:15 - 00:57:41

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

    00:56:57 - 00:58:20

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

    00:57:37 - 00:59:19

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

    00:58:35 - 00:59:47

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

    00:59:11 - 01:01:46

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

    01:00:54 - 01:02:20

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

    01:01:37 - 01:03:08

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

    01:02:22 - 01:03:35

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

    01:02:59 - 01:04:16

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

    01:03:36 - 01:04:53

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

    01:04:15 - 01:05:32

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

    01:04:52 - 01:06:02

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

    01:05:28 - 01:06:40

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

    01:06:05 - 01:07:21

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

    01:06:42 - 01:08:17

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

    01:07:30 - 01:09:03

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

    01:08:15 - 01:09:47

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

    01:09:01 - 01:10:24

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

    01:09:42 - 01:11:28

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

    01:12:35 - 01:14:07

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

    01:13:28 - 01:16:10

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

    01:14:48 - 01:16:42

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

    01:15:46 - 01:16:52

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

    01:16:18 - 01:17:23

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

    01:16:50 - 01:18:54

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

    01:17:55 - 01:19:30

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

    01:18:41 - 01:20:11

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

    01:19:30 - 01:21:01

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

    01:20:35 - 01:22:01

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

    01:21:18 - 01:22:36

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

    01:22:02 - 01:23:12

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

    01:22:43 - 01:24:06

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

    01:23:24 - 01:24:26

  • меняем два значения местами единственное что там нужно было указывать рандомный индекс предположим для temporary велись да мы здесь бы указали бы какой-нибудь рандомный мы бы написали что-то вроде там down next in a i + 1 и таким образом в каждой итерации мы бы мы бы создавали себя новый бендикс и выбирали бы удачное место куда бы положить это значение то есть мы бы не просто меняли бы местами мы бы еще меняли бы местами разные ленин да то есть вы не просто использовали а использовали уже наш рандоме индекс который бы нам в этом

    01:23:56 - 01:25:35

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

    01:24:44 - 01:26:06

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

    01:25:24 - 01:26:42

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

    01:26:08 - 01:27:16

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

    01:26:42 - 01:27:49

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

    01:27:15 - 01:28:15

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

    01:27:46 - 01:29:12

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

    01:28:30 - 01:29:34

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

    01:29:02 - 01:30:22

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

    01:29:42 - 01:30:51