Собеседование junior python разработчик Евгений Путрин | Галина Трошкина и Василий Туртугешев

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

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

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

    00:00:00 - 00:01:31

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

    00:00:46 - 00:02:38

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

    00:01:48 - 00:03:27

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

    00:02:40 - 00:04:17

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

    00:03:30 - 00:04:45

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

    00:04:08 - 00:05:23

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

    00:04:45 - 00:06:32

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

    00:05:39 - 00:07:33

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

    00:06:37 - 00:08:35

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

    00:07:39 - 00:09:21

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

    00:08:31 - 00:09:56

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

    00:09:13 - 00:10:55

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

    00:10:11 - 00:11:58

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

    00:11:07 - 00:12:30

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

    00:11:52 - 00:13:46

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

    00:12:58 - 00:14:30

  • наверное вот это нижняя бук вот это верхнее окей но давайте давай аске lover gps а кстати как расшифровывается вот и доски не буду выдумывать не помню ну примерно ски skinsky раскин ну наверное алфавит английский что-то такое of the bad американский стандартный чего-то там утра не помню кстати ну да окей главное что он есть и мы его можем сделать скажу так что возможно я не правильно или как ты не четко выразился хотелось бы чтобы ключи были от 1 до 20 потому что но любой буквы английского алфавита а

    00:13:52 - 00:15:31

  • существует ки так теперь мне надо понять в каком представление здесь у нас тоски если он против я быстренько за плохой дебаг так а ну то есть она у меня как строка предоставляется так и соответственно x можно так и сделать string clover кейс ну и можно проверить как у нас сгенерировался ну вроде получилось да очень похоже на то что хотелось хорошо погоди 12 о по так стоп нет так то не так так он почему то у меня не пробежался а окей ну давайте может в лист попробуем запихнуть тебе нужно перед for pigs сделать также

    00:14:45 - 00:17:05

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

    00:16:07 - 00:17:53

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

    00:18:07 - 00:20:16

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

    00:19:25 - 00:21:12

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

    00:20:30 - 00:22:14

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

    00:21:39 - 00:23:44

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

    00:23:20 - 00:25:32

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

    00:25:15 - 00:27:23

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

    00:26:31 - 00:27:57

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

    00:27:20 - 00:28:59

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

    00:28:29 - 00:31:06

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

    00:31:06 - 00:33:06

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

    00:32:16 - 00:34:24

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

    00:33:30 - 00:35:14

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

    00:34:40 - 00:36:19

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

    00:35:48 - 00:37:50

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

    00:37:16 - 00:38:51

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

    00:38:06 - 00:40:14

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

    00:39:25 - 00:41:03

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

    00:40:29 - 00:42:09

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

    00:41:37 - 00:43:17

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

    00:42:57 - 00:44:57

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

    00:44:31 - 00:46:25

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

    00:45:52 - 00:47:22

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

    00:46:45 - 00:48:26

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

    00:47:49 - 00:49:18

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

    00:48:37 - 00:49:55

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

    00:49:20 - 00:50:56

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

    00:50:12 - 00:52:14

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

    00:51:36 - 00:53:02

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

    00:52:19 - 00:54:07

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

    00:53:11 - 00:55:10

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

    00:54:41 - 00:56:11

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

    00:55:26 - 00:57:09

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

    00:56:20 - 00:58:02

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

    00:57:44 - 00:59:29

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

    00:58:36 - 01:00:05

  • если мы хотим выбрать branch учимся от этой ветке создаем новую ветку с какой-то своей там фичи богам неважно мы делаем какое-то изменение к метим и после этого мы делаем pull request соответственно с этот пузырь квест тем review epam либо оправиться либо не оправится если он оправиться мы после этого можем сделать мир с devil там ладно как бы да давай тогда мы сейчас скачаем эту штуку потому что там есть подготовленная база данных и есть обвязка которая бы с этой sql lite базы в общем то может работать

    00:59:20 - 01:00:57

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

    01:00:13 - 01:02:22

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

    01:02:49 - 01:04:32

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

    01:03:41 - 01:05:12

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

    01:04:44 - 01:06:13

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

    01:05:39 - 01:07:16

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

    01:06:33 - 01:08:20

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

    01:07:33 - 01:09:25

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

    01:08:36 - 01:10:29

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

    01:09:48 - 01:11:44

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

    01:11:16 - 01:12:56

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

    01:12:21 - 01:14:01

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

    01:13:22 - 01:15:11

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

    01:14:17 - 01:15:50

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

    01:15:08 - 01:17:09

  • перепутала тонн верно [музыка] то он наверное наверное как-то так должно работать давайте попробуем ярлык синтаксиса слитно пишется раздельно так есть вероятность что это на 2 from делать все правильно сделали love from каталог кайтом там а [музыка] так chrome каталог а это mercy one left join вот эту штуку гордость да я понял и from наверное можно сразу на случай строчка перенести а духовку до 300 вдоль вот эту строчку мы до переносим и соответственно дальше продолжаем что по какому признаку мы их объединяем

    01:16:19 - 01:18:14

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

    01:17:22 - 01:19:32

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

    01:18:35 - 01:20:19

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

    01:19:57 - 01:21:43

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

    01:21:08 - 01:23:07

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

    01:22:26 - 01:24:19

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

    01:24:01 - 01:25:41

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

    01:24:59 - 01:26:32

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

    01:25:57 - 01:27:34

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

    01:26:52 - 01:28:27

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

    01:27:50 - 01:29:40

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

    01:29:01 - 01:30:46

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

    01:30:12 - 01:31:46

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

    01:30:59 - 01:32:43

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

    01:31:52 - 01:33:38

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

    01:32:48 - 01:34:39

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

    01:33:52 - 01:35:29

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

    01:34:44 - 01:36:20

  • в вовне edit не будет у вас ну и не только get не будет ругаться еще злодейский злодей не придет и не узнает твой маленький секрет вот а в том числе злодейский злодей у нужен этот секрет для того чтобы зефир с ef talkin' генерировать насколько я помню как то этот секретки связан еще с такой штукой что это такое межсайтовый запросы подделка но это talked который должен чтобы подтверждать ну уникальность сайта и пор не могу я дополнить давай this app of talking он всегда используется во всех формах и

    01:35:30 - 01:37:22

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

    01:36:31 - 01:38:01

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

    01:37:15 - 01:38:42

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

    01:37:59 - 01:40:09

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

    01:39:10 - 01:40:39

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

    01:39:55 - 01:41:38

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

    01:40:47 - 01:42:14

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

    01:41:32 - 01:43:08

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

    01:42:20 - 01:42:42