Авдеев Сергей (С-Петербург) собеседование python junior. Из СМИ в бэкенд разработку.

  Рет қаралды 12,051

Андрей += Пронин

Андрей += Пронин

6 ай бұрын

t.me/KZbinPronin
Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
Поддержать канал: www.tinkoff.ru/rm/pronin.andr...
Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь
Виш лист
Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
• Изучаем Python с Марко...
Читаем и разбираем ее тут
Куплено (огромное спасибо зрителям)
Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
Видимо, дальше появтся еще нескромные желания. Но пока - так
Моя тележка andpronin -- стучите, если что.
Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
/ @pypronin
Я в других сетях
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #питон #программирование #Андрей_Пронин #собеседование #

Пікірлер: 90
@0Heal
@0Heal 6 ай бұрын
Видео подняло самооценку всем джунам
@AndyPronin
@AndyPronin 6 ай бұрын
надеюсь, еще и подкачало скилл)
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
главное чтобы тебе самооценку поднял этот коммент :)
@AlexFaley
@AlexFaley 6 ай бұрын
Шикарная задачка. Не знаю как проверяет знание программирования, но поведения человека от которого хотят странного проверяет великолепно) А парень молодец, видно что упорный.
@slizverg23
@slizverg23 6 ай бұрын
Ох, где-то на середине я уже потерял нить изначального задания:) Декораторы, рекурсия… Спасибо что до графов не дошли)))
@user-kp7uw6fj1d
@user-kp7uw6fj1d 6 ай бұрын
Это НЕ СОБЕСЕДОВАНИЕ, это экзамен. Не нужно путать собеседование И ЭКЗАМЕН. Впрочем для ИТ собеседование и экзамен это одно и тоже. В других сферах деятельности такой жести нет.
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
это ты росто на собеседованиях в консалтинге не был , судя по всему. В компаниях большой тройки.
@marat_shaydulin
@marat_shaydulin 6 ай бұрын
from functools import reduce def arg_sum(*args): if args: return reduce( lambda x, y: x + y, (arg for arg in args if type(arg) == type(args[0])) )
@gladatheus
@gladatheus 6 ай бұрын
Отличная задачка с декоратором, а главное в отличии от прямого решения через рекурсию можно решить обычным циклом в декораторе. И почему никто не использует reduce в таких штуках, вродеж удобно.
@Maine__Coon__1
@Maine__Coon__1 6 ай бұрын
В записи посмотрю , к сожалению работа иногда мешает просмотру ☺️
@nerdizay
@nerdizay 6 ай бұрын
Можно к вам на собес?) Хочу показать мастер-класс:D + Действительно junior и ищу работу
@idontknow_
@idontknow_ Ай бұрын
В чем смысл задачи, я не понял. Если есть что то кроме интов, флоатов конвертировать result в строку и уже прибавлять к ней str(i). Либо отсеять инты, и не инты и на выходе проверять результат и склеивать их.
@user-np3dj8xu2d
@user-np3dj8xu2d 6 ай бұрын
блин ну может он и не знает многого но под натаскать если будет крутой чел с которым приятно будет работать и иметь дело что не маловажно. + видно что он старательный джун - огонек в глазах есть. На мой взгляд способный парень желаю ему удачи!
@AndyPronin
@AndyPronin 6 ай бұрын
Думаю, оффер не заставит долго ждать
@alchi_alchi_
@alchi_alchi_ 6 ай бұрын
Декоратор ради декоратора? Continue и всё.
@mikeofs1304
@mikeofs1304 6 ай бұрын
Хорошее задание, и правильно поставленно - и понимание и опыт разработки реальной сразу виден. А то этот несчастный литкод скоро начнут наизустить учить как Библию, а понимания это все не прибавляет
@AndyPronin
@AndyPronin 6 ай бұрын
Да. Стараюсь не брать леткод
@roman6572
@roman6572 6 ай бұрын
Головодрочь с этими "универсальными" функциями в динамических языках. 🙂 Тайпхинты и mypy в помощь, поможет сделать нормально. Я c# девелопер 😃
@user-es7ho9me3w
@user-es7ho9me3w 6 ай бұрын
def sum_items(*args): data_type = str(type(args[0])) result = args[0] for item in args[1:]: if str(type(item)) == data_type: result += item return result
@roman88469
@roman88469 6 ай бұрын
А если бы в районе 24:00 испытуемый просто написал except: pass вместо рекурсии, отслеживания индексов и т.д. это было бы решением ?
@MrReape
@MrReape 6 ай бұрын
Если дать pass, то функция ничего не вернет. Что сломает не только саму функцию, но и того, кто ее вызывал. Сделал except: continue и не понял, зачем приплетали декораторы. Просто пропускаем сломанный элемент и доплюсовываем оставшиеся Можно и except: break (выходим из цикла и забываем, что после сломанного элемента было что-то еще), но по мне так это хуже вариант.
@MrReape
@MrReape 6 ай бұрын
def sum_things(*things: float | int | str | list): result = things[0] if len(things) > 0 else None for idx, thing in enumerate(things[1:]): try: result = result + thing except: print(f"index {idx+1} is broken!") continue return result print(sum_things(1,2,"12312",123))
@roman88469
@roman88469 6 ай бұрын
@@MrReape Нет, pass отработает точно так же, как и continue. Хотя continue лучше для читаемости. def sum_things(*args): if not args: return result = args[0] for x in args[1:]: try: result += x except: pass return result
@AlexFaley
@AlexFaley 6 ай бұрын
@@roman88469 А зачем там континтью. Цикл закончен, мы идем логично дальше. То есть лучше поставить pass
@aangryguyy
@aangryguyy 6 ай бұрын
Здравствуйте. Что нужно чтобы устроиться на работу Python разработчику-самоучке? У пока нет высшего образования, а Python я изучаю уже лет 5.
@AndyPronin
@AndyPronin 6 ай бұрын
Активно искать работу. И запастись терпением. Ваш кэп. Например, вот: kzbin.infonUhamqilnwg?si=BneBlARIAj_SN9y7
@Chel1k7
@Chel1k7 6 ай бұрын
Я начал изучать пайтон в декабре прошлого года, в среднем год, устроился на работу в октябре 2023. Так же самоучка без курсов и тоже нет вышки. Так что ты явно что-то делаешь не так
@black_grizzly
@black_grizzly 6 ай бұрын
@@Chel1k7 что учили то еще помимо языка ?
@Chel1k7
@Chel1k7 6 ай бұрын
@@black_grizzly основные фреймы - django, fastapi, парсингу уделил время (реквест, селениум), телеграм ботам (aiogram), неможко покрутил-повертел next.js и react чтобы понимать как происходит взаимодействие бэка с фронтом, но в них не углублялся (в ванильный JS тоже не углублялся)
@aangryguyy
@aangryguyy 6 ай бұрын
@@Chel1k7 ну да, наверное потому что я начал искать работу только сейчас?
@mikeofs1304
@mikeofs1304 6 ай бұрын
Досмотрел -боль страдания А можно б было def sum_iter(*args): return reduce(lambda sum, num: sum + num if type(num) in (int, float) else sum, args if args is not None else [], 0)
@AndyPronin
@AndyPronin 6 ай бұрын
А строчки сложит? ;)
@mikeofs1304
@mikeofs1304 6 ай бұрын
@@AndyPronin а этого не было в задание, в момент когда стало полагаться что входная последовательность не однородная)) но вообще понятно что в реальной надо через дженерик делать . Я просто нахожусь под дурным влиянием книжки маера ))
@PlagueisMKII
@PlagueisMKII 5 ай бұрын
Решение наркомании (если я правильно понял условие): def sum_items(*args): if not args: return _len = len(args) res = args[0] while _len: try: for item in args[1:_len]: res += item break except TypeError: res = args[0] _len -= 1 return res
@igorz5804
@igorz5804 4 ай бұрын
Это выходит как exception-oriented programming. Не надо так делать. Это скорее антипаттерн. Проверьте type(last) и type(current) и если равны - то складывайте.
@bunasha
@bunasha 6 ай бұрын
в чем проблема 2-ух ретернов в разных ветках условия функции?
@AndyPronin
@AndyPronin 6 ай бұрын
условие можно упростить
@user-xi9hi4tf4j
@user-xi9hi4tf4j 6 ай бұрын
можно было просто вернуть return result or None , не проверяя is None
@FunInstinct
@FunInstinct 6 ай бұрын
имелось в виду, что нужно было if not items: return None .
@artemrokhmakov6373
@artemrokhmakov6373 6 ай бұрын
я думаю что все таки, быть репортером ему наверное куда лучше,даже не знаю какой он репортер…Пусть развиваться
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
давай на тебя посмотрим, может?)
@ivanihnatsenkau8984
@ivanihnatsenkau8984 6 ай бұрын
Расскажите пожалуйста, как к вам можно попасть на собеседование
@AndyPronin
@AndyPronin 6 ай бұрын
Выпускникам практикума через программу трудоустройства. Подписчикам - через розыгрыш в телеграм моем
@evgeniy__k
@evgeniy__k 6 ай бұрын
А на этом канале кого нибудь взяли на работу? Скиньте ссылку на интервью.
@AndyPronin
@AndyPronin 6 ай бұрын
kzbin.info/www/bejne/bnbGkmmOrtF9gKs из последнего - вот Гриша. Сейчас обживается активно. К себе его взял. Где то и бекендеры были. И QA
@evgeniy__k
@evgeniy__k 6 ай бұрын
Да, этот собес отличался от просмотренных.
@coinframe
@coinframe 6 ай бұрын
Видео не досмотрел еще. Работаю с php питон не знаю. Но всё происходящее мне понятно. Тут еще задача не ясна. Что мы складываем, а что удаляем или же складываем и то и другое. Проверяем аргумент является ли числом, если истина складываем и наоборот. Ну а если и то и другое одновременно нужно сложить ну это уже ерундистика полнейшая.
@dannycyberwalker
@dannycyberwalker 6 ай бұрын
Надо больше мидлов!
@PlagueisMKII
@PlagueisMKII 5 ай бұрын
from functools import reduce def sum_items(*args): if args and hasattr(args[0], '__add__') and all(type(item) is type(args[0]) for item in args): return reduce(lambda x, y: x + y, args) return "Все аргументы должны быть одного типа и поддерживать операцию сложения" if args else None
@7IdE
@7IdE 6 ай бұрын
Ну, для человека с ярлыком "СМИ" у него просто нулевые софты, как по мне: самопрезентация вообще на нуле, по проектам вообще ничего не рассказал, даже свою роль в проекте не выразил. Ибо после его рассказа о себе, как о разработчике и о своих проектах - у меня вообще не сформировалась никакая картинка о нем: вроде бы что-то говорил, но чем он занимался? Зачем? Почему? Ну, тут я могу и ошибаться - софты явно не мое. По хардам: 1. Когда Андрей сказал "если передадим строчку - скорее всего не сработает". Он подтвердил: "Да, не сработает." А откуда такая уверенность в том, что не сработает? Ведь строки прекрасно складываются - так почему нет? Весьма похоже на подтверждение просто "чтобы не упасть в грязь лицом". 2. Уже просто классика жанра: ставить тайп-хинты чисто ради того, чтобы показать, что ты где-то когда-то это слышал / видел, при этом не может расставить банальные хинты... 3. Проверка items == None, когда получает на входе запакованный кортеж - это прям печаль. И что еще печальнее - это дальнейшее исправлнение на "is None". Опять же, вместо того, чтобы подумать, начинает вспоминать станадартные вопросы / ответы с собесов. 4. "Питонячий код, который из декоратора обратится к переменным в функции" - вот тут сразу же вопрос про знание и понимание областей видимости. 5. Он же вообще даже не пытается уточнить, что от него требуется по задаче. Тут за 2-3 вопроса можно было бы заставить заказчика внести ясность в задачу. А он даже 1 не задал. 6. В декораторах совсем плавает: вынести логику в декоратор, задекорировать функцию и при этом оставить всю старую логику в этой же функции - это мощно. 7. Нет понимания своего же собственного кода. 8. len(items) - 1 - тут стоило бы сразу задать вопрос на тему того, чем его не устроил последний элемент. В целом, крайне неоднозначный собес: вроде бы что-то знает, что-то может, но это все такая каша - что прям страшно смотреть. Есть ряд моментов, которые бы я назвал прям критичными (выше написал), да и в целом с подкапотней не особо дружит. Хотя первая реализация через рекурсию была весьма неплохая: достаточно резво он применил рекурсию. И сделал это достаточно корректно. Пофиксить багу с range() и работало бы в соответствии с ТЗ. Хотя и ТЗ это не было уточнено. Я бы сказал: нужно структурировать все, что есть в голове, поизучать подкапотню и повторить собес. Я бы даже посмотрел на итог. P.S. Мне кажется, что фраза "если бы ты претендовал на мидла - нет, для джуна - ок" неоправдано поднимает самооценку. Слишком много каши, чтобы принимать такой код, ИМХО. P.P.S. "ПЕП8 ты сознательно не нарушаешь и получается работать в этом стиле" - он написал штуку вида args[i+1:] - без пробелов!!111!! :D
@PlagueisMKII
@PlagueisMKII 5 ай бұрын
Только зачем там рекурсия, если можно обойтись обычным циклом - не совсем понятно.
@frey4404
@frey4404 5 ай бұрын
Ну ты и токсик, просто ужас
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
Как же душно... Такую ты простыню накатал просто чтобы человека размазать, и вот не лень было? "вроде бы что-то знает, что-то может, но это все такая каша - что прям страшно смотреть." - это и есть джун. Все с такого начинают.
@7IdE
@7IdE 5 ай бұрын
​@@user-jh3xl2ij3r, нет, это не джун, это стажер и меньше. И любые высказывания вида "да все там были", "да ничего - прорвешься", "да все норм - есть и хуже" - они лишь вводят в заблуждение, не давая человеку понять, что он делает что-то не так. Простыня, которую я накатал выше, предназначена лишь для того, чтобы человек сделал выводы по всему тому, что я написал: и если он эти выводы сделает, то он станет вполне себе джуном. А если бы я хотел его "размазать", то я бы даже близко не пытался не пытался пояснять и аргументировать, а просто бы написал "в утиль" - и это куда больше бы подходило под термин "размазать". Ну и самое главное: вон там выше есть коммент, в котором говорится, что, мол, такой перфоманс поднимает самооценку всем джунам - и вот таким комментом и таким кол-вом лайков под ним явно можно очень серьезно опустить самооценку человеку. Но вы оба, почему-то, решили отписаться человеку, который пытается в развернутую критику. Сказочные создания.
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
@@7IdE под тем комментом нет смысла даже что то писать. Слишком жирно. У тебя хотя бы не троллинга ради было написан комментарий, поэтому и захотелось подискутировать. Ты слишком груб с человеком, который только делает первые шаги. Если мы не будем выращивать джунов, рынок будет в еще большей заднице. Новым миддлам будет неоткуда браться. Всем будет только хуже по итогу. Да и просто вспомни себя в начале, сомневаюсь что ты сразу начал писать максимально эффективный чистый код.
@user-zl5sp9yh1n
@user-zl5sp9yh1n 6 ай бұрын
Чет нулевое собеседование. Ни о чем. Красивый рассказ про проекты и всякое, но уровень.
@user-jh3xl2ij3r
@user-jh3xl2ij3r 5 ай бұрын
чет не о чем коммент.
@scatr1x
@scatr1x 6 ай бұрын
Здрасьте
@Chel1k7
@Chel1k7 6 ай бұрын
Салют
@AndyPronin
@AndyPronin 6 ай бұрын
привет
@slizverg23
@slizverg23 6 ай бұрын
Забор покрасьте! (Сорян, услышал это выражение у ребёнка в детском саду и захотелось применить)
@galandec2000
@galandec2000 6 ай бұрын
в python типы должны проверяться до того как начнется их обработка и исключение! не должно быть исключения, если тип не тот. это суть таких яп. если у вас передался не тот тип и прилетело исключение. это говнокод.. поэтому типы прописывают не везде, как к примеру TypeScript а только где они получаются и модифицируются. сама функция которая получает условно строку, должна работать хорошо в любой ситуации. если строка не прилетела а прилетела цифра, то это проблемы не функции которой она пришла а того где оно приходит. поэтому правильно проверка делается до выполнения, в месте получения данных. надеюсь понятно, ибо чет сам чуть понял что написал.😂 в типизированных яп, оно по другому. а в слабо типизированных проверки проходят в самом начале, именно где пришло, а не в середине кода или конце.
@mikeofs1304
@mikeofs1304 6 ай бұрын
Это все кстати, и много, что еще, я говорю людям считающий Пихон простым, и намного более плохое - подходящим для начала обучения программированию "нулевых" людей, особенно ООП.
@coinframe
@coinframe 6 ай бұрын
Я вообще проблем в задаче не вижу. Пусть закидают камнями, php это не язык программирования итд... Но плёвое дело для него. И полностью согласен, в чём проблема проверить аргумент на инт и отсеять строки и наоборот. Ну а если нужно одно и второе разом складывать - то это бредятина и в жизни такое не встретится в принципе.
@SMTDN
@SMTDN 5 ай бұрын
С каких пор питон стал слабо типизированным языком?
@albukerke3322
@albukerke3322 6 ай бұрын
Странное, зачем давать рандомные задачи которые имеют такую странную логику? Естественно кто шарит должен был сам уточнять что задача имеет недостаточно информации: 1)нужно ли суммировать один из типов, если да то какой? 2)или суммировать все элементы по типам, хранить их и выводить.. но выводить что? Сумму определенного типа или каждого типа данных. 3)или суммировать тот тип которого больше в списке.. 4)или суммировать первый попавшийся тип данных, а остальные просто пропускать. Это все в корне меняет способ решения. Но думаю можно было изначально логику вопроса построить получше, либо дать человеческую подсказку. Видно конечно что парень слабовато пока знает декораторы, мало практики наверное. Но задача конечно.. проверяет скорее на навык вежливого уточнения что за дичь просят разработчика сделать))
@albukerke3322
@albukerke3322 6 ай бұрын
Добавлю что очень классный скил у парня - говорить и рассуждать вслух, если бы еще вопросы задавать попутно собеседующему то будет супер.
@mikeofs1304
@mikeofs1304 6 ай бұрын
"Странное, зачем давать рандомные задачи которые имеют такую странную логику? Естественно кто шарит должен был сам уточнять что задача имеет недостаточно информации: " Это жизнь. В реальност изадача будет поставленно хреново
@7IdE
@7IdE 6 ай бұрын
Несмотря на то, что я не согласен с корректностью такой постановки, но...от собеседуемого не прозвучало вообще никаких вопросов с целью уточнения того, что от него требуется. Банально за 2-3 уточняющих вопросов и парочку примеров с вопрос "что должно выводиться в таком случае" можно будет понять, что хочет заказчик. А в итоге заказчик впаривает какую-то дичь, а разработчик даже не пытается "увидеть решение задачи глазами заказчика". Так что, в данном случае, камень в огород собеседуемого.
@nerdizay
@nerdizay 6 ай бұрын
Господи как же доооолго.. и разговоры не по теме.. пробует то, что не знает.. Зачееем!? АААрРАРРРРаа
@galandec2000
@galandec2000 6 ай бұрын
renge(len(items) - 1) - это лютый говнокод в python! это прям очень грубая ошибка. никогда так не делайте!!! это покажет то что вы вообще не знаете python а пишите на каком-то js синтаксисом python.. прикол в том что так много кто пишет.. и это реально жесть.. вы замедляете код минимум в двое! достаточно renge(items) и он нормально отработает. а так вы постоянно повторяете лишнее вычисление.😆
@user-xi9hi4tf4j
@user-xi9hi4tf4j 6 ай бұрын
ну если Items =последовательность , то не получится rAnge(items), только если items = int, поэтому если нужно обращаться через индексы к items, то только так rAnge(len(items) - 1), ну или через enumerate()
@mikeofs1304
@mikeofs1304 6 ай бұрын
"А вы точно -продюссер- паграммизд ... " Уверены прям в этом страшном " _а так вы постоянно повторяете лишнее вычисление_" ?
@7IdE
@7IdE 6 ай бұрын
Я искренне не понимаю таких людей. И "лютый говнокод", и "грубая ошибка", и "не знаете Питон" - я прям закликбейтился и подумал, что дальше будет что-то интересное. А дальше идет range(items) - которая будет падать на всех типах, кроме интов - и замедление кода в 2 раза, и повторное вычисление на каждой итерации... Ты хоть когда-нибудь пытался запускать питоновский код с range(items)? На основании чего ты взял, что вычисления происходят на каждой итерации, а не 1 раз? (это при условии, что вычисление len() вообще происходит, а не хранится изначально в атрибуте) Откуда ты взял "замедление х2 минимум"? И это я еще промолчу про то, что range пишется через "a". Почитай Лутца, что ле.
@FriskesTV
@FriskesTV 6 ай бұрын
Абобус, вычисления будет производится циклично только если ты укажешь их в условии цикла while
@justman073
@justman073 6 ай бұрын
range-объект загружает в себя последовательность на основе трёх аргументов: старт, конец, шаг (обязательно целочисленных). Делает он это только один раз и при вызове выдаёт значения последовательности по принципу генератора. Дорогой "знаток" python, прочитайте хотя бы теорию
@ivormacky5078
@ivormacky5078 6 ай бұрын
Вы определитесь безусловный переход это хорошо или плохо, читаемость кода против условной производительности, да меня учили без них кодить, но времена изменились, компиляторы поумнее нашего во многом и докапываться до этого глупо! Ну и в целом хз собеседование, вы проверяете знание синтаксиса или что, я решаю на питоне задачи больше года на литкоде, довольно неплохо я считаю, про то как передать произвольное количество переменных не знал, гуглится это меньше чем за минуту, если бы попросил у вас 1-2 минуты гугла, вы бы отказали, ахаха?)
@AlekseyMaximov
@AlekseyMaximov 4 ай бұрын
услышал начальные требования, поставил на паузу, написал решение минут за 10, попивая чаёк: # ----------------------------------------------------------------------------------------------------------------------------------------- def sum_arguments(*args): result = 0 print(f"Args count: {len(args)}") for item in args: arg_type = type(item).__name__ print(f"{item=}, {arg_type=}") match arg_type: case 'int': result += item case 'str': tmp = str.strip(item) for i in tmp.split(): try: result += int(i) except ValueError as e: pass case 'list' | 'tuple': result += sum_arguments(*item) case _: pass return result ### run it data = [1, 2, 3, '4', '5', "6", [7, 8, 9], "a 100 4", 'b', (0,1), '()', " -1 ", [], "1"] res = sum_arguments(data) print(f"{res=}") # ----------------------------------------------------------------------------------------------------------------------------------------- потом начал глядеть видео дальше, и слегка был сконфужен: - нечетко поставлены общие требования задачи - не указаны инженерные требования к входящим данным, их размер, наличие, граничные значения, валидность - не определены тайминги, а так же не обсуждалась сложность решения O(?) Вобщем, что-то как то быстренько закодил. Интересно, приемлимо ли получилось?
КАХА и Джин 2
00:36
К-Media
Рет қаралды 3 МЛН
Stupid man 👨😂
00:20
Nadir Show
Рет қаралды 30 МЛН
Python собеседование Александр Воробьёв
53:52
Андрей += Пронин
Рет қаралды 44 М.
Степан Калинин собеседование junior python developer
1:12:16
Андрей += Пронин
Рет қаралды 16 М.
Здор Дмитрий собеседование python разработчик
1:10:25
Андрей += Пронин
Рет қаралды 6 М.
Алтынбаев Артур python разработчик собеседование
52:07
КАХА и Джин 2
00:36
К-Media
Рет қаралды 3 МЛН