Алтынбаев Артур python разработчик собеседование

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

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

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

    00:00:02 - 00:01:45

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

    00:01:03 - 00:02:38

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

    00:01:55 - 00:03:13

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

    00:02:34 - 00:03:55

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

    00:03:24 - 00:04:45

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

    00:04:17 - 00:05:40

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

    00:05:21 - 00:06:46

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

    00:06:44 - 00:08:14

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

    00:07:51 - 00:09:22

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

    00:09:14 - 00:10:42

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

    00:10:05 - 00:11:31

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

    00:10:55 - 00:12:22

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

    00:12:00 - 00:13:33

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

    00:12:49 - 00:14:34

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

    00:13:51 - 00:15:21

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

    00:14:39 - 00:16:12

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

    00:15:34 - 00:17:07

  • сами вроде бы все Давайте только возможно Return с 1 уже прописывать объект очереди как бы ты тестировал создадим объект потом попробуем добавить объект проверить что на данный момент пустая И после этого забирать объекты по очереди так вроде написал команда OK [музыка] команды то ты написал как мы узнаем о результатах выполнения можно запустить код можно как-нибудь ассертами проверить запустить код давай ну как он более-менее понятный глазами все ясно Давай смотреть так так тут пустая Тут ничего

    00:17:40 - 00:19:42

  • тут уже не пустая сперва вернулась 1 потому что мы первую засунули 25 строки еще один принцип Над какой 25 ошибка Тут нужно исключение обработать так врачи обработал Добавь пожалуйста между 24 25 тебе мешает окошко да Добавь между Даже так 24 25 за пенсию слово Enter и в 30 добавь еще один Get Да я понял то есть лучше возвращать NAN А тут например возвращать что объект добавлен или что-нибудь или вообще ничего не возвращать Так ты ничего не возвращаешь А да я просто принтую То есть тут может набрать например

    00:19:42 - 00:21:22

  • папентах после [музыка] То есть можно вообще ничего не возвращать также Я предлагаю тебе об этом подумать Ну либо например эти значения на просто чтобы нельзя было добавлять в очередь такое возможно Давайте тогда это и реализуемо Сейчас вроде нормально все хорошо Давай мы сделаем с тобой очередь очень не клиента ориентированный что-то и это будет означать что всего лишь мы можем служить за день 10 человек или 20 или 30 добавить лимит на количество объектов в очереди Например можно объявить тут лимит чтобы

    00:21:36 - 00:23:29

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

    00:23:31 - 00:25:15

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

    00:25:18 - 00:27:08

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

    00:27:29 - 00:28:45

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

    00:28:20 - 00:30:11

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

    00:29:29 - 00:31:01

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

    00:30:29 - 00:32:15

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

    00:33:27 - 00:35:21

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

    00:34:32 - 00:36:08

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

    00:35:27 - 00:37:06

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

    00:36:26 - 00:38:09

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

    00:37:32 - 00:38:53

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

    00:38:14 - 00:39:34

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

    00:38:59 - 00:40:33

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

    00:40:04 - 00:41:36

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

    00:41:04 - 00:42:50

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

    00:42:04 - 00:43:49

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

    00:43:04 - 00:44:20

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

    00:43:42 - 00:45:09

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

    00:44:27 - 00:46:05

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

    00:45:29 - 00:47:08

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

    00:46:30 - 00:48:03

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

    00:47:18 - 00:48:36

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

    00:47:58 - 00:49:28

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

    00:48:44 - 00:50:12

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

    00:49:27 - 00:51:05

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

    00:50:15 - 00:51:51

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

    00:51:11 - 00:52:29

  • он не придумал Как сделать приятно мне так же как и но ничего даже хорошо что пока пока

    00:51:56 - 00:52:14

Менторы

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

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

    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