Освой Backend разработку на моем авторском курсе: clck.ru/3DvuJB (первый модуль бесплатен) Тренажер собеседований Солвит - готовься к собесу, чтобы получать сочные офферы: clck.ru/3DvuRu
Спасибо за видео. Артем просьба: можешь записать3-4 видеоурока по GraphQL с использованием Fast API. Хотелось бы посмотреть регистрацию и авторизацию, а так же запросы данных.
Душнилово это вопрос чем неудобен генератор. А про сиквенсы это база, set, list, tuple, string. Они реализуют набор методов для работы с последовательностями. Другой вопрос что последовательности предоставляют реализацию итерабл интерфейса. s = "abc" s.__next__() # ошибка si = s.__iter__() # si.__next__() # Ok Если говорить про список то в каждый момент времени мы обращаемся только к одному элементу, а храним в памяти весь массив. Это оправдано только в случае когда мы интенсивно используем именно сиквенс методы, например, append, insert, extend, pop... GIL как обычно по диагонали. Сам собеседующий плохо понимает. Задачка на CPU, требующая ядра это вообще не пор потоки. Кто вам сказал что асинхронка лучше потоков? Это разные подходы решающие разные проблемы. Ну и Артём до сих пор не знает что потоки это потоки ОС. А вообще когда собеседующий чувак решил закопать потоки я бы закончил собес. Это всё равно что спросить чем компания Х хуже нашей? Всё я сгорел. Асинхронность наше всё, но если у нас чуть-чуть не IO кода то всё, сразу to_thread() То есть питонячий код может работать в потоке, а в ивент лупе никак)))
Почему у меня такое ощущение, что в настоящих реалиях собеседования на сеньера часто схоже по уровню на собеседования Джуна в галеру за зп в две банки пива 😂
Для дедлока достаточно 1 таблицы с 2 строками. Первая транзакция блокирует первую строку, вторая транзакция блокирует вторую стоку, первая пытается заблокировать вторую строку и встает в ожидание второй транзакции, вторая транзакция пытается заблокировать первую строку, встает в ожидание, движок бд распознает дедлок, откатывает изменения одной из транзакций с ошибкой "deadlock detected", другая транзакция завершается, т.к. больше некого ждать. Интересно, почему разрабам, даже синьерам всегда задают такие джуниорские вопросы по бд и ни спрашивающий ни отвечающий никогда не знают правильных ответов? :)
Но к чести автора, он неплохо отвечал на эти простые вопросы. По сути, только на последний вопрос и не ответил, но что такое дедлок ответ дал абсолютно верный
@@antongerasimov2298 Я не согласен, что автор неплохо отвечал. Если уж придираться, то хорошо он не ответил ни на что: Правильный запрос написал только после подсказки, правильный запрос для странной архитектуры приложения, когда в orders на несколько порядков меньше записей, чем в promocodes, тоже не написал, только логику сформулировал, cte начал писать с ошибкой, хотя cte тут - просто лишний набор кода, т.к. данные из него будут использоваться только один раз. Вопрос про низкую селективность индекса сначала не понял вопроса даже. Ошибся в том, что план запроса выбирает исполнитель, хотя он получает его от оптимизатора, который и переставит местами "b=? and a=?" (Единственный вопрос, по ответу на который можно было отличить джуна в SQL от того, кто сталкивался с оптимизацией запросов) Не смог просто перевести с английского "consistency" на русский "согласованность"??? Придумал, что нельзя изменить режим изоляции и режимы нужны для определения аномалий. Хотя в конкурентных запросах нет никаких аномалий, и нам важно иметь возможность по-разному обрабатывать конкурентные запросы. А через пару секунд уже утверждает, что режим изоляции таки можно менять. Решил, что запись в журнал транзакций происходит после записи в таблицу. Не ответил про оптимистичные и пессимистичные блокировки. Дедлоки - что-то из разряда страшной магии. А самое главное, что как только орм начинает генерить чушь, а это случается в 100% проектов чуть больше тех, что может написать один человек, так все эти знания становятся резко нужны, в отличии от send в генератораторе или мультипоточности @artemshumeiko Нет, я зарабатываю значительно меньше. Мало того скажу, что по собесам я не хожу и, скорее всего, сам бы не понимал половину вопросов и мычал бы в ответ из-за волнения. Прости пожалуйста, но мой коммент выше не связан с твоими ответами, он скорее связан с тем, что у меня подгорает от большинства разрабов, потому что у них сначала "Да знаю я это ваш sql, нафик он не нужен, орм все напишет", а потом им приходится сначала изучать sql, потом изучать orm, а потом сравнивать и удивляться как эта штука могла сгенерить такую фигню. Ведь sql это практически английский и написать на нем запрос иногда даже быстрее, чем заставить сгенерить orm нечто нормально исполняемое движком бд.
Проходил пару недель назад собеседование в Т-банке на позицию мидла (сразу узнал их по видео, у меня были такие же задачи и вопросы). Я решил все задачи (у меня их, кстати, было три), ответил на все вопросы. Пришёл ответ, что не готовы взять, даже нормально не смогли обосновать, почему. Написали, что плохо знаю про ГИЛ. Хотя, когда я стал рассказывать про тир 1 и тир 2 оптимизаторы, он просто решил пропустить этот вопрос, похоже, сам ничего не понимает. Просто нет слов...
такое часто случается на собесах. По тому что человек недавно учил может лезть вглубь пока не закопает. А другой вопрос поверхностно затронет, хотя он может быть актуальней для бэкенд разработки. Тут как повезет
Привет! Реально классный собес получился! Спасибо большое. Могу добавить, что на интервью я задаю вопрос про асинк, многопоточноть и мультипроцессинг для того, чтобы опредлелить уровень понимания у кандидата того, как работает код. Чтобы инженер понимал ограничение в которое упирается при встрече с проблемой ресурсов. Еще раз спасибо, и отличные задачи попались, было интересно.
Ага.. А вопросы про разрешение коллизий и то, как работает метод открытой адресации тоже проверяет «уровень понимания кандидата того, как работает код»? Меня 3 раза про это спросили из 20 собесов пару месяцев назад. По-моему и этот вопрос, и вопрос про потоки на практике неприменимы. Зачем их задавать? Искренне не понимаю и хочу понять. Если на практике это не пригодится
@@artemshumeiko а давай инвертируем задачу? у тебя есть 60 минут и тебе надо понять, насколько "качественный" специалист перед тобой ? вот как бы ты построил собес? вот реально было бы интересно послушать твое мнение после такого кол-ва пройденных собеседований? в августе я таки угадал, что ты проходишь собесы для стартапа и контента, вот хотелось бы услышат обратную связь и аналитику не только для кандидатов до и для интервьюеров... Скажу за себя, для меня очень важно словить пинг понг от человека, понять насколько мне будет с ним дальше комфортно работать, разбираться в багах, ставить задачи и давать обратную связь. Не просто что он отвечает, но и как. а на типовых задачах, 80% отвечают однотипным определением с гугла (( ну ведь скучно же ? особенно когда у тебя это ххх собес.... вот приходится изгаляться придумывать что-то эдакое... по мне уж лучше странные вопросы про неприменимые вещи, чем литкодовские задачки в блокнотике. а может и наоброт?
@@alko4188 на собесе нужно спрашивать: код-ревью, лайв-кодинг (но не написать декоратор, а что-то более распространенное) и систем дизайн (для middle+/senior)
@@artemshumeiko хехехе! Не, такого уже не спрашиваю. И даже никакого реджекта не даю за отсутсвия ответа. Могу предположить, что хотели дойти до самой глубины твоих знаний, ибо ты на лайте все остальное отвечаешь и с тобой интересно пообщаьтся о таких хитростях. Было у меня один раз дурное собеседование на 2 часа с разбором и сетей и разбором алгоритма MRO С3 и в базы лезли максимально глубоко. Измучали меня сильно, никому такого не пожелаю. Опять же зависит от того, кого нанимаем. На простого питониста изи тех задачи решать - одно, а на сеньора, кто вопроса не задаст и сможет проблемы решать и со своим кодом и с соседними отделами затыки разрулит - совсем другое.
Артем, привет! Крутое интервью, очень много для себя узнал полезного, спасибо! А ты не думал податься на работу в Европу/США? Имею опыт прохождения сотни собесов туда, там намного лайтовее спрашивают по хардам, а зп с твоим уровнем будет точно от 7к УСД +
@artemshumeiko, добрый день. У меня вопрос по поводу первой задачи. Строки 10-11 разве не нужно поменять местами? Мы ведь по сути чистим список и потом иелдим уже пустой список, что не удовлетворяет условию.
@@artemshumeiko так из-за Гила в одном процессе работает один поток, два потока работают лишь конкурентно то есть по очереди, любая цпу задача заблочит процесс
@@artemshumeiko ну может, но сейчас все равно в 3.13 можно отключать гил и запускать потоки параллельно, смотрел видосы что цпу задача на просчет 1000 значений в цикле даже быстрее мультипроцесинга
При таком файле 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е слово а вместо вывода трех значений в последнем запросе он выдаст только одно
В таком случае можно использовать multiprocessing.Pipe(), либо os.pipe(). Таким образом родительский и дочерние процессы могут обмениваться между собой сообщениями в текстовом виде
Вопрос по первой задаче. На 10 строке (words_stack = []). Разве мы не удалим наш стек с подготовленными словами для выдачи и не вернем пустой массив используя yield ? Нет ли тут ошибки?
@@artemshumeiko я так понимаю примера не будет?) Да и ответ аля «ты куда зашел, мальчик, здесь взрослые дяди» не очень то уместен, ибо весь контент, который у Вас на канале нацелен на новичков в основном. Супер сложных вещей для синьоров я не особо наблюдаю
Почему senior ам не спрашивают про маниторинг asyncio, threads. Как оптимизуруют, как понимают, что нужно оптимизировать, как принимают какую архитекутуру приложения использвать, как работают join ы, планировщик
А случалось попадать на чистую алгоритм сессию на собесах? кажется, это еще более безосновательно сложная часть в собеседованиях. И если про асинк, мультитред, процессы для себя я нашел причину спрашивать(и считаю не самым критическим),, То зачем мурыжать алгоритмами с литкодовского харда, я вообще не понимаю.
да, я проходил 3 круга ада в Яндекс (успешно кстати), встречался с алгосами в VK и Тиньке Всегда норм справлялся, так как в свое время нарешал литкода)