Собеседование на позицию Java junior #3 Ильяс

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

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

  • Всем здравствуйте у нас сегодня новое собеседование с господином ильясом Ильяс Расскажи что-нибудь о себе Да Всем привет Меня зовут Ильяс сейчас я нахожусь На позиции Middle инженера по сопровождению Сбербанке занимается сопровождением бизнес систем и вот последние наверное месяцев 9 начал активно изучать потому что мне стало интересно В первую очередь автоматизировать на своем текущем месте рутинные процессы и после чего начал уже полноценно погружаться процесс разработки Ну то есть у тебя как

    00:00:03 - 00:01:31

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

    00:00:49 - 00:02:13

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

    00:01:31 - 00:03:18

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

    00:02:26 - 00:03:56

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

    00:03:15 - 00:04:44

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

    00:04:01 - 00:05:23

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

    00:04:42 - 00:06:06

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

    00:05:26 - 00:06:47

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

    00:06:07 - 00:07:21

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

    00:06:45 - 00:08:28

  • Number 1 Он для всех разный будет для всех будет разные таковы про интерфейс или про абстракт про интерфейс вот я в интерфейсе написал Я создаю число получается что условно там до аккаунтер какой-то заводим в абстрактном классе от него наследуем там у нас есть тени У нас есть мы по ним пробегаемся в итераторе И если мы будем прибавлять к этой переменной которая была на собственном классе то абстрактном классе Если я правильно помню Она будет общая А у каждого наследника своя так ему так это ознакомить себе такое

    00:07:46 - 00:09:18

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

    00:08:34 - 00:10:12

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

    00:09:37 - 00:11:16

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

    00:10:30 - 00:12:08

  • вот смотри Вот мы с тобой сейчас допустим берем и Ну допустим начинаем создавать вот знаешь есть такой допустим Claw Забыл да у него есть Close метод это какой интерфейс вообще плане Вот это есть какой-то Вид То есть когда я говорю Close была там один абстрактный метод Вот у него есть да Да я вот к этому тебя вел А вот ты знаешь есть такая вот у класса object есть такой метод называется клоном был Да это значит можем спланировать объект с клонировать этот объект А ты можешь сделать так чтобы [музыка]

    00:11:36 - 00:13:35

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

    00:12:43 - 00:14:25

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

    00:13:35 - 00:15:18

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

    00:14:31 - 00:16:02

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

    00:15:19 - 00:16:57

  • мы можем это обработать точно также там есть определенные атрибуты которые мы можем обработать тоже использовать вот есть какая-то явная аналогия которая вот прям очень сильно согласен Окей значит что характерно для HTML когда мы в HTML там захотим создать не знаю там заголовок но нам нужны вот атрибуты нужно прописать через вольные скобочки нам нужно указать но Смотри Ладно по другому вопрос поставлю знаешь ты что-то про xsd схема валидации Нет не знаешь Окей Поехали дальше Я сейчас тебя попрошу чтобы разбавить

    00:16:10 - 00:17:53

  • наше с тобой разговор расшарить игру давай попробуем заранее подготовить уже здесь небольшой у нас проектик мне сейчас как бы там не нужны будут некие спринги и так далее Мне нужно будет просто классическая библиотекам просто ДК Я просто твой экран сейчас не вижу единственное шарик ну-ка еще раз попробуй вот сейчас вижу так сейчас только Шакала уйдут так сейчас тут новый проект Прям вообще ничего не видно А почему-то почему-то не видим экран не видно просто очень качество качество картинки очень слабое вот

    00:17:11 - 00:18:53

  • Я боюсь Это из-за разрешения А у тебя высокий уровень разрешения Да у меня большой разрешение чуть сделать меньше О ну уже уже как-то более-менее только Да только надо еще экран чуть влево как-то сместить потому что я вижу только маленькую часть слева Так давай попробуем да Перед вот так вот лучше стало или все также Но немного лучше но мы будем попытаемся проговорить больше тогда давай попробуем Давай попробуем смотри задача такая нам нужно создать класс машина с датой выпуска то есть класса машины будет только там

    00:19:00 - 00:20:39

  • да это будет колоскар И вот у него там будет на просто дата вот вопрос тебе Какая сейчас дата Там должна быть какую-то используешь дату я обычно использую localdate Ну наверное localdate потому что Date помечен dep recated Вот вот смотри localdate это у нас типа там creat будет значит и будет конструктор Вот на этот creationdate и Значит теперь что нам нужно Ну еще Гетеры нужны да Все отлично вот значит перед нами машина я что хочу от тебя чтобы ты создал три экземпляра классе Мы с разными датами

    00:20:16 - 00:22:00

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

    00:21:30 - 00:23:34

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

    00:22:53 - 00:24:24

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

    00:24:35 - 00:26:29

  • соответственно точнее поэтому по возрастанию а нам нужно получается взять первую убывания Давай давай какой-то тебе будет это подсказка ведь что такое компаратор comparing но он сравнивает по датам Ну ты вот прям вводи в комперинг нажми Control это интервью интерфейс делает компы он сравнивает у нас значение даты 1 Что принимает это function вот перед тобой сейчас на 461 65 строке кейксепшен это функция function это Что это Это какое Что это у нас такое Ну вот у тебя есть там точка и плай да то есть ты сейчас можешь проварить

    00:26:22 - 00:28:15

  • фанкшин вот просто нажми на Control Play [музыка] аргумент он воспринимается у нас принимает дженерик и отдает дженерик другого типа А вот Вернись обратно в comparing Вот campering у него же тут ну множество может быть сигнатур а посмотри еще там вот есть как бы может быть еще какая-то есть сигнатура Я не знаю может попробовать сейчас я это не очень правильно будет Я просто вспомнил что было такое вот такое сработало Что делать будем Ильяс проблема у нас с тобой Да у нас есть проблема Вот смотри

    00:28:00 - 00:29:48

  • давай рассуждать даже логически ты сейчас не знаешь Как реализовать сорт это в обратную сторону Как перевернуть Так ну затрудняюсь пока затрудняешься проблема у тебя Вот у тебя есть собеседование не будет длиться вечно времени на раз или нет можно компаратор создать самому Это первый вариант Это у тебя будет скорее всего там какие-то проблемы а вот у нас есть вот он тебе сейчас проведет Ну перевернет это все Да ну то есть произойдет сортировка от 0 до последнего до там 1 2 3 элемент они там как-то

    00:29:33 - 00:30:57

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

    00:30:16 - 00:31:46

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

    00:31:04 - 00:32:41

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

    00:32:36 - 00:34:19

  • уже хорошо а теперь что если я тебе скажу что в сорт можно передать еще функциональный интерфейс то есть вместо компаратор comparing поставить скобочки А запятая B и писать какое-то функциональное решение Так и что-то нужно сделать такое чтобы перевернуть Ну а тогда тебе уже не нужно будет доставать там сорт от Get Cars там тем достаточно будет нулевой элемент вытащить потрясающе Значит уже вот уже как-то начали красиво решать а теперь смотри у тебя было там решение такое он тебе предлагал сделать Макс Да

    00:33:47 - 00:35:27

  • вот он тебя там Стрим а что принимал он себя какой-то компаратор тоже он возьмет максимальное значение которое будет отсортировано получается так получается что так а нужно ли нам тогда метод сорт Нет не нужен Ну давай делай красиво только те надо будет естественно компаратор скопировать интерфейс Ну да Так что нам вернет [музыка] теперь я хочу вот ну посмотреть потому что у меня то вы видите сейчас Car optional А мне некоробщина нужен Get И в чем проблема будет если там а если там ничего не будет то он

    00:35:11 - 00:36:56

  • точнее это не очень хорошо наверное правда какой у нас решение есть еще но мы по сути сейчас вызов.get всю идею общенала убиваем Ну да Не ну он тебя уже вернул у тебя будет община внутри optional Тебе оно не надо Ильяс Для чего Нам нужен класс optional давай так чтобы предотвратить этот да когда ты предотвращаешь nopoint rexception ты когда вызываешь гет Ты что происходит Ты же всегда можешь зайти в метод и посмотреть что происходит этот метод он возвращает его он превращает в объект если мы используем

    00:36:42 - 00:38:16

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

    00:37:57 - 00:39:36

  • Ну в итоге Мне нужно сейчас вывести на экран машину я хочу машину увидеть не очень хорошая реализация почему она не очень хорошая Мне кажется что если его не будет там то мы что-то получим в принципе Ну давай возьмем запустим программу посмотрим [музыка] результат то мы получили Теперь мы можем удалить 15 16 там или 16 17 18 строки вид что тоже работает что нас не падает программа с ошибкой Ну вот нас собственно это и нам это и требовалось вот Ну надеюсь понял где есть пробелы чуть-чуть конечно Конечно вот Поехали

    00:39:29 - 00:41:08

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

    00:41:12 - 00:42:56

  • Это ты говоришь про строки но она выведет нам все строки и все Столбцы А если бы я бы указал бы там не знаю из-подня там есть сущность машина Да у нее там есть мани есть еще имя я бы написал Селект имя то он бы чтобы сделал мог бы вывел только имя все строки Ну если мы просим его вывести Вот что он выведет имена имена из все все имена которые там есть получается Да окей Как мне сделать так чтобы меня там выводились только имена которые были бы точнее все записи у которых имя БМВ а чувствительны к регистру или нет нет

    00:42:19 - 00:44:07

  • сейчас про регистр не говорим Ну типа имеет название BMW или прям строго равно BMW просто равно BMW Select нам только селектор Макар равняется BMW дальше Вот я бы потом захотел бы там у меня есть name Колонки есть Мани деньги да то есть у меня у каждой машины есть там цена Я бы захотел бы сделать отсортировать по деньгам да то есть допустим от самой дорогой машины к самой дешевый предыдущему предыдущему запросу мы добавляем ордер Buy Money скажи пожалуйста вот Я создаю справочник машин и я бы захотел бы сделать так что вот у

    00:43:20 - 00:45:22

  • меня есть там таблица айдишник машины и марка машину BMW Audi там Mercedes и так далее а так как мы с тобой делаем справочник то логично что у нас не может быть два БМВ это справочник марок машин Да как мне сделать так чтобы этот столбец Да вот марка машины там уникальное значение были бы дистинкт это при выборе А я вот тебе говорю про вставку То есть я хочу чтобы у меня внутри Таблицы я не мог бы вставить значение второе повторяющиеся создать составной ключ для этой таблицы а нет подожди нет то есть ты имеешь в виду нужно составить

    00:44:29 - 00:46:17

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

    00:45:31 - 00:47:08

  • хочешь дальше Вот я создал папочку сделал и Нет я хочу сделать свой первый КАМиТ как бы ты бы это сделал Я хочу все все файлы которые там есть закомить у нас уже есть куда уже есть если мы хотим сделать все файлы заметить точка все файлы которые были изменены После этого я бы сделал и сообщение для этого комита после этого еще пока никакого подключения нет То есть ты вот сделал гитанит У тебя же нет сейчас никаких связей с удалённым репозиторию вот я тебя хотел бы спросить а как можно сделать связь с удаленным репозиторием

    00:46:28 - 00:48:05

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

    00:47:36 - 00:49:13

  • компьютер тебе говорят вот у меня есть репозиторий есть ли у него удалённая связь или нет Как можно узнать Есть ли какая-то связь или нет Слушай сейчас попробую вспомнить может быть конфиги может где-то есть информация конфиг это про твои больше Там криденшел и так далее я намекаю про гитремоут Знаешь ли ты что-то OK хорошо дальше Поехали У тебя есть связи Ну вот все у тебя связан как это проект с удаленным ты хочешь сначала скачать изменения Как сделать ты начал качать изменения и получилось так что у тебя

    00:48:28 - 00:50:16

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

    00:49:32 - 00:51:21

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

    00:50:45 - 00:52:31

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

    00:51:43 - 00:53:11

  • самом деле тут на этом все заканчивается Вот Окей давай так вот смотри ты взял и сделал какие-то изменения написал там глава 3 глава 3 написал футбол отправил удаленный репозиторий и вдруг ты понимаешь блин глава 3 у меня ее не будет ни она вообще не нужна Как можно сделать чтобы уже на удаленном репозитории ты бы мог отменить эти изменения которые ты вот в третьем комитом вот у тебя 3 Комет это глава 3 на удаленном отменить коммит Ну как-то отменить изменения Ну я уже запушил это Ну тут даже не мёрзший меджид из

    00:52:31 - 00:54:16

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

    00:53:31 - 00:55:17

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

    00:54:27 - 00:56:04

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

    00:55:28 - 00:57:08

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

    00:56:22 - 00:57:47

  • в глубь там сервисы и так далее Вот смотри вот у меня есть три класса человек машина и класс водка вот если Ну вот у нас допустим человек у неё он обладает может обладать водкой может обладать Ну или там допустим листом водах Да и может обладать одной машиной и у человека есть метод а дам go home где он берет и садится в машину То есть нажимать там как там внутри этого метода go home есть Car Start потом Cars вот как с точки зрения спринга чтобы ты сделал чтобы я сделал Но по сути у нас каждый если

    00:57:11 - 00:59:02

  • они будут являться бинами вопрос чтобы водка является Бином или нет слушай блин Ну да наверное А вот скажи вот dependency injection вот мы говорим dependency injection Это что получается подожди вот нет водка не будет Вот смотри Вот допустим вот мы делаем реалист Да с тобой дело не реалисты вставляем туда вставляем туда данные Да вот мы только что делали это с машинами делать машины и делаем там карлист это до машина Мы в данном случае проводили depends injection нет А в чем отличие тогда д- женщин вот в чем особенность

    00:58:20 - 01:00:03

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

    00:59:21 - 01:00:46

  • метода да Да вот OK вот смотри вот у нас есть такие там такая может быть ситуация Я создаю класс карп да и создаю класс car2 и делаю в классе Car 2 injection на Car А в классе Car injection Car 2 Ну это у меня бинами является чем закольцованность появится появится закольцованность что делать данном случае Хороший вопрос я сталкивался с таким единожды когда два сервиса друг на друга связал вот но там получилось избежать это можно было просто в один из сервисов внедрить репозиторий а вот с точки зрения двух классов

    01:00:12 - 01:02:02

  • затрудняет Почитай про аннотацию Lazy вот а ты имеешь ввиду это ленивая инициализация Когда будет объект один только после обращения к нему воспроизводится вот OK смотри в принципе в принципе Я бы могу тебе еще поспрашивать допустим что такое Spring Data такой короткий тебе вопрос задам Для чего нужен модуль но спринт дата gpa например ну используется для работы Java persystems забыл как расшифровывается для работы с базами данных мы можем использовать какие-либо репозитории по чтобы облегчить нам работу с базами

    01:01:19 - 01:03:07

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

    01:02:20 - 01:03:52

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

    01:03:13 - 01:04:59

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

    01:04:11 - 01:05:46

  • собеседование час перенервничал вот Ну в целом принципе можешь лично тогда Спасибо всем тем кто смотрел это собеседование Если у вас есть желание по собеседоваться со мной Пишите в комментарии Спасибо

    01:05:00 - 01:05:42

Менторы

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

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

    Middle .Net Developer

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

    Senior Product Manager

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

    Middle Python Developer

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

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

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

    Backend Software Engineer (PHP)

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

    Senior .NET/C# developer

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

    Middle DevOps Engineer | Tbilisi, Georgia

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

    Middle C# .NET

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

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

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

    Middle python developer

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