Реальное ЛАЙВКОДИНГ собеседование JUNIOR Python разработчик

  Рет қаралды 143,025

Артём Шумейко

Артём Шумейко

Күн бұрын

Пікірлер: 297
@artemshumeiko
@artemshumeiko 3 ай бұрын
Приглашаю на мой Практический курс по Backend разработке по всем актуальным технологиям: artemshumeiko.ru
@dorohovrs
@dorohovrs 3 ай бұрын
Забавно устроено, что имея многолетний опыт backend разработки (python, php, java), видя задачки на видео, скорее всего школьной или университетской программы, понимаешь что не прошел собеседование на junior позицию
@ВасильКостриба
@ВасильКостриба 2 ай бұрын
мне кажеться что на таких собесах впервую очередь проверяют твой скилл в технологиях а не задачках.Хотя я не уверен я же не програмист
@JDM239
@JDM239 Ай бұрын
ну таки логично, что для джунов без опыта, и мидлов/сеньоров разные задачки должны быть. Ибо, что с джуна без опыта взять? А сеньор уже и забудет за бесконечными рест крудами всякие институтские задачки
@Rulezzz3
@Rulezzz3 7 ай бұрын
видео придает уверенности, что сеньоры тоже тупят на собеседовании джуна
@set1qs
@set1qs 7 ай бұрын
Он тупил спецом ))
@ЮрийСтифеев
@ЮрийСтифеев 6 ай бұрын
Это не сеньер явно. 3я задача просто уровень джун джун. Хранить 2 массива, целевой и с отсортированными уникальными значениями, любой реально работающий джун это сделает . 2я хосапде, проверка наследования эксепшена. До перемотки видел что там было if т.е, что произойдет если туда в параметр, а как я понял это массив, передадут 3е или n значение?). Первую ничерта не понял, но видимо потому что питон вижу 1й раз. Мне жаль рынок ИТ если такие менторят людей в интернете и их слушают. Теперь понятно почему хр не могут найти людей
@alexla_grange8957
@alexla_grange8957 6 ай бұрын
Это ж из разных сказок джин и сеньор Помидор
@alexander_gk
@alexander_gk 5 ай бұрын
@@Rulezzz3 это канал просто принадлежит недосеньору. Нормальный сеньор на собесе не тупит.
@ВитяСлавинский
@ВитяСлавинский 3 ай бұрын
причем конкретно :))))
@dimierlife
@dimierlife 6 ай бұрын
Если это JUNIOR то у меня знания zero.
@1200eojf
@1200eojf 6 ай бұрын
Ну я бы за 20 минут решил бы задачу, в принципе надо понять задачу
@funtickgd9502
@funtickgd9502 6 ай бұрын
За 2 месяца этого лета у меня прогресс, я решил 1 задачу...
@JesusAVGNarezki
@JesusAVGNarezki 5 ай бұрын
Нормально если ты не изучал каждый день по 8 часов​@@funtickgd9502
@uvwzyx
@uvwzyx 5 ай бұрын
и таких, как ты, 99% в откликах
@dimierlife
@dimierlife 4 ай бұрын
@@uvwzyx Каких в откликах?
@gradkb
@gradkb 6 ай бұрын
задача с минимальным элементом в стэке - огонь)
@dima_upgrade1720
@dima_upgrade1720 6 ай бұрын
Спасибо за ваш контент! Очень познавательно и полезно! Продолжайте в том же духе!
@SegeyKravtsov
@SegeyKravtsov 4 ай бұрын
🎯 Key points for quick navigation: [00:52] 🛠️ Нехватка типизации и неясность роли предиката, который выглядит как функция из-за своего вызова позднее. [01:19] ⚠️ Некорректное использование изменяемого объекта в качестве значения по умолчанию для аргумента функции. [01:45] 💡 Удаление избыточных строк и оптимизация конструкции для создания объектов. [02:31] 🤔 Функция фильтрует массив объектов, возвращая первый подходящий элемент. [04:04] ⚡️ Оптимизация функции для завершения работы при нахождении первого подходящего элемента. [05:03] 💡 При вызове функции со списком объектов, функция будет возвращать объект, соответствующий первому элементу списка, или None, если подходящего элемента нет. [06:35] 📝 Худшая временная сложность функции O(N), где N - количество элементов в массиве, а лучшая - O(1), если подходящий элемент находится в начале массива. [07:02] 🤖 Длина выполнения алгоритма равна длине N списка. [07:17] 🌟 Задача на собеседовании была легкой, но потребовались подсказки интервьюера. [07:31] 🎁 Получите шпаргалку по алгоритмической сложности в Telegram-канале. [08:11] 🌐 Платформа Solvit поможет вам подготовиться к техническим собеседованиям. [08:55] 🚀 Обязательно пройдите по ссылке в описании и воспользуйтесь платформой Solvit. [09:08] 👨‍💻 Задача на собеседовании: написать декоратор с параметрами. [10:38] 📝 Функция, принимающая аргументы функции, может использовать ключевое слово args. [12:58] 🤔 Если вы не знаете, как ответить на вопрос, попробуйте начать писать код и решение придет к вам по ходу дела. [13:43] 🤖 Exception в Python может быть от базового класса Object [14:17] 💡 Чтобы обработать исключения, можно использовать конструкцию try...except [14:48] 👀 Для отладки удобно использовать декоратор из функции logging.debug() [16:05] 📝 Сложная задача на проектирование класса, требующего оптимизации алгоритмов [16:45] 📘 Написание класса с методами push, pop, top и getMin за O(1) [17:20] 🤔 Для поиска минимального элемента нужно хранить отдельную переменную и обновлять ее при каждом push [18:18] 💡 Для поиска минимального элемента можно использовать дополнительную переменную, хранящую второе минимальное значение [19:56] 💡 При удалении элемента нужно пересчитать минимальное значение [22:15] 🤔 Для хранения минимального значения одной переменной недостаточно [22:45] 📝 Для обновления минимального значения нужно найти максимальное из двух значений [25:10] 🗣️ Не бойтесь делиться своими мыслями, даже если они ошибочные. Открытость и готовность работать в команде очень важны. [26:01] ⚡️ Стек может быть использован для реализации работы с неограниченным количеством переменных. [27:43] 📈 Возрастающая последовательность чисел может быть использована для создания структуры данных, где новое число добавляется только если оно меньше предыдущего. [28:36] 💪 При удалении элемента из возрастающей последовательности можно не учитывать элементы, которые больше или равны удаляемому. [29:12] 🔄 Элементы в последовательности могут повторяться, что следует учитывать при реализации структуры данных. [30:08] 📝 Для реализации стека можно использовать массив с последним элементом, который будет соответствовать минимальному значению. [32:10] 🗣️ Задавать грамотные вопросы интервьюеру также важно, как и решать задачи. Это показывает вашу заинтересованность и адекватность. Made with HARPA AI
@makeyt5549
@makeyt5549 11 сағат бұрын
3 задачу думаю можно было решить через Linkedlist, для стэка другой линкедлист, а для минов другой
@gradkb
@gradkb 6 ай бұрын
омг) главный скилл на собесах это внимательно слушать вопросы и стараться отвечать именно на них
@АндрейКапацйна
@АндрейКапацйна 3 ай бұрын
Какой джун ? Серьезно ? Хорошо давай задачу для мидл. Я считаю что на позицию джун одолжен быть один вопрос готов ли ты уволится через месяц если не справиться. Все какие задачи и лайвкодинг . Понятно что пару вопросов надо задать чтоб понять в теме человек или нет .
@Taron8117
@Taron8117 29 күн бұрын
На мидл нет задачек спрашивают что ты делал на прошлой работе, что такое солид и тд 😂😂
@hunya_k
@hunya_k 23 күн бұрын
Это вопрос для стажера, а джуну надо бы уже что-то из себя представлять
@ts.kdv.raz0r
@ts.kdv.raz0r 2 ай бұрын
Третья задача проще декоратора с параметрами эксепшенов. Это же классическая реализация стека.)
@alexsur7315
@alexsur7315 6 ай бұрын
Отлично. Спасибо за собеседование. Покажешь на Ютубе ещё одно с лайв кодингом?
@rock4ts
@rock4ts 7 ай бұрын
это какой-то новый уровень троллинга)
@TheWorld-hs1hf
@TheWorld-hs1hf 5 ай бұрын
Почему? Слишком просто для джуниора? Если да, то зачем джуниору знать больше?
@knowledgedose1956
@knowledgedose1956 4 ай бұрын
​@@TheWorld-hs1hf 😂😂😂😂😂
@AirenikMelkonyan
@AirenikMelkonyan 7 ай бұрын
Object в Питоне же зарезервированно, и можно было бы сказать, что не корректно использовать такое название. 😊
@ogone4ek880
@ogone4ek880 7 ай бұрын
то что что то существует в пайтоне - не значит, что оно зарезервировано object - не зарезервировано, но объект с таким именем существует, но назвать переменную так можно in, for, class, def, async, await, return, and, or - зарезервированны, такими именами не получится назвать переменные
@intruder70
@intruder70 6 ай бұрын
зарезервирован object, но не Object
@cherimolah9493
@cherimolah9493 6 ай бұрын
@@ogone4ek880 да, но это считается плохой практикой
@unnme2721
@unnme2721 5 ай бұрын
@@ogone4ek880 Если вы используете object как имя переменной, вы затрудняете доступ к встроенному классу object в текущем контексте. Это может привести к путанице и ошибкам, особенно если ваш код зависит от базового функционала этого класса. Это фундаментальная штука и в коде она была неспроста. Основа основ ООП.
@ogone4ek880
@ogone4ek880 5 ай бұрын
@@unnme2721 и че, я сказал что это незарезервированное имя, а не то что можно свободно так переменные называть
@gpankov
@gpankov 9 күн бұрын
Очень интересно
@funtickgd9502
@funtickgd9502 6 ай бұрын
2 месяца лета не зря... 1 задачу я решил, на второй запутался, но по ходу событий понял, что надо было сделать, а в 3 я сразу понял, что надо было сделать, да и сделал
@TheWorld-hs1hf
@TheWorld-hs1hf 5 ай бұрын
С нуля за два месяца?
@dllb
@dllb 4 ай бұрын
Где учился????
@funtickgd9502
@funtickgd9502 4 ай бұрын
@@dllb сам по книгам, примерами алгоритмов, литкоду. Мне на курсах только базу синтаксиса дали
@dllb
@dllb 4 ай бұрын
@@funtickgd9502 а какие курсы и книги использовал?
@ВадимЕлисеев-ц8э
@ВадимЕлисеев-ц8э 4 ай бұрын
​@@funtickgd9502 Помоги, пожалуйста. Вот тоже из скачанных курсов получил базу, но а щас я хз, че мне делать.. Хочу на веб-разраба пойти и по идее до изучения самого django нужно просто решать задачи и так далее, но я вообще не понимаю, где можно было бы подчеркнуть действительно важные и полезные знания ,а где практикой их закрепить.
@julesbois2122
@julesbois2122 2 ай бұрын
16:00 в строке 62 мы вызываем коллбек с помощью ex[1](). Это сработает, если у всех коллбеков нет аргументов. Но в предложенном задании у них разные сигнатуры: у коллбека bar() нет аргументов, а у коллбека lambda есть - '_'. Не уверен, но кажется, чтобы это работало, надо перед вызовом коллбека определять, какая у него сигнатура и вызывать его с ожидаемым количеством аргументов. IMO. P.S.: или исправить кортеж с анонимной функцией, чтобы она тоже была без параметров (IndexError, lambda : print(2))
@DavidBitiev.2000
@DavidBitiev.2000 3 ай бұрын
Были идеи по решению, но дайти до результата было сложно👍👍👍
@zarddark2440
@zarddark2440 6 ай бұрын
Первая легко, третья легчайше для олимпиадника, просто дефолтный стек с префиксным минимумом. А для второй нужно синтаксис подучить
@krosh8982
@krosh8982 4 ай бұрын
Да тут ЕГЭ уровень
@arturio10
@arturio10 Ай бұрын
Эта (3) задача взята с литкода и вроде MinStack называется чтоли,. В целом она достаточно простая, если проблема с push, pop и top достаточно просто решается на уровне обычного списка, то для getMin с временной сложность за O(1) нужно при каждом push добавлять минимум, то есть если предыдущего значения минимум меньше вставляемого значения, то вместе с ним и сохраняем, если новый элемент меньше текущего, то добавляем само число и дополнительно число, обозначающее текущий минимум, относительно него дальше и будут добавляться элементы. Так мы гарантируем, что при вызове pop (удаление элемента) следующий перед ним будет хранить свой минимум.
@PetrovDS
@PetrovDS 12 күн бұрын
В последней задаче стек будет некорректно себя вести, если добавлять туда 5 2 2 1 3. Тут получится так, что после трёх вызовов stack.pop() в стеке останется 5 и 2, а в self.min_nums только 5, т.к. 2 была удалена оттуда в третьем вызове stack.pop(). Я бы в init написал self.min_nums = [inf], в push: self.min_nums.append(min(num, self.min_nums[-1])), а в pop добавил бы вызов self.min_nums.pop() без присваивания чему-либо P.S. Я пропустил часть видео с тем как ты решал, мб там интервьюер сказал, что в стеке не могут быть одинаковые числа. Если так, то твой код корректен, да
@Не_Илья
@Не_Илья 8 сағат бұрын
Он поменя на меньше равно, поэтому в списке минимумов будет 2 двойки, своеобразная реализация, но работает
@паукшнюк-г8ъ
@паукшнюк-г8ъ 6 ай бұрын
это куда такие собесы? очень хотелось бы
@izey__
@izey__ Ай бұрын
думаю здесь нужно было использовать бинарный поиск так как если у нас нужно цифра или число будет находиться в самом конце то программа будет каждый элемент перебирать
@spi4caru950
@spi4caru950 16 күн бұрын
Эти задачи по-моему относятся к джунам и ближе к мидлам, да к тому-же вторая задача чуть посложнее чем третья.
@_english_9025
@_english_9025 2 ай бұрын
Раньше когда слушал других программистов думал, что не дотягиваю даже до +- уровня стажёра, а после просмотра видео понимаю, что я уже сижу на нем точно, а возможно даже ещё годик другой практики и буду Джуном
@нрраголлдьщщ
@нрраголлдьщщ Ай бұрын
2:42 неа, это же set, а не list, тут вобще нет номеров, эта функция выводит элемент 0 из множества
@asyncio_run
@asyncio_run 2 ай бұрын
Я себя отношу к джуну… Ибо изучаю сам все и только лишь полгода))) но эти задачки я бы решил немного по-другому, но в целом контент прикольный) Спасибо))) А декораторы, это очень полезная и хорошая штука!
@Hamsters_Rage
@Hamsters_Rage 25 күн бұрын
список ексепшинов у чатагпт спрашиваешь? )
@xximde
@xximde 12 күн бұрын
самая жесть в первой задаче - это переопределенный object 😀
@relyawang
@relyawang 3 ай бұрын
Третья задача это 155 с литкода, не? Кстати, что лучше на собесе делать если встретил задачу к которой знаешь решение? Прикинутся что видишь её в первый раз или признаться что знаешь?
@artemshumeiko
@artemshumeiko 3 ай бұрын
Конечно прикинуться, что не знаешь)
@billykid8678
@billykid8678 3 ай бұрын
Решение у задачи 3 сломается. Например, если запушить 323, а потом достать два последних элемента. В стеке останется 3, а список мин элементов будет пустой. Решение: вместо двух массивов сделать один двумерный. При каждом push в него будет добавляться: [добавленный элемент,мин элемент на момент добавления]
@HeppygroupDifermen
@HeppygroupDifermen 3 ай бұрын
Почему список останется пустой? При пуше первой тройки в него добавится тройка по условию not mins, потом при втором пуше добавится двойка т.к она меньше последнего элемента списка т.е тройки которую мы добавили. При пуше последней тройки в список ниче не добавится. В итоге в стеке 323 а в списке 32. Первый пуп удаляет тройку из стека и ниче не удаляет из списка, второй удаляет двойку везде, третий удаляет двойку везде. Все ок
@HeppygroupDifermen
@HeppygroupDifermen 3 ай бұрын
Ну а с двумерным впринципе тоже думаю будет работать
@billykid8678
@billykid8678 3 ай бұрын
@@HeppygroupDifermen да, моя ошибка, на 323 сработает. Но на 222 все же сломается. А на 322 будет неверный ответ
@ВасильКостриба
@ВасильКостриба 2 ай бұрын
@@billykid8678 там он потом исправил код и при 222 список min тоже будет 222
@irondanil3461
@irondanil3461 4 ай бұрын
Спасибо тебе большое, бро. Ты делаешь глупых людей как я чуточку умнее.
@illia4503
@illia4503 4 ай бұрын
3:09 Всегда хочеться треснуть чем-то тяжелым тех кто в одну строку пишет много операторов, как это в строке 2 и 9. Код в первую очередь должен быть визуально легко читаем, потому что читаем код мы чаще чем пишем, экономия количества строк не дает преймуществ, кроме демонтрации умственных отклонений автора подобного кода.
@grayboy
@grayboy Ай бұрын
Во второй строчке списковое включение должно быть, и оно эффективнее чем через простой цикл for. Да, согласен, он загруженный, но это типо норм на питоне, если дальше загружать это списковое включение, то тогда уже реально перемудрено. В 9 строчке вообще не понятно что тебе не нравится? То что скобочки не открыли? lambda? Элементы списка отдельно не написали? Предполагаю это сделано, чтобы не занимать много времени
@droidnah
@droidnah 2 ай бұрын
Интересное видео. Я (пытаюсь) писать игры и программы на Годот и там язык в некотором роде схож с питоном, но захотелось глянуть что тут. Половину слов и понятий не знаю, поэтому хотелось бы задать вопрос по последней задаче. Если нужен минимальный элемент массива, то зачем создавать массив из предыдущих его значений? И что значит "за постоянное время"? В решении не заметил какого-либо уравнённого значения скорости выполнения функций 🤔
@ЯнПацюпа
@ЯнПацюпа 2 ай бұрын
Постоянное время - оно же константное, оно же O(1). Что бы нормально это понять лучше почитать простую книжку по алгоритмам. Можно начать с "Грокаем алгоритмы". Конкретно здесь: Если не было бы ограничения на постоянное время, get_min() мог бы просто возвращать встроенную min(self.stack), а она работает за линейное время. Если написать свою реализацию min, то это сразу видно: чтобы найти минимальный элемент придётся перебрать все элементы, то есть в худшем случае минимальный элемент будет последним, и в среднем время поиска линейно зависит от длины последовательности. В отличии от операций push, pop, top: когда мы в конец просто добавляем / удаляем элемент, это не зависит от размера последовательности (на самом деле там есть подводные камни про перевыделение памяти при увеличении размера). В реализации за постоянное время и есть смысл задачи. Артем сразу это упоминает на 18:01.
@droidnah
@droidnah 2 ай бұрын
​​​@@ЯнПацюпа Спасибо, вроде бы понял. А что даёт -1 в номере индекса элемента массива? (Или это не оно?) Я так понимаю последнее значение переменной из массива, да?
@ЯнПацюпа
@ЯнПацюпа 2 ай бұрын
@@droidnah Да, это последний элемент. Это стандартный способ в Python, он поддерживает отрицательные индексы, можно вообще посмотреть на срезы - они очень удобные)
@droidnah
@droidnah 2 ай бұрын
@@ЯнПацюпа спасибо большое за ответы, теперь догнал суть 😁
@ЯнПацюпа
@ЯнПацюпа 2 ай бұрын
@@droidnah Рад слышать. Вообще если есть желание поплотнее посмотреть на Python, можно для этого взять книжку Эрик Мэтиз. Изучаем Python. Программирование игр, визуализация данных, веб-приложения (Eric Matthes. Python Crash Course). Там как раз первый проект второй части - это игра на pygame (первая часть - основы Python), правда алгоритмов там нет
@IvaNFallout
@IvaNFallout 7 ай бұрын
Один из вариантов решения первой задачи: def get_first_matching_object(predicate, objects): return next((x for x in objects if predicate(x)), None)
@SabFo_
@SabFo_ 7 ай бұрын
Да проще filter использовать
@maximkoltsov9833
@maximkoltsov9833 7 ай бұрын
@@SabFo_ лист компрехеншен выполняется быстрее
@saitaro
@saitaro 6 ай бұрын
@@maximkoltsov9833 Лист компрехеншен создаст список, пройдясь по всем объектам. Это избыточно, как по памяти, так и по времени.
@maximkoltsov9833
@maximkoltsov9833 6 ай бұрын
@@saitaro ладно, согласен, ошибся
@QKekos
@QKekos 6 ай бұрын
@@saitaro круглые скобки это не лист компрехеншен а генератор эскпрешн, ленивые вычисления, некст один раз выполнится да и все, дальше эвальюейтится ничего не будет(но понятное дело, что само условие будет проверяться для каждого элемента до первого трушного)
@artemkashipov9865
@artemkashipov9865 3 ай бұрын
вообще pop из-за структуры данных лист, не будет работать. так как лист требует сдвига, это медленно. и top тоже кстати будет медленный иногда из за переаллокации нужно создавать всего три связных списка, один чтобы работал pop а другой чтобы работал top только недавно увидел аналогичную задачу про это) изначально офигевал как можно такое сделать. задача была - что то про нахождения минимальной суммы для каждой подстроки в K элементов в массиве аналогичным образом делается
@oxfaaaaa9687
@oxfaaaaa9687 2 ай бұрын
Не понял момент с худшей O(1) и лучшей O(n). Откуда вдруг взялось две сложности?
@Toksi86
@Toksi86 2 ай бұрын
Всегда ориентироваться надо на худшую сложность, сложность в худшем случае. Но есть вариации, когда получится лучше, чем мы ожидали. Отсюда худшая и лучшая сложности, все зависит от поступающих данных.
@АртемРазумов-щ9г
@АртемРазумов-щ9г 5 ай бұрын
Так много комментариев, что задачи легчащие и не тянут даже на стажера и так мало комментариев, что третья задача решена не верно, точнее не для всех случаев) Видимо эти комментаторы только во сне разработчики)
@rawil6751
@rawil6751 5 ай бұрын
Я вот заметил, но правильное решение за константное время так и не придумал. Интересно, а на собесе это заметили или нет?
@АзаматКостоев-ы1н
@АзаматКостоев-ы1н 2 ай бұрын
Может написал бы сначала для каких случаев это будет неправильно прежде чем пизд*ть?
@Dw3mwtf
@Dw3mwtf 2 ай бұрын
Оскорбительно у людей такое спрашивать. Данная задача решается за 20-40 секунд ( с учётом написание кода ) Я считаю на такой вакансии куда важней понять есть у человека инженерное мышление. Может ли он понять что написанно в коде и его знание английского языка.
@abaahi
@abaahi 4 ай бұрын
Для меня сложно было второе. В третьем сразу понял что нужно параллельно сортированный список создавать при инициализации и добавлять в нужное место новый при пуше
@enzopaupau2302
@enzopaupau2302 4 ай бұрын
Не могу не спросить)) а что за тема редактора которым они шеряться? Monokai чуть другой, этот приятнее
@rotsaatkrahe7178
@rotsaatkrahe7178 5 ай бұрын
Я немного не понял, но получается что в min_nums будут добавляться не все числа? разве за этим не последует ситуация когда get_min даст неверное значение, вроде 4 5 1 1, список минимумов заполнится единицами, а когда их обе вытолкнут, то get_min ничего не вернет?
@Marlo-Smile
@Marlo-Smile 3 ай бұрын
Я тоже запутался но потом понял что здесь в стек числа добавляются с права и убираются справа. В этом случае если число не добавляется в min_nums то оно там и не нужно, ведь его удалят прежде чем справа останется минимальное число)
@anton6643
@anton6643 2 ай бұрын
​@@Marlo-Smileерунда
@Marlo-Smile
@Marlo-Smile 2 ай бұрын
@@anton6643 Поясни
@xtray272
@xtray272 7 ай бұрын
Я почему то думал что Джунам сложнее вопросы задают, я знаю почти всё что было на собесе из видео, но я до сих пор не нашел работу, может я что-то делаю не так. Хотя у меня и собеса никогда не было :). Видео придало мне уверенности в своих знаниях, надеюсь скоро найду работу
@symbol9new
@symbol9new 7 ай бұрын
Сколько учишься уже?
@gggppp228
@gggppp228 7 ай бұрын
А на какое количество вакансий ты отправлял резюме? Сейчас на джунов высокая конкуренция, поэтому надо просто часами сидеть на сервисах поиска работы и закидывать своё резюме везде где можешь
@СтепанВоробьев-л2р
@СтепанВоробьев-л2р 5 ай бұрын
так это база, тут ничего трудного нет
@UserSo4reUsu75ry
@UserSo4reUsu75ry 4 ай бұрын
​​​​@@gggppp228какие шансы джуну устроится на удаленку ?
@user-lh9nk1vm8u
@user-lh9nk1vm8u 7 ай бұрын
Пару комментов: задача 2. 1. Полагаю не стоит использовать isinstance, т.к. есть риск получить проблемы с наследованием при расширении списка передаваемых эксепшенов (например, передали еще LookupError, lambda: print(3)) и получили не ожидаемое поведение). type проверит на точное совпадение. 2. Вызов ex[1]() производится без параметров, что в случае IndexError("bar") выбросит missing required positional argument. Полагаю, это проблема постановки задачи и некоторой не внимательности при выполнении. 3. raise e стоит вынести из условия, иначе ломается логика, если выбрасывается эксепшн не переданный в списке. задача 3. 1. Использование list говорит, что у нас О(1) будет не совсем честная. Если докапываться, то какой-нибудь связный список - самое то. 2. Для второго списка за счет чуть большего количества памяти можно поддерживать более простую логику (храним список минимумов). def push(self, num: int) -> None: self.stack.append(num) self.min_nums.append(min(lst[-1] if lst else num, num)) def pop() -> int: self.min_nums.pop() return self.stack.pop()
@sergey6661313
@sergey6661313 5 ай бұрын
на 12:09 копирует и спрашивает у нейросети :)
@astimch
@astimch 6 ай бұрын
Первые две задачи без комментариев - там ничего сложного. 3-я задача встречалась в нескольких курсах по алгоритмам и структурам данных, поэтому если знаешь, то реализовать ее тоже не составляет большого труда.
@kqvwvpk
@kqvwvpk 7 ай бұрын
Вы реально не знали ответ на эти задачи будучи синьором? Или спецом тупили чтобы не спалил интервьюер? Если первое, то получается такие сложные вопросы или вы не такой хороший синьор?! И как проходить такие собесы челам без опыта?!
@anoshin45
@anoshin45 7 ай бұрын
В маленькой компании синьором можно стать имея год опыта.
@PeterSidoroff
@PeterSidoroff 6 ай бұрын
По поводу "И как проходить такие собесы челам без опыта?!" - А как проходят собеседования для FANGа ? Есть разные видоскики на Ютубе, где люди рассказывают как они по много месяцев прорешивали задачи на LeetCode + там же можно изучать чужие решения. Через год такой практики вы тоже сможете быстро находить решения под такие задачки на собесах - в подсознании уже накопятся типовые алгоритмические решения.
@vor6758
@vor6758 6 ай бұрын
​@@PeterSidoroff, целый год тратить на алгосы) звучит жестко
@gradkb
@gradkb 6 ай бұрын
@@vor6758 в гугл по алгосам чтоб попасть надо их лет пять на олимпиадах применять, в среднем :-)
@dansky_music
@dansky_music 2 ай бұрын
@@vor6758кто-то всю жизнь на них тратит :)
@nadyamoscow2461
@nadyamoscow2461 3 ай бұрын
Очевидно, про принцип kiss в этой конторе не слышали.
@gradkb
@gradkb 6 ай бұрын
в первой задаче не нужно разделять худший/лучший случай, строго говоря - твой ответ некорректный, правильный - просто О(N), но для джуна норм
@dmoroz0v
@dmoroz0v 6 ай бұрын
можно бригаду. это спецом сеньор так тупит? или реально? или постановка?
@lesbian_economy
@lesbian_economy 4 ай бұрын
Смотря для кого. Олимпиадник с такими задачами на изи справится, сеньер, у которого последние 5 лет было решение реальных задач, а не этого бреда, будет закономерно тупить.
@АзаматКостоев-ы1н
@АзаматКостоев-ы1н 2 ай бұрын
Это фейковый сеньор
@Kalyancheg
@Kalyancheg 3 ай бұрын
Подскажите, я пайтон больше года не ковырял, в 3 задаче почему просто по стеку нельзя get min пробежаться? Долго?
@artemshumeiko
@artemshumeiko 3 ай бұрын
Да, долго. Получится O(n), а нужно O(1)
@Kalyancheg
@Kalyancheg 3 ай бұрын
@@artemshumeiko да, алгоритмы я так и не понял тогда Спс
@tegeranchikrus4389
@tegeranchikrus4389 4 ай бұрын
Ну я честно не понимаю две вещи: 1. Каким образом человек которого заявляют как сеньора так долго (и так плохо) решал эти задачи 2. Почему после такого собеса человека (судя по заявлениям в видео) взяли, это же даже не уровень стажера
@artemshumeiko
@artemshumeiko 3 ай бұрын
Вам виднее, наверняка 500к зарабатываете?
@tegeranchikrus4389
@tegeranchikrus4389 3 ай бұрын
@@artemshumeiko меньше, врать не буду. Но с таким уровнем прохождения алго-задач даже на стажировки в биг тех не берут, там банально развернут на первом этапе. Я понимаю что алгосы это не то что показывает уровень разработчика, но если бы собеседующие так считали - зачем они бы дали вообще эту задачу, да еще и в конце (в конце дают задачи посложнее обычно)
@tegeranchikrus4389
@tegeranchikrus4389 3 ай бұрын
Кстати в защиту собеседуемого стоит заметить что с декоратором вроде быстро все получилось, мое почтение
@andrewlim2410
@andrewlim2410 2 ай бұрын
@@tegeranchikrus4389 Бро забей, автор канала очередной инфоцыган, который вместо импрува своих хард скиллов, выбрал дорогу продажи платных курсов и развития канала (это и не плохо и не хорошо, бабки есть бабки). Но очев видно, что чел максимум мид (ито не в каждом даже российском бигтехе). Алгосы с собеса на видео реально самые базированные, буквально литкод грид 75. И можно долго с пеной у рта доказывать, что алгоритмы - это не про грейд, но когда ты не знаешь как работает трейсбек в языке, в котором ты себя называешь сеньором, это нонсенс. Еще насмешило, что автор канала не выдержал критики с твоей стороны и сразу затронул тему с зарплатой, а ведь это говорит о том, что поцанчик то оказывается - полный мудак, раз мерит достижения и компетенцию людей по зарплате. Ам сори за бурный конец.
@novorec128
@novorec128 7 күн бұрын
Вот смотрю уже 3-го блогера и понимаю, что питон они совершенно не понимают. Предлагаю на такие задачи строить блок схемы, чтобы понимать зачем это все и какой результат нужно.
@otekkvinke
@otekkvinke 2 ай бұрын
А точно ли у джуна нужно спрашивать алгоритмическую сложность? Это точно вопрос по грейду? А? а? А?
@aeternaar
@aeternaar 6 ай бұрын
Никто не написал про ваш сайт - отличный инструмент для подготовки к собеседованию! Подольше бы он оставался бесплатным!
@ИннаЛиксакова-о4н
@ИннаЛиксакова-о4н 6 ай бұрын
в защиту автора видео хочу сказать, что на собеседовании очень сильный стресс и даже такие легкие задачи как первая могут вогнать в ступор, так как очень много нервов мешает думать. Это надо прокачивать скилл прохождения собеседований, чтобы на них не переживать
@mrveles
@mrveles 6 ай бұрын
Очень хорошее видео, прям как гора с плеч.
@no101vmv
@no101vmv 2 ай бұрын
Ты же сеньор как можно было так на первом затупить с возвращаемым значением)
@MrHumanLock
@MrHumanLock 19 күн бұрын
Да вряд ли Сениор, если вообще работал в индустрии хз
@UserSo4reUsu75ry
@UserSo4reUsu75ry 4 ай бұрын
У меня только на одну задачу ушло бы 30-40 минут. Сколько бы я не нарешивал эти задачи, я не могу решать их быстро
@вапвапвавава
@вапвапвавава 17 күн бұрын
Это нормально. Вы тупой просто. Я тоже тупой. Поэтому работаю руками,а не головой
@ghoul4225
@ghoul4225 2 ай бұрын
3 задача частно на кружках для ол програмирование встречаеться
@КотовДанил-с8б
@КотовДанил-с8б 7 ай бұрын
Почему 3 задача проще 2?
@ГазинурРысмухаметов
@ГазинурРысмухаметов 5 ай бұрын
3 задача решена неверно)
@YGNETATEL_3000
@YGNETATEL_3000 6 ай бұрын
А нельзя было написать Filter(predicate, object) ?
@saitaro
@saitaro 6 ай бұрын
И что делать потом с этим фильтром?
@vladgusakov3328
@vladgusakov3328 6 ай бұрын
@@saitaro что-то аля try next(objects) except StopIteration
@imdmotcm8953
@imdmotcm8953 5 ай бұрын
Если это Senior то в отличие от Джуна воспользуется chat gpt
@SaintVes
@SaintVes 7 ай бұрын
Не знаю ответ ни на одну задачу. Учусь питону уже второй день. Я тупой, надо бросать?
@alexeynesin483
@alexeynesin483 7 ай бұрын
Ахах, за 22 дня ты не сможешь этот собес пройти. Это серьзная работа, нужно много времени потратить, чтобы научиться.
@digitaIdevil
@digitaIdevil 7 ай бұрын
Бросай
@SaintVes
@SaintVes 7 ай бұрын
@@digitaIdevil хорошо, пошёл бросать
@h3ckphy246
@h3ckphy246 6 ай бұрын
@@SaintVes 🤣🤣
@kornalexandr
@kornalexandr 4 ай бұрын
​@@SaintVesскажи, куда бросил? Просто так спрашиваю
@qulinxao
@qulinxao 7 ай бұрын
"One Stack (stack of pair value,minvalue):" def pop(O):return O.s.pop()[0] $$$ def top(O):return O.s[-1][0] $$$ def get_min(O):return O.s[-1][1] $$$ def __init__(O): O.s=[(float('inf'),float('inf'))] $$$ def push(O,v): O.s.append(v,min(v,O.get_min()) # храним в стеке сами значения и его текущий минимум
@daniyarkhabibulin1696
@daniyarkhabibulin1696 4 ай бұрын
Честный отзыв! Если честно не тянешь на senior разработка очень слабо, на middle специалиста еще можно !
@ruslankrivoshein2893
@ruslankrivoshein2893 4 ай бұрын
Сеньор - это не про классное решение алгоритмических задач с собеседования
@Nickek-g5k
@Nickek-g5k 5 ай бұрын
Блин даже первая задача вызвала звон в голове... Прорвемся, готовимся дальше)))
@incios
@incios 5 ай бұрын
Знания АСД помогли решить третью задачу в первые 4 секунды после ее прочтения
@knowledgedose1956
@knowledgedose1956 4 ай бұрын
что это?
@incios
@incios 4 ай бұрын
@@knowledgedose1956 алгоритмы и структуры данных
@hitomi-b1h
@hitomi-b1h 4 ай бұрын
​@@knowledgedose1956 Абстрактно синтаксическое дерево, полагаю
@hiften4659
@hiften4659 3 ай бұрын
​@@knowledgedose1956дисциплина "алгоритмы и структуры данных"
@dangerbenens
@dangerbenens 3 ай бұрын
Помоему в первой задаче можно было сделать бинарный поиск
@dru_i_d
@dru_i_d 3 ай бұрын
Не имея опыта работы с decorator, 3ье задание показалось намного проще)))
@yauhent671
@yauhent671 5 ай бұрын
каждый раз искать минимум массива?
@alexbalgor9142
@alexbalgor9142 3 ай бұрын
Все что я увидел в коде это ?????? ?????? ?????? ????? .)) вот сижу и думаю а стоит вообще начинать если я не разбираюсь в этом вообще от слова совсем ) и с чего начать_)
@besckvitek6858
@besckvitek6858 15 күн бұрын
Сначала просто нужно выучить синтаксис языка чтобы понять что это все такое и как этим всем пользоваться. пользоваться
@Volodya72
@Volodya72 7 ай бұрын
Push все равно кривой получился. Если до конца списка делать pop, то с какого-то момента не будет значений из упорядоченного списка. Всё из за условия добавления
@ГеоргийЛухтура-в8м
@ГеоргийЛухтура-в8м 7 ай бұрын
Для этого есть условие в pop: if res == self.min_nums[-1]
@PeterSidoroff
@PeterSidoroff 6 ай бұрын
Нет, там правильно. В push-е стоит условие на пустой массив мин.чисел и на возможное совпадение с текущим мин.числом (
@QKekos
@QKekos 6 ай бұрын
@@PeterSidoroff там фича в том, что добавление в упорядоченный массив у тебя происходит только при пуше меньшего элемента, т.е. push(1), push(2), push(3), pop() -> 1, pop() -> None т.к. 2 и 3 тупо не добавлялись, оба гения сидят(как сделать пуш за О(1) если там придется по нормальному по всему массиву проходиться чтобы его в нужное место воткнуть не представляю)
@Trezvy_Papa
@Trezvy_Papa 5 ай бұрын
@@QKekos в вашем случае при вызове pop() удалится 3, потом 2. А 1 так и будет минимальным числом в стеке.
@Septman
@Septman 5 ай бұрын
По голосу интервьювера, ему лет 17-19, если это так, мне значит немного стыдно 😢
@artemshumeiko
@artemshumeiko 5 ай бұрын
Не, точно больше
@Sila_v_pravde123
@Sila_v_pravde123 4 ай бұрын
Так , все, иду работать в пятерочку . Чему я научился за месяц хз.
@yanalsheuski263
@yanalsheuski263 3 ай бұрын
третья задача развалится, когда в список залетят два одинаковых числа и оба будут минимальными
@izobretate
@izobretate 2 ай бұрын
Нет, так как там при пуше "меньше либо равно" оба числа добавятся в стек минимумов, при попе так же будут выниматься.
@asadbekimaraliev7561
@asadbekimaraliev7561 6 ай бұрын
Молодец, ты конечно достоин
@sowar6867
@sowar6867 29 күн бұрын
У того кто введет собес голос не слишком грубый и это привело к мыслям про прикол о 14 летних сениорах 😂
@qulinxao
@qulinxao 7 ай бұрын
эээ а не проще ли через словарь созданный из типов исключений и обработчиков - хватем исключение e и проверяем функцией из первого задания if match:=get_first_matching_object(pred=lambda x:x in ourdict,[type(e)]+list(type(e).__bases__)):match() raise e?
@saitaro
@saitaro 6 ай бұрын
Читаемость огонь.
@Сергей-ф2ъ7я
@Сергей-ф2ъ7я Ай бұрын
блин, поставил на паузу. потратил час на вторую задачку. и это в VSCode
@Сергей-ф2ъ7я
@Сергей-ф2ъ7я Ай бұрын
да, и про @wraps не знал
@АндрейПопов-н2г2м
@АндрейПопов-н2г2м 7 ай бұрын
33 минуты боли, но увы без этого никуда, сразу вспомнил все свои тупняки))
@5классвиленкин-ъ4п
@5классвиленкин-ъ4п 6 ай бұрын
вообще не понял третью задачу. Первое что мне пришло в голову - создать связный список. Добавление - переназначение указателя на вершину на новый, удаление - переназначение указателя на следующий, топ - указатель уже указывает на нужное, get_min можно искать при каждом добавлении элемента в стек или при его удалении(если уадлили минимальный, то нужно найти следующий минимальный), либо если по памяти нам все равно, то создать multi_set и там уже изи все хранить. первое что пришло в голову
@БогданАтрошенко-в9у
@БогданАтрошенко-в9у Ай бұрын
я вот не понял Артём специально тупит так на 1-ой задаче или он по настоящему?
@artemshumeiko
@artemshumeiko Ай бұрын
в комфортной обстановке любая задача кажется простой
@oBiba_and_aBoba
@oBiba_and_aBoba 6 ай бұрын
Привет, мне очень нравятся твои видео, можешь ли ты пожалуйста в одном из следующих видео рассказать как сделать онлайн оплату чего либо
@AstorQwest
@AstorQwest Ай бұрын
это только в России програмисту платят 1 тыс $ ?
@Jansisoev
@Jansisoev Ай бұрын
Наитупейший вопрос
@Сергей-ф2ъ7я
@Сергей-ф2ъ7я Ай бұрын
не вырезай молчание. а то слишком бысто и сильнее комплексую перед собесом
@artemshumeiko
@artemshumeiko Ай бұрын
Сорри, но так очень скучно смотреть(
@sergeymalkovski3877
@sergeymalkovski3877 7 ай бұрын
Жестко. Я ни одной не знаю😢
@khafizovilnaz
@khafizovilnaz 7 ай бұрын
Ты не один друг, я тоже почувствовал себя тупым
@danivais7082
@danivais7082 5 ай бұрын
Решил 1 и 3 (сириус курсы спасибо), декоратор плохо сел в память
@porohmega
@porohmega 6 ай бұрын
А дядя смог вам объяснить как это пригодится при написании реальных задач с REST и бизнес логикой?
@alexander_gk
@alexander_gk 6 ай бұрын
Очевидно, что никак
@ДавидКутдусов
@ДавидКутдусов 7 ай бұрын
не понял, почему нельзя просто def get_min(self): return min(self.stack) все остальные методы изменяют данные self.stack и метод всегда будет возвращать данные согласно актуальному стеку. Либо я не понял задачу
@ГеоргийЛухтура-в8м
@ГеоргийЛухтура-в8м 7 ай бұрын
Требуется решить за постоянное время, а у Вас O(n)
@artemshumeiko
@artemshumeiko 6 ай бұрын
Потому что эта функция занимает O(n) времени, а нужно O(1)
@ChrisColeDC
@ChrisColeDC 7 ай бұрын
это явно не уровень джуна и не 100 тысяч зп, первая задача только, остальные уровня мидл
@РоманДемидов-ц2и
@РоманДемидов-ц2и 7 ай бұрын
нет) порог входа с каждым разом всё выше, мб раньше джунам нужно было ложкой с первого раз в рот попадать, и их уже брали доучиваться, но сейчас ищут самостоятельных спецов, 2 и 3 задачи вполне адекватные, проверяют твои знания в ООП (не совсем), алгоритмах и структурах данных и основах языка, декораторы используются везде, с ними тоже нужно уметь работать уже на начальных стадиях
@myacc2517
@myacc2517 6 ай бұрын
Что задачи, что вопросы это уровень стажера
@ChrisColeDC
@ChrisColeDC 6 ай бұрын
@@myacc2517 может сразу уровень школьника начальных классов?
@myacc2517
@myacc2517 6 ай бұрын
@@ChrisColeDC Первая задача сравнима с заданием на егэ, вторая и третья это основа основ Если для вас эти задачи на мидлов, то у меня плохие новости
@ChrisColeDC
@ChrisColeDC 6 ай бұрын
@@myacc2517 чел ты сейчас автора видео дураком выставил)))
@user-tt9hx4kh1e
@user-tt9hx4kh1e 6 ай бұрын
полтора гола ежедневной учебы и 100к ваши. На самом деле пох сколько предлагают 50, 70, 100. Если компания норм, то сам факт влиться в структуру и уже расти по грейду это и есть основная цель.
@jdwwsz
@jdwwsz 6 ай бұрын
выходит у меня в 16 лет уровень джуниор? и зачем мне в универ поступать тогда...
@bek15071991
@bek15071991 Ай бұрын
100 к сейчас 800 баксов 😂
@merzbow7
@merzbow7 7 ай бұрын
ну так декораторы с параметрами писали во втором пайтоне, изращение, уже как 10 лет можно проще
@СергейЮров-б6е
@СергейЮров-б6е 7 ай бұрын
хех, одно дело вещать по подготовленному сценарию, а другое дело в realtime. Хорошо порешал
@arthurarthur4075
@arthurarthur4075 7 ай бұрын
Возможно это старая запись вашего интерьерью? Вопросы не тянут даже на стажёра
@Артем-п6ф9э
@Артем-п6ф9э 6 ай бұрын
Что же тогда должны были спросить? Как написать свой фейсбук или нетфликс?
@TheWorld-hs1hf
@TheWorld-hs1hf 5 ай бұрын
​@@Артем-п6ф9эчувствую, в 2025 от джунов (по крайней мере в вебе) будут требовать написать полноценное приложение-чат (при этом не просто чат, а асинхронный real-time чат), который полностью заменит чат в каком-нибудь вк, так еще и с разделением на личные сообщения и беседу, и это в качестве тестового задания, но платит таким спецам будут те же 50-80к; а уже в 2027 такое задание на джуна тянуть не будет. Люди всё больше идут в программирование, python один самых популярных языков (если не самый), конкуренция на позицию джуниор огромная, так как все торопятся выйти на работу. Зарплаты растут медленно, уровень понимания и количество знаний должны быть всё глубже и больше, ну и помимо этого увеличивается требуемое количество сайд скиллов (по типу git, но конкретно к нему нет претензий, просто для ясности пример)
@kornalexandr
@kornalexandr 4 ай бұрын
​@@Артем-п6ф9эзачем "как"? Просто написать. Причем чтобы к концу лайв кодинга количество пользователей было больше, чем в ТГ. Это на Джуна. На стажёра - больше, чем в Фейсбук
@akashiseijura
@akashiseijura 2 ай бұрын
у чела было на мидла собеседование в два раза легче
@nurbolatnurzhanov1958
@nurbolatnurzhanov1958 6 ай бұрын
Кому интересно, вот такой код у меня получился на последний вопрос. class Stack: def __init__(self): self.stack = [] self.pref_min = [] self.current_min = None def pop(self): self.stack.pop() self.pref_min.pop() self.current_min = self.pref_min[-1] def push(self, num): self.stack.append(num) self.current_min = min( self.pref_min[-1], num) if self.pref_min else num self.pref_min.append(self.current_min) def top(self): return self.stack[-1] def get_min(self): return self.current_min a = Stack() for i in [10, 2, 5, 4, 6, -1]: a.push(i) a.pop() print(a.top())
When you have a very capricious child 😂😘👍
00:16
Like Asiya
Рет қаралды 18 МЛН
Мясо вегана? 🧐 @Whatthefshow
01:01
История одного вокалиста
Рет қаралды 7 МЛН
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Декораторы в Python
12:11
WalkingProgrammer
Рет қаралды 913
Михаил Выборный собеседование junior python разработчик
56:37
When you have a very capricious child 😂😘👍
00:16
Like Asiya
Рет қаралды 18 МЛН