Подготовка к собеседованию на 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 каналы и чаты
Транскрипция видео:
друзья а сегодня у нас гостях необычный гость его зовут артём никулин и он супер джун и он тот кто не хочет чтобы про него в комментариях написали да да да да да на самом деле этот парнишка bada действительно незаурядными знаниями и в этом скоро сами в принципе убедитесь он читает книжки он читает книжки роберта мартина клин код он читает эффективную джалайю в целом друзья он принципе очень клёво для своего возраста разбирается в джаве ему на минуточку всего лишь за несколько лет он спрашивал но он учится в 11 классе я тут почитать
00:00:01 - 00:01:10
уже можно самому в зависимости от того когда он пошел в школу ну да именно в этом заключается плюшка этого кандидата он не учился в высшем учебном заведении он только будет него поступать он уже ищет себе работу прикиньте 11 всего лишь класс а уже ищет работу программистом он не ходил некие курсе он в принципе самоучка и друзья давайте же его поддержим ведь действительно а это достойно уважения он обладает классно мы знаем он беспокоится о качестве свое знание он беспокоится о том что он не мы подумаем поэтому друзья ставьте лайки
00:00:37 - 00:01:41
исключительно ним не а конечно же артему поддержите его и пусть он вскоре получит свое первое рабочее место в 11 классе друзья ну что ж поехали посмотрим вместе погнали ну что же всем привет мы тебя приветствуем на нашем собеседование и конечно же хотим изначально пожелать тебе все удачи нашим комьюнити расскажи предварительно немножко себе как-то на судно я узнал от вас совершенно случайно это были нации на youtube я решила посмотреть мне понравилась подача интервью потом увидел почему бы не тоже не
00:01:08 - 00:02:39
принять участие отлично а почему решил вообще пойти на интервью что тебя побудило мне кажется это хорошая проверка вообще это два фактора сразу играет первый фактор это публичность личность сразу хочется как-то хорошо отвечать делать так чтобы все тебя понимали что бы ни писали кометы каталог не знаешь я планирую работать поэтому сейчас а где ты планируешь работать но java довольно широкая сфера этой в приложении бэкенд и иногда и фасттеке встречаются вместе с имплантом предложим и с фактом вот что бы ты хотел бы выбрать
00:01:54 - 00:03:24
ok ok какие приложения ты хотел бы писать то есть сейчас чем популярный rest приложение все также есть суп сервисы разнообразные архитектуры микро сервисные архитектуры standalone архитектуры вот что тебя больше всего из этого привлекает расскажу сейчас [музыка] а вот микро сервис это уже начал писать пережил вот эту всю допускал бы тяжкую судьбу когда ты их начинаешь сайт столько всего нужно знаете а главное нужно понимать еще концепция микро сервиса вид standalone приложение омского просто но написал и запустил на
00:02:51 - 00:04:04
микро сервисы работают в принципе по такой же концепцию но никогда иначе вот с той точки зрения сложно ли переехать на микро сервисы с учетом твоего опыта понятно сейчас небольшого но все-таки после standalone на микро сервисе если в этом какие-то но преимущество преимущество конечно есть то что есть у нас большая команда если каждый член команды и сам команду разобьем на под команды и каждая под команда будет со своими к сервис то будет гораздо легче работать гораздо проще разбираться с большим приложениям
00:03:39 - 00:04:46
а так я хочу работать в enterprise проектах поэтому я хочу им не нужно изучать некрасиво писать просто монолиты но куда деваться окей ну ничего страшного предположим на моем проекте у нас типа micro сервис и хотя это был начиналось с монолитом и выросли в микро сервиса на это еще даже не фига ними про сервис потому что есть там какие нюансы хорошо расскажи немножко о себе где ты учишься может быть ты в гуманитарном университете может быть в техническом университете ведь сегодня айти находится в таком состоянии что без
00:04:12 - 00:05:22
разницы какое у тебя высшее образование главное что у тебя в сердце в душе ее желание учиться вот какое-то образование чем-то занимаешься может быть похож на какие-то курсы расскажу пока я учусь в школе но я конечно техническая специальность документарный понял . надо зубрить когда техническом все гораздо проще я понял они тебя не кажется что в одиннадцатом классе идти уже работать это ну прям слишком рано что ли или вероятно стоит поучиться немножечко да просто чтобы обрасти какой-то экспертизой вокруг себя
00:04:47 - 00:06:12
там друзей обзавестись общаться на темы вот мои отлично убеждения отлично супер подход правильно всегда нужно пробовать с тобой согласен ну что ж и все-таки ты пришел java данный интервью чтобы устранить какие-то неточности рыхлости если они принцип у тебя имеются до принципе проверить насколько ты силён вот какие твои ожидания пост и вот мы закончим с тобой интервью вот как ты себя видишь после вот что ты будешь предпринять чтобы сделать и целом какое-то настроение отлично любое интервью такое будет даже
00:05:33 - 00:06:44
як предположим у меня есть свой список иногда это бесконечно не выполнимый список вопросов центру и на которые я не ответил даже интересно где ты силён где не силён такая себе история гра всем здорово на самом деле в этом и есть цель интервью не всегда ведь только работа хорошо ну что ж тогда мы все-таки начнем наше собеседование и конечно же мы начнём со стандартных вопросов как обычно мы пойдем теории java затем мы затронем какие-то более практические вопросы связанные с тоже сам играл с крым борками
00:06:23 - 00:07:35
разнообразными из баз данных и на этом собственно и завершим но зачем мы объектно-ориентированного программирования все же вот так любят всему миру по сей день известно что вот есть а.п. но если эти другие парадигмы многие сказал бы начинающие ребята считают что а почему то самое ведущая парадигма в мире хотя многие ведущие языки не обладают этими возможностями твоя точки зрения в чем кардинальное отличие между процедурным программированием и объект на аррете то есть как я понимаю смысл ap представлений правильно
00:06:59 - 00:08:13
но вот есть большую-большую функцию функциональную но опять же тематики не для всех но а что если я тебе сказал что в процедурном программирование можно создавать объекты это не об и объект это просто такие себе структуры предположим как на си си плюс плюс java-script ты можешь создать себе объекта он будет принципе тебе имитировать classic из объектно-ориентированном программировании и дает принципе такие же возможности более того java скрипте можно создать этот самый объект до сделать ему поля а также
00:07:51 - 00:09:07
сделать его методы безусловно это не класс но очень сильно похожи и все таки вот здесь у меня вот остается неточность если все таки разница между процедурка и и opi большая она или маленькая и разве только в презентации дело вообще повествуется трех принципах исследование полиморфизм возможно процедурный стиль не имеет или имеет слабо выраженные вот эти три кита это дает преимущество окей хорошо хорошо давай посмотрите то есть наследование и полиморфизм и чё у нас там на конечно же инкапсуляция но это вот такие вещи
00:08:29 - 00:10:04
которые чаще всего все мы знаем что то уже объезде на 10 лет там если не больше и больше к 10 лет это многих лет обиженно но вокруг чего крутится сама идея объектно-ориентированного программирования то есть у нас окей а что абстракция мы можем достигать достигать в плане чтобы этом абстракция да да и исходя из этого понятия понятно что мы можем писать меньше возможно полей мы нам не нужно знать все классе окей а если мы обратимся к полиморфизма вот твои точки зрения что такое полиморфизм и какое у вас самое большое достижение
00:09:21 - 00:11:00
ну как слоган один интерфейс много реализаций то есть мы можем внутри класса написать в поле какой-то один интерфейс и внутри этого класса какой-то там метод мы можем как-то его по-разному не то что реализовать мы можем туда тот класс который стал лист и называется одинаково мы просто подменяем класса а вместе с этими классами подменяется поведение или все-таки поведение одинаково поведение смысла того что как как меняется логика работы да да да но предположим нас есть интерфейс у нее есть методы это грех есть несколько
00:10:14 - 00:11:51
классов амариллис клинки для из вот ту задачу которую выполняют эти методы она меняется или все-таки остается прежней окей окей действительно это как бы полностью согласен лучше не скажешь что полиморфизм дает реально возможность определения как 1 один и тот же акт можно это так назвать будет себя вести соответственно то есть мы определяем разные способы достижения цели хорошо здорово скажи а ты слышала что-нибудь про принципы дизайна объектно-ориентированном программировании они чаще все называются
00:11:11 - 00:12:29
solid ну не чаще всего не только называется может быть ты слышал о них что это значит расскажи хотя бы прадик который ты вот лучше всего знаешь который тебе больше нравится окей а чё за этим стоит у нас класс может только окей а вот представим себе ситуацию у меня допустим есть какой-то спринтер и это принтер умеет отправлять сканы pdf ок просто сканеры да там он конвертирует в пятерку и он потом отправляет мне на почту разумеется когда нажимаю кнопку print операцию целом и б он начинает сканировать документ потом
00:11:52 - 00:13:22
конвертируются в pdf потом еще чуть вероятно учета запаковывает получает доступа к сети предположим если это надо и отправив конечном итоге на мою там коммерческую почту мне этот скан но вроде я насчитал 4 действия но разве это не нарушение сингл 1 кан stability метод print и делать сразу четыре действо сейчас я читаю книжку чистый код пример то что вот у нас есть классы которые выполняют несколько задач но это я бы не сказал что это плохо потому что он же все это все это складывает то есть у нас есть класс который сканирует весь
00:12:43 - 00:14:15
класс который например делает в pdf из к есть класс который присылает вам на почту наш принтер просто все это суммирует и окей приз правильное тебя понимаю что задача может быть комплексная но в целом процесс или можно описать акт финальный должен быть один главное просто разбить задачу если у нас она комплексно arizona arizona хорошо давай тогда двигаться дальше расскажу просто про типы данных или чуть не пойдет о типичных вопросах сколько занимает int или байт но я задам такой хитрый вопрос чар это символьный или числовой
00:13:34 - 00:15:07
тип данных число и все-таки он символьные или числовой ну ладно я половину ответа заложил свой вопрос по своей глупой наивности на самом деле ты про тип данных char он относится к интегральным типом данных и в частности он является числом потому что да ты прав то есть компьютер умеет распознать только числа там символы они могут быть разного над все в голове у себя разумеется нет хорошо но тогда двинемся чуть чуть дальше понятно дело типы данных они из примитивные ссылочные с той точки зрения какое основное отличие
00:14:21 - 00:15:39
между ссылочными примитивными типами до примитивные типы данных хранятся в стеке слышный типа данных хранятся теперь а можно такой [музыка] совести билл может быть такое что примитивный тип данных по полу прахе данных является полем класса хранится хиппи и поле этого класса тоже бы храниться здорово круто мне нравится скажи пожалуйста вот мы привыкли с txt да там стек вызовов есть разнообразные такие понятия как параметр аргумент переменное поле свойства в зависимости от о к чему относится нам хочется узнать про
00:15:19 - 00:16:47
переменную с ее точки зрения переменная мы знаем она хранится в стеке но что в действительности переменная а хранит чтобы не а если это объект тоже ссылка а куда уже тоже пожарил находится если это объекта находится китая аки здорово а лес различия между переменной и аргумент аргумент в плане памяти в плане в плане в плане памяти нет конечно потому что аргумента же ссылка на примитив это же одно и то же получается ну на самом деле переменный аргумент просто разница в том что аргумент у него цель другая переменная
00:16:07 - 00:17:48
немножечко отличительную они оба в стеке там хранятся хорошо здорово тогда продвинемся немножечко дальше ясное дело что в рамках объектно-ориентированным программированием и очень часто в любом языке упираемся в такую вещь как оба джек да практически в любом языке которые поддерживают о по сто процентов 90 процентов или хотя бы отражает мысль здесь купаемся обжиг не всегда конечно же это про об иногда это просто про структуру но мы будем же про джаву что такое отдых джаве какие его необходимости почему он существует из
00:17:20 - 00:18:39
той точки зрения какие у него есть проблемы но существует вечно получать второй вопрос почему существует потому что так проще писать код мы можем представить что-то виде объекта то есть такие попали именно объект как как позже или облик любого угодно классно да в целом сейчас мы не говорим о вот именно просто легче писать код программисты потому что он будет понимать это у меня объект в этого без объекта есть имя в этом объекта есть например айдишник а може быть недостатком то что мы можем туда положить случайно null поле
00:18:00 - 00:19:30
улик то и учиться на будет exception ну и об сказал бы это не связано с объектом на это ведь может быть просто в методе ну как бы понятно java она так или иначе оборачивается в класс и чтоб является объектом в этом случае но я бы не стал бы что но у пантера ну хорошо давай тогда посмотрим на объект с точки зрения класса объект которые есть у него есть методы какие слова точки зрения самые полезные методы в нём есть и используется ли они часто или все-таки ситуации объект хватит принципе только даже ссылки
00:18:51 - 00:20:08
стандартной реализации явился в классе объект наверное самый популярный этот у string ok давай тогда поговорим про ту стинга чем его преимущества и почему же он находится в классе облик потому что очень часто получается так что программист должен знать что он такой вообще написал то есть у него есть вот такой огромный метод хоть как-то отслеживать что получается внутри этого метода например провел каталоге посмотрел а что-то внутри конечно это можно сделать через добавь через а вот это сделать проще но и сам
00:19:44 - 00:21:05
как бы салат имеет внутри себя этот у string отлично да да то есть это один из способов визуализации тоже консоли нашего объекта согласен согласен скажи а вот какая основная идея и клаус и хэш-код я слышал что есть такого понятия как контракты что под этим контрактам подразумевается мой контракт то что они идут вместе друг с другом и в том то что то есть пункты контракта чем смысл может описать значки то пункты по пунктам которые знают что в том то что всего используется в коллекциях нашего объекта
00:20:28 - 00:22:09
шкоде используется хэш-функция один окей к пунктов возможно я не знаю их название которые далеки давай просто любой если это один и тот же объект дальше если получается так то что это другой instance то есть другого класса . но сначала конечно надо это то есть я понял привет привести к соответствующему это не совсем down касты это это а в данном случае то abc.az но да да да ты прав окей окей а скажи я услышал очень часто про такую тему что но якобы если мы переопределяем и клаус то мы должны перебрать cashcode в том числе и из
00:21:29 - 00:23:35
этого все следует что для двух эквивалентных объектов cashcode всегда может быть и точнее должен быть одинаков но при этом все объекты могут различаться а хэш-код все равно одинаков ну как-то звучит странно согласись то есть два эквивалентных объекта должен быть хэш-код одинаков тем не менее для двух дней ковалентных объект хэш-код тоже может быть одинаков нашли ты вот прокомментировать это в чем здесь суть и почему вот именно так вот нет смущая дело в том то что хэши тоже какое-то число получается так то что хэш-функции она же
00:22:52 - 00:24:13
не идеально работает и нас могут быть кризис может быть одинаковый хэш-код у двух разных а можешь провести какой-нибудь пример такой ситуации да например разработчик плохо я реализовал хэш-код и например у него реализация имеет хэш-кода только три числа 012 то есть просто рyлон резонно хорошо мне нравится скажи пожалуйста вот отойдем немножко классов обжиг тут все окей я слышал про такие штуки как классы обёртки и у них есть понятие имут обильности что подразумевает под собой имеют обул класс обертка и какой какой
00:23:33 - 00:25:08
смысл вообще класс обертки то что мы ним разработчик никак не может изменить объект если например хочет сделать мы указали учим слово этот класс это значит то что человек просто не сможет как-то повлиять на этот объект значит у нас хэш этого объекта будет точно таким же окей окей тот ну это же здорово на самом деле правильно prime хорошо защита на тогда погнали немножко дальше вот коллекции коллекции коллекцию опять же не буду сдавать такие базы вопросы расскажи про иерархию коллекции чем отличаются хэш map вот
00:24:24 - 00:25:51
released вместо этого мы поговорим о более практических вещах своей точки зрения вот есть у нас arraylist и ленте близ как ты считаешь что больше применяется релиз или линьки 2 ст из твоего опыта сколько знаю автор этого листа сам его сделал окей о своей точки зрения вот когда бы ты применил бы линьки близ ленд-лиз я бы применил тогда когда мы вставляем объект куда-нибудь серединку то есть в чем вообще прикол арестанта что он же это же тоже под собой имеет обычный рэй то есть там тоже у нас это
00:25:25 - 00:27:07
блок памяти это блок памяти когда новое значение если у нас то что там кажется назначение 10 элементов этих блоков делать новые и просто это один элемент листа он связан с другими элементами нас получается ok но тогда я бы задал бы здесь вопрос по поводу производительности может ли ты ответить не обязательно прям супер точно но вопрос про а синтаксис какая сложность поиска в массиве и какая сложность поиска в линьки 200 я имею сложность поиска элемента борей листья и сложность поиска элемент паблике блиста
00:26:16 - 00:27:53
море листа единичка потому что потому что мы же не по индексу что-то хотим забрать и если у нас есть тот иных stones развернется winked почему но ведь если мы посмотрим в интерфейс лист там есть метод get но абстрактный метод get и там написано что берется по yandex yandex это int-овое число отпуск словно говоря положительного вернее адекватный индекс болит от нуля до максимального им то соответственно тогда у меня здесь вопрос ну блин ну даже в интерфейсе написано что мы получаем значение по индексу как
00:27:16 - 00:28:36
бы релиз тоже имеет место где-то линьки близ тоже имеет метод нет когда почему это отличается почему тогда прелести константное время то есть по от одного в ленте для стен ты говоришь линейна в принципе это правильно какой-то степени но почему же такая большая разница а знаешь это как устроен по операция где-то линьки близко окей но на самом деле ты про патент в худшем случае безусловно проблема в том что это фейковый индексом простейший порядковые номера и переключается между вот этими нотами которые растут в целом
00:28:06 - 00:29:20
ты правильно сказал просто нужно тут довести немножко до ума но хитрый вопрос со звездочкой скажи пожалуйста всегда ли в фбр и листе это валидная ситуация когда поиск о 1 то есть константный может быть релиз те линейное время поиска то есть о.н. наверное нет потому что надо же какой то блок памяти или яндекс ok а что будет если ты яндекс не знаешь да то есть это все очень неоднозначно все зависит от ситуации к ситуации здорово здесь вопросов нет посмотрим на признание по поводу хэш map и в целом как она связана с exit
00:29:08 - 00:30:47
казалось бы z находится в интерфейсе collection отношениями к нему map имеет отношения к интерфейсу маха и все-таки хэш move каким-то образом связан с сетом или наоборот можешь рассказать да да да ты прав он ключом использую ключом использовать значение которое передает там кладется дальше на здорово расскажи об чем разница между трясет и дерево в котором есть порядок значений математическим один [музыка] я понял да абстрактная так и выглядит хорошо скажи пожалуйста вот опять же возвращаясь к центру меня все вечно
00:30:10 - 00:31:44
убеждают в том что сет гарантирует уникальность так ли это о какой нибудь комментарий по этому поводу который мы хотим положить наш код если уже есть то окей мы дальше просто возвращаем то что уже есть чуть чуть чуть запутался давай попробуй нас есть окей окей хорошо хорошо и на что это все намекает на то есть да я согласен cursed предположим под капотом явно используют сами нету но почему же все-таки seb не гарантирует ничего то есть да да да весь как искал меня все убежал том что отлично здорово а знаешь отсылку где
00:31:29 - 00:33:28
этому доказательство ok на самом деле если бы считать интерфейс эту него так и в шапке java доки написано что он гарантирует эквивалент из только в том случае если объекта эквивалентен объекту b через эквол 100 есть если для двух эквивалентных объектов и класс вернет фолз разумеется любая хэш коллекция верни любая от коллекция добавить его то есть и будет у нас дубликат на эти какие простой сон не дает гарантии на самом деле он всего лишь определяет что необходимо нам сделать но тем ни менее небось мопед давай тогда сдвинемся чуть
00:33:17 - 00:34:26
чуть дальше это же программе про коллекции но тем не менее мы поговорим про многопоточность скажи пожалуйста как основная идея многопоточности что потоков работают ну если взять к это приложение на android то у нас например один поток базу данных один поток например отправляет уведомление на телефон другой поток делать так что мы еще с этим писали что-то любимой девушке здорово хорошие предложения скажи пожалуйста но для этого очень часто необходимо согласованность данных но бывает такое что два потока
00:33:55 - 00:35:16
независимых вроде как они сильно независимым они работаю с одними и теми же данными может возникнуть ситуации что они друг другу портят жизнь [музыка] маша писали например два потока и они перебираю значения ускорить эту работу чтобы первый поток а также который поток от 10 тыс потому чтобы это все сложить и назначение если мы нигде не писали синхронно с если у нас нет никакой синхронизации этих потоков то назначение получится меньше потому что они значения учитывают с памяти они они могут старое
00:34:43 - 00:36:00
значение ты говоришь с память есть какой памяти ну и знаешь как я не знаю что можно еще но все таки помете хорошо было заполнить по памяти то что есть некий bass ну ладно пусть этот вопрос о бок с низкой памятью а как когда можно сделать синхронизацию отыгрыш синхронизацию чтобы они там друг друга ждали или покормили не портили другу жизнь как это можно реализовать у объектов у каждого объекта есть мониторы clock мы можем просто грани zero ваться по этому монитору потому что монитор был объект только один и а значит только
00:35:31 - 00:36:53
один поток может иметь только один монитор ok а если какие-то технические способы джаве это имплементировать или или монитор сам понимает как ему работать и как реагировать поток нет окей а где нужно писать это слово синхронист можно писать блоки можно писать в методе но если память не изменяет если мы пишем из методе как-то по-другому работают немножко по другому то есть давности получает синхронизации было я ну так или иначе что то что тот практически работать знака есть кое-какие отличия на самом деле даже на
00:36:13 - 00:37:48
уровне байт-кода но в целом задачи он свою решает синхронизацию ok вот мы поговорили про синхронист методы синхронные блоки но я бы хотел бы задать следующий вопрос так или действительно хороша синхронизация при помощи ключевого слова синхронность или могло бы быть лучше если могло бы быть лучше то что тогда проблему мы можем использовать их . в том то что программист может быть еще более явно удобно читать когда очень много блоков внутри блока например получается себе мониторов и поэтому полезно а если бы я сказал бы что по
00:37:06 - 00:38:53
сути очень часто не всегда но очень часто synchronous блоки лисе имелись инка на этот метод может привести к 1 по точности несмотря на то что у нас есть много потоков тем не менее это может привести нас к вырождению многопоточности и приводит и приводит нас к идее линейности мог бы ты что-то насчет сказать свои соображения два потока вполне ту же функцию и при этом им важно знать чтобы ресурсы интерес этого потока то нас конечно получается просто многопоточное приложение многопоточный минут но при этом есть и
00:38:12 - 00:39:35
делать так что у нас работа с этим ресурсом какая-то кинга и то есть один например кладет туда значение другой читает просто если они все либо и читают и кладу туда что то это дно поточное приложение в этом нет а как это выражается можешь описать это более техническим языком на то есть представим себе ситуацию у нас есть класс обычный простой класс у него есть более int-овое мэтта поле увеличиваем + 1 + 1 есть 2 метода метод увеличить значение и метод получить значение оба этих метода синхронизированы и
00:38:57 - 00:40:10
предположим у нас есть 50 потоков мы не знаем кто точно записывает или какое количество потоков будет записывать но мы точно знаем что потенциально кто-то будет записывать и потенциально кто-то будет вычитывать может ли быть здесь какая-то проблема с производительностью в этом случае у нас есть очередь у тебя теперь есть место можете добавить что этому ты должен только читать они на самом деле тут не про пакет конька нам тут вопрос о том него рождается ли при таком случае многопоточность собой однопоточный
00:39:33 - 00:40:48
потому что если мы что-то записываем из мы знаем на что синхронист он захват как монитор даже если у нас есть 50 потоков как я понимаю с двух слов to monitor the один на всех то есть когда выходит что-то здесь не то или все-таки еще так как должна быть мы можем создать несколько объектов но мы можем сказать класс какой то у которого есть объекты и мы можем сканировать по ним и они могут него поехали балоги бесполезны для но при этом они нужны для того чтобы синхронизировать блок какой то есть лук
00:40:23 - 00:41:39
12 вот насчет 50 потоков которые работа с одним ресурсам я думаю это плохая реализация если мы будем создавать просто 50 полей блок видосы менять название лука диалог 3 красивей но у нас нету тополей у нас есть один объект одно поле и два метода получить значение и увеличить значение на плюс 1 и есть 50 потоков который работу ну и либо 10 потоков не важно по крайней мере больше чем 2 у нас мы не используем никакие просто надо у нас простая синхронность но и здесь принципе вопрос на ладони не теряем ли мы ничего здесь ну то есть
00:41:03 - 00:42:32
все ли ok все ли будет хорошо то есть или все-таки можно было бы что ты сдал плоть предположу то что мы без проводить аналогии со скал только это тоже у нас есть транзакции и например когда эта транзакция работа с данными то мы мы не нам нельзя читать например один из уровней кажется 11 из уравнения возможно вы можете что-то такое же то есть закрывать только для для чтения но при этом мы можем дать да что угодно на самом деле проблема в том что когда мы синхронизируемся все синхронизированные методы блокируются
00:41:50 - 00:43:08
тоже и разумеется если у нас 50 потоков читают и записывают по сути не имеет значения что они делают сейчас и лечением делают потому что они будут ждать один другого и разумеется если для записи валидная ситуации что мы делаем записи и конечно же я хочу чтобы другие подождали чтобы значение обновятся но на чтение то зачем на чтение здесь возникают проблемы что когда будет 50 потоков читать они не буду делать это одновременно они будут делать последовательно потому что как ты отметил правильно один монитор на один
00:42:34 - 00:43:40
соответствующий объект не ту там тим у меня к тебе вопрос из это вытекающей если способ эту ситуацию улучшить или повысить производительность и все-таки сделать так чтобы запись была безопасной и в то же время чтение действительно было многопоточность много потоков одновременно могли выполнять метод точно то есть они могут сколько угодно раз читать ну почему бы нет но звучит резонно а если джимми уже что-то подобное реализован или нужно будет делать это своими ручками есть тоже идею мне а слышал ли ты что-то про локи если не
00:43:08 - 00:44:33
локи который бог коварности а ключи до замки вот может рассказать какой-нибудь какой нибудь про какой-нибудь замок и провести аналогию с патроном который привел продюсер окей и как он работает то есть проходит какое-то количество операций называется кандалы боюсь понижается как только открывается но akane аккаунт down это немножко другая штука это тоже из многопоточности но тут больше вопрос про замки интерфейс лоб в частности речь идет про реблог и райт wog то есть замок на записи замок на чтение вот слышал что-то о
00:44:31 - 00:46:13
кей но не страшно самом деле все просто тот же рендеринг блок работает по следующему принципу когда кто-то записывает все кто читают ждут и все кто хотят еще раз записать тоже ждут зато пока никто не пишет все могут спокойно себе читать сколько угодно хоть сколько угодно потоков и одновременно то есть это по сути себе такая симбиоз между сигналом я читаю или я пишу то есть пока кто-то читает никто записать не может потому что это не безопасно зато когда поступил сигнал на запись приостанавливается на каком-то этапе все
00:45:36 - 00:46:47
операции чтения и ждут прогресса накапливаются и ждут пока запись не завершится и тогда это нам гарантирует получение актуального значения а не сломанного хорошо но принципе всем здарова давали двинемся немножечко дальше и поговорим про тестирование будем говорить про uni тестирования скажи пожалуйста вот какие библиотеки для тестирования ты значит никаких как о которые вот ты любишь предположим использующий может быть просто слышал я знаю в чем разница между g-unit makita и просто приводить после того чтобы не например не
00:46:12 - 00:47:37
поднимать spring готовое приложение в нашем тесте не понимает контекст чтобы просто за мной за локоть мы берем на самом деле помогу g-unit это фреймворк для тестирования это в нем включены бежал за счет которого будет тест выполняться разумеется в нем включены разнообразные вещи которые помогают тест сделать тестами и в нем также есть актер то есть то что делать-то сиджей то есть так или иначе и genser но используешь другое дело ты используешь его на сто процентов то что он или выборочно потому что осер
00:47:24 - 00:48:43
j&j unity ну принципе одно и то же разница разница в удобства также предоставляет более об скалы гибкие механизмы для работы и это лучше хорошо [музыка] да да и вот мы продолжим как раз говорить про этом скажи пожалуйста что необходимо сделать чтобы тест был тест am not как жало понимает java дпм я не знаю все что угодно вот как понять что этот теплоход собака тест он плохой до добра хорошо а что если я хочу проверить исключения ну то есть представимся ситуацию ведь тесты это сценарий который мы делаем позитивные или негативные ну
00:48:16 - 00:49:55
то есть когда выбрасывается исключение это негативный сценарий но он вполне может быть предсказуемый если у нас возможность джей унеси проверить что была выброшена исключение именно то которое мы ожидали а вероятно даже с тем же сообщения как собаки тест тест написать а что может быть что ожидается 5 это не видел то есть четвертом так писали дату кажется уже в скобочках ничего не указана абсолютно верно то есть поэтому мы не говорим здесь про джона черта ты прав orange man тацит с было параметра ожидаемого исключение
00:49:11 - 00:50:21
сейчас его нет вместо этого в пятом есть выражение как frogs то есть отловить какое-то какой-то объект по сути работает так же самое как acer j ну разница практически никакой но сиджей как мы уже убедились на гораздо [музыка] удобнее играл лучше чем а сорт и бруджи ноги любом случае токи смотри а вот такой вопрос представившая ситуацию что мне необходимо выполнять что-то несколько раз то есть у меня есть какой-то сценарии потом и в конечном итоге я упираюсь то что блин у меня есть несколько методов они делают одно и то
00:50:04 - 00:51:24
же я даю на разные имена и потому что я очень часто вижу во время там преподавания когда ребятки задают домашки они называют тест 1 test 23 потому что просто различаются данные сценарий один и тот же как можно выйти из этой ситуации не при этом данный у нас нет но с вами предложим нас есть какая-то мы тестируем библиотечку масс но есть к стандартная либо масса вернее classic масс в джаве у неё есть там разнообразные методы допустим сложить вычитать посчитать квадратный корень это и так далее вот мы взяли подсчет квадратного
00:50:45 - 00:52:02
корня мы точно знаем что корень из 3 до дверей корень из 3 для по фигня соответственно мы передаем туда значение и мои ожидаемого значения затем мы хотим протестировать другое значение но как бы это ведь один и тот же сценарий тем не менее я наблюдаю что у меня в тестовом классе два метода но им не возникает мысль а не является ли это дубликат кода может быть не нужно было бы как-то их объединить как то что то с этим сделать вот предоставляет ли g-unit и в целом любой к тесту greenworks которым ты
00:51:31 - 00:52:47
работал такую возможность когда у нас есть один тестовый сценарий но выполняется он с разными параметрами но но задам вопрос является для тебя это дубликат кода и ты хотел бы от него избавиться или все-таки это нормально что ну как бы почему бы нет я четко указала спецификацию сценарий ну да сценарий повторяются но все в жизни повторяется такого мне лично я предположу что например при этом возвращается . возвращается просто идею . но если так подумать то конечно это дубликат родиться в этом нет на что если
00:52:10 - 00:53:42
внутри метода вызываем метод используется центре проводится вот такая работа с используется совершенно другая у нас есть какой-то метод пусть бы так что одни данные которые следует снова класса он обрабатывает так но при этом рынок будет точно такой же другие данные обрабатывают по-другому немножко получаем одно и то же все таки нам надо знает то что работает ли у нас другой вариант поэтому на той же если мы напишем одни и те же строчки кода . но на самом деле про разные типы данных это скорее вопрос к правильности кода
00:53:03 - 00:54:42
потому что java на строго типизированные если она ожидает эндона рождает им дай если мы перебьем это что-то известно вероятно принципе я пускал бы что у нас проблема в дизайн потому что странно что мы передаем какой-нибудь обобщенный тип данных типа там объекты и оба рик а потом внутри начинаем это и интеджер это плод ну если такие прецеденты на самом деле мы не буду щас обсуждать что хорошо что плохо но в целом ты правда даже с точки зрения тестов это дубликат кода и здесь есть такая штука как параметра и z
00:53:57 - 00:54:58
тест то есть аннотация собака параметра и за тест которая позволяет нам выполнять один сценарий просто с разнообразными данными то есть она берет эти данные мы должны определить этот источник называется source и разумеется дальше с ними работы в принципе это тоже самое как и аннотация тест просто на танцы тест одноразовая а этот выполнится множество раз год вот так ну ничего страшно скажи пожалуйста вот такой вопрос имеем вот представим себе ситуацию у нас с тобой есть сценарий мы опять же тестируем с тобой поведение какой то и
00:54:28 - 00:55:46
результат то есть я вызываю операцию масс . эксперты в получении квадратного корня я ожидаю 3 но в целом после того как я получил число я создаю условный оператор if expected резалт равно 3 правильно ли это для теста а почем а есть наверное не только в том что можно писать короче то есть например то что у нас одинаковая мне кажется это не правильно писать окей окей но но почему это внук скажем но кот не всегда размер кода не всегда плохо скажем так но почему же это так плохо в тестах то есть ведь iv это вполне себе
00:55:07 - 00:56:54
ног скалу поражение конструкция из языка правильным почему бы не использовать в тесте чтобы проверить что ожидаемый результат эквивалентен практическому результату рожу это плохо да не кажется потому что все таки у нас может быть такой тест один тест выполняет с собой много задач то есть несколько значений чтобы они все например давали нам круто мы напишем assert и скобочках те выражения которые мы хотим проверить например вот такие ошибки что нам true вот так то есть если нам важно чтобы все что проверяем то есть
00:56:15 - 00:57:48
все что мы задаем выполняем по деревенски а если у нас нету а тертого если вам ситуация когда у нас просто один осел осел не знаю и krolls и все большую часть разве это меняет кардинально классу окей окей ну хорошо давай тогда верни оставим пока этот вопрос и вернемся к нему боже с тестами как бы мы прошли все все как бы хорошо перейдём к интересной теме spring framework здесь мы поговорим про основу скряга spring пор и вероятно затронем такие фича как spring mvc и вот самый первый вопрос такой самый раз при на самом деле
00:57:09 - 00:58:36
но не всегда него могут ответить в чем основная идея спринга на чем он базируется внутри спинка вообще у нас есть так называемый машину в контролок контейнер любимица все гены где в том то что есть переводите машину в control the переводится как инверсии управления то есть много рутинной работы берет на себя программе за думает только о том чтобы зарабатывать деньги бизнеса и том чтобы подключать независимости каждого класса денюжки да да да хорошо как это выражено я вот слышала что в спарринге есть не только инверсии
00:58:00 - 00:59:24
управления какая то что катер называется dependency injection вот в чем разница между тобой и тем же чем и инверсии управление здорова-здорова а в чем смысл тогда dependency injection у той сен версию в контроле я согласен эту версию проблем то есть ты передаешь управление чего-то кому-то и в целом довольствуешься этим да но в чем тогда смысл dependency injection потому что переводя на русский внедрение зависимости идут у меня такое вот я пускал бы резонирует ментам вроде ты что-то кому-то передаешь а тут какое-то
00:58:43 - 00:59:52
внедрение вроде непохоже на передачу можешь описать в чем тогда смысл dependency injection как такового и почему это является инверсия управлению берет на себя обязанность то что тонн внедрить куда-то зависимость сложный бен laden.we другой бин и мы не беспокоимся о том как это будет происходить то есть мы просто указать на примерно собака собака автоваз куда мы хотим внедрить не надо об этом даже думать о еще кастинг не только эту работу делается процессоры а когда мы находимся на beanfactory у нас
00:59:21 - 01:00:40
же объект только тогда превращается бины и telling us процессоре как-то его обрабатывать делать из него из объекта бен так вот одна просто вот из особенностей какой-то бин пост-процессор просто именно внедрять зависимости а другие бен пост-процессоры делаю что-то еще помимо кей окей хорошо хорошо а теперь вернемся немножечко обратно к нашему вопросу пуджи uni и давай подумаем все таки почему их ожидаемый результат равно фактический результат это плохо и почему нужно использовать acer ты ну либо
01:00:09 - 01:01:31
способа утверждающим то есть опять же тут не ради то есть версии управления вот именно g-unit когда мы пишем а сердце или что-то подобное он под капотом как проверяет мы точнее не задумывался как проверяет 42 и нам не надо беспокоиться что возвращает тоже идет в гости управления да абсолютно верно это то почему нельзя писать ни в коем случае их потому что тогда мы не мы не управляем процесса процессом определение правильно или неправильно потому что это делает имена механизма сорта утверждений разумеется
01:00:52 - 01:02:05
когда тета на нагло забираешь на себя что очень часто происходит springer когда не знающие ребята просто что-то перехватывает начинается от руками когда spring это делать но это отдельные стали поэтому да действительно это тоже форма госуправления для соответствующего фреймворков тестировать вернемся давай-ка стрельбу и орды принц джексон и топлива not расскажи какие три способа внедрения зависимостей ты знаешь речь тут не пойдет через там гитары и сеттеры целом вот какие три способа конфигурации знаешь для
01:01:33 - 01:03:00
внедрения зависимостей макей класс configuration и еще последний здорово классом мы должны написать обязательно писать собака компонент может быть есть какие-то другие способы если мы говорим про конфигурацию через аннотации все нотации которые под собой имеют компонент ok а что если я от маркируя классика аннотации configuration это будет считаться бином да это тоже бен потому что контекст тоже ловит это как бен и тоже с ним как-то работает а почему он так делает потому что внутри этой конфигурации
01:02:16 - 01:03:48
конфигурационного классика [музыка] а если бинов мне тут представим себе просто classic вот в пустой classic но тон от маркировано аннотации configuration все таки нет никаких внутри бинов я знаю согласен с тобой что мы используем классов маркированный компьютер для того чтобы внутри хранить инициализируйте бен и которые аннотации пи но у нас нет там ничего все-таки он водит созданный как бен или не будет а почему вечно никакие сигнал с тем то что какую роль выполняет spring для все управления возможно когда мы пишем конфигурации
01:03:41 - 01:05:13
хотим внутри подключить например какую-то библиотеку которая не спринга под капотом то то просто вот мы делаем так чтобы теперь это являлось минут чтобы мы могли этим пользоваться и чтобы мы потом не задумывались о том что надо будет куда-то например конструкторе указать сначала сдать поле того класса где используется библиотека в конструкторе это создать и потом этим как уже пользоваться то есть возможно для этого но на самом деле все проще просто потому что аннотация configuration включает себя нотацию
01:04:31 - 01:05:38
компаний так или иначе да все все все гораздо проще а вопрос об подключений библиотек но то есть классиков которые не являются частью стрингах и неподвластных три года переправ потому что когда нам нужно создать экземпляр класса которым мы не владеем то есть мы не можем на него повесить аннотацию это какая-то сторонний обжарка предположим тогда конечно же при помощи аннотации били при помощи on the configuration совокупности не без деталей мы можем это реализовать и все-таки добавить этот бин для спринга
01:05:05 - 01:06:14
уже в рамках нашего конкретного приложения хорошо давай поговорим о scope'ах но то есть это одна такая самых важных вещей какие скорлупы предметы знаешь и какая их основная задача другие категории я не могу сказать но неважно на самом деле там их 4 штуки дополнительно помимо ты прав они существуют в в приложении или бпвл приложение как правильно но мне в принципе хорошо о чем основное отличие синглтон от прототайп если посмотреть это опять же с точки зрения когда когда нас класс который по минску которых есть
01:05:40 - 01:07:17
skype когда на beanfactory а создается даже если у него там водится бака при destroid внутри этого класса она не будет выполняться потому что после того как бен создан spring о нём больше не задумал не заботится но если мы хотим сделать это логику про синглтон синглтона связано то например тот метод который помещен мутация собака пристроен выполнится потому что спринт заботиться как-то об этом до конца жизни беда прототварь он просто дает он простаивал дает и разработчик дальше сам как the sims
01:06:36 - 01:07:50
ok но общая слабая по тебе сказал что здесь не столько про то как spring о нем заботиться spring по-любому о нем заботиться ведь он ложится в контейнер соответственно что если бы сказал тут скорее вопрос о том как долго этот бин существует и тогда здесь у меня вопрос чем отличие здесь в жизненном цикле между символ тонн прототайп синглтон есть энглтон to spank обязан круто улыбка с не выполнять потому что он один не сделает но прототайп тоже тоже о нём беспокоиться на самом деле нет здесь не про это правильно
01:07:14 - 01:08:41
spring здесь идет про момент создания биной добавление его в контент потому что синглтон он в контейнер добавляется один раз один контейнер 1 эквивалентны синглтон со всеми эта информация внутри неизмененные он добавляется один раз туда по хорошему если мы ничуть им нечего прототайп разумеется будет добавляться в контейнер вне зависимости от его метой информации столько раз сколько он будет затребованы соответственно то есть в тех местах где мы попытаемся предположим внедрить в разных классиках вот каждый раз для для
01:08:14 - 01:09:24
нового внедрения будет создаваться абсолютно новый прототайп экземпляр даже не знаем то что мы создали один шаблон для его создания так или иначе это отличие главное но есть к еще вопрос 1 представим себе ситуацию у нас есть тобой синглтон бен внутри у него есть два свойства эти два свойства это тоже бен и они называются коллаб ораторы или то что мы собираемся внедрить и тут вдруг эти мины являются прототипами тут и вопрос сколько раз эти гены будут создаваться ведь прототайп создается на каждое внедрение и вот у нас есть
01:08:49 - 01:10:22
classic синглтон который владеет двумя пинами прототайп создадутся они много раз ни разу не создадутся внешне не проблема конечно здесь класс который да все равно когда мы хотим создать новый сингл то вот этот объект не конечный вид синглтон скопом он же у нас уже есть еще несколько поэтому я думаю они больше не будут создаваться об этом виноват синглтон или в этом виноват прототайп тоже кто-то же должен быть виноват у нас уже есть контексте поэтому абсолютно верно да ты прав потому что прототайп это про то сколько раз и где
01:09:35 - 01:11:05
мы внедряем разумеет синглтон внедрения просит один раз разумеется пропадает внедряется один раз и синглтон готов его прототайп и большие вас требовать не будут они внутри уже готовы внедрять да абсолютно верно здорово springer би си буквально там несколько касаний скажи пожалуйста чем нас на различия между rest контроллер и просто контроллер любой метод собой когда контроля просто отправляет нагрузку с контроллером вполне резонно здорово хорошо представимся ситуацию что у тебя есть несколько контроллеров и
01:10:42 - 01:12:10
во время выполнения какой-то бизнес логики мы с тобой и выбросом разные исключения происходят разные непредвиденной ситуации эти два контроллера они абсолютно про разные вещи да они работают в рамках одного предложения но не про разные вещи если какой-то такой универсальный способ организовать единую точку для управления исключениями чтобы в конечном итоге у нас ответ всегда был унифицирован то есть структура ответа ошибки была одна и мы только начали ее информации какой-то уже специфичные для той ситуации или для этой то есть речь
01:11:33 - 01:12:47
идёт про управление отловом исключения в спринга месси представлены exception-ы созданы мнение и вот все по всем все на уровне джавы создана ситуация такая что два контроллера 2 бизнес-логики одно приложение я хочу чтобы у всех было одно одна структура ошибки номер сюда когда и обратно клиенту возвращаю ошибка я хотел бы чтоб структура от была одна но я не хочу при этом писать много года и каждый раз каждый новый контроллер учить как с этим жить я хочу чтобы была бы какая-то одна пачка для работы с этим мы можем
01:12:09 - 01:13:25
обернуть если правильно понял то что мы можем те данные которые мы возвращаем leo burnett response entity окей а запроса просто возвращать этот код ошибки то есть если при нормальном при хорошей работе нашего если пользу все хорошо испанский . окей то есть статус 200 но если пошло что-то не то то мы возвращаем тот же самый response entity или то другим кодом который ok но ведь очень час но очень часто с ошибкой мы возвращаем какие-то данные и здесь вероятно это работать не будет то есть когда мы пишем возвращаемый всегда
01:12:54 - 01:14:17
когда мы можем взять response and city и укажем какой-то ответ человек имеется ввиду тип данных который возвращается этот тип данных и чаще всего именно отображает данные которые мы хотим вернуть в позитивном сценарии но исключение это негативный сценарий и получается что тогда я не могу написать через запятую что это будет либо данные нормальные либо это будет данные про ошибку то есть риск он 70-ти здесь нам это не решит ответ защитным что да мы можем указывать разные http status code это кол но это не столько про spring
01:13:36 - 01:14:48
сколько просто теперь давай этот контроллер который ok но в целом http вернее рост контроллеры от не столько про директ вот как бы как бы ты это этот вопрос на самом деле перехват исключение и речь идет про такую тему как называется global exception handling или в целом exception handling можно так назвать то есть это специализированный класс который отвечает он маркируется специальными аннотациями exception-ы его задач простая он отлавливает определенные ошибки исключения и внутри этих методов после отлова он формирует
01:14:12 - 01:15:49
соответствующий ответ но в словаре там api error и что в таком духе при этом всем к контроллеры отвечает только за нормальную работу то есть если не произошло исключение значит контроллер вернул данные если вылечила где-то исключение этот exception хэмбли если он настроен на реакцию он разумеется это перехватывать забирают на себя опасность контроллер на этом перестает работать включается exception handling и возвращает ошибку и главное мы можем обеспечить унифицированную форму вывода в случае ну ладно ничего страшного это
01:15:01 - 01:16:06
такой вопрос с подковыркой но тем не менее у ведь что ты неплохо шариф пошли типе donedeal испытал ставьте теперь бокса пример что архетипе статус коды помогают нам я пускал бы отображать все хорошо или плохо да то есть по сути статус нашего запроса давай сдвинемся от спринга в депо их оберни в чем разница для тебя между джипа их и верный и поют и спецификации а знаешь ещё реализации помимо hibernate а ну не совсем что-нибудь есть нет это это процесс это процесс это за это slogger это спецификация приложений на
01:15:33 - 01:17:12
самом деле здесь все проще но называется и джи би это стандартная тема которая входит называется энтерпрайз java бен раньше java делилось на без на части это было до какого-то времени назвал java и sis и java и и дрова стандарты вишен enterprise лишим и разумеется чтобы пользоваться и бибишке нужно было подключать том числе еще enterprise эдишн сейчас стены enterprise лишь на забили никому больше интересна только и слежка у нас есть собственная ну как было не знаешь мне страшно ну кто его использует хотя у меня был проект на
01:16:32 - 01:17:43
котором я имел честь не поработать вот давай тогда поговорим с тобой о такой штуке как там называется persistent контекст она она есть и в депо на и шлюхой верните местами она друг от друга отличается но все-таки что такое persist им контекст в чем его непосредственное деле и какие состояния в нем имеется ну в первую очередь конечно кэширует которые уже были именно для этого используется это кажется первый уровень king выполняется только на одной сессии которые окей окей другие тура когда мы только видим объект но при этом
01:17:08 - 01:18:44
его еще и hibernate никак не запер сестру то касается у нас это transient только создался когда мы взяли куда логику связанную кибер на сделку то логику с этим объектом после тебя систан и дальше может разделиться еще на две категории и муфт если мы его ударили поможет ай да то что есть у нас получается дотащить как я понимаю когда мы резистор контекста я просто закрываю у нас не удаляется просто он где-то лежит и когда мы заново включаем сессию вот разница между риф 3d touch то что мы можем есть что еще за мер эти данные
01:18:05 - 01:19:38
которые у нас не потерялись окей а скажи может быть такая ситуация что мы добавили выпер честным контекст наш объект по мужу там есть в базе данной кто не конечно может быть если мой коммент если мы транзакции не сделали комет окей а как такое состояние называется ну еще нет на самом деле она называется менеджер чаще всего да мы можем мы можем назвать его persistent одно есть еще разделение на пирсе сантиментами escapist когда он есть в сессии и уже существует в базе данных то есть мы его за persist или куда там так говоря на
01:18:51 - 01:20:05
рубли ш а менеджер когда мы его подхватили положили все еще ношу он есть контексте на в базу мы его еще не сохранили но в целом да ты все правильно сказал давай поговорим о связи и здесь как раз проявляется тема sql это как хайбер на него разумеется направлен какие уровни связи есть выстрел и какие уровни связи есть бог и верните а есть а если круче ты сказал соли что перебил крут скал что есть man direction by directional а если вот эти ван дирекшен directional бисквит когда мы видим табличку на же
01:19:35 - 01:21:00
но ведь но ведь want one это тоже самое когда там есть поле и там и там есть поле но то есть именно вот нас есть например класс а и класс b class b это у нас режиме службы есть если нас поле бы есть классе объекта они в классе b там есть то это уже каждый имеет все таки значит ван дирекшен лобби directional это больше про фей верни это не про искал разглядят потому что в противном случае это очень похожи на one тулон когда с одной стороны есть из другой стороне завесы без directional то же самое говорит как бы с одной стороны
01:20:57 - 01:22:24
и с другой стороны иначе ван directional говорит о том что со мной есть а с другой нет это типа one to zero waste в таком духе так все-таки by directional это больше про hibernate или просто окей окей а какое преимущество такой связь что нам нам дает вот реально на практике например лист ну нет ну тип данных разве играет какую-то роль можем хранить ли сможем хранить папу можем не хранить марку можем не хранительниц ну то есть визирь экшна как ты объяснил как я понял из своих слов в обе directional а когда
01:21:45 - 01:23:11
есть класс а и в нем есть поле б а также есть класс b и в нем есть поле а вот зачем нам это нужно то есть какой в этом смысл ну вот например у нас есть новые колонки сделать в нашей табличке если у нас эти две связи есть и просто мы не указываем именно внутри класса например мы не пишем только айдишник а мы можем прям весь класс а все что есть в классе или указать но при этом он умный и когда мы пишем то что делает что нам надо конечно есть у нас с одной стороны написано вот джеем не колонку вот такую и
01:22:32 - 01:24:10
произведи по по имени вот этого поля или рукой станут и пишет что майк вот по этому полю то у нас произойдет вот этот как этой майка directional и даже данные итак мы будем и как проще обращаться с данным то есть когда мы берем кайта объект который связан другим объектам при этом берется еще в этот объект не понял а вот здесь последним офис то есть у нас берется не только яичник объект который здесь внутри это это это это я понял я имею ты говоришь что когда у нас есть класс у него есть какой то объект и но там еще
01:23:23 - 01:24:43
какой-то класс здесь не попасть с точки зрения джавы какое преимущество вот имиджа вы как классов какое преимущество by direct вот именно как мы все данные которые надо еще возможно ну ладно на самом деле преимущество в том что ты принципе неплохо начал там запутался преимущество в том что мы можем достучаться до другого объекта поскольку другой объект является полем нашего объекта проще говоря класс охранит на поле ссылку на класс b-klasse b хранит на соответствующее поле ссылочку на класс а то есть этот проще достучаться
01:24:10 - 01:25:50
но как бы ничего страшного не всегда дается просто пояснение но это неплохо давай проясним еще несколько моментов по поводу hibernate а я слышал что иногда это целая проблема когда мы предположим у нас есть класс он состоит из других объектов сложных объектов это другие таблицы абсолютно предположим у нас из класс юзер у него есть там юзер details чаще всего так и происходит необходимо подтащить информацию из юзер details но там очень много информации и это очень тяжеловесно и мы не хотим это выгружать
01:25:00 - 01:26:25
то есть у нас задача такая чтобы получить доступ к самому юзера но при этом всем чтобы доступ к юзер details был открыт но данные по факту не выгружались если у нас такая возможность такая есть возможность делать через это не все всегда только потом сами как ты еще один раз обращаемся это решение конечно такой себе может быть и слышал что тебя напомнить слова можешь объяснить как это работает да то есть когда мы берем кита данные не важно обращаться к этим данным схватиться ok вот и здорово на самом деле ты про
01:25:43 - 01:27:27
потому что такое high верные ты так как spring это всего лишь прокси вокруг наших реальных объектов то есть когда мы ставим хедж type лийзи и выгружается основной объекта его объекты которые луизиане по факту не идет обращение базу данных конечно же это от ситуации к ситуации зависит от то что у нас но самое главное что если мы к этим данным мы обращаемся они по факту не выгружаются то есть мы экономим лишние запросы то есть это про производительность здорово мне нравится скажем роста это самый простой вопрос как заставить
01:27:08 - 01:28:17
хайбер не понять что у нас classic является в сущности нужно померить нотации entity ok здорово а если другой какой-то способ можно указать можно добавить там кажется называется мэппинг xml конфигурации щекам и способное топор опорный способ на самом деле можно поскольку тут как со спаррингом хайбер нет имеет свой контекста это в этот контекст может загрузить что-нибудь руками прыгнуть через программ через программу написать код и добавить ручками конечно мы так делать не будем это ну так себе мысль
01:27:43 - 01:29:07
зачем здорово ну что ж я думаю что с hibernate там вполне себе закончили и хочется спросить вопрос про sql скажи пожалуйста в чем различие left join or join и inner join я бы рисовал есть такие круги и замечательные все данные из таблички которые мы с присылаются они все все все даже там если у нас справа нет таких данных просто если мы делаем просто без каких-либо других слов то у нас получится только пересечения все что было а то что было в левой только то что нашли и начинал окей чтобы ты использовал на сам energy онлайн
01:28:32 - 01:30:17
джанелидзе ok а в чем вот его основа преимущество по сравнению с left join или right join the что нет да правильно абсолютно промежду прочим кружочки которые ты обрисовал они называются диаграммы венна да то есть они показывают пересечения также есть еще круги эйлера а немножко про другое но они базируются на диаграммах бена так или иначе то есть они показывать пересечении то есть на них действительно очень круто можно нарисовать какие данные будут выгружаться допустим как слеп join возьмется все из левой таблицы
01:29:39 - 01:30:52
и все что попало в пересечении из правой таблица все остальное дополнится мулами разумеется energia нам заполняет только пересечении правой левой разумеется мы получаем данные только которые пересеклись не этот почему ты ответил что там нету ну love так чем же так круто да да действительно так есть скажи пожалуйста такой хитрый вопрос последний на сегодня в целом происки вал какие ограничения или constraint всё ты знаешь достаточно и большему достаточно а скажи пожалуйста вот если мы возьмем про
01:30:20 - 01:31:36
и майки я считаю что он является составным constrain там может быть одинаковые значения а зачем нам нужен prime реки чтобы было удобнее брайдон да а зачем мы чтобы для каждого риккардо у нас был свой америке да ты прав но представим себе ну нет у меня prime реки разве я больше когда данные смогу получить ну это не по конвенции по каким конвенция по правам человека ну насколько я знаю если у нас нет про кита это нарушает формы да да действительно это про в том числе проформы нормализации но большей степени
01:31:06 - 01:32:45
здесь проверки проще хранить других таблиц табличках то есть это более унифицирована если мы например у нас есть табличка с именами и так далее хранить вот эти значения таблички это не совсем понятно работать согласен еще есть одна вещь самое важное которую ты не упомянул но я здесь когда будет другой интервью ты об этом не забудешь на самом деле основная идея прайморить и помимо того что это идентификационный номер для конкретной записи чем ты в принципе прав на сто процентов но также это индекс прайма
01:32:09 - 01:33:29
реки выступает индексом индексация помогают более быстрой выборки потому что это работает как дерево как ты объяснил уже сам математически 2 меньше ста ста больше 2 разумеется если нам нужно значение между десятью и двойкой нам не надо и тяж в 100 соответственно это определенно помогает нам искать наш необходимые значения и разумеется это влияет на скорость выборки информации в результате наш клиент happy и потому что все происходит не так уж долго как могло бы быть но в целом ты прав до единственное что чуть чуть не заснул но
01:32:51 - 01:34:05
не страшно это нормально ну что ж вот мы и подошли к концу мы обработали столько вопросов многие вопросы были необычные для всех интервью который мы раньше прогоняли и вот первую очередь бы тебя спросить вот какое-то личное впечатление после этого интервью что-то вот испытываешь какие твои мысли на будущее и вероятно у тебя уже есть какой-то план да я совершенно не знаю как работает тестирование я плохо разбираюсь что такое g-unit сиджей надо это потянуть [музыка] но еще конечно плохо разбирались а и
01:33:28 - 01:34:51
верните и в принципе в этих всех связях надо бы подтянуть и многопоточность в том числе потому что по многопоточность сейчас на и вот когда я отвечала приморское плаву и наверное то что игра и что это простой вопрос на вопрос после я не знал что так устроен вот это надо потянуть а так я довольна собой принципе core я знаю спинки знаю мне тоже кажется и мне кажется даже во многих моментах ты себя очень недооцениваешь потому что ну да есть какие-то неточности это вполне себе нормально но тем не менее это достойно
01:34:09 - 01:35:17
держался это скажу реально круто было даже если что-то был да это я было избиение ты прав да никто не заставлял внести огромнейший крест на спине потом падать под этим крестом что балаково безусловно это круто что ты определил для себя какие-то точки которые необходимо причин потому что для любого разработчика будущее я ты не важно кто всегда есть чему учиться то чего мы знать не можем это нормально это никого не должно огорчать скажи а может быть ты на приметил уже какую-то литературу которую будешь читать после этого
01:34:44 - 01:35:53
интервью ну то есть ты уже явно видно что ты чтобы записал список литературы где ты это будешь проверять не будешь знания можешь поделиться я думаю не буду сирого ней убрать конец смысла книгам не даст более глубокие знания но и также я бы хотел взять книжку по как работает книжка тоже скачал совсем недавно про карлсона 2006 года поэтому ладно и даже 20 лет нет на самом деле многие книги пока не колеса действительно не такие новые как хотелось бы но в целом там скажем там концептуально ничего не меняется да есть
01:35:18 - 01:36:46
личка применяются и они ломают головы и тем не менее основная диска из основной идеей поэтому даже старых не имеет смысл хотя бы пролистать вероятно подчеркнуть ведь в примеру если мы говорим про искал я склоняю голову перед таким стареньким дедушкой которого зовут дэйв у него есть книга по теории реляционных баз данных он помог джордж do-it джиг дейт собственно на минуточку он эту книгу накидал восьмидесятых что-то в таком духе но она по сей день актуально то есть сама теория самых база и меняется да мир меняется наука dunk
01:36:21 - 01:37:44
меняется но конечно есть без на успел и лицом базу данных это разные вещи во вторых если реляционные базы данных она вполне себе решать конкретную задачу любая это поддерживали и связи между данных иначе горят структурирования ссылка на них предложим тот же фрэнки и что потом да потом как бы мы можем получать более консистентную базу со связями и так далее в то же время не реляционных баз данных они же новости они решают абсолютно разные задачи разные успел реализация нужно для разных вещей есть
01:37:03 - 01:38:18
документ на ориентированный базы данных есть база данных которые ориентируются на таймс темпах и когда они все про новый скилл но цели разные поэтому я бы сказал бы оптимальный вариант знать sql она успевал это уже штука придет там где это нужно быть потому что ну все в голову не положишь ну чтож вот мы и подошли к концу я желаю тебе удачи уверен солнышко мне тяжело тебе удача это клево что тебе всего лишь не так много лет только в одиннадцатом классе от уже почти на работу я не знаю многие могли бы позавидовать это я в том числе
01:37:45 - 01:39:00
в том возрасте как вы поиграете в компьютера и грузинскую то простую программу ли но и panther университета после бусины только начать свою карьеру а тут такое прямо желание тебя поддержать 77 чем только можно поэтому мы еще раз все присоединяемся и жмем себе успехов и молодец очевидно что ты будешь улучшаться это принесет тебе рисует а ты и надеемся тебя увидеть уже среди нас программистов инженеров на работе на какой-нибудь конференции или может быть я где-то ну что на сегодня это всё пока и удачи
01:38:23 - 01:39:27
тебе спасибо вот так друзья как видите артем никулин довольно таки мощный кандидатом как джагернаут пробивает стены и на самом деле я вас не обманул он действительно супер кандидат он супер джун и он достоин этого звания джона и если бы я пробыла xi на работу я бы даже не задумывался более того я буду рекомендовать кому только нужно при получении его первая работа разумеется когда он на это нацелиться если ему необходимо будет помощь лично от меня или от нашего канала друзья присоединяетесь пишите свои комментарии
01:38:57 - 01:40:08
что вы думаете по поводу того насколько артём юн и уже обладает такими крутыми знаниями и как вы считаете какие у него шансы на успех уже в одиннадцатом классе получить работу то есть он даже еще школу не закончил а уже работает программистом согласитесь ведь это супер круто друзья я напоминаю вы на канале jet баб с вами макс добрынин подписывайтесь на канал включайте колокольчик не пропускайте все интересные видео про инсайты про интервью оставляйте свои комментарии ведь мне индивидуально приятно с вами
01:39:32 - 01:40:32
всеми общаться не забывайте что у нас есть телеграм-канал instagram канал мы для вас там постим интересные материалы и тем не менее это там где можно тоже пообщаться и комфортно и свободно и на разнообразные темы а на сегодня это все вы на канале jet бал друзья прощайте
01:40:02 - 01:40:34