Подготовка к собеседованию на Java Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
друзья всем привет вы на канале джабал с вами макс добрынин и сегодня много и порция технических интервью но прежде чем мы начнем подписывайся на наш канал ставь колокольчик не забывайте не пропуская все самые интересные видео о эти индустрии программной инженерии и в целом о программировании наш porsche а мы начинаем итак друзья сегодня гостях у нас юра брагинский юра учиться в техническом вузе он уже знакомы джаббой он изучает ее порядка шести месяцев тем не менее он не плохо знаком с теорией
00:00:02 - 00:01:01
программирования с основе которые необходимы и которые пригодятся в любом языке в том числе он знает и другие языки такие как паскаль тот самый бородатые как застоявшуюся вино или застоявшейся сыр который мы знаем мы вроде как бы да но вроде как бы нет мы не будем его пробовать потому что что-то от него пахнет тем не менее не сделал очень крутой выбору он отказался от pascal перешел нажал потому что java действительно язык крутой многие говорят что они как прогрессивный и тем не менее почему-то все на нем пишут и довольно
00:00:31 - 00:01:35
таки круто он вливается в нашу современную индустрию что ж давайте проверим каким образом юра справиться с сегодняшней техническим интервью насколько он силен насколько он уверен в своих силах а я вам точно вам искать он достаточно умен и снега лис чтобы решать многие задачи и он даст фору многим junior altro и не java девелопером однако давайте проверим это вместе погнали друзья юра привет предыдущем приветствую тебя на интервью на канале балку расскажу вдруг слова как ты к нам попал и что тебя сюда привело
00:01:04 - 00:02:20
а ну я увидел объявление что творится на бой на дыши пестрая решил его отправил как-то вообще никогда не считал именно моим ну как-то все-таки что упаковывается знакомиться посмотрел какие языки стоит выбирать новичкам был выбор между python ему джавой я решился попова джаву и мое знакомство с не началось книжки якова парня до конца не прошел она как бы дала мне стать некий где-то java еще может быть занимался каких-то участвовал не знаю олимпиадах может быть на курсы занимался в университете техническом может быть я узнавал
00:01:42 - 00:03:39
нет у меня в школе была немножко pascal и было немножко pascal в университете на самом деле плюс я ощутил от них потому что от этих занятий потому что когда пришел в сжал я уже понимал более-менее как работают циклы условные операторы объявления переменных и вот все такое звучит звучит интересно а сколько ты совокупно занимаешься давай ну там не за месяц два три полгода-год ну и вот так плотно нормально это же задач то примерно наверно полгода даже чуть больше атак я книжку по-моему то ли начале осени то ли в начале лета
00:02:50 - 00:04:25
прошлого ну начал потихонечку листать от кого что-то пробовать ну так это было время от времени то есть еще такого планомерного изучения не было не получается на какое то время а потом снова вернулся и вот так а хочешь стать java разработчиков или это скорее для тебя сейчас как хобби или может быть цель действительно стать java разработчиков да нет вот это уже все как бы шел по наверно этим заниматься методичный находить работу как только буду готов будут соответствовать мы навыки знания и ноги в каком
00:03:38 - 00:04:55
университете занимался технический или гуманитарный вуз технический настоятель образования по у круто мур это значит или должен быть знаком шаблон проектирования builder джаве принципе в программной инженерии но деда по-моему не помню но час шаблонах и знаю его очень хорошо тогда мы тогда мы проверим и заодно познакомимся может быть builder am хорошо хорошо еще раз желаю тебе удачи на этом интервью и пусть сам она раскроет тебе все что тебе не хватало и указывает новые пути для развития и для самосовершенствования что ж начнем с
00:04:17 - 00:05:45
самых базовых вопросов по джаве расскажи мне чем отличается г-н от g&g к значит и такие понятия и вот чем они между собой отключать уже только таком как-то заборчик от демона получается что на машину джаван который исполнять байт-код получается живым это как одна из чистейшей к виджет получается джирайя который входит самок живые и компилятор это по-моему не составляет жизни к окей окей за счет очень круто и принципе правильно а скажи можем ли мы без гдк вместе java разработал получится ли у нас
00:05:03 - 00:06:37
нам компилятор нужен сам код мы можем же написать на чем угодно но нам нужно его начала скомпилировать как я понимаю где то потом скажешь ok звучит на самом деле праве мы без компилятора никуда не денешься хорошо 2 тогда продвигаться чуть дальше вот мы начали самого простого джавы скажи какие примитивные тип рыдаю ты знаешь так boolean байт шел a long флот дабл а скажи сколько занимает место int предположим гипс два бита или четыре байта отлично а его размер знаешь часовой да да да какое количество
00:05:59 - 00:07:41
значений может себе отмечать ну получается 22 отдельный там 22 плюс минус 120 минус 2-ой сможет запутался ничего страшного пойдет ответ вполне защита видно что ты по крайней мере понимаешь чем идет речь про арифметику железячка наш хороша машины объяснить чем обусловлена что и на ограниченном размере ведь когда мы создаем и мы предложим ссылочных данных то размер его не ограничены то есть от 0 до сколько хочу а почему и нет ограничен чем это обусловлено да говори спецификация языка так заложено что он
00:07:03 - 00:08:28
занимает 32 бит на под него выделяется когда мы объявляем переменную типа int нее выделяется птица два бита а почему при 32 битах я не могу предположим в инте я хранить 4 миллиарда ну то есть сейчас там можно хранить 2 миллиарда с хвостиком при четырех байтов почему в этих четырех байтов я не могу хранить там четыре миллиарда или 10 миллиардов чем это обусловлено но получается потому что максимальное число которое можно хранить задается вот этой степени 2 1 плюс i 2 1 минус ну получается сколько там пицца
00:07:51 - 00:09:20
2 бить и ты каждый бит представляет собой либо но либо единицы и двойки окей хорошо хорошо засчитано ну давай тогда продвинемся чуть чуть дальше коль мы заговорили о солнечных типах данных подскажи просто а где ссылочные типы данных хранятся получается ссылка на объект не самой удачной переменной а объект который создает сохранится куча а где а где вот искал ссылочная переменная чаще всего такого не в средние услышишь на собеседник чтобы кто-то отвечал на правильно подскажи где эта ссылочная переменная
00:08:39 - 00:10:02
хранится в какой области памяти вообще если мы объявляем где-то в методе тупой где она будет в стеке возникать но когда мы прописываем какой-то класс и создаем его если в cas есть какие-то тоже ссылочные переменные по идее кучи самом объекте тоже может быть достаточно переменной ссылка на что здорово то есть ты хочешь сказать что если мы создам локальную переменную в методе дано х она она создается и хранится в стеке для правильно понял надо а в случае если это свойство объекта плана хранится вместе с объектом кучу
00:09:26 - 00:10:57
да они хорошо да действительно правильно perfect мы будем тогда продвигаться . дальше расскажу почему так опасно сравнивать объекты между собой через двойное равно ну потому что он сравнивает только если обе ссылки ну вот бессрочные точно переменные указывают на один и без памяти когда она вернет стул а если нарядные даже если это объекты ну условно одинаковый тогда будет возвращено фолз чтобы сравнить объекты нам нужно использовать метод эклз окей хорошо вопрос ответ засчитан давай тогда перейдем к методу эклз расскажи
00:10:15 - 00:11:48
пожалуйста вот я могу использовать метод эквол с в таком виде в каком он есть если да то почему если нет то почему но обычно когда мы задаем какой-то свой объект там обе определяем этот чтоб ним сам нет необходимые нам поля и свойство объекта вот ну каких-то типов стандартной библиотеки он понятное дело что уже может быть я ли заводе бы один тоже или дабы или ещё какого-то объекта а если свой какую-то создаем то нам его нужно определять пол тогда возникает вопрос нужно ли нам переопределять и курс
00:11:02 - 00:12:27
всегда ну по идее это зависит от того какие операции мы будем производить с объектом если объект является ключом с тем кто же хэш card to do желательно и определить его или идут какие-то сомнения для сортировки мне нравится защита на на самом деле более чем развернутый ответ прошу прощения раз а давай тогда продвигаться мы с тобой так очень интенсивно двигаемся вперед и разумеется мы дошли уже с тобой-то объекта но при этом мы не затронули ни разу идея объектно-ориентированного программирования
00:11:45 - 00:13:14
подскажи пожалуйста что в твоем понимании означает полиморфизм и как ты его видишь с точки зрения java как можно ужать его применить соответственно ну помимо физмата получает за возможность использовать и применять один интерфейс для различных реализаций жар и получается и вот именно для ослабление зависимости объектов друг от друга потому что вместо того чтоб объявляйте допустим в объект ссылку на какой-то необходимый объект функций самого объект нас типом самого объекта мы можем задать некий интерфейс
00:12:35 - 00:14:11
реализовать его и получается задавать на уровне интерфейс языка это позволит нам случае чего легко потом поменять реализацию окей я бы сказал что прямых фильм позволяет нам меньше зависеть от конкретной реализации и работать с разными типами данных условно хорошо хорошо принята а подскажи мне вот ты затронул тему интерфейсов в плане интерфейсов это вещь на животрепещущие темы там еще энное количество лет назад вообще была идея работа от интерфейсов и она приняла настолько глобальный масштаб и что в
00:13:27 - 00:14:48
итоге этот сам принцип стал так сказать с предметом неправильного его использования интерфейсы пихали куда только не попасть с этим у меня возникает к тебе вопрос я знаю вот как java разработчик что в джаве и не только джаве есть абстрактные классы есть интерфейс и интерфейсы могут обладать абстрактными методами абстрактные классы тоже могут обладать абстрактными методами и то что ты сказал что мы по сути можем использовать базовый тип для того чтобы формировать как сказать иерархии потом ее использует
00:14:10 - 00:15:28
то есть по сути делать подстановка то есть у нас базовый ссылочная переменная это базовый типа реализация уже какая-то конкретно с этим у меня возникает вопрос а в чем же тогда разница здесь между абстрактным классом с абстрактным методом и api-интерфейсам с точно таким же абстрактным методом ведь по сути одно и то же там полиморфизм будет и здесь полиморфизм будет там мы можем работать от базового типа и тут мы можем работать от базового типа то мы реализуем метод и тут на лизу метод тогда в чем разница
00:14:49 - 00:15:58
можешь песен пожалуйста стакан философском плане ли конкретные отличие абстрактного интерфейса ты можешь начать принципе отличие технический но меня интересует не столько технические отличия а почему при одних и тех же возможностях абстрактный класс может то же самое что и интерфейсе интерфейс так сама может то же самое что и абстрактный класс плане абстрактных методов я смогу создать public abstract там войти туссан ты тоже самое могу создать в абстрактном классе public abstract войду самками то есть
00:15:23 - 00:16:37
две одинаковые еще два одинаковых методы в чем разница я могу тебе показать при помощи intel очаге перепилим перейдем в intel я тебя пошарю экран соответственно и мы с тобой эту тему немножечко разберем бабы может дать ответ ну вообще каркас позволяет больше наверно задать какую-то изначально структуру коса потому что он позволяет и объявлять какие-то состоянием и методы сейчас интерфейсы тоже есть методы не тяни но в целом я бы сказал что абсолютно к сможет какую-то изначально вот сугубо так окей звучит море зоны на самом деле
00:16:04 - 00:17:47
хорошо и тут мы с тобой видим следующих два наших две сущности то есть у нас с тобой есть абстрактный класс у него есть паблик abs таковой у и есть нас интерфейс у него то же самое есть точно такой метод то есть я с тобой согласен что абстрактный класс принципе он может определять структуру мышц хранить свойство это его особенности но если вдаваться не только в это а привязываться вот уже к самим методом ведь абстрактный класс тоже может задать поведение тогда у меня возникает вопрос в чем же тогда разница здесь в смысле
00:17:06 - 00:18:23
поведения между интерфейсами абстрактным классом в чем же преимущество или недостаток использование того и другого может ли прорастает объяснить о мать и ножка на dismantle шум ну я допросим знаю что случае если интерфейс реализуют один метод то получается это позволяет нам реализовывать никто функциональность которая недоступна функциональность ну не доступна в абстрактном кассе допустим передавать [музыка] в некоторые методы которые запрашивают объекты интерфейс ну да это постепенно сдвигается в сторону
00:17:47 - 00:19:23
функциональных интерфейс но давай тогда я уточню вопрос скажи чтобы ты выбрал абстрактный класс для метода public abstract вайфу или интерфейс для объявления такого же эквивалентного метод и почему якобы интерфейс потому что там с бабой как как нему года уже заглядывается автоматически клуба поведения то я думаю и стоит применять интерфейс потому что он конкретно где этого предназначены ничего лишнего в этом плане там практически нет согласен согласен и все-таки тонкая грань согласились у нас есть public
00:18:45 - 00:20:25
abstract и в абстрактном классе скажи а тебе не наталкивает на мысль что public abstract уже стоит здесь по умолчанию и изменить ты его не можешь а интерфейс уже есть получается и методы получения но мы не говорим про методы поломаться и мы говорим про обычные классические интерфейс методы по умолчанию тоже фичи java 8 + соответственно мы больше говорим сейчас про объектно-ориентированное программирование как она есть ну смотри я тебе тут немножко раскрой карты смысл в принципе правильном направлении
00:19:34 - 00:20:49
мыслишь просто пока что еще не сформулировал тот ответ или в той форме в которой приблизительно я бы мог его ожидать ситуации заключается в том ты прав интерфейс он определяет поведение другое дело что абстрактный класс тоже определяет поведения разница заключается в том между двумя этими эквивалентные методами что в отличие от абстрактного класса интерфейс гарантирует контракт иначе говоря наши публичные методы они всегда будут доставлены до клиента наши горят тот кто будет пользовать наш код использовать всего и они всегда будут
00:20:20 - 00:21:28
публичным то есть любой кто работает от интерфейса а может гарантированно знать о том что метод full к нему будет всегда доставлен этот метод всегда будет публично то есть это и есть идея контракта публичные методы прямо к тебе домой абстрактный класс наряду с этим всем может иметь абстрактный метод эко чп рай вот и в том числе protect и а это нам не дает гарантии 100 процентный контракт то есть да мы можем сделать public но если кто-то вдруг изменению его на протектор отчего мы не защищены разумеется на использующий стороне нас
00:20:54 - 00:22:07
он предположим в другом каком-то приложение кто использует библиотеку ребята могут потерять контракт и следовательно работать от интерфейса и привязываться к контракт этого интерфейса становится сложнее и мы на него просто не гарантируем вот в принципе это ключевое конечно же отличие в этом плане на все что ты говорил вокруг этого тоже правильных суждений хорошо тут засчитано принято тогда будем продвигаться немного . дальше мне понравилось твое об этом поговорим немножко про идею объектно-ориентированном
00:21:31 - 00:22:42
программировании и скажу не слышал ли ты что-то про динамический полиморфизм или так называемый runtime полиморфизм очень часто очень часто живем называется динамическая dispacci ре зация методов это понимаешь а то что если у нас в каком-то под кафе реализован метод седока сами интерфейса что получается при вызове мы можем через ссылку супер типом вызывать конкретной реализацию пор типа этого метода для определенного да именно так это этого достаточно это то что я хотел отлично тут мы не будем дальше идти в подробности но то что ты
00:22:06 - 00:23:43
уже знаешь об его существовании и маша писать для чего он признан это уже круто хорошо тогда будем двигаться дальше скажи пожалуйста вот как с точки зрения почему мы можем перегружать конструкторы чём заключается идея перегрузки конструктора чтобы различные варианты для инициализации объекта при создании возможно у нас некоторые были определенных случаях сказы известно других они могут быть неизвестному у нас появляется вариативность при создании объекта а давай вернемся на intel чаде опять и решим простую задачку я тебе покажу
00:23:00 - 00:24:34
участок кода который вот сам честно бросаем соответственно а ты мне скажешь что ты хочешь здесь улучшить задача заключается в следующем формате у нас с тобой есть какое-то приватное свойство финальные правят поймал им а здесь string б вот такая вот чтобы и у меня есть два конструктора первый конструктор он для двух параметров 2 конструктор только для одного параметра соответственно вот так вот и вот здесь у меня вопрос чтобы в каком-либо из этих конструкторов ты бы лучше потому что обратил внимание у нас
00:23:48 - 00:25:15
filestream б ругается вот как бы ты вышел бы из этой ситуации чтобы он перестал ругаться можно в конструкции первым задать получается какое-то значение медный б по умолчанию наш так сказать вариант когда допустим какой-то пользователь не задает стинг бы сам будьте задаваться по умолчанию какое-то наше значение можем с b равно там и какое-то нужное нам значение ну допустим с b равно с b равно нал но тогда у меня возникает вопрос не похожи или два этих конструктора между собой но потому что если вот занимать
00:24:31 - 00:26:09
внутри строчкой 16 17 строчка 21 и 22 они по сути эквиваленты можно ли как то этот код сократить с точки зрения этих двух конструктора как ты думаешь ну получается можно вы во втором конструкторе 1 конструктор по идее как-то по моему так это работает ok а как бы а как это можно сделать мысль правильно и мне нравится как этому сдался так [музыка] помой скобках параметр задать [музыка] я понял ты вот наверное меньше да да это так здорово здорово мне нравится ну то есть вопрос защита макет на вопрос об
00:25:20 - 00:26:54
этом и был что мы можем иметь множество реализации конструктора в конечном итоге мы можем все эти реализации свести к одному конструктору то есть вызов конструкторов в конструкторе хорошо хорошо двигаемся тогда дальше переключимся на более такие сложные вопросы расскажи мне про исключения что я хочу сейчас узнать это иерархия исключений вплоть до exception я не говорю перечислять каждая конкретная реализовано сечение а просто базовая иерархия как она состоит начинается отсюда движется чуть чуть
00:26:19 - 00:27:37
вниз и почему именно в такой форме объяснишь просто так насколько помню вершина является собой от него идет exception-ы но эксепшен очень делится на проверяем и непроверяемые проверяемые the runtime exception ой так неправильные это все стране здорово лучше и не скажешь на самом деле очень кратко и доступно а скажи мне пожалуйста чем отличаются вот эти runtime от нервным иначе говоря проверяемые не проверяем английском человек танчик зачем они существуют ну то есть какой от них прок сколько куча со проверяемые но от влияем
00:26:57 - 00:28:46
их может сообщить компилятор а декомпиляции непроверяемые выскакивают уже на во время исполнения кода на стадии исполнения в курсе возникает образ это уже на стадии исполнения тут меня насторожило немножко выражение на стадии компилятора ну как бы вроде сначала блоки а потом ты говоришь что runtime исключение вылетают ходе выполнения программы а разве и проверяем и то есть exception базовый и и его наследники кто не runtime разве они не могут вылететь в ходе выполнения программы а я вполне есть копировать и
00:27:56 - 00:29:26
так получается что при компиляции возможное для исключения the compiler еще на стадии компиляции укажет о нем а укажет о чем уже а [музыка] ну как-то по моему как то какое то исключение прага и маяком и вал скомпилировать [музыка] допустим kasten а.а. [музыка] но это но это уже другая история тут скорее вопрос о том насколько ты понимаешь или насколько ты уверен в том как это работает проясним у нас есть два типа исключений это чек то есть проверяемый и анчик непроверяемые вопрос такой прям в лоб могут ли эти оба
00:28:45 - 00:30:34
типа исключений произойти во время выполнения программ не ну в принципе мы любой исключение можем выбросить во время выполнения программы хорошо согласилась его но тогда так тогда у меня встречный вопрос а в чем же тогда здесь проблема с компиляции почему ты несколько раз упомянул и пингвин ственный что компилятор проверяемое исключение к чему здесь тогда компиляторы если в процессе выполнения программы компиляции уже про где здесь компилятор участвует ну деформирование быть вот это полагаю не обижусь мне безусловно но почему это так
00:29:41 - 00:31:05
тесно связана с исключением я могу показать тебе соответствующий код мы с тобой освящаемся в индии и у нас условно говоря с тобой и следующие исключением вот у нас свои собственные пласт назовем чек exception expand exception неважно что там внутри и есть м ч он уже идет at runtime exception можете подсказать почему когда я делаю чек праву у меня происходит здесь красное подчеркивание иначе говоря им получать фиксирует проблему мы можем это отдельно вынести в метод статику white и [музыка] frauen и
00:30:26 - 00:32:18
то же самое сделать для runtime то есть м ч здесь у нас фрау ту по сути одно и то же да ну вроде как бы проблем никакой нет но возникает вопрос а почему же тогда в первом случае то есть строчка 11 здесь ругается это лошадей а во втором случае не ругается и даже если попытаюсь такую программу соответственно запустить у меня ругнется тот самый компилятора как о котором ты говорил в чем же можно в чем же проблема то есть вот мы получили ошибку под даже не соберётся в чем здесь проблема можешь объяснить и как ее можно излечить
00:31:25 - 00:32:49
ну излечить можно либо поместив to catch либо указал сильно то и нет ада по сути вот мы получается что для проверяемых компилятор требуют чтобы было указано явно что выбрасывается исключений или чтобы она была он не требует тоже разработчики да абсолютно верно вот теперь мы прояснили что компилятор всего лишь для чегт исключений требует обязательной обработки либо указания в сигнатуре так называемого слова flows что будет вызывающей стороне делегировать по сути обязанность обработать это исключение да хорошо
00:32:07 - 00:33:37
давай разобьем эту тему мне нравится твой ответ все-таки докопались до истины разовьем тему скажи а почему в принципе когда мы с тобой видим что есть чек и есть анчик они ведь ты реально решают одну и ту же задачу там выброс исключения там выброс исключение почему ведь они тогда существует ведь предположим все sharpie нормально язык программирования живет без чек исключение и все окей почему же тогда в джаве это существует вот свое личное мнение или может быть ты можешь процитировать мнение каких-то ведущих
00:32:56 - 00:34:13
разработчиков вот как ты считаешь у могу предположить что некоторые заключения получается точнее что проверяем и исключение ну просто сообщают что тот или иной метод может сама тишина стадии компиляции gaga на нашу как то так но но предположим мы технически ты говоришь мы можем сломать на стадии компиляции окей вот я вызвал этот метод в методе main он не пишу танк индекс action то есть я должен проверить но я такой как правый разработчиков rose многие так делают между прочим фронте здесь пишу человек exception и проблема
00:33:34 - 00:35:05
ушла на самом деле она просто ушла из учетом того что это самый первый пластику вызова метод main это просто уходит в никуда и тогда мне возникает вопрос то есть если я могу в принципе здесь защитить и везде проставить этих rose какой от этого в принципе про ведь это просто по сути масло масляное какое-то по сравнению с простотой использования чек можно как-то прокомментировать и вот сказать вот зачем же все-таки это нужно потому что нам блин вроде него тогда получается я могут положить что неправильно исключение and an exception
00:34:24 - 00:35:49
нужны чтобы обозначить какую-то так скажем исключительную ситуацию во время допустим исполнении года как взять допустим 0 по interaction или попытка ассоциация на выходящих за пределы массива то есть разработчик что-то сделать зениток и мы посредством исключения непроверяемые можем ему сообщить чем проблема то есть исключения нужны для того чтобы скажем так сообщать разработчик о том что потенциально вот произошло не так использование того или иного там нет на самом деле ты прав если мы почитаем
00:35:09 - 00:36:52
такой отсылка небольшая если мы почитаем гослинга того самого разработчика который участвовал в создании джавы он 10 раз подряд тебе ответит что ему не стыдно принципе за эту штуку в одной простой причине эта попытка уведомлять по какой-то возможные ситуации которую все-таки стоило бы предусмотреть на вызывающей стороне то есть чегт exception не дает нам возможности проигнорировать анчик эту возможность дает и это только этим руководствовались ребята когда внедрили так называемые проверяемое исключение то есть это
00:36:04 - 00:37:16
базовая основа что когда мы должны предусмотреть ситуацию непредвиденную или на самом деле прибыльную на которые хотелось бы избежать чтобы она не выстрелила в самый неподходящий момент ну здесь вопросов нет нет не по на сколько петел порассуждал на эту тему вполне достойным не так задачу следующая необходимо сделать своп значение у нас есть переменная а переменная они локальные соответственно как аргументы предположим как в примере у нас есть десятка входящие для переменной а и для второго аргумента у нас 20 на выходе или
00:36:40 - 00:37:59
в результате должно получиться что а обзавелась значением 20 а b10 соответственно при этом нельзя создавать дополнительные структуры использовать переменные какие-то объекте key для этого использовались то есть все что есть это наш метод это две переменные и разумеется их значения между собой нужно поменять местами я бы попробовал возможно есть какой-то статический метод в интервью для давай попробуем попробуй если ты знаешь возможность какое то почему бы нет но то есть я не настаиваю решать это исключительно силами двух
00:37:20 - 00:38:33
переменных если есть вариант статического метода уделить будь элитным куда класть чем нет другое дело что мы посмотрим но дам маленькую подсказку уже сходу до задач решается кусочком логики и кусочком арифметики ничего более чем логическое мышление и арифметические возможности [музыка] это может тебя натолкнуть на какую-то мысль иначе говоря все что у тебя все что тебе нужно для решения этой задачи она у тебя уже а группой немножечко логично но все-таки а возможно тогда что там ну давай отличный пошёл кот уже что лежит
00:37:56 - 00:39:41
как-то можно что-то попытаться сделать такое равно а делить а так кто 10 и так у нас есть 10 [музыка] заменено я понял так 20 разделить на 10 это у нас двойка получится потом мы двадцатку делим на двойку получаем соответственно десятку и 2 умножить на 10 соответственно должно получить двадцатка да давай проверим как уже 2 нравится давай проверим как и выведем значения но у меня сомнения самом деле не и б я не бил значение сейчас она гнется так проверим на нескольких вариациях 1020 и возьмем предположим
00:39:15 - 00:41:21
16:30 они тоже при деле и хотя брать и обрати внимание что сейчас может быть проблем 1633 приведет нас вот такому исходу у нас с тобой есть арифметика exception но давай сначала проверим 1020 верна ли твоя теория и мы бывали в ритмическом exception то есть здесь вполне может быть zero как ты думаешь в чем ошибка ну то есть здесь мы передали наши значения какие соображений на получается когда они тоже делятся там может получить сама и если мы потом будем делить на ноль то соответственно нас выскочить значение да то есть либо
00:40:48 - 00:42:34
нам нужно что-то проверить для того чтобы преодолеть исключение либо ты должен применить какой-то более подход который той же арифметический но при этом он исключает деление то есть по сути ну идея неплохая на то есть мы отделим на b но другое дело что у нас с тобой 1020 то есть мы с тобой делим 10 на 20 получается у нас соответственно здесь вещественное число следовательно он отбрасывает вещественную часть нам остается 0 давай попробуем но но мне ход мысли твоих нравится как-то начал рассуждать
00:41:55 - 00:43:17
давай попробуем решить эту же задачу вот второй второй ход он же последний но выберем какую-то другую операцию мне деление а что идите допустимо бы тоже деления но добавить мягко а в случае если не проходит вызвать метод рекурсивно и просто писаешь в нем аргументы хорошо давай ну почему бы нет вообще идея с рекурсии звучит очень неплохо на самом-то деле потому что но как сложновато но неплохо давай попробуем так ну допустим и получается бы у нас данном случае должно быть меньше и меньше а будет так а
00:42:35 - 00:44:13
ему съехала [музыка] даже так у нас получается тогда мы на первое место закидываем b и вот так вот ну давай попробуем выполнить готова до готов запускаем куда то пропала наша двадцатка блин ну понятно ну на самом деле можно избавиться от рекурсии подскажу как можно решить эту задачу в принципе то как ты начал самого начала был неплох то есть ты начал оперировать уже существующими цифрами и соответственно она снова не попытаться вывести какую-то последовательно то есть по большому счету ты начал играться разбивая их на какие
00:43:43 - 00:45:33
то доли а что если я тебе скажу что операция сложения может сделать в принципе тоже самое ну если мы подумаем 2 2 значения совокупных hb уже хранят каждая из этих значений ну то есть а потом может быть сможет переделать но думаю да шиш предела давай давай сделаем третий заход и он же будет у нас последний но без рекурсии [музыка] у нас получается и ответственно б но так это минус b получил 20 и получается а у нас равно а так у нас получится было стало 20 и снова а минус b продался еще задачи для себя она шорта а
00:44:55 - 00:46:54
стал отрицать 3010 [музыка] соответственно 30 -2010 ну по идее должно сработать давай проблем запускаемся и у нас получилось 2020 где ошибка находится где-то где-то в коде где-то в коде нашим она находится здесь 20 [музыка] так выводится же не может быть может быть это и есть часть задание что же давай и здесь сделаем там самым проверим 1633 и мы видим 1333 16 поменялось давай сделаем тогда я раскомментируем туре курсе секундочку и посмотрим дорабатывает когда через неделю как ну во-первых мы видим ошибку у нас
00:46:39 - 00:48:51
получилось так что мы два развозим исход сам к себе уже уже и видим что значение по сути у нас не поменялись они остались на первые места но тем ни менее задачу что все-таки решил хорошо тут это оставим или будем продвигаться немножечко дальше давай выделим какое-то время коллекция сегодня и потом переключимся с тобой на spring framework и поговорим о spring фреймворк коллекции расскажи мне пожалуйста что ты знаешь про кэш мо как реализация интерфейса меня интерес получилось вопрос был очень такой абстрактной меня
00:48:45 - 00:50:20
интересует скорость доступа к значениям скорость добавления значения и скорость поиска на принципе доступ поиск одно и то же нам сучки так но получается потому что массив в нем хранятся данные формате ключ-значение лучшем случае константное будет время поиска элемента худшем может быть линейно есть там еще связан список не перестроенных диего получается худшем но и кризис и получается несколько значений ставилась в один баки то тогда условно говоря можно сказать что линейны в худшем случае окей
00:49:33 - 00:51:09
ты сказал есть количество баки до какой-то а вот но в принципе баки а сколько пакетов по умолчанию в насколько за 16 смотри мы добавляем значения то есть добавление тоже происходит за константное время мы получается если нет коллизии здесь есть krizia то уже нет а получение а получение значения но доступа к значению предположим но опять-таки если калязине доступ к лизе есть то пока ты связанный список за линиями значение 1 ладно списке а если преставилась диего тоже получается за убийство хорошо вот это хорошо а можешь
00:50:30 - 00:52:09
а знаешь когда он перестраивается в дерево потому что перестройка в дерево вообще принципе не каждый знает что она перестраиваются в дерево знаешь ли ты когда она перестраиваться дерева при каких обстоятельствах по моему когда значение связан списке со мной за больше восьми тогда происходит автоматическая несколько сбалансированное дерево окей окей хорошо меня интересует еще один интересный момент ты горишь там какой то есть список внутри есть bucket и о чем принципе разница между баки там из списка но то есть мне немножко не ясно
00:51:29 - 00:52:55
может мне прояснить вот я вот не шарю в этом вот как бы ты мне бы прояснил бед но получается у нас нити кошмар конница массив на основе хэш-функции вычисляется ячейка под этот массив и в него записывается объект но амаранта называется да он содержится в себе ключ-значение по моему хэш-код и ссылку на следующий not модель получается весе в одну ячейку массива приходит несколько замещение ну или там уже есть значение туда приходит еще одно просто помещаем ссылку но до на следующий год вот этот какой добавляли связным окей хорошо а
00:52:12 - 00:53:57
вот получается что но это и есть тот самый связанный список или связанный список это что-то типа то маленький глиста подкопаться но тут то элемент связанного списка то есть это элемент который нет некое значение и ссылку на следующий элемент то есть то есть совокупность нот это и есть сам связано это ячейки с я понял я pom а скажи этот список двунаправленный или 1 направлен направлено agel у здорово вообще прям шикарным давайте зальем немножко тему по поводу шмапы подскажи мне пожалуйста может быть
00:53:13 - 00:54:50
такая ситуация что в хэш mapi окажется два одинаковых плеча я слышал что ключи должны быть уникальными freshmatic вот может быть ситуация что все-таки два ключа у нас там есть да если плохо реализованную и клаус и хэш-код или вообще не реализованы то вполне может оказаться так чтобы одинаковые желательно чтоб они еще и неизменяемым были ключи а вот это был мой вопрос вот тут давай попробуем его тоже развить немножко представим себе ситуацию у меня вроде как бы сто процентов у меня уже эклз и хэш-код переопределены прям
00:54:02 - 00:55:27
вообще 100 процентах никаких вопросов не понятно мы берем какой-то кризис коллизию погрешность ну это само собой оно может быть но будем считать что фактически это 99 процентов что все будет круто или даже больше но все-таки у меня вдруг оказывается что я могу хранить два одинаковых ключа вот оказалось так вот два значения и все таки они одинаковые ты что то сказал за ним ut обильность или неизменяемость почему это так важно потому что допустим изначально на основе более нашего туча мы определили 1х скот и
00:54:57 - 00:56:30
поместили его в конкретную ячейку а допустим объект других полями другую ячейку а когда объекта допустить их такими же как объекта в другой ячейки по идее блоге бы объект с такими же полями но он был изначально помещен другую ячейку уже и поэтому уникальность уже не соблюдается то есть у нас проявляется уникальность на стадии конкретно добавление это когда уже объект там лежит уже крышка случае изменения его тополей skoda уже и обидеть его в другую ячейку нет есть в этой ячейке объект с такими же
00:55:44 - 00:57:27
полями с таким же хэш-кода ok а что если мы сделаем ситуацию следующем я тебе покажу в intel чаде и пошалю себе экран и мы с тобой вместе посмотрим ситуация заключается в следующем у нас есть какой-нибудь classic и то есть у него есть поле mpd и стринги предположим string ней собственно конструкторы там прочие нас интересует друг мы создали с тобой more у него это значение стринги это у нас белье и весьма само собой как полагается и далее я выполняю следующую операцию я создаю один ключ и создадим конструктор для быстро ты
00:56:37 - 00:58:28
я создал ключ и здесь поместит там один и предположим один не все затем я беру нашу маму добавляю туда пишу ван затем я наш ключ и змея допустим пишу ke ai de равно там 22 и здесь использую опять же этот ключ и ставлю ту скажи мне пожалуйста вот стоит точки зрения что нам в консоль выведет в итоге вся попа будет ли там один ключ с одним значением или там будет два ключа с двумя соответствующими значениями и главное почему ну а думал будет вокруг а потому что мы уже изменили поле и когда будет добавляться объект вычисляться его это
00:57:32 - 00:59:33
уже продолжаю что останется там ну первоначальная на объект тучах по идее должен хотя блина тусовочная примерно скажем так у нас выведется два значения но ключ и пьет если приводить будут как я думаю еще раз какими будут ну у нас не создали по сути на в объект то есть если мы будем выводить выводить ключевыми tissot два одинаковых ключа я там ну на самом деле сакральное ответил будет два ключа потому что как ты уже отметил ранее операция вставки всегда ей сопутствует операция генерации нового айди для нашего массива для тех самых
00:58:45 - 01:00:33
bucket of это происходит на основании хэш-кода соответственно хэш-код уже не будет прежним для нашего киев ну то есть мы считаем что хэш-код и и класс мы переопределили до для этого чтобы просто генерируется лишний раз мы переопределили следовательно в этом случае будет один хэшкод теперь для этого же ключа при операции пусть генерируется другой хэш-код следовательно две абсолютно разные ячейки куда будет вставлен соответствующий элемент а клич по большому счету с точки зрения джиллиан будет 1 то есть в хеппи один ключ а для
00:59:47 - 01:01:03
map и он будет работать как два отдельных ключа вот так в целом ты к этому правильно подходил и то как ты ответил меня вполне устраивает вот это все можно на самом деле найти открыть метод пут и посмотреть в его реализации для шмап как же происходит соответственно но мы часто идет немного понятное дело но в целом мне нравится как ты отвечаешь на эти вопросы ну хорошо давай тогда двигаться дальше до рассказать кстати есть коллизии случайным образом чтобы также но рик росс и возможно тогда полностью по идее это да это еще связано
01:00:25 - 01:02:02
с тем что у воды о который ты упоминал у нее есть хэш-код и по сути этот хэш-код сохраняется то есть реально у каждой ноты своей есть в том числе хэш-код который будет не хранится и там тоже происходит сравнение ну то есть тема далеко идущая в глубину реализации кошмар но в целом то как ты ответила мне нравится то есть ты понимаешь что есть шкот ты понимаешь как какие процессы происходят под капотом ухо шмап разумеется нет предела совершенства и можно еще глубже эту тему развивать но на поверхности то что мы капнули даже
01:01:14 - 01:02:27
глубже вопросов здесь по крайней мне сейчас не возникает хорошо мы продвинемся немножечко дальше закроем тему с коллекциями неплохо справились и сдвинемся к спаррингу скажи что такое для тебя spring framework если бы асу совокупность ту который позволяет устоять и упрощать разработку приложений он берёт на себя если это еще включается спинку это начальной конфигурации подключения каких то даже отсек берет на себя часть скажем так технической реализации допустим это же как и трение генов там не нужно думать о том чтобы
01:01:51 - 01:03:33
где-то коде не забыть создать какой то объект и дать за независимость и так далее ну в целом я бы сказал что это средство для упрощения и ускорения на иные разработки окей защиты она вполне себе здраво заявление хорошо скажи пожалуйста тогда что лежит в основе всего спринга вот что лежит в основе spring core если быть совсем точным но один контейнер генов да да правильно ты правильно назвал ой ок или инверсия управлением вершил of control скажи может и можно сказать что такое он вошел в контру мы сами зависимости мой прописан
01:02:48 - 01:04:29
определенной конфигурации необходимые зависимости и создание объектов на шабенов за автоматически ok хорошо хорошо тогда у меня следующего тикающий вопрос ну то есть ты говоришь про dependency injection так называемый внедрение зависимости скажи какие виды внедрения зависимости от и значек до иначе говоря каким способом ты можешь внедрить их не так много на самом деле но получается можно поставить описать в xml конфигурации это это уже технический способ имеется идут концептуальный способ вот какие я
01:03:50 - 01:05:09
подскажу допустим 3 их мы было бишь больше но мы проверим протри какие три основных способов внедрения зависимостей и речь не идет про конфигурацию речь идет о том как это устроено или на каких столпах это стоит мисс это может быть через xml аннотации нет мнения xml аннотация xml xml она танцы и джалла компик это то как она уже реализована то есть даже когда мы с тобой говорим что мы используем аннотации аннотацию можно применять в разных формах ее можно применять в разных местах и тут возник это как раз и
01:04:40 - 01:05:58
есть тот вопрос какие способы внедрения вот где бы ты мог бы применить аннотацию ты горишь можно поставить коннотацию их а не будет разным вот где бы комок эту аннотацию для внедрения применить пока знаю можно ставить санта ция на конструкторе на непосредственно поле и не на нас это не да это и есть те самые способы то есть способы внедрения через конструктор через свойства через сеттер абсолютно верно то что ты начал рассказывать это уже техническая реализация то есть так же самое как игре свои управление это принцип dependency
01:05:21 - 01:06:35
injection это его реализация потому что инверсия управления может реализовываться под другими способами предположим как factory method но обычно факторная дизайн паттерн секторе и то есть как раз один из способов инверсии управления тогда хорошо 2 продвинемся вот дальше и поговорим с тобой на сравнительный анализ и подумаем об этом скажи вот своей точки зрения в чем разница внедрение зависимости через конструктор и через сеттер вот с твоей точки зрения может ли объяснить два этих процесса и какая разница между ними
01:06:01 - 01:07:09
kennedy & cheese конструктор получается еще при создании объекта является необходимая зависимость сначала создана потом уже него добавлено наша личность ok из конструкторы сам помоемся даже автор отставить надо господи именную финальный день и в конструкции спинк автоматически как тогда работает центр сатр выполняется раньше чем конструктор или позже а почему потом конструктор это специальный метод который вызывается я инициализации более и создание объекта уроки хорошо но резон уже центр это уже работа с объектом
01:06:38 - 01:08:21
конструктор это создание объекта резонным с моих хорошо драйвере перейдем ты искал такую интересную вещь что сейчас в springen не надо указывать аннотацию at the buyers а почему это так ты можешь объяснить я понимала спинка сканирует наши классы сможет посматривает полярник посмотреть какие есть у вас и сам автоматически подставляет вины через конструктор а если я предположим аннотацию поставлю с этой точки зрения что-то изменится ну допустим мы внедряем через конструктор я поставил аннотацию или я не поставил
01:07:35 - 01:08:58
что-то изменится да нет итак итак будет медленно через конструктор до на самом деле ты прав spring достаточно умен для того чтобы определить что здесь необходимо вне где-то будет бен и в нем если у нее в конструкторе свойства аргумент иначе говоря их нужно внедрить потому что это потенциальные кандидаты тройственные там есть нюансы когда все таки анотация обязательно но мы эту тему сейчас затрагивать не будем просто по рекомендую почитать документацию про spring аннотацию авторов это официальной
01:08:24 - 01:09:44
страничке их и там кратко это описано но в целом то что ты стал достаточно хорошо давай поговорим с тобой об очень интересные штуки ты сказал что есть какие то там xml java аннотация annotation configuration с твоей точки зрения что выполнится приоритетней xml конфигурация java конфигурация или она ты говоришь мне кажется все-таки xml а почему [музыка] спинку плаща наверно с одного файла сосчитать чем посмотреть все просканируйте наши классы на нет аннотации ну а представим себе ситуацию что у нас
01:09:04 - 01:10:37
есть бен он одинаково за configuring через аннотации и и он тоже за конфигурировал через xml конфиг то есть у нас по сути гибридная форма как чаще всего это бывает у нас из xml конфигурации и есть там предложил annotation configuration у нас случилась ситуацию что вот разрабатывали мы одновременно приложение и два разработчика выбрали два разных подхода один сделать через аннотации точно такой же classic или бинт римской другой сделал точно такой же бен через конфигурацию в xml что будет иметь дам
01:10:05 - 01:11:24
случае наивысший приоритет но ч по идее сердца практикуется смешанный подход то должна быть однозначно я так скажем равнозначно приоритеты есть какой-то конфликт должен будет выдать за шпильку насколько я понимаю как тоже она сказал предположим ошибки не произойдет я тебе могу сказать что если мы за конфигурируем все правильно ну то есть xml правильно за configure он и так же правильно заком фигурин у нас после как называется java или annotation конфликт ошибки не будет ну то есть вот и ни о чем по сути выполнилась приоритетно как
01:10:44 - 01:12:04
ты думаешь [музыка] не все же либо эффект равнозначны либо за xml будет видеть ну если как бы выберем пятьдесят на пятьдесят то я тебя могу сказать что нет он не равнозначный выполнится и та и другая проблема в том что xml просто перезапись то что было сделано оно тихий или java конфигом то есть по сути речь идет о том что в данном случае xml имеет приоритет поскольку он выполнится последним поскольку это уже выгрузка каких-то конфигурационных файлов соответственно и мы здесь получаем уже запись то есть xml
01:11:26 - 01:12:52
имеет последним будет выполнен последним следовательно приоритетный но целом мои догадки правильно хорошо но это нюансы действительно это вопрос не самый скажем распространенные или легкий но тем не менее скажи вот хочется поговорить о следующей темы теме она более такая философская субъективная скажи какую из конфигурации xml java или annotation ты предпочитаешь больше и почему мне вообще больше нравится все таки на основе java конфигурация либо аннотации и уже описано доце потому что как бы тот ружье сказать
01:12:23 - 01:14:01
ну все же для меня как java разработчика джаваха язык более понятные чем xml обе руки у меня все же гораздо удобнее java конфигурации окей хорошо ну для меня принципе тоже близко к ю это легче чем изучать тот проклят xml тогда за несколько провокационный вопрос если бы ты был бы разработчикам спринга или тот кто бы решал бы его судьбу какой из этих трех конфигураций ты бы выкинул вообще быстренько и почему и [музыка] выкинула либо вообще давай да ну по идее числа кафе глаз и не вытянешь потому что
01:13:21 - 01:14:48
там оно и вещи [музыка] . так скажем компоненты стинга тыс я уже не выкинешь но с другой стороны мы можем через xml конфигурировать тоже springen би си никто нам не запрещается да dispatch 1 рубля на xml собственно в чем бы ни можно можно можно тогда я бы выкинул все таки гсм и по идее а почему потому что менее удобно но менее удобно хорошо защиту на что менее удобно а тогда я задам продолжая эту тему задам следующий вопрос а что значит менее удобно где действительности с твоей точки зрения удобно применять java конфликт или
01:14:18 - 01:16:04
аннотацию или гибридную форму java + аннотация а где реально было бы круто применять xml задумывался ли ты об этом вопросе ли xml гораздо удобнее применять когда к saw очень много и мы в одном файле буквально можем посмотреть всю структуру наших зависимостей в этом плане возможны удобнее будет но предположим у нас много xml файлов или но немного но несколько то есть целом кому нужно смотреть структуру сегодняшние разработки intel intel очаги позволяет видеть структуру бинов в зависимости и внедрения довольно
01:15:10 - 01:16:35
таки быстро легко без всяких напрягов то есть практически все разработчики использовать на талантлив коммерса может быть другие какие то есть у тебя эти где бы лучше было бы использовать xml в противовес java или аннотациям или гибридный по идее же мы можем менять что-то душем и не меня избегая sun java код может быть в этом поникшими удобнее было бы иск-ва зачем нам а зачем это нужно какой в этом смысл вот нужно что-то отредактировать на может быть параметры изменить инициализации тех или иных генов у нас
01:15:57 - 01:17:21
уже допустим скомбинирована часть java кода ну хорошо ну то есть не идея нравится а вот где бы ты был как бы жизнь на важно бы эту идею воплотил приложение и планшетов удочерила не столько важно приложений или тип приложения а сколько важно в какой среде это приложение живете ну то есть при каких обстоятельствах ты бы применил бы xml конфигурацию с учетом того что ты сказал что ее можно обновлять при этом без компиляции кода то есть положим я захотел подбросить новую новую зависимость я хоп заменил я просто
01:16:45 - 01:18:12
подбросил новую зависимость без компиляцию предыдущего года предположим и просто указал путь к ней ну как референс для внедрения и все каком бы варианте это было бы круто ну то есть при каких обстоятельствах это было-бы классно как ты думаешь если у тебя какие-то мыслями ну допустим когда у нас уже приложение где-то так скажем где есть создание машина но нет ну предположим компилятор может не ну предположим компилятор у нас есть то есть мы можем что-то сделать вероятно мне чет не хотим чуть чего мы глаза на ваш чего мы
01:17:35 - 01:19:03
главного избегаем когда мы используем xml конфигурации и не делаем при компиляции чего мы главного здесь избегая нам нужно ведь положение и писано чего заново до абсолютного желательно устанавливать приложение и собирать но не то что останавливать я бы сказал бы процесс называется ready play то есть по сути нам не нужно деплоить новое приложение или разворачивать развертку делать нового приложения только потому что у нас изменился байт-код а то есть гренни бойкота изменилось конфигурация спринга
01:18:19 - 01:19:45
то есть мы попросту обновляем xml зависимостями бойкот остается прежним и тем самым мы экономим на развертывание на тестирование на прочих процессах это существенно понижает стоимость процесса развертывания его поддерживается вот то есть замену всего лишь там предложим 1 конфигурационного файла то есть мы с тобой в конечном итоге к этому пришли иначе говоря xml круто когда мы очень сильно зависим от редких развертывать или dpf java аннотации очень классно тот подход когда нам все равно сколько раз
01:19:02 - 01:20:13
приходится сколько раз нам нужно это производитель мы этим не ограничен скажу здесь здесь у меня к тебе больше вопросов нет давай напоследок с лишним ся с тобой на эскизов готов ли ты к скилл но думаю да задал провокационный вопрос насколько ты целым знаком или фамильярен с sql и целом говоря отдали в принципе решал задачи на запросы просто бывает немножко путаница между после майских синтаксисе ну и не готовишь немножко под забываются то есть когда их долго не выполняешь какое-то время скажем так на
01:19:37 - 01:21:17
ухудшается ok хорошо ну в целом согласен есть такая тема все современности многие и многие приложения используют подход там бизнес то есть когда база данных вообще нету и навыки быстро растворяется давай попробуем проверить вели пробудить твои навыки расскажу в чем разница между sql и mysql skillet это конкретный язык запросов а мой скил это уже конкретная так можно сказать хорошо хорошо тут мне нравится давай тогда ответьте на вопрос а ты говоришь что искал это запросы а майский это уже зубы дпс какая-то конкретная
01:20:31 - 01:22:04
база своими реализациями скажи концептуально с точки зрения sql какие типы запросов ты знаешь они они они делятся на две категории 2 больших категории на самом деле может быть имеется другие запросы и нет нет нет не для агрегируются запросы это уже это под запросы слышал ли ты что-то про д д л и д м л где хорошо попробуй разверну этот эту аббревиатуру ддл звучит когда-то дефиниций олегович слышал ли может быть ты про такое выражение может быть слышал но меня ты наверно ознакамливался совсем глубоко где
01:21:31 - 01:23:11
каком-то контекст на самом деле это две базовые категории запросов д д л д м и люди деле the data дифенилом hdmi to the manipulation плен vicino иногда называется модификация смысл заключается в том что не деле это базовые запросы которые что-то порождает иначе говоря создания уничтожения изменения и переименования крейг / имеем alter дтп земель это манипуляция с уже существующими данных то есть они по сути подразумевают и черт аптек и данном случае то есть когда мы порождаем какие-то новые записи в базе диди ель
01:22:38 - 01:24:14
связан с созданием созданием юзеров созданием англии с добавлением ограничений и прочее прочее думаю ты слышал об этом просто сама аббревиатура мы тебя у хорошо давай тогда продвинемся дальше вот мы заговорили с тобой dml недель я сказал что dident включает себя создание ограничений можешь ли мне назвать краткий перечень из трех хотя бы ограничений или constraints на английском языке который ты значит по моему prime и и кей может быть такое ограничение улики и [музыка] есть еще чек хорошо чек а что делает чек
01:23:25 - 01:25:04
там можно во лидировать значение допустим если это какое-то часовое стать больше нуля это больше десяти или диапазон задать поверить что значение соответствует здорово мне нравится скажи пожалуйста а вот еще одно может назвать ты называл про америке несомненно все знают про америке чек чаще все многие не знают о чем и начинающие разработчики потому что это больше связано уже с реальными проверками в базе данных с записями когда мы работаем как искал валидация вот может назвать еще что-нибудь одно
01:24:23 - 01:25:43
здесь еще такой женщины как фрейм kay да в чем заключается идея фронте ну или внешний ключ на рубли его идея заключается в том что наше значение может быть пить только из множества значений на которые ссылается наш внешний ключ то есть у нас есть таблица с некоторыми данными допустим сойди у нас есть другая таблица в которой есть вот этот столичный ключ и добавление во вторую таблицу значений внешнего ключа она будет проверять существует ли вы значение если да то она добавит если нет то должно выдать ошибку и не
01:25:05 - 01:26:46
добавить ok хорошо хорошо защита на скажи а как ты можешь говоря о запросах и ведь опять же возвращаясь к тому же недель каким образом ты можешь добавить ограничение к уже существующей таблицы какой запрос тебе нужно написать или с применением каких конструкций в этом запросе ты можешь реализовать [музыка] когда мы даем таблицы в конце можем дописать рынке у них мы можем потом снизу написать покрытие скобках указать поле окей защита на еще один можем написать контент сдать имя ограничений и уже добавить
01:26:00 - 01:27:53
получается фронтире помните а вот мы хорошо ты сказал что мы можем явно указать constrain а вот при помощи чего мы можем этот constraint указать потому что constraint это не запрос constraint это сущность да мы знаем что в базах данных есть сущности допустим схемы view прочее прочее и контент это одна из сущности а как мы можем сущности внедрять в таблицу искал можно написать их прямо возле поля можем написать предположим фрэнки во время создания таблицы и после нее как часть создания таблицы а можем
01:27:01 - 01:28:17
предположим мы как-то повлиять когда таблица уже создан ну по идее синтаксис должен примерно быть следующим kate constrain некое поле никогда не книг рей может быть ты знаешь какой то другой способ который в цеху в целом может изменять таблицу ведь мы говорим сейчас уже он изменение таблицы не ее значение а изменение ее конструкции иначе говоря и и архитектуры называется alter alter иначе говоря просто изменить то ты правильно описал мы говорим alter ты был выбираем какой далее дальше пишем что мы собираемся
01:27:39 - 01:29:10
добавить плане constraint а ну разумеется и соединяем его соответствующими полями если в этом есть необходимость и сама операция называется альберт и начал с варианта кредит но cray как-то связано с таблиц этом случае дома варим крем прибыл предположим а тут мы говорим о том что она уже создана и нам необходимо в нее внедрить изменений и для внедрения изменений применяется alter но джо страшно как бы это такое решается 1 практикой давай поговорим с тобой о следующем вопросе сможешь не назвать сколько существует на форму на
01:28:42 - 01:30:06
нормальных форм в sql но то есть так называемые нормальные формы или формы нормализации сколько их существует их больше двух больше трех как ты думать если у тебя какой-то ответ на это вопрос я слышала 4 а можешь назвать так они называются пусть даже ты слышал 4 4 существует это правильно на самом деле их чуть чуть больше они скажем решают частные вопросы но четыре самые распространенные можешь назвать как они называются без объяснения что они из себя представляют я знаю только нормальную форму без
01:29:23 - 01:30:41
да это четвертая форма а первые три знаешь как называется они называются просто 123 первая нормальная форма 2 3 последняя называется 4 и нормальная форма бойса кода до этого чувака здорово а можешь написать в чем смысл второй нормальной формы я знаю вот только бы как-то не давать но хорошо а можешь описать тогда форму бойса коды каждый детерминант является причем об чем заключается смысл это общего смысла что если один параметр однозначно изъять второй параметр то он должен быть ключом таблица 1 уникальное значение
01:30:08 - 01:32:05
лагерь отмените расскажи какие есть скажем так какое основном основополагающие скажем что лежит в основе нормальной формы бойся кода то есть что необходимо чтобы мы смело говорили что таблица находится в форме боя со входа при каких обстоятельствах это будет маша писать ну вот детерминант мы уже определили то есть по сути каждый потенциальный ключ он будет детерминантам у нас этакий а что еще необходимо такое самое ключевое это по сути каждая форма себя включая за исключением 1 маленькая подсказка
01:31:19 - 01:32:50
по идее данные которые зависят от во времена то есть нам нужно не только данные которых зависит детерминанта не безусловно речь идет о том что по сути каждое предшествующая формы вернее должна быть частью новой иначе говоря мы находимся во второй форме нормальные когда мы находимся в первой мы находимся в 3 когда мы находимся во второй следовательно по этой транзитивности мы можем сказать что когда мы находимся в третьей форме мы одновременно находимся и в 1 ну то есть с учетом того что бой скотт нормальная форма она является
01:32:17 - 01:33:34
такой частной частным видом 3 поэтому мы смело можем заявить что мы находимся в том числе во второй и в том числе в 1 вот о чем речь нет такой побольше вопрос по теории хорошо давай поговорим с тобой про запросы можешь ли мне ответить на вопрос что мы чаще всего используем в совокупности с ограде цион ими запрос ну то есть я примет меня применил запрос сумму ну да вот есть мне вне запроса функцию сон чаще всего с агрегационную запросами что мы применяем получается серег и гол лайн а почему нам это нужно
01:32:55 - 01:34:23
почему нужна специальная функция или группировка почему нужно группе радует но если мы хотим сделать выборку по клубам каким то есть допустим почитать сколько там вдох в каждой стране наших таблиц то есть мы можем с помощью каунт грубо говоря копировать наши таблицы по странам и применить на города таким образом мы допустим можем узнать количество каждой стране годов ok ok мне нравится мне нравится скажи пожалуйста а что выполняется раньше выражение vr или поражение joy в а будет хорошо момент почему ваш объяснить
01:33:47 - 01:35:57
ну она чала поменялись что ты соединиться потом гиса единая не тут речь идет не об этом немножко сейчас тебе напишу запрос давай освящаемся и я тебе напишу выражение бусин то есть у нас какие-то абстрактные таблицы sleep all from 11 ст-1 предположим далее у нас с тобой идет джо и t2 t2 t2 и поехали их объединять на то есть здесь у нас дальше идет объединение а где у нас лдп 11 равно p2 какой-то там формики вот так неравные здесь у нас операция он конечно стоит при этом чем ну вот мы это выполнили здесь у нас еще стоит отдельно
01:35:10 - 01:37:10
в где т1 айди больше ста вот в такой форме вот так это выглядит скажи пожалуйста что выполнится раньше г.р. операция или все-таки join получается джон донн стран шаббат получается будет уже выбирать живущие таблицы хорошо хорошо хорошо скажи пожалуйста может ли быть такая ситуация что мы имеем при соединение таблиц мы имеем декартова произведения то есть все против всех иначе говоря до может быть такая ситуация можешь объяснить почему это происходит и в целом как этого избегать но если сколько примеру тебя
01:36:15 - 01:38:02
от вас декартова произведения да то есть по сути это 1000 умноженная на тысячу ну получается синтаксис возникает меня интересует при каких обстоятельствах она может возникнуть ну по идее не задано условии соответствия николас толстый за но таблицы никому столб из другой таблицы и поэтому делается скажем так и барсик сочетание а имеет ли вообще но хорошо ли с попадать в такую ситуацию и это плохо считается что очень плохо потому что 1100 к одной таблице 1100 в таблице породить миллион строк новой таблицы это
01:37:17 - 01:38:57
займет очень много памяти чтобы близ очень много времени [музыка] всячески избегать этих же я с тобой полностью согласен хорошо тут вопросов нет окей давай поговорим еще об одной такой чаще всего всех интересующих тем и вот мне очень часто говорят о макс там какие-то транзакции надо использую там хайбер не эти транзакции на уровне java database connectivity там и лик стринги бисером транзак сачок я такой транзакции в базах данных просто для меня транзакция это вот я там деньги отправил куда-то банках куда-то перевел вот и
01:38:22 - 01:39:47
транзакция что подразумевает транзакцию в базальтом условно говоря атомарная операция то есть операция которая должна выполниться либо полностью либо до 0 ok а ты знаешь принципы транзакция ну то есть безусловно заявление правильно что-либо выполняем что полностью либо откатываемся в исходное состояние можешь ли описать принципы транзакции и как они вообще называется [музыка] может быть еще немножко конкретизируется что месяц слышал ли ты что-нибудь про принцип except иначе говоря идти я могу тебе написать отправите
01:39:07 - 01:40:53
берча как это пишется вот так если переводить на с английского на ручке это слово только что-то вроде хилько в английском языке это означает наркоман но речь идет о том что это аббревиатура это каждая из этих букв что-то означает могу расшифровать первая буква а это от омар ность 2 see it a consistent из 3 это изоляция и 4 это your ability иначе говоря прочная стиль и долговечность данном случае слышал ли ты что-то о кей ну хорошо тогда это наверняка себе запиши о том что это нужно знать потому
01:40:06 - 01:41:36
что это четыре столба собственно как в объектно-ориентированном программировании а.п. полиморфизм наследования обертку оборачивается все в абстракцию также здесь транзакция базируется на этих 4 4 столбиков атомарных согласованность долговечность и изоляция но о ней мы не будем сейчас тогда их разворачивать здесь поговорим еще один вопрос затронем с той точки зрения вот есть у нас джитибиси это java database connectivity то есть как джалла соединяется с базами данных можешь ли ты описать в чем разница между
01:40:55 - 01:42:12
операциями экзекьютив экзекьютив и ри и операции экзекьютора я тебе их скинул дополнительных чатик чтобы ты мог прочитать их то есть это все это операции которая относится к connection есть такой интерфейс collection благодаря которому мы получаем то есть оно не даёт нам соединение из базы данных и через этот интерфейс собственно мы выполняем и транзакцию к мите мы и или ролл б.г. он через нее же мы получаем можем получить искать выполнить запрос и вот есть на секс и пьют и крикет к вере и игреки
01:41:34 - 01:42:54
по моему одна из них возвращает количество измененных сток другая может вернуть и зал сет ответе наверно принимает сразу же конструк ну в параметрах не тогда сам esquire запрос на самом деле все они работают с к их запросам но письме ты сказал что экзо кит клэри предположим согласен а он возвращает оказался на то есть это правильно экзекутор дэйтон возвращает энтого и число которое сигнализирует об изменениях а что же делать в таком случае экзекьютив возможно бульон тогда разрешает на самом деле экзекьютора вращают
01:42:16 - 01:44:01
экзекутор случайном чоп полезно не обращает по большому счету после где пьют мы можем из нашего так называемого statement опасность мы сначала седан выражение мы и statement и можем добраться до разжался то есть разница между ними пример экзо кит он может использоваться и для обновления и для создания соответственно или то есть не про искать получение экзо пьют к вере это у нас исключительно для получения потому что он возвращает разом сетапе его основная идея закрыта ted это для извинений формации ну скажем там
01:43:12 - 01:44:25
добавление удаления и обновления экзекьютора через может использоваться для всех этих случаев одновременно вопрос о том что это не совсем удобно нужно писать чуть чуть больше кода но принципе ты ответил на вопрос совсем точно но ответил мне ну что же давай тогда последний вопрос касательно джи би би си и резал циркуль на нем заговорили можно описать вдруг словах зачем нам резал цвет нужен и как он внутри устрой без подробностей от просто концептуально зачем он нужен и как он внутри остро получается у нас же
01:43:48 - 01:45:15
возвращается нити набор строчек из таблицы то есть нам нужно отыскать из них банный получается что-то вроде коллекция isolate сцен мы можем оперироваться по строчкам глоба говоря есть каждой статьи еще получать значение какой-то колонки по моему по индексу или по названию этой колонке можем получать очень окей а скажи мне такой вот хитрый вопрос про зал цвет ты пишешь это типа как коллекция он всегда смотрит на первый элемент или как-то по-другому ну то есть сможем ситуацию в разом цепи нет ничего но если
01:44:36 - 01:46:05
эта коллекция коллекция может быть пустая и тут следует меня интересует он всегда смотрит на первый элемент или все-таки и он не смотрит на первый элемент на самом старте при работе с разжался на самом старте он по моему не смотрит на первый элемент на первый элемент смотреть точнее ссылка на первый элемент будет возвращать переключаться на первый элемент будет текущий элемент него не первое а кто у него тогда текущий элемент является ли текущем элементом кто-то то есть как это все называется правильно
01:45:23 - 01:46:47
ты ответил на самом деле правильно как это все называется с точки зрения базы данных какая там есть такая особенная сущность с которыми между прочим во многих б д можем работать но при этом всем она в какой-то своей абстрактной форме и присутствуют во многих языках программирования даже джованни исключает это вот как раз до итератор еще одно слово знаешь не интерфейс итератор это то что это по сути обертка оператор это уже совокупную значение даймы между ними переключаемся благодаря и тротро а чтобы пираты есть
01:46:17 - 01:47:31
такое которой как раз и обладает информацией какой элемент следующий и если следующий это хамить ссылку на текущий элемент и может память переключатель на ссылку скажем так следующий элемент ну да да да да говорит я конечно могу ошибаться по моему они точно не помню нас означает бульон и листья next возвращают bully он возвращает болен и не переключается на следующий мой вопрос был немножко не об этом о том что эта штука называется курсор я думаю ты наверняка не слышал просто вылетело из головы то есть по сути курсор он и
01:46:59 - 01:48:36
указывает на следующий элемент разумеется когда мы выполняем next курсор переключается на следующий элемент если есть куда переключаться итератор это уже такая частная реализация в целом абстрактная ли зация курсор это то что оператора соберусь потому что оператор это по сути механизм курсор это то как это работает внутри ну натянут хорошо отвесил на него вопросов здесь нет что ж вот мы подошли на самом деле концов могли бы включить сейчас расскажу какие по ощущению понравилось более-менее свои ответы тоже
01:47:57 - 01:49:21
себе понравились себя новый узнал поэтому любом случае это полезно было скажи будешь ли ты предпринимать в будущем на основании интервью какие-то шаги от с вероятно ты будешь закрывать хвосты где ты считаешь что ты не силён или на вопрос на какие то что не ответил или может быть создашь свою собственную карту будущего развития каждого разработчика выписал и растущие химичить глубже ознакомились работа их ok это правильно потому что интервью первую очередь дает возможность понять где мы слабы и конечно же дает
01:48:42 - 01:50:11
возможность составить ту самую карту на фоне которых мы будем и двигаться дальше и развиваться как специалист и но на самом деле мое субъективное мнение ты со всеми вопросами справился очень достойно безусловно нет предела совершенства но практически на все вопрос который тебе задавал смело отвечал и и боялся отвечают перебрался рассуждать это за это респект это очень важная вещь как будущего разработчика программного обеспечения собственно на этом все я желаю тебе удачи и я уверен наши зрители тоже
01:49:29 - 01:50:42
присоединяются к моим словам желаете удачи и чтобы ты побыстрее нашел работу и она не заставила себя ждать и в начал получать удовольствие спасибо большое за интервью пожелания нокий хорошо спасибо тебе тоже большое за твое время и до новых встреч но что друзья вот мы и подошли с вами концом как по мне юра очень достойно справился со всеми заданиями и с многими вопросами да он ответил не на все вопросы но кто же может ответить наше время на все вопросы нам так много нужно знать эти индустрия такая широкая и java не
01:50:05 - 01:51:23
исключение так много надо с ней знать тем не менее как я уже отметил юра классно справился и я желаю ему удачи в этом всем а для вас друзья небольшая много я уже поступил на практику да да тем не менее он прошел интервью довольно таки неплохо хоть и за это время успел получить место в компании которая предоставляет ему возможность попрактиковаться с последующей вероятной возможностью там остаться на долгие лета как уже официально устроенный сотрудник берете все с юры пример разница она сегодня друг я все
01:50:44 - 01:51:55
напоминаем вы на канале джон бал с вами был макс добрынин и интервьюировал я беру брагинского подписывайся на наш канал не пропускаем ни чего интересного что мы выкладываем специально для вас это у нас так важно ведь это так мотивирует и увидимся уже на следующем видео пока друзья
01:51:20 - 01:51:54