luchanos | Balabot IT LIVE | Собеседование Junior Python Backend Developer

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

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

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

    00:00:00 - 00:01:46

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

    00:00:54 - 00:02:12

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

    00:01:34 - 00:02:59

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

    00:02:15 - 00:03:41

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

    00:03:01 - 00:04:39

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

    00:03:50 - 00:05:50

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

    00:04:49 - 00:06:29

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

    00:05:56 - 00:07:49

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

    00:07:03 - 00:08:43

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

    00:08:03 - 00:10:09

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

    00:09:30 - 00:11:19

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

    00:10:44 - 00:12:12

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

    00:11:34 - 00:13:04

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

    00:12:47 - 00:14:24

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

    00:13:40 - 00:15:15

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

    00:14:52 - 00:16:34

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

    00:15:42 - 00:17:51

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

    00:17:05 - 00:18:53

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

    00:18:40 - 00:20:21

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

    00:19:36 - 00:21:41

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

    00:21:04 - 00:23:09

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

    00:24:05 - 00:25:38

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

    00:25:29 - 00:26:56

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

    00:26:21 - 00:28:23

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

    00:27:38 - 00:29:12

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

    00:29:03 - 00:30:27

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

    00:29:47 - 00:31:18

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

    00:31:45 - 00:33:55

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

    00:33:58 - 00:36:02

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

    00:35:42 - 00:37:45

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

    00:37:04 - 00:38:52

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

    00:38:11 - 00:39:50

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

    00:40:24 - 00:42:15

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

    00:41:37 - 00:43:18

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

    00:42:48 - 00:44:21

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

    00:44:23 - 00:46:18

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

    00:45:25 - 00:47:04

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

    00:46:18 - 00:48:11

  • будет полный by если я напишу следующую команду select звездочка from значит ты был а суббота сверлит значит фронт эйбл а значит лет join и делаем на [музыка] select from a dove join me on каллум а равно columb вопрос следующий сколько строк получится в результирующей выборки специально дома просто 2 фута значением заминок это смотри я я тебе расскажу историю из своей жизни когда я на работе на свой первый джойнер и ожидал что у меня будут будет одно количество строчек оказалось что там оно совершенно другое и как раз

    00:47:14 - 00:49:31

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

    00:49:11 - 00:50:43

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

    00:50:06 - 00:51:26

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

    00:50:53 - 00:52:22

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

    00:51:39 - 00:53:14

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

    00:52:26 - 00:54:01

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

    00:53:15 - 00:54:58

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

    00:54:19 - 00:55:36

  • будем я думаю вот чем по каким-то протоколом может быть по каким-то таким сетевым моментом задашь вопрос ну давай прошел что как так мы бы can deal горы - нам работаем с такой знаешь ли ты как давать rooms там мы открываем браузер мы вбиваем там google.com и нажимаем enter расскажи что дальше происходит [музыка] обычно происходит ну давай начнем с простого ты на жалко на реку поехали но наверное сочетала фиджет запрос через теперь вверх ногами на сервер чтобы узнать какой у нас и пи адрес стоит затем

    00:54:57 - 00:57:01

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

    00:56:22 - 00:58:52

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

    00:57:51 - 00:59:38

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

    00:59:02 - 01:00:43

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

    01:00:10 - 01:02:00

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

    01:01:07 - 01:02:47

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

    01:01:57 - 01:03:44

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

    01:02:54 - 01:04:30

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

    01:03:53 - 01:05:29

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

    01:04:52 - 01:06:20

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

    01:05:36 - 01:06:51

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

    01:06:14 - 01:07:56

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

    01:07:11 - 01:08:27

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

    01:07:47 - 01:09:23

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

    01:08:49 - 01:10:14

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

    01:09:43 - 01:11:29

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

    01:10:41 - 01:12:24

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

    01:11:42 - 01:13:28

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

    01:12:37 - 01:14:40

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

    01:13:47 - 01:15:27

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

    01:14:37 - 01:16:07

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

    01:15:22 - 01:16:41

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

    01:16:02 - 01:17:23

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

    01:16:41 - 01:18:02

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

    01:17:23 - 01:19:01

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

    01:18:11 - 01:19:37

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

    01:18:53 - 01:20:41

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

    01:19:51 - 01:21:27

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

    01:20:56 - 01:22:33

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

    01:21:43 - 01:23:09

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

    01:22:27 - 01:24:04

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

    01:23:17 - 01:25:13

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

    01:24:15 - 01:25:39

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

    01:24:57 - 01:26:49

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

    01:25:57 - 01:27:48

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

    01:26:55 - 01:28:25

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

    01:27:40 - 01:29:06

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

    01:28:24 - 01:29:54

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

    01:29:08 - 01:30:33

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

    01:29:52 - 01:31:37

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

    01:30:43 - 01:32:05

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

    01:31:29 - 01:33:23

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

    01:32:28 - 01:34:06

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

    01:33:26 - 01:35:23

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

    01:34:34 - 01:36:29

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

    01:35:33 - 01:37:15

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

    01:36:31 - 01:38:16

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

    01:37:33 - 01:39:12

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

    01:38:22 - 01:39:43

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

    01:39:02 - 01:39:42

Менторы

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

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

    Middle .Net Developer

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

    Senior Product Manager

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

    Middle Python Developer

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

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

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

    Backend Software Engineer (PHP)

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

    Senior .NET/C# developer

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

    Middle DevOps Engineer | Tbilisi, Georgia

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

    Middle C# .NET

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

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

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

    Middle python developer

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