🎧 Публичное собеседование #14: Python, API, Airflow, Async, DB, Net

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

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

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

    00:00:00 - 00:01:48

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

    00:01:04 - 00:02:38

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

    00:01:56 - 00:03:26

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

    00:02:42 - 00:04:15

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

    00:03:29 - 00:04:54

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

    00:04:14 - 00:05:45

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

    00:05:08 - 00:06:46

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

    00:06:16 - 00:07:58

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

    00:07:20 - 00:08:59

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

    00:08:12 - 00:10:04

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

    00:09:11 - 00:10:53

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

    00:10:20 - 00:11:53

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

    00:11:16 - 00:12:52

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

    00:12:21 - 00:13:49

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

    00:13:15 - 00:14:50

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

    00:14:08 - 00:16:03

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

    00:15:17 - 00:17:13

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

    00:16:38 - 00:18:23

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

    00:17:48 - 00:19:13

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

    00:18:35 - 00:20:01

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

    00:19:26 - 00:21:10

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

    00:20:25 - 00:22:08

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

    00:21:24 - 00:22:53

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

    00:22:21 - 00:24:08

  • то есть возможно ты какой-то срыв work использовал который скрывает от тебя сеть скрывать чтобы тебе не нужно было сокетами работать с kollection и мисаки того а оставьте все дела за меня просто объявить in plain [музыка] ну а структура приложения есть у нас какой то значит road west end поэт кроме пойнта где бизнес логика будет лежать прямо на infiniti или может быть есть какие-то другие слои и сервисы но смотрите у меня как было просто был набор каких-то роутеров которых лежали там для них определенные point

    00:23:28 - 00:25:09

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

    00:24:26 - 00:26:28

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

    00:25:46 - 00:27:40

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

    00:26:52 - 00:28:26

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

    00:27:44 - 00:29:05