Техническое интервью Java Developer - Михаил Кончиц

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

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

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

    00:00:00 - 00:01:25

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

    00:00:43 - 00:01:55

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

    00:01:18 - 00:02:26

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

    00:01:53 - 00:03:11

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

    00:02:32 - 00:03:48

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

    00:03:09 - 00:04:12

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

    00:03:42 - 00:05:00

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

    00:04:20 - 00:05:32

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

    00:04:57 - 00:06:19

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

    00:05:38 - 00:07:02

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

    00:06:27 - 00:07:50

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

    00:07:08 - 00:08:36

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

    00:07:54 - 00:09:15

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

    00:08:38 - 00:09:56

  • jamming может о них слышал контракты calls to me to do is love эффективность то что у нас x светиться должен быть true симметричность если x и y otros значит y и холст x тоже будет труп транзитивность x и y и потру и x y z это трудно 4y и глаза это будет true конституции конечно согласен японский проще на согласованность если множественный вызов x и по y будет давать трудность раз вывел то значит и множеством и за должен его это же самый результат и также 5 там правило есть что если мы их снова значит ну то есть для

    00:09:17 - 00:10:54

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

    00:10:04 - 00:11:43

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

    00:10:55 - 00:12:05

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

    00:11:30 - 00:12:40

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

    00:12:06 - 00:14:19

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

    00:15:00 - 00:16:59

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

    00:16:37 - 00:19:55

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

    00:19:17 - 00:20:51

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

    00:20:46 - 00:22:47

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

    00:21:50 - 00:23:16

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

    00:22:46 - 00:25:31

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

    00:25:02 - 00:27:49

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

    00:26:56 - 00:28:27

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

    00:27:41 - 00:29:06

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

    00:28:23 - 00:29:59

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

    00:29:11 - 00:30:24

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

    00:29:48 - 00:31:01

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

    00:30:24 - 00:31:49

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

    00:31:07 - 00:32:12

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

    00:31:39 - 00:33:07

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

    00:32:23 - 00:33:42

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

    00:33:03 - 00:34:24

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

    00:33:43 - 00:35:03

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

    00:34:23 - 00:35:43

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

    00:35:06 - 00:36:42

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

    00:35:53 - 00:37:01

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

    00:36:27 - 00:38:01

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

    00:37:14 - 00:38:54

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

    00:38:05 - 00:39:28

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

    00:38:46 - 00:40:30

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

    00:39:42 - 00:41:34

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

    00:40:37 - 00:41:56

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

    00:41:21 - 00:42:26

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

    00:41:56 - 00:43:34

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

    00:42:44 - 00:44:20

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

    00:43:37 - 00:44:54

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

    00:44:16 - 00:45:38

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

    00:44:58 - 00:46:04

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

    00:45:31 - 00:46:59

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

    00:46:15 - 00:47:50

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

    00:47:02 - 00:48:25

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

    00:47:44 - 00:48:57

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

    00:48:21 - 00:49:31

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

    00:48:54 - 00:50:12

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

    00:49:33 - 00:50:42

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

    00:50:09 - 00:51:13

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

    00:50:42 - 00:51:59

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

    00:51:20 - 00:52:31

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

    00:52:00 - 00:53:44

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

    00:52:59 - 00:54:42

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

    00:53:50 - 00:55:10

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

    00:54:31 - 00:55:39

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

    00:55:06 - 00:56:28

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

    00:55:46 - 00:56:54

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

    00:56:20 - 00:57:40

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

    00:57:00 - 00:58:45

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

    00:57:51 - 00:59:28

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

    00:58:55 - 01:00:47

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

    01:00:10 - 01:03:00

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

    01:01:41 - 01:03:27

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

    01:03:02 - 01:04:34

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

    01:03:47 - 01:05:21

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

    01:04:43 - 01:06:14

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

    01:05:39 - 01:07:27

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

    01:06:33 - 01:07:44

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

    01:07:08 - 01:09:20

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

    01:08:13 - 01:12:12

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

    01:10:45 - 01:13:04

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

    01:12:02 - 01:13:38

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

    01:13:20 - 01:16:16

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

    01:14:52 - 01:16:19

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

    01:15:42 - 01:16:59

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

    01:16:20 - 01:17:49

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

    01:17:06 - 01:18:41

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

    01:17:53 - 01:19:08

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

    01:18:30 - 01:19:47

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

    01:19:10 - 01:21:39

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

    01:20:48 - 01:22:02

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

    01:21:31 - 01:23:14

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

    01:22:38 - 01:24:07

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

    01:23:22 - 01:24:48

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

    01:24:01 - 01:27:29

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

    01:25:48 - 01:27:05

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

    01:26:28 - 01:27:46

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

    01:27:07 - 01:28:31

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

    01:27:49 - 01:29:45

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

    01:28:47 - 01:30:01

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

    01:29:23 - 01:30:53

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

    01:30:09 - 01:31:24

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

    01:30:52 - 01:32:21

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

    01:31:36 - 01:33:30

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

    01:32:39 - 01:34:21

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

    01:33:32 - 01:35:18

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

    01:34:36 - 01:36:12

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

    01:35:24 - 01:36:49

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

    01:36:09 - 01:37:38

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

    01:36:54 - 01:38:18

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

    01:37:36 - 01:39:34

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

    01:38:40 - 01:40:13

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

    01:39:29 - 01:41:02

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

    01:40:20 - 01:42:07

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

    01:41:13 - 01:42:32

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

    01:41:53 - 01:43:14

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

    01:42:33 - 01:43:52

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

    01:43:13 - 01:44:33

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

    01:43:56 - 01:45:25

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

    01:44:39 - 01:46:19

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

    01:45:30 - 01:47:07

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

    01:46:14 - 01:47:32

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

    01:46:58 - 01:48:08

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

    01:47:33 - 01:48:37

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

    01:48:04 - 01:49:28

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

    01:48:47 - 01:49:34