Техническое интервью Java Developer - Евгений Мереха

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

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

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

    00:00:00 - 00:01:18

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

    00:00:38 - 00:01:53

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

    00:01:20 - 00:02:31

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

    00:01:55 - 00:03:24

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

    00:02:40 - 00:04:04

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

    00:03:24 - 00:05:00

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

    00:04:11 - 00:05:29

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

    00:04:49 - 00:06:04

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

    00:05:28 - 00:06:52

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

    00:06:10 - 00:07:37

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

    00:06:54 - 00:08:09

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

    00:07:32 - 00:09:08

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

    00:08:23 - 00:09:48

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

    00:09:09 - 00:10:44

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

    00:09:56 - 00:11:21

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

    00:10:39 - 00:12:12

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

    00:11:27 - 00:12:46

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

    00:12:06 - 00:14:07

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

    00:13:07 - 00:14:49

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

    00:13:56 - 00:15:34

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

    00:14:46 - 00:16:13

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

    00:15:34 - 00:17:17

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

    00:16:25 - 00:17:48

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

    00:17:06 - 00:18:20

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

    00:17:43 - 00:19:29

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

    00:18:47 - 00:20:20

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

    00:19:32 - 00:20:54

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

    00:20:13 - 00:21:34

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

    00:20:55 - 00:23:04

  • рефлексию потом у нас идет проверка проверка проверка талией и вроде ну то есть если орал и о так равно return true потом и вот . get close а как они сравнивать по i классу или правда не зная зависит от того что возвращает declasse будет класс возвращает объект класса класс мы обозначать объекты по на показе вот так пусть придёт в голову . . get close терн участок room так десятком пометку пока сделал потом поехали сравнивать поля и о . точнее зам . так еще гетры сатана длина что сделать здесь можно так с нужна виза я думаю да

    00:22:15 - 00:25:35

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

    00:24:27 - 00:26:45

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

    00:25:48 - 00:28:08

  • выглядело car and touch по идее равно карен тайги равняется с . те или и тогда и рэнд . daytona string тогда тут . eagles eagles так . да и то по и марк позови марк марк да тогда of corinth . маркету на стадии можно через так сравните равно здесь . а если они равны соответственно ритер труб между ты ряду так сейчас перепроверил to know to know проверили привели если получается ссылки ровный равно true если классы равны они подались нашёл ошибку вот вот это вот вот здесь должно быть они вот-вот сделать вот так вот перед он фолз вот

    00:27:00 - 00:30:08

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

    00:28:46 - 00:31:06

  • приведение это позволяет она является безопасным или не a-класс a-класс cos cos x action да где это нужно сделать этого get классе надо сделать чтоб не видит классе секундочку но в git классе да то есть и класс равны вот так вот сюда можно избавиться от переменной count и вообще уже чтобы получить der klasse corinth переменная тоже не нужно у тебя есть доступ к объекту или как ты сам отметил и то есть классе то есть это да за счет чего работает наш метод и класс пазовый нет знаковый для любого объекта липового да то есть куда

    00:29:57 - 00:31:59

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

    00:31:04 - 00:33:20

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

    00:32:24 - 00:33:52

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

    00:33:08 - 00:34:35

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

    00:33:52 - 00:35:20

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

    00:34:35 - 00:36:05

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

    00:35:21 - 00:36:45

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

    00:36:02 - 00:37:51

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

    00:36:55 - 00:38:22

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

    00:37:43 - 00:39:56

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

    00:38:48 - 00:40:27

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

    00:39:39 - 00:41:08

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

    00:40:22 - 00:41:45

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

    00:41:05 - 00:42:38

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

    00:41:51 - 00:43:15

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

    00:42:33 - 00:44:04

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

    00:43:21 - 00:45:00

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

    00:44:21 - 00:45:33

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

    00:44:58 - 00:46:32

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

    00:45:45 - 00:47:11

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

    00:46:30 - 00:48:05

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

    00:47:17 - 00:48:41

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

    00:47:59 - 00:49:27

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

    00:48:44 - 00:50:09

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

    00:49:26 - 00:50:39

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

    00:50:02 - 00:51:27

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

    00:50:44 - 00:52:31

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

    00:51:37 - 00:53:02

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

    00:52:21 - 00:53:34

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

    00:52:58 - 00:54:18

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

    00:53:38 - 00:55:07

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

    00:54:27 - 00:56:08

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

    00:55:20 - 00:56:50

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

    00:56:05 - 00:57:33

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

    00:56:49 - 00:58:08

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

    00:57:29 - 00:59:23

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

    00:58:27 - 01:00:07

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

    00:59:22 - 01:01:29

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

    01:00:33 - 01:02:32

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

    01:01:35 - 01:03:08

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

    01:02:21 - 01:04:21

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

    01:03:20 - 01:05:18

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

    01:04:21 - 01:05:45

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

    01:05:04 - 01:06:52

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

    01:06:00 - 01:07:59

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

    01:07:06 - 01:08:55

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

    01:08:05 - 01:09:21

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

    01:08:45 - 01:10:20

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

    01:09:30 - 01:11:19

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

    01:10:27 - 01:11:49

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

    01:11:08 - 01:12:47

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

    01:12:04 - 01:13:20

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

    01:12:42 - 01:13:52

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

    01:13:17 - 01:14:45

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

    01:14:09 - 01:15:25

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

    01:14:48 - 01:15:59

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

    01:15:24 - 01:17:02

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

    01:16:23 - 01:17:54

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

    01:17:10 - 01:18:42

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

    01:17:55 - 01:19:41

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

    01:18:48 - 01:20:00

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

    01:19:26 - 01:20:50

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

    01:20:12 - 01:21:17

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

    01:20:44 - 01:22:31

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

    01:21:38 - 01:22:42

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

    01:22:10 - 01:23:25

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

    01:22:48 - 01:24:14

  • на с ними я мнению приходилось работать вот и собственно если синглтон то соответственно класс будет создан единственном экземпляре и esprit его контролирует да то есть в случае если спорта type типом the spring ну когда нам нужно получается объекта 2 типа spring он его создаст его полчасика фигурирует отдаст и все больше его не контролирует вот и поэтому после вот этого момента нужно всем жизнь и цикл been as can take монстра закончился а какие ты знаешь отметил что вот здесь синглтон про то так что ты знаешь еще больше когда я не

    01:23:34 - 01:24:57

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

    01:24:15 - 01:26:00

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

    01:25:14 - 01:26:48

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

    01:26:03 - 01:27:25

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

    01:26:45 - 01:28:09

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

    01:27:27 - 01:28:59

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

    01:28:12 - 01:29:48

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

    01:29:00 - 01:30:31

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

    01:29:50 - 01:31:20

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

    01:30:34 - 01:32:18

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

    01:31:34 - 01:32:50

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

    01:32:12 - 01:33:28

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

    01:32:49 - 01:34:07

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

    01:33:29 - 01:34:07

Менторы

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

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

    Middle .Net Developer

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

    Senior Product Manager

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

    Middle Python Developer

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

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

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

    Backend Software Engineer (PHP)

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

    Senior .NET/C# developer

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

    Middle DevOps Engineer | Tbilisi, Georgia

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

    Middle C# .NET

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

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

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

    Middle python developer

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