ЛАЙВКОДИНГ Собеседование Python разработчик - зарплата 330К

Поделиться
HTML-код
  • Опубликовано: 18 окт 2024

Комментарии • 59

  • @artemshumeiko
    @artemshumeiko  4 дня назад +2

    Освой Backend разработку на моем авторском курсе: clck.ru/3DvuJB (первый модуль бесплатен)
    Тренажер собеседований Солвит - готовься к собесу, чтобы получать сочные офферы: clck.ru/3DvuRu

  • @Alsurnov
    @Alsurnov 2 дня назад +3

    Спасибо за видео. Артем просьба: можешь записать3-4 видеоурока по GraphQL с использованием Fast API. Хотелось бы посмотреть регистрацию и авторизацию, а так же запросы данных.

  • @_dzen_tv_
    @_dzen_tv_ 3 дня назад +5

    Душнилово это вопрос чем неудобен генератор.
    А про сиквенсы это база, set, list, tuple, string. Они реализуют набор методов для работы с последовательностями.
    Другой вопрос что последовательности предоставляют реализацию итерабл интерфейса.
    s = "abc"
    s.__next__() # ошибка
    si = s.__iter__() #
    si.__next__() # Ok
    Если говорить про список то в каждый момент времени мы обращаемся только к одному элементу, а храним в памяти весь массив.
    Это оправдано только в случае когда мы интенсивно используем именно сиквенс методы, например, append, insert, extend, pop...
    GIL как обычно по диагонали. Сам собеседующий плохо понимает.
    Задачка на CPU, требующая ядра это вообще не пор потоки.
    Кто вам сказал что асинхронка лучше потоков?
    Это разные подходы решающие разные проблемы. Ну и Артём до сих пор не знает что потоки это потоки ОС.
    А вообще когда собеседующий чувак решил закопать потоки я бы закончил собес. Это всё равно что спросить чем компания Х хуже нашей?
    Всё я сгорел. Асинхронность наше всё, но если у нас чуть-чуть не IO кода то всё, сразу to_thread()
    То есть питонячий код может работать в потоке, а в ивент лупе никак)))

  • @Серега-к6н
    @Серега-к6н 4 дня назад +8

    Для дедлока достаточно 1 таблицы с 2 строками. Первая транзакция блокирует первую строку, вторая транзакция блокирует вторую стоку, первая пытается заблокировать вторую строку и встает в ожидание второй транзакции, вторая транзакция пытается заблокировать первую строку, встает в ожидание, движок бд распознает дедлок, откатывает изменения одной из транзакций с ошибкой "deadlock detected", другая транзакция завершается, т.к. больше некого ждать. Интересно, почему разрабам, даже синьерам всегда задают такие джуниорские вопросы по бд и ни спрашивающий ни отвечающий никогда не знают правильных ответов? :)

    • @artemshumeiko
      @artemshumeiko  4 дня назад +3

      Я правильно понимаю, вы примерно 500к в месяц зарабатываете?

    • @antongerasimov2298
      @antongerasimov2298 4 дня назад

      Да, по бд совсем изи вопросы. Даже про Windows функции не спросили...

    • @antongerasimov2298
      @antongerasimov2298 4 дня назад

      ​@@artemshumeikoесли по нынешнем курсу рубля, то даже чуть больше :)

    • @antongerasimov2298
      @antongerasimov2298 4 дня назад

      Но к чести автора, он неплохо отвечал на эти простые вопросы. По сути, только на последний вопрос и не ответил, но что такое дедлок ответ дал абсолютно верный

    • @Серега-к6н
      @Серега-к6н 3 дня назад +2

      @@antongerasimov2298 Я не согласен, что автор неплохо отвечал. Если уж придираться, то хорошо он не ответил ни на что:
      Правильный запрос написал только после подсказки, правильный запрос для странной архитектуры приложения, когда в orders на несколько порядков меньше записей, чем в promocodes, тоже не написал, только логику сформулировал, cte начал писать с ошибкой, хотя cte тут - просто лишний набор кода, т.к. данные из него будут использоваться только один раз.
      Вопрос про низкую селективность индекса сначала не понял вопроса даже.
      Ошибся в том, что план запроса выбирает исполнитель, хотя он получает его от оптимизатора, который и переставит местами "b=? and a=?" (Единственный вопрос, по ответу на который можно было отличить джуна в SQL от того, кто сталкивался с оптимизацией запросов)
      Не смог просто перевести с английского "consistency" на русский "согласованность"???
      Придумал, что нельзя изменить режим изоляции и режимы нужны для определения аномалий. Хотя в конкурентных запросах нет никаких аномалий, и нам важно иметь возможность по-разному обрабатывать конкурентные запросы. А через пару секунд уже утверждает, что режим изоляции таки можно менять.
      Решил, что запись в журнал транзакций происходит после записи в таблицу.
      Не ответил про оптимистичные и пессимистичные блокировки.
      Дедлоки - что-то из разряда страшной магии.
      А самое главное, что как только орм начинает генерить чушь, а это случается в 100% проектов чуть больше тех, что может написать один человек, так все эти знания становятся резко нужны, в отличии от send в генератораторе или мультипоточности
      ​ @artemshumeiko Нет, я зарабатываю значительно меньше. Мало того скажу, что по собесам я не хожу и, скорее всего, сам бы не понимал половину вопросов и мычал бы в ответ из-за волнения. Прости пожалуйста, но мой коммент выше не связан с твоими ответами, он скорее связан с тем, что у меня подгорает от большинства разрабов, потому что у них сначала "Да знаю я это ваш sql, нафик он не нужен, орм все напишет", а потом им приходится сначала изучать sql, потом изучать orm, а потом сравнивать и удивляться как эта штука могла сгенерить такую фигню. Ведь sql это практически английский и написать на нем запрос иногда даже быстрее, чем заставить сгенерить orm нечто нормально исполняемое движком бд.

  • @ВакаИванов
    @ВакаИванов 2 часа назад

    Здравствуйте, очень понравилось видео, подскажите где можно скачать такой интерпритатор, который вы использовали при собеседовании?

  • @avgany2257
    @avgany2257 3 дня назад +1

    Почему у меня такое ощущение, что в настоящих реалиях собеседования на сеньера часто схоже по уровню на собеседования Джуна в галеру за зп в две банки пива 😂

  • @romanvolozhanin4192
    @romanvolozhanin4192 4 дня назад +5

    Привет! Реально классный собес получился! Спасибо большое.
    Могу добавить, что на интервью я задаю вопрос про асинк, многопоточноть и мультипроцессинг для того, чтобы опредлелить уровень понимания у кандидата того, как работает код. Чтобы инженер понимал ограничение в которое упирается при встрече с проблемой ресурсов.
    Еще раз спасибо, и отличные задачи попались, было интересно.

    • @artemshumeiko
      @artemshumeiko  4 дня назад +1

      Ага..
      А вопросы про разрешение коллизий и то, как работает метод открытой адресации тоже проверяет «уровень понимания кандидата того, как работает код»?
      Меня 3 раза про это спросили из 20 собесов пару месяцев назад.
      По-моему и этот вопрос, и вопрос про потоки на практике неприменимы. Зачем их задавать? Искренне не понимаю и хочу понять.
      Если на практике это не пригодится

    • @alko4188
      @alko4188 4 дня назад +3

      @@artemshumeiko а давай инвертируем задачу? у тебя есть 60 минут и тебе надо понять, насколько "качественный" специалист перед тобой ? вот как бы ты построил собес? вот реально было бы интересно послушать твое мнение после такого кол-ва пройденных собеседований? в августе я таки угадал, что ты проходишь собесы для стартапа и контента, вот хотелось бы услышат обратную связь и аналитику не только для кандидатов до и для интервьюеров...
      Скажу за себя, для меня очень важно словить пинг понг от человека, понять насколько мне будет с ним дальше комфортно работать, разбираться в багах, ставить задачи и давать обратную связь.
      Не просто что он отвечает, но и как. а на типовых задачах, 80% отвечают однотипным определением с гугла (( ну ведь скучно же ? особенно когда у тебя это ххх собес.... вот приходится изгаляться придумывать что-то эдакое... по мне уж лучше странные вопросы про неприменимые вещи, чем литкодовские задачки в блокнотике. а может и наоброт?

    • @artemshumeiko
      @artemshumeiko  3 дня назад +1

      @@alko4188 на собесе нужно спрашивать: код-ревью, лайв-кодинг (но не написать декоратор, а что-то более распространенное) и систем дизайн (для middle+/senior)

    • @romanvolozhanin4192
      @romanvolozhanin4192 3 дня назад

      @@artemshumeiko хехехе! Не, такого уже не спрашиваю. И даже никакого реджекта не даю за отсутсвия ответа. Могу предположить, что хотели дойти до самой глубины твоих знаний, ибо ты на лайте все остальное отвечаешь и с тобой интересно пообщаьтся о таких хитростях. Было у меня один раз дурное собеседование на 2 часа с разбором и сетей и разбором алгоритма MRO С3 и в базы лезли максимально глубоко. Измучали меня сильно, никому такого не пожелаю. Опять же зависит от того, кого нанимаем. На простого питониста изи тех задачи решать - одно, а на сеньора, кто вопроса не задаст и сможет проблемы решать и со своим кодом и с соседними отделами затыки разрулит - совсем другое.

  • @PavelSoftware
    @PavelSoftware 3 дня назад +2

    Супер формат, Артём! Спасибо огромное за твою работу!

  • @vasiliy2396
    @vasiliy2396 3 дня назад +3

    Проходил пару недель назад собеседование в Т-банке на позицию мидла (сразу узнал их по видео, у меня были такие же задачи и вопросы). Я решил все задачи (у меня их, кстати, было три), ответил на все вопросы. Пришёл ответ, что не готовы взять, даже нормально не смогли обосновать, почему. Написали, что плохо знаю про ГИЛ. Хотя, когда я стал рассказывать про тир 1 и тир 2 оптимизаторы, он просто решил пропустить этот вопрос, похоже, сам ничего не понимает. Просто нет слов...

  • @Programmer91
    @Programmer91 4 дня назад +4

    Что значит надо погуглить, прикол конечно задавать вопрос и самому не знать на него ответа ...

  • @hg-dm2jj
    @hg-dm2jj 3 дня назад +2

    угараю с того, как Артем на каждом собесе с каменным лицом сидит и не реагирует вообще на шутки. Одним словом BOSS😂😂

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      тут 0 шуток было же, или я пропустил?)

  • @МаксимАндреев-я1г
    @МаксимАндреев-я1г 4 дня назад +6

    Эм, какой вообще смысл запуск cpu bound задачу через мультипоток если они вообще не дадут буста от однопотока

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      чтобы текущий поток не блокировать синхронной задачей

    • @МаксимАндреев-я1г
      @МаксимАндреев-я1г 3 дня назад +4

      @@artemshumeiko так из-за Гила в одном процессе работает один поток, два потока работают лишь конкурентно то есть по очереди, любая цпу задача заблочит процесс

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      @@МаксимАндреев-я1г я знаю. Речь про маленькие cpu задачки

    • @МаксимАндреев-я1г
      @МаксимАндреев-я1г 3 дня назад

      @@artemshumeiko ну может, но сейчас все равно в 3.13 можно отключать гил и запускать потоки параллельно, смотрел видосы что цпу задача на просчет 1000 значений в цикле даже быстрее мультипроцесинга

  • @nrglook
    @nrglook 4 дня назад +2

    Ещё не досмотрел интревью на Диджитализируй)
    а уже новое видео -- кайф
    Спасибо, Артём!

  • @rinput
    @rinput 3 дня назад

    Артем, привет! Крутое интервью, очень много для себя узнал полезного, спасибо! А ты не думал податься на работу в Европу/США? Имею опыт прохождения сотни собесов туда, там намного лайтовее спрашивают по хардам, а зп с твоим уровнем будет точно от 7к УСД +

    • @ntm1267
      @ntm1267 3 дня назад

      А где в Европе столько платят? В Испании, Италии, Франции, Португалии даже 3000 уже мало где предлагают😅

    • @rinput
      @rinput 2 дня назад

      @@ntm1267 Да везде, собешусь на сеньера, прокачал свой линкедин, HR-ы сами пишут, зп от 5к

  • @Rulezzz3
    @Rulezzz3 2 дня назад

    При таком файле
    1sdf 2sdfjh 3lkdwe 4asda 5xcv 6asdfweqr
    7sadfsf 8sadasd 9trgrstg 10weqqwe 11asdfads 12xcxcxc
    13dsgggg 14ff
    15xcv
    16df
    17xc 18dfdfg 19dfssdf
    и таких вызовах
    print(next(rfbw))
    print(next(rfbw))
    print(rfbw.send(4))
    print(rfbw.send(3))
    код неправильно работает
    во первых он пропустит 7е слово
    а вместо вывода трех значений в последнем запросе он выдаст только одно

  • @MARV1N
    @MARV1N 4 дня назад +1

    44:06
    Был такой вопрос на собеседовании, тоже не додумался, а ответ такой в итоге сказали: можно обычный .txt файл

    • @NoName-eb5dj
      @NoName-eb5dj 4 дня назад

      В таком случае можно использовать multiprocessing.Pipe(), либо os.pipe(). Таким образом родительский и дочерние процессы могут обмениваться между собой сообщениями в текстовом виде

  • @VelmelloDM
    @VelmelloDM 3 дня назад

    @artemshumeiko, добрый день. У меня вопрос по поводу первой задачи. Строки 10-11 разве не нужно поменять местами? Мы ведь по сути чистим список и потом иелдим уже пустой список, что не удовлетворяет условию.

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      я же указал на это на 11:54 :(

  • @imadna5810
    @imadna5810 3 дня назад

    Ну вот кроме задач (были попроще) +- тоже самое спрашивали на позицию бэкэнд джуна !

  • @vitaliypavliy783
    @vitaliypavliy783 3 дня назад

    Вопрос по первой задаче. На 10 строке (words_stack = []). Разве мы не удалим наш стек с подготовленными словами для выдачи и не вернем пустой массив используя yield ? Нет ли тут ошибки?

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      я же указал на это на 11:54 :(

    • @vitaliypavliy783
      @vitaliypavliy783 3 дня назад

      @@artemshumeiko Пересмотрел, увидел. Первый раз в ускоренном формате смотрел, видимо пропустил этот момент. Спасибо!

  • @kotifnat
    @kotifnat 4 дня назад

    Мультипоток для cpu, сильно😎😎😎😎😎

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      эм, ну вообще да)
      Для супер небольших задачек может подойти
      Это не Jun/Mdl собес, здесь дяди с опытом

    • @kotifnat
      @kotifnat 3 дня назад

      @@artemshumeiko можно пример cpu задачи, где питоновские треды помогут?

    • @kotifnat
      @kotifnat 2 дня назад

      @@artemshumeiko я так понимаю примера не будет?) Да и ответ аля «ты куда зашел, мальчик, здесь взрослые дяди» не очень то уместен, ибо весь контент, который у Вас на канале нацелен на новичков в основном. Супер сложных вещей для синьоров я не особо наблюдаю

  • @sdbcvf-p2e7c
    @sdbcvf-p2e7c 2 дня назад

    А нельзя подглядывать в яндекс или в свои исходники?

    • @artemshumeiko
      @artemshumeiko  2 дня назад

      я не умею, приходится все учить :/
      Вообще, подглядывать лучше сюда: solvit.space

  • @harutavetisyan5683
    @harutavetisyan5683 3 дня назад +1

    Почему senior ам не спрашивают про маниторинг asyncio, threads. Как оптимизуруют, как понимают, что нужно оптимизировать, как принимают какую архитекутуру приложения использвать, как работают join ы, планировщик

  • @antongerasimov2298
    @antongerasimov2298 4 дня назад

    Классно отвечаешь, видны не только хардскиллы, но и умение чётко излагать свои мысли, что встречается крайне редко, особенно у синьеров.

  • @romanvolozhanin4192
    @romanvolozhanin4192 3 дня назад

    А случалось попадать на чистую алгоритм сессию на собесах? кажется, это еще более безосновательно сложная часть в собеседованиях. И если про асинк, мультитред, процессы для себя я нашел причину спрашивать(и считаю не самым критическим),, То зачем мурыжать алгоритмами с литкодовского харда, я вообще не понимаю.

    • @artemshumeiko
      @artemshumeiko  3 дня назад +1

      да, я проходил 3 круга ада в Яндекс (успешно кстати), встречался с алгосами в VK и Тиньке
      Всегда норм справлялся, так как в свое время нарешал литкода)

  • @hsqlk
    @hsqlk 4 дня назад +1

    Оффер обычно дают после СБ…

    • @artemshumeiko
      @artemshumeiko  3 дня назад

      досмотри видео до конца

  • @nyakakun3398
    @nyakakun3398 3 дня назад

    Артём, а есть возможность дублировать видео на rutube?У меня провайдер домсру, так вот эти чмони совсем ютубы тормозят, невозможно смотреть.

    • @artemshumeiko
      @artemshumeiko  3 дня назад +1

      все продублировано)
      Подписывайтесь - rutube.ru/channel/42453487

    • @Rulezzz3
      @Rulezzz3 2 дня назад

      рутуб говно. Если ты не в состоянии настроить себе VPN, то может не стоит идти в программирование?