Тестовое собеседование Java разработчика #19 - Михаил Гончаренко

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

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

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

    00:00:00 - 00:01:34

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

    00:00:47 - 00:02:32

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

    00:01:39 - 00:03:09

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

    00:02:24 - 00:04:05

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

    00:03:19 - 00:04:47

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

    00:04:02 - 00:05:14

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

    00:04:38 - 00:06:02

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

    00:05:21 - 00:06:56

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

    00:06:08 - 00:07:47

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

    00:06:57 - 00:08:51

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

    00:07:55 - 00:09:23

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

    00:08:39 - 00:10:00

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

    00:09:18 - 00:10:42

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

    00:10:02 - 00:11:41

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

    00:10:53 - 00:12:32

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

    00:11:42 - 00:12:56

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

    00:12:21 - 00:14:11

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

    00:13:16 - 00:15:04

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

    00:14:08 - 00:16:06

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

    00:15:11 - 00:17:50

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

    00:16:44 - 00:18:33

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

    00:17:44 - 00:19:44

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

    00:18:49 - 00:20:22

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

    00:19:45 - 00:21:48

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

    00:21:00 - 00:22:31

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

    00:21:47 - 00:25:17

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

    00:23:56 - 00:26:10

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

    00:25:14 - 00:27:24

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

    00:26:34 - 00:28:09

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

    00:27:24 - 00:28:42

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

    00:28:07 - 00:29:49

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

    00:29:00 - 00:30:36

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

    00:30:00 - 00:32:14

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

    00:31:08 - 00:32:28

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

    00:31:48 - 00:33:38

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

    00:32:47 - 00:34:14

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

    00:33:31 - 00:35:04

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

    00:34:23 - 00:36:01

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

    00:35:13 - 00:36:37

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

    00:35:55 - 00:37:37

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

    00:36:44 - 00:38:40

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

    00:37:44 - 00:39:23

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

    00:38:42 - 00:40:29

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

    00:39:36 - 00:41:29

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

    00:40:32 - 00:42:24

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

    00:41:27 - 00:43:01

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

    00:42:15 - 00:43:42

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

    00:42:57 - 00:44:23

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

    00:43:44 - 00:45:16

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

    00:44:34 - 00:45:58

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

    00:45:15 - 00:48:00

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

    00:46:40 - 00:48:33

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

    00:47:39 - 00:49:11

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

    00:48:26 - 00:50:05

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

    00:49:15 - 00:50:53

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

    00:50:05 - 00:50:55

Менторы

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

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

    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