Освой Backend разработку на моем авторском курсе: clck.ru/3DvuJB (первый модуль бесплатен) Тренажер собеседований Солвит - готовься к собесу, чтобы получать сочные офферы: clck.ru/3DvuRu
Почему у меня такое ощущение, что в настоящих реалиях собеседования на сеньера часто схоже по уровню на собеседования Джуна в галеру за зп в две банки пива 😂
Душнилово это вопрос чем неудобен генератор. А про сиквенсы это база, set, list, tuple, string. Они реализуют набор методов для работы с последовательностями. Другой вопрос что последовательности предоставляют реализацию итерабл интерфейса. s = "abc" s.__next__() # ошибка si = s.__iter__() # si.__next__() # Ok Если говорить про список то в каждый момент времени мы обращаемся только к одному элементу, а храним в памяти весь массив. Это оправдано только в случае когда мы интенсивно используем именно сиквенс методы, например, append, insert, extend, pop... GIL как обычно по диагонали. Сам собеседующий плохо понимает. Задачка на CPU, требующая ядра это вообще не пор потоки. Кто вам сказал что асинхронка лучше потоков? Это разные подходы решающие разные проблемы. Ну и Артём до сих пор не знает что потоки это потоки ОС. А вообще когда собеседующий чувак решил закопать потоки я бы закончил собес. Это всё равно что спросить чем компания Х хуже нашей? Всё я сгорел. Асинхронность наше всё, но если у нас чуть-чуть не IO кода то всё, сразу to_thread() То есть питонячий код может работать в потоке, а в ивент лупе никак)))
Садись, два. 1. set - это не "сиквенс", именно потому, что не реализует наборо методов для работы с последовательностями. 2. append/pop/insert/extend и т.д. это не "сиквенс методы": сиквенс может быть immutalbe (пример: tuple/string), да и сам интерфейс Sequence не требует реализации перечисленных методов 3. Eсли я постоянно итерируюсь по объекту / проверяю вхождение элемента - оправдано ли хранение всех элементов в памяти одновременно? (list/set/tuple, любая коллекция) 4. Конкретно в Пайтоне потоки и async решают одни и те же "проблемы": I/O, и да - async лучше, потому что, как минимум, меньше оверхэда на создание/переключение контекста (но не только поэтому) 5. I/O бывает блокирующим, и его тоже нужно выносить в отдельный тред (как и CPU-bound), чтобы не блокировать ивент-луп
Проходил пару недель назад собеседование в Т-банке на позицию мидла (сразу узнал их по видео, у меня были такие же задачи и вопросы). Я решил все задачи (у меня их, кстати, было три), ответил на все вопросы. Пришёл ответ, что не готовы взять, даже нормально не смогли обосновать, почему. Написали, что плохо знаю про ГИЛ. Хотя, когда я стал рассказывать про тир 1 и тир 2 оптимизаторы, он просто решил пропустить этот вопрос, похоже, сам ничего не понимает. Просто нет слов...
такое часто случается на собесах. По тому что человек недавно учил может лезть вглубь пока не закопает. А другой вопрос поверхностно затронет, хотя он может быть актуальней для бэкенд разработки. Тут как повезет
Собеседовался в Т-банк два раза, первый раз прошёл все этапы, но не готовы были предложить верхнюю планку - усугубило что HR с кем начал общение, ушла в отпуск, а та что замещала - никакой заинтересованности не проявила(сложилось впечатление что у них бонусы за привод, и замещающей - не достанется. Второй раз( через 1.5-2 года), прошёл первый этап - но настолько не понравился интервьювер ( быдло джуниор с хамотой, который просто не понимал развёрнутые ответы, и ему нужны было ответить именно то, что написано у него на листке), что просто не продолжил общение. Видимо как повезёт. Но некоторые личности на собеседовании - заставляют усомниться в том, действительно ли хочется с ними потом работать.
@@BibiBunta Да, как повезет. Я там проходил секции как по питону, так и по го. А всего суммарно 5 секций. Действительно идут по опроснику с каверзными вопросами. Но в моем случае были дружелюбны. Я в конце даже пожаловался что в вопросах очень странные ситуации и так код не пишут. Но интервьювер не стал спорить, а просто спокойно и довольно ловко перевел тему
Привет! Реально классный собес получился! Спасибо большое. Могу добавить, что на интервью я задаю вопрос про асинк, многопоточноть и мультипроцессинг для того, чтобы опредлелить уровень понимания у кандидата того, как работает код. Чтобы инженер понимал ограничение в которое упирается при встрече с проблемой ресурсов. Еще раз спасибо, и отличные задачи попались, было интересно.
Ага.. А вопросы про разрешение коллизий и то, как работает метод открытой адресации тоже проверяет «уровень понимания кандидата того, как работает код»? Меня 3 раза про это спросили из 20 собесов пару месяцев назад. По-моему и этот вопрос, и вопрос про потоки на практике неприменимы. Зачем их задавать? Искренне не понимаю и хочу понять. Если на практике это не пригодится
@@artemshumeiko а давай инвертируем задачу? у тебя есть 60 минут и тебе надо понять, насколько "качественный" специалист перед тобой ? вот как бы ты построил собес? вот реально было бы интересно послушать твое мнение после такого кол-ва пройденных собеседований? в августе я таки угадал, что ты проходишь собесы для стартапа и контента, вот хотелось бы услышат обратную связь и аналитику не только для кандидатов до и для интервьюеров... Скажу за себя, для меня очень важно словить пинг понг от человека, понять насколько мне будет с ним дальше комфортно работать, разбираться в багах, ставить задачи и давать обратную связь. Не просто что он отвечает, но и как. а на типовых задачах, 80% отвечают однотипным определением с гугла (( ну ведь скучно же ? особенно когда у тебя это ххх собес.... вот приходится изгаляться придумывать что-то эдакое... по мне уж лучше странные вопросы про неприменимые вещи, чем литкодовские задачки в блокнотике. а может и наоброт?
@@alko4188 на собесе нужно спрашивать: код-ревью, лайв-кодинг (но не написать декоратор, а что-то более распространенное) и систем дизайн (для middle+/senior)
@@artemshumeiko хехехе! Не, такого уже не спрашиваю. И даже никакого реджекта не даю за отсутсвия ответа. Могу предположить, что хотели дойти до самой глубины твоих знаний, ибо ты на лайте все остальное отвечаешь и с тобой интересно пообщаьтся о таких хитростях. Было у меня один раз дурное собеседование на 2 часа с разбором и сетей и разбором алгоритма MRO С3 и в базы лезли максимально глубоко. Измучали меня сильно, никому такого не пожелаю. Опять же зависит от того, кого нанимаем. На простого питониста изи тех задачи решать - одно, а на сеньора, кто вопроса не задаст и сможет проблемы решать и со своим кодом и с соседними отделами затыки разрулит - совсем другое.
Это имеет смысл. Интервьюер знает это, раз спрашивает. Но тут идея в том, чтобы человек сам нашёл ответ, а не получил все готовое. Ну и время интервьюера часто стоит дороже
@@ДаниилМальцев-ц9ш На мой взгляд если уж выделил время на интервью, то будь добр провести его качественно, ну не обязательно давать глубокий ответ, а можно в двух словах обьяснить! А тут прямо когда человек в секундах растерялся, потом хихикнул и сказал надо погуглить, это уже говорит о том что сам не знает! И по поводу того что интервьюер всегда знаете ответы на вопросы это не так, работал в разных компаниях, и ребята которые работали со мной, проводили интервью) И сами даже не знали что спрашивать, и составляли список вопросов в GPT)
Реализация в первой задаче, момент отправки накопленного списка (строки 9-11) на 14:42 По моему там ошибка, нельзя сначала обнулять список а потом отравлять, строки 10 и 11 надо поменять местами (чтобы конструкция yield была над обнулением списка) По-моему должно быть так Или я чего-то не понимаю?
Спасибо за видео. Артем просьба: можешь записать3-4 видеоурока по GraphQL с использованием Fast API. Хотелось бы посмотреть регистрацию и авторизацию, а так же запросы данных.
Для дедлока достаточно 1 таблицы с 2 строками. Первая транзакция блокирует первую строку, вторая транзакция блокирует вторую стоку, первая пытается заблокировать вторую строку и встает в ожидание второй транзакции, вторая транзакция пытается заблокировать первую строку, встает в ожидание, движок бд распознает дедлок, откатывает изменения одной из транзакций с ошибкой "deadlock detected", другая транзакция завершается, т.к. больше некого ждать. Интересно, почему разрабам, даже синьерам всегда задают такие джуниорские вопросы по бд и ни спрашивающий ни отвечающий никогда не знают правильных ответов? :)
Но к чести автора, он неплохо отвечал на эти простые вопросы. По сути, только на последний вопрос и не ответил, но что такое дедлок ответ дал абсолютно верный
@@antongerasimov2298 Я не согласен, что автор неплохо отвечал. Если уж придираться, то хорошо он не ответил ни на что: Правильный запрос написал только после подсказки, правильный запрос для странной архитектуры приложения, когда в orders на несколько порядков меньше записей, чем в promocodes, тоже не написал, только логику сформулировал, cte начал писать с ошибкой, хотя cte тут - просто лишний набор кода, т.к. данные из него будут использоваться только один раз. Вопрос про низкую селективность индекса сначала не понял вопроса даже. Ошибся в том, что план запроса выбирает исполнитель, хотя он получает его от оптимизатора, который и переставит местами "b=? and a=?" (Единственный вопрос, по ответу на который можно было отличить джуна в SQL от того, кто сталкивался с оптимизацией запросов) Не смог просто перевести с английского "consistency" на русский "согласованность"??? Придумал, что нельзя изменить режим изоляции и режимы нужны для определения аномалий. Хотя в конкурентных запросах нет никаких аномалий, и нам важно иметь возможность по-разному обрабатывать конкурентные запросы. А через пару секунд уже утверждает, что режим изоляции таки можно менять. Решил, что запись в журнал транзакций происходит после записи в таблицу. Не ответил про оптимистичные и пессимистичные блокировки. Дедлоки - что-то из разряда страшной магии. А самое главное, что как только орм начинает генерить чушь, а это случается в 100% проектов чуть больше тех, что может написать один человек, так все эти знания становятся резко нужны, в отличии от send в генератораторе или мультипоточности @artemshumeiko Нет, я зарабатываю значительно меньше. Мало того скажу, что по собесам я не хожу и, скорее всего, сам бы не понимал половину вопросов и мычал бы в ответ из-за волнения. Прости пожалуйста, но мой коммент выше не связан с твоими ответами, он скорее связан с тем, что у меня подгорает от большинства разрабов, потому что у них сначала "Да знаю я это ваш sql, нафик он не нужен, орм все напишет", а потом им приходится сначала изучать sql, потом изучать orm, а потом сравнивать и удивляться как эта штука могла сгенерить такую фигню. Ведь sql это практически английский и написать на нем запрос иногда даже быстрее, чем заставить сгенерить orm нечто нормально исполняемое движком бд.
Первая задача решена неправильно в корне Зачем мы читаем файл по словам? Чтобы что? Чтобы не грузить в память кучу данных. А что, если файл из одной строки огромной длины? В чём профит? Нужно считывать файл посимвольно и йилдить, когда натыкаемся на пробельный символ (пробел, , etc)
А почему это все далеко от практики? Где исключения, где их обработка, где их прокидывания, где вообще документация данной функции( аннотация типов не полностью)
такое решение на 1 задание подойдет? def readfile(filename, num): count = 0 res = [] with open(filename, 'r') as file: for line in file: for i in line.split(): res.append(i) count += 1 if count == num: print(' '.join(res)) res.clear() count = 0 else: print(' '.join(res))
@@artemshumeiko так из-за Гила в одном процессе работает один поток, два потока работают лишь конкурентно то есть по очереди, любая цпу задача заблочит процесс
@@artemshumeiko ну может, но сейчас все равно в 3.13 можно отключать гил и запускать потоки параллельно, смотрел видосы что цпу задача на просчет 1000 значений в цикле даже быстрее мультипроцесинга
@@МаксимАндреев-я1г еще не скоро все библиотеки будут поддерживать этот экспериментальный режим, зато уже в текущий момент понятно что без гил питон станет медленнее в однопотоке, так как его заменят десятки других точечных блокировок
Привет, вопрос по задаче N2: если запустить функцию вот так foo(1, hello="world") foo(1, hello="world") foo(1, hello="world") foo(1) foo(1) foo(1) То на этапе когда мы не передаем kwargs кэш не сработает поскольку в кэше будет ключ "1_hello_world", но по идее 1 должна быть в кэше, или я ошибаюсь?
При таком файле 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е слово а вместо вывода трех значений в последнем запросе он выдаст только одно
@artemshumeiko, добрый день. У меня вопрос по поводу первой задачи. Строки 10-11 разве не нужно поменять местами? Мы ведь по сути чистим список и потом иелдим уже пустой список, что не удовлетворяет условию.
Артем, привет! Крутое интервью, очень много для себя узнал полезного, спасибо! А ты не думал податься на работу в Европу/США? Имею опыт прохождения сотни собесов туда, там намного лайтовее спрашивают по хардам, а зп с твоим уровнем будет точно от 7к УСД +
В таком случае можно использовать multiprocessing.Pipe(), либо os.pipe(). Таким образом родительский и дочерние процессы могут обмениваться между собой сообщениями в текстовом виде
Вопрос по первой задаче. На 10 строке (words_stack = []). Разве мы не удалим наш стек с подготовленными словами для выдачи и не вернем пустой массив используя yield ? Нет ли тут ошибки?
А интервьюер вообще сам шарит? Сложилось такое впечатление что чел просто по бумажке проверяет, видит что решение/ответ похож и все. Про погуглить вообще убило.
@@TeppopucT А тебя не смущает, что это собеседование для приема на работу? Ничего страшного же, если человек который тебя будет брать на работу, будет сравнивать твои ответы с тем, что прописано на бумажке?) А сам он в этом мало что понимает. Я считаю, что должен. Наслышан я про таких эйчаров и собеседующих. Ну я надеюсь у тебя будут такие собеседующие, которые тебя не поймут, или не ответят на твой встречный вопрос. Потом откажут откажут или зпшку предложат в 2 раза ниже, чем ты заслуживаешь. Ну или если ты владелец бизнеса, чтобы у тебя такие собеседужщие были, набрали тебе кого попало. Расскажешь потом кто что должен, а что нет)
@@ЧеркашинДмитрий-н3к Инфантильная позиция. Никто тебе ничего не должен. Так же как и ты. Если иное не подписано. Хочется сказать что, когда вырастешь поймёшь. Но гарантий нет. Очень много людей считает что им должны вплоть до конца жизни.
Почему senior ам не спрашивают про маниторинг asyncio, threads. Как оптимизуруют, как понимают, что нужно оптимизировать, как принимают какую архитекутуру приложения использвать, как работают join ы, планировщик
@@artemshumeiko я так понимаю примера не будет?) Да и ответ аля «ты куда зашел, мальчик, здесь взрослые дяди» не очень то уместен, ибо весь контент, который у Вас на канале нацелен на новичков в основном. Супер сложных вещей для синьоров я не особо наблюдаю
не знаю, братан)) Но, как по мне , ты не на один вопрос не ответил - и это бросается в глаза. Пудрить мозги, применяя различные техники ухода от прямого вопроса на тех интервью - такое себе..Уверен, ты не прошел дальше. А будь вместо этого скромного паренька(год в компании)) матерый технарь - он бы собес закончил минут через 5-7)) Дичь, такое еще и на ютуб выкладывать и байтить. И, да, я не программист от слова совсем. Иная сфера. Но, некомпетентность твоя режет глаза..блогеры, шмогеры...))
А случалось попадать на чистую алгоритм сессию на собесах? кажется, это еще более безосновательно сложная часть в собеседованиях. И если про асинк, мультитред, процессы для себя я нашел причину спрашивать(и считаю не самым критическим),, То зачем мурыжать алгоритмами с литкодовского харда, я вообще не понимаю.
да, я проходил 3 круга ада в Яндекс (успешно кстати), встречался с алгосами в VK и Тиньке Всегда норм справлялся, так как в свое время нарешал литкода)
Освой Backend разработку на моем авторском курсе: clck.ru/3DvuJB (первый модуль бесплатен)
Тренажер собеседований Солвит - готовься к собесу, чтобы получать сочные офферы: clck.ru/3DvuRu
Почему у меня такое ощущение, что в настоящих реалиях собеседования на сеньера часто схоже по уровню на собеседования Джуна в галеру за зп в две банки пива 😂
Душнилово это вопрос чем неудобен генератор.
А про сиквенсы это база, set, list, tuple, string. Они реализуют набор методов для работы с последовательностями.
Другой вопрос что последовательности предоставляют реализацию итерабл интерфейса.
s = "abc"
s.__next__() # ошибка
si = s.__iter__() #
si.__next__() # Ok
Если говорить про список то в каждый момент времени мы обращаемся только к одному элементу, а храним в памяти весь массив.
Это оправдано только в случае когда мы интенсивно используем именно сиквенс методы, например, append, insert, extend, pop...
GIL как обычно по диагонали. Сам собеседующий плохо понимает.
Задачка на CPU, требующая ядра это вообще не пор потоки.
Кто вам сказал что асинхронка лучше потоков?
Это разные подходы решающие разные проблемы. Ну и Артём до сих пор не знает что потоки это потоки ОС.
А вообще когда собеседующий чувак решил закопать потоки я бы закончил собес. Это всё равно что спросить чем компания Х хуже нашей?
Всё я сгорел. Асинхронность наше всё, но если у нас чуть-чуть не IO кода то всё, сразу to_thread()
То есть питонячий код может работать в потоке, а в ивент лупе никак)))
Хорош )), не гори так сильно ) нервы надо беречь
Садись, два.
1. set - это не "сиквенс", именно потому, что не реализует наборо методов для работы с последовательностями.
2. append/pop/insert/extend и т.д. это не "сиквенс методы": сиквенс может быть immutalbe (пример: tuple/string), да и сам интерфейс Sequence не требует реализации перечисленных методов
3. Eсли я постоянно итерируюсь по объекту / проверяю вхождение элемента - оправдано ли хранение всех элементов в памяти одновременно? (list/set/tuple, любая коллекция)
4. Конкретно в Пайтоне потоки и async решают одни и те же "проблемы": I/O, и да - async лучше, потому что, как минимум, меньше оверхэда на создание/переключение контекста (но не только поэтому)
5. I/O бывает блокирующим, и его тоже нужно выносить в отдельный тред (как и CPU-bound), чтобы не блокировать ивент-луп
Супер формат, Артём! Спасибо огромное за твою работу!
Проходил пару недель назад собеседование в Т-банке на позицию мидла (сразу узнал их по видео, у меня были такие же задачи и вопросы). Я решил все задачи (у меня их, кстати, было три), ответил на все вопросы. Пришёл ответ, что не готовы взять, даже нормально не смогли обосновать, почему. Написали, что плохо знаю про ГИЛ. Хотя, когда я стал рассказывать про тир 1 и тир 2 оптимизаторы, он просто решил пропустить этот вопрос, похоже, сам ничего не понимает. Просто нет слов...
такое часто случается на собесах. По тому что человек недавно учил может лезть вглубь пока не закопает. А другой вопрос поверхностно затронет, хотя он может быть актуальней для бэкенд разработки. Тут как повезет
Собеседовался в Т-банк два раза, первый раз прошёл все этапы, но не готовы были предложить верхнюю планку - усугубило что HR с кем начал общение, ушла в отпуск, а та что замещала - никакой заинтересованности не проявила(сложилось впечатление что у них бонусы за привод, и замещающей - не достанется.
Второй раз( через 1.5-2 года), прошёл первый этап - но настолько не понравился интервьювер ( быдло джуниор с хамотой, который просто не понимал развёрнутые ответы, и ему нужны было ответить именно то, что написано у него на листке), что просто не продолжил общение.
Видимо как повезёт. Но некоторые личности на собеседовании - заставляют усомниться в том, действительно ли хочется с ними потом работать.
@@BibiBunta Да, как повезет. Я там проходил секции как по питону, так и по го. А всего суммарно 5 секций. Действительно идут по опроснику с каверзными вопросами. Но в моем случае были дружелюбны. Я в конце даже пожаловался что в вопросах очень странные ситуации и так код не пишут. Но интервьювер не стал спорить, а просто спокойно и довольно ловко перевел тему
чувак который проводил интерью понял что ты знаешь больше и засцал что его уволят или ты токсик )))
Привет! Реально классный собес получился! Спасибо большое.
Могу добавить, что на интервью я задаю вопрос про асинк, многопоточноть и мультипроцессинг для того, чтобы опредлелить уровень понимания у кандидата того, как работает код. Чтобы инженер понимал ограничение в которое упирается при встрече с проблемой ресурсов.
Еще раз спасибо, и отличные задачи попались, было интересно.
Ага..
А вопросы про разрешение коллизий и то, как работает метод открытой адресации тоже проверяет «уровень понимания кандидата того, как работает код»?
Меня 3 раза про это спросили из 20 собесов пару месяцев назад.
По-моему и этот вопрос, и вопрос про потоки на практике неприменимы. Зачем их задавать? Искренне не понимаю и хочу понять.
Если на практике это не пригодится
@@artemshumeiko а давай инвертируем задачу? у тебя есть 60 минут и тебе надо понять, насколько "качественный" специалист перед тобой ? вот как бы ты построил собес? вот реально было бы интересно послушать твое мнение после такого кол-ва пройденных собеседований? в августе я таки угадал, что ты проходишь собесы для стартапа и контента, вот хотелось бы услышат обратную связь и аналитику не только для кандидатов до и для интервьюеров...
Скажу за себя, для меня очень важно словить пинг понг от человека, понять насколько мне будет с ним дальше комфортно работать, разбираться в багах, ставить задачи и давать обратную связь.
Не просто что он отвечает, но и как. а на типовых задачах, 80% отвечают однотипным определением с гугла (( ну ведь скучно же ? особенно когда у тебя это ххх собес.... вот приходится изгаляться придумывать что-то эдакое... по мне уж лучше странные вопросы про неприменимые вещи, чем литкодовские задачки в блокнотике. а может и наоброт?
@@alko4188 на собесе нужно спрашивать: код-ревью, лайв-кодинг (но не написать декоратор, а что-то более распространенное) и систем дизайн (для middle+/senior)
@@artemshumeiko хехехе! Не, такого уже не спрашиваю. И даже никакого реджекта не даю за отсутсвия ответа. Могу предположить, что хотели дойти до самой глубины твоих знаний, ибо ты на лайте все остальное отвечаешь и с тобой интересно пообщаьтся о таких хитростях. Было у меня один раз дурное собеседование на 2 часа с разбором и сетей и разбором алгоритма MRO С3 и в базы лезли максимально глубоко. Измучали меня сильно, никому такого не пожелаю. Опять же зависит от того, кого нанимаем. На простого питониста изи тех задачи решать - одно, а на сеньора, кто вопроса не задаст и сможет проблемы решать и со своим кодом и с соседними отделами затыки разрулит - совсем другое.
Ещё не досмотрел интревью на Диджитализируй)
а уже новое видео -- кайф
Спасибо, Артём!
Что значит надо погуглить, прикол конечно задавать вопрос и самому не знать на него ответа ...
Это имеет смысл. Интервьюер знает это, раз спрашивает. Но тут идея в том, чтобы человек сам нашёл ответ, а не получил все готовое. Ну и время интервьюера часто стоит дороже
@@ДаниилМальцев-ц9ш На мой взгляд если уж выделил время на интервью, то будь добр провести его качественно, ну не обязательно давать глубокий ответ, а можно в двух словах обьяснить! А тут прямо когда человек в секундах растерялся, потом хихикнул и сказал надо погуглить, это уже говорит о том что сам не знает! И по поводу того что интервьюер всегда знаете ответы на вопросы это не так, работал в разных компаниях, и ребята которые работали со мной, проводили интервью) И сами даже не знали что спрашивать, и составляли список вопросов
в GPT)
такое впечатление что проводят собес по бумажке, а сам не разбираеться или на уровне джуна / ленивого мидла
Реализация в первой задаче, момент отправки накопленного списка (строки 9-11) на 14:42
По моему там ошибка, нельзя сначала обнулять список а потом отравлять, строки 10 и 11 надо поменять местами (чтобы конструкция yield была над обнулением списка)
По-моему должно быть так
Или я чего-то не понимаю?
А сиквенс от итерэйбл отличается тем, что сиквенс хранится в памяти целиком
Спасибо за видео. Артем просьба: можешь записать3-4 видеоурока по GraphQL с использованием Fast API. Хотелось бы посмотреть регистрацию и авторизацию, а так же запросы данных.
Можете причитать документацию strawberry там все просто
Как запомнить такое огромное количество различных функций и тд лишь для собеседования, а после еще и другими пользоваться на работе?
угараю с того, как Артем на каждом собесе с каменным лицом сидит и не реагирует вообще на шутки. Одним словом BOSS😂😂
тут 0 шуток было же, или я пропустил?)
Для дедлока достаточно 1 таблицы с 2 строками. Первая транзакция блокирует первую строку, вторая транзакция блокирует вторую стоку, первая пытается заблокировать вторую строку и встает в ожидание второй транзакции, вторая транзакция пытается заблокировать первую строку, встает в ожидание, движок бд распознает дедлок, откатывает изменения одной из транзакций с ошибкой "deadlock detected", другая транзакция завершается, т.к. больше некого ждать. Интересно, почему разрабам, даже синьерам всегда задают такие джуниорские вопросы по бд и ни спрашивающий ни отвечающий никогда не знают правильных ответов? :)
Я правильно понимаю, вы примерно 500к в месяц зарабатываете?
Да, по бд совсем изи вопросы. Даже про Windows функции не спросили...
@@artemshumeikoесли по нынешнем курсу рубля, то даже чуть больше :)
Но к чести автора, он неплохо отвечал на эти простые вопросы. По сути, только на последний вопрос и не ответил, но что такое дедлок ответ дал абсолютно верный
@@antongerasimov2298 Я не согласен, что автор неплохо отвечал. Если уж придираться, то хорошо он не ответил ни на что:
Правильный запрос написал только после подсказки, правильный запрос для странной архитектуры приложения, когда в orders на несколько порядков меньше записей, чем в promocodes, тоже не написал, только логику сформулировал, cte начал писать с ошибкой, хотя cte тут - просто лишний набор кода, т.к. данные из него будут использоваться только один раз.
Вопрос про низкую селективность индекса сначала не понял вопроса даже.
Ошибся в том, что план запроса выбирает исполнитель, хотя он получает его от оптимизатора, который и переставит местами "b=? and a=?" (Единственный вопрос, по ответу на который можно было отличить джуна в SQL от того, кто сталкивался с оптимизацией запросов)
Не смог просто перевести с английского "consistency" на русский "согласованность"???
Придумал, что нельзя изменить режим изоляции и режимы нужны для определения аномалий. Хотя в конкурентных запросах нет никаких аномалий, и нам важно иметь возможность по-разному обрабатывать конкурентные запросы. А через пару секунд уже утверждает, что режим изоляции таки можно менять.
Решил, что запись в журнал транзакций происходит после записи в таблицу.
Не ответил про оптимистичные и пессимистичные блокировки.
Дедлоки - что-то из разряда страшной магии.
А самое главное, что как только орм начинает генерить чушь, а это случается в 100% проектов чуть больше тех, что может написать один человек, так все эти знания становятся резко нужны, в отличии от send в генератораторе или мультипоточности
@artemshumeiko Нет, я зарабатываю значительно меньше. Мало того скажу, что по собесам я не хожу и, скорее всего, сам бы не понимал половину вопросов и мычал бы в ответ из-за волнения. Прости пожалуйста, но мой коммент выше не связан с твоими ответами, он скорее связан с тем, что у меня подгорает от большинства разрабов, потому что у них сначала "Да знаю я это ваш sql, нафик он не нужен, орм все напишет", а потом им приходится сначала изучать sql, потом изучать orm, а потом сравнивать и удивляться как эта штука могла сгенерить такую фигню. Ведь sql это практически английский и написать на нем запрос иногда даже быстрее, чем заставить сгенерить orm нечто нормально исполняемое движком бд.
Первая задача решена неправильно в корне
Зачем мы читаем файл по словам? Чтобы что? Чтобы не грузить в память кучу данных. А что, если файл из одной строки огромной длины? В чём профит? Нужно считывать файл посимвольно и йилдить, когда натыкаемся на пробельный символ (пробел,
, etc)
А чем многопоточка поможет при CPU bound задачах? Для этого есть мультипроцессорность. Многопоточность нужна для I/O bound задач.
А почему это все далеко от практики?
Где исключения, где их обработка, где их прокидывания, где вообще документация данной функции( аннотация типов не полностью)
такое решение на 1 задание подойдет?
def readfile(filename, num):
count = 0
res = []
with open(filename, 'r') as file:
for line in file:
for i in line.split():
res.append(i)
count += 1
if count == num:
print(' '.join(res))
res.clear()
count = 0
else:
print(' '.join(res))
Здравствуйте, очень понравилось видео, подскажите где можно скачать такой интерпритатор, который вы использовали при собеседовании?
Эм, какой вообще смысл запуск cpu bound задачу через мультипоток если они вообще не дадут буста от однопотока
чтобы текущий поток не блокировать синхронной задачей
@@artemshumeiko так из-за Гила в одном процессе работает один поток, два потока работают лишь конкурентно то есть по очереди, любая цпу задача заблочит процесс
@@МаксимАндреев-я1г я знаю. Речь про маленькие cpu задачки
@@artemshumeiko ну может, но сейчас все равно в 3.13 можно отключать гил и запускать потоки параллельно, смотрел видосы что цпу задача на просчет 1000 значений в цикле даже быстрее мультипроцесинга
@@МаксимАндреев-я1г еще не скоро все библиотеки будут поддерживать этот экспериментальный режим, зато уже в текущий момент понятно что без гил питон станет медленнее в однопотоке, так как его заменят десятки других точечных блокировок
Привет, вопрос по задаче N2:
если запустить функцию вот так
foo(1, hello="world")
foo(1, hello="world")
foo(1, hello="world")
foo(1)
foo(1)
foo(1)
То на этапе когда мы не передаем kwargs кэш не сработает поскольку в кэше будет ключ "1_hello_world", но по идее 1 должна быть в кэше, или я ошибаюсь?
При таком файле
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е слово
а вместо вывода трех значений в последнем запросе он выдаст только одно
@artemshumeiko, добрый день. У меня вопрос по поводу первой задачи. Строки 10-11 разве не нужно поменять местами? Мы ведь по сути чистим список и потом иелдим уже пустой список, что не удовлетворяет условию.
я же указал на это на 11:54 :(
А что можно, нужно поспрашивать если тебя собеседует будущий коллега, в отдел к которому предполагается найм?
Артем, привет! Крутое интервью, очень много для себя узнал полезного, спасибо! А ты не думал податься на работу в Европу/США? Имею опыт прохождения сотни собесов туда, там намного лайтовее спрашивают по хардам, а зп с твоим уровнем будет точно от 7к УСД +
А где в Европе столько платят? В Испании, Италии, Франции, Португалии даже 3000 уже мало где предлагают😅
@@ntm1267 Да везде, собешусь на сеньера, прокачал свой линкедин, HR-ы сами пишут, зп от 5к
@@ntm1267 а как же Германия? Мемная страна: выучим питона и в Германию переедем
Да он зачем снимает ютуб, чтобы со своих курсов лутать больше. Зачем эти США
44:06
Был такой вопрос на собеседовании, тоже не додумался, а ответ такой в итоге сказали: можно обычный .txt файл
В таком случае можно использовать multiprocessing.Pipe(), либо os.pipe(). Таким образом родительский и дочерние процессы могут обмениваться между собой сообщениями в текстовом виде
Ну это джун плюс
Почему собесы на Джуна легче чем такие?!?! 😂😂😂
Вопрос по первой задаче. На 10 строке (words_stack = []). Разве мы не удалим наш стек с подготовленными словами для выдачи и не вернем пустой массив используя yield ? Нет ли тут ошибки?
я же указал на это на 11:54 :(
@@artemshumeiko Пересмотрел, увидел. Первый раз в ускоренном формате смотрел, видимо пропустил этот момент. Спасибо!
Только начал смотреть, но 330к мне на мидл девопса давали
А интервьюер вообще сам шарит? Сложилось такое впечатление что чел просто по бумажке проверяет, видит что решение/ответ похож и все. Про погуглить вообще убило.
так и есть.
А он должен?)
Смешной такой.
Конкретно комментатору, оказывается, интервьюер что-то должен)
@@TeppopucT А тебя не смущает, что это собеседование для приема на работу? Ничего страшного же, если человек который тебя будет брать на работу, будет сравнивать твои ответы с тем, что прописано на бумажке?) А сам он в этом мало что понимает. Я считаю, что должен. Наслышан я про таких эйчаров и собеседующих. Ну я надеюсь у тебя будут такие собеседующие, которые тебя не поймут, или не ответят на твой встречный вопрос. Потом откажут откажут или зпшку предложат в 2 раза ниже, чем ты заслуживаешь. Ну или если ты владелец бизнеса, чтобы у тебя такие собеседужщие были, набрали тебе кого попало. Расскажешь потом кто что должен, а что нет)
@@ЧеркашинДмитрий-н3к Инфантильная позиция. Никто тебе ничего не должен. Так же как и ты. Если иное не подписано.
Хочется сказать что, когда вырастешь поймёшь. Но гарантий нет. Очень много людей считает что им должны вплоть до конца жизни.
@@TeppopucT Тебе самому то сколько лет, дурик?) Хоть на одной работе успел поработать?
А почему автор утверждает, что Django устаревший?
хороший узкий специалист потому что
широта приходит с опытом уже
Ребят, а подскажите, как называется сервис, на котором они одновременно видят код и могут его редактировать?
yandex code
Ну вот кроме задач (были попроще) +- тоже самое спрашивали на позицию бэкэнд джуна !
Вполне возможно
Классно отвечаешь, видны не только хардскиллы, но и умение чётко излагать свои мысли, что встречается крайне редко, особенно у синьеров.
А нельзя подглядывать в яндекс или в свои исходники?
я не умею, приходится все учить :/
Вообще, подглядывать лучше сюда: solvit.space
Почему senior ам не спрашивают про маниторинг asyncio, threads. Как оптимизуруют, как понимают, что нужно оптимизировать, как принимают какую архитекутуру приложения использвать, как работают join ы, планировщик
Мультипоток для cpu, сильно😎😎😎😎😎
эм, ну вообще да)
Для супер небольших задачек может подойти
Это не Jun/Mdl собес, здесь дяди с опытом
@@artemshumeiko можно пример cpu задачи, где питоновские треды помогут?
@@artemshumeiko я так понимаю примера не будет?) Да и ответ аля «ты куда зашел, мальчик, здесь взрослые дяди» не очень то уместен, ибо весь контент, который у Вас на канале нацелен на новичков в основном. Супер сложных вещей для синьоров я не особо наблюдаю
не знаю, братан)) Но, как по мне , ты не на один вопрос не ответил - и это бросается в глаза. Пудрить мозги, применяя различные техники ухода от прямого вопроса на тех интервью - такое себе..Уверен, ты не прошел дальше. А будь вместо этого скромного паренька(год в компании)) матерый технарь - он бы собес закончил минут через 5-7)) Дичь, такое еще и на ютуб выкладывать и байтить. И, да, я не программист от слова совсем. Иная сфера. Но, некомпетентность твоя режет глаза..блогеры, шмогеры...))
от души посмеялся)
Артём, а есть возможность дублировать видео на rutube?У меня провайдер домсру, так вот эти чмони совсем ютубы тормозят, невозможно смотреть.
все продублировано)
Подписывайтесь - rutube.ru/channel/42453487
Кого ещё достало постоянное «ухххумм» интервьюера?🤦♂️
меня)
но потом я тоже проводил один собес, и заметил за собой, что так же делаю :)
И понял, что он не специально так делал
Привет Артем, хотел спросить вас в РФ берут ли на работу удаленно из других стран? у вас есть либо были такие коллеги? на позицию джуниор,
спасибо
А случалось попадать на чистую алгоритм сессию на собесах? кажется, это еще более безосновательно сложная часть в собеседованиях. И если про асинк, мультитред, процессы для себя я нашел причину спрашивать(и считаю не самым критическим),, То зачем мурыжать алгоритмами с литкодовского харда, я вообще не понимаю.
да, я проходил 3 круга ада в Яндекс (успешно кстати), встречался с алгосами в VK и Тиньке
Всегда норм справлялся, так как в свое время нарешал литкода)
Отличный фильтр на те места, где не надо работать
If smth is not None же. Сеньор куев. Инервьюер такой же. Инфоцыганы мать вашу
вам, сидя на диване, конечно виднее)