Приглашаю на мой Практический курс по Backend разработке по всем актуальным технологиям: artemshumeiko.ru
@dorohovrs3 ай бұрын
Забавно устроено, что имея многолетний опыт backend разработки (python, php, java), видя задачки на видео, скорее всего школьной или университетской программы, понимаешь что не прошел собеседование на junior позицию
@ВасильКостриба2 ай бұрын
мне кажеться что на таких собесах впервую очередь проверяют твой скилл в технологиях а не задачках.Хотя я не уверен я же не програмист
@JDM239Ай бұрын
ну таки логично, что для джунов без опыта, и мидлов/сеньоров разные задачки должны быть. Ибо, что с джуна без опыта взять? А сеньор уже и забудет за бесконечными рест крудами всякие институтские задачки
@Rulezzz37 ай бұрын
видео придает уверенности, что сеньоры тоже тупят на собеседовании джуна
@set1qs7 ай бұрын
Он тупил спецом ))
@ЮрийСтифеев6 ай бұрын
Это не сеньер явно. 3я задача просто уровень джун джун. Хранить 2 массива, целевой и с отсортированными уникальными значениями, любой реально работающий джун это сделает . 2я хосапде, проверка наследования эксепшена. До перемотки видел что там было if т.е, что произойдет если туда в параметр, а как я понял это массив, передадут 3е или n значение?). Первую ничерта не понял, но видимо потому что питон вижу 1й раз. Мне жаль рынок ИТ если такие менторят людей в интернете и их слушают. Теперь понятно почему хр не могут найти людей
@alexla_grange89576 ай бұрын
Это ж из разных сказок джин и сеньор Помидор
@alexander_gk5 ай бұрын
@@Rulezzz3 это канал просто принадлежит недосеньору. Нормальный сеньор на собесе не тупит.
@ВитяСлавинский3 ай бұрын
причем конкретно :))))
@dimierlife6 ай бұрын
Если это JUNIOR то у меня знания zero.
@1200eojf6 ай бұрын
Ну я бы за 20 минут решил бы задачу, в принципе надо понять задачу
@funtickgd95026 ай бұрын
За 2 месяца этого лета у меня прогресс, я решил 1 задачу...
@JesusAVGNarezki5 ай бұрын
Нормально если ты не изучал каждый день по 8 часов@@funtickgd9502
@uvwzyx5 ай бұрын
и таких, как ты, 99% в откликах
@dimierlife4 ай бұрын
@@uvwzyx Каких в откликах?
@gradkb6 ай бұрын
задача с минимальным элементом в стэке - огонь)
@dima_upgrade17206 ай бұрын
Спасибо за ваш контент! Очень познавательно и полезно! Продолжайте в том же духе!
@SegeyKravtsov4 ай бұрын
🎯 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
@makeyt554911 сағат бұрын
3 задачу думаю можно было решить через Linkedlist, для стэка другой линкедлист, а для минов другой
@gradkb6 ай бұрын
омг) главный скилл на собесах это внимательно слушать вопросы и стараться отвечать именно на них
@АндрейКапацйна3 ай бұрын
Какой джун ? Серьезно ? Хорошо давай задачу для мидл. Я считаю что на позицию джун одолжен быть один вопрос готов ли ты уволится через месяц если не справиться. Все какие задачи и лайвкодинг . Понятно что пару вопросов надо задать чтоб понять в теме человек или нет .
@Taron811729 күн бұрын
На мидл нет задачек спрашивают что ты делал на прошлой работе, что такое солид и тд 😂😂
@hunya_k23 күн бұрын
Это вопрос для стажера, а джуну надо бы уже что-то из себя представлять
@ts.kdv.raz0r2 ай бұрын
Третья задача проще декоратора с параметрами эксепшенов. Это же классическая реализация стека.)
@alexsur73156 ай бұрын
Отлично. Спасибо за собеседование. Покажешь на Ютубе ещё одно с лайв кодингом?
@rock4ts7 ай бұрын
это какой-то новый уровень троллинга)
@TheWorld-hs1hf5 ай бұрын
Почему? Слишком просто для джуниора? Если да, то зачем джуниору знать больше?
@knowledgedose19564 ай бұрын
@@TheWorld-hs1hf 😂😂😂😂😂
@AirenikMelkonyan7 ай бұрын
Object в Питоне же зарезервированно, и можно было бы сказать, что не корректно использовать такое название. 😊
@ogone4ek8807 ай бұрын
то что что то существует в пайтоне - не значит, что оно зарезервировано object - не зарезервировано, но объект с таким именем существует, но назвать переменную так можно in, for, class, def, async, await, return, and, or - зарезервированны, такими именами не получится назвать переменные
@intruder706 ай бұрын
зарезервирован object, но не Object
@cherimolah94936 ай бұрын
@@ogone4ek880 да, но это считается плохой практикой
@unnme27215 ай бұрын
@@ogone4ek880 Если вы используете object как имя переменной, вы затрудняете доступ к встроенному классу object в текущем контексте. Это может привести к путанице и ошибкам, особенно если ваш код зависит от базового функционала этого класса. Это фундаментальная штука и в коде она была неспроста. Основа основ ООП.
@ogone4ek8805 ай бұрын
@@unnme2721 и че, я сказал что это незарезервированное имя, а не то что можно свободно так переменные называть
@gpankov9 күн бұрын
Очень интересно
@funtickgd95026 ай бұрын
2 месяца лета не зря... 1 задачу я решил, на второй запутался, но по ходу событий понял, что надо было сделать, а в 3 я сразу понял, что надо было сделать, да и сделал
@TheWorld-hs1hf5 ай бұрын
С нуля за два месяца?
@dllb4 ай бұрын
Где учился????
@funtickgd95024 ай бұрын
@@dllb сам по книгам, примерами алгоритмов, литкоду. Мне на курсах только базу синтаксиса дали
@dllb4 ай бұрын
@@funtickgd9502 а какие курсы и книги использовал?
@ВадимЕлисеев-ц8э4 ай бұрын
@@funtickgd9502 Помоги, пожалуйста. Вот тоже из скачанных курсов получил базу, но а щас я хз, че мне делать.. Хочу на веб-разраба пойти и по идее до изучения самого django нужно просто решать задачи и так далее, но я вообще не понимаю, где можно было бы подчеркнуть действительно важные и полезные знания ,а где практикой их закрепить.
@julesbois21222 ай бұрын
16:00 в строке 62 мы вызываем коллбек с помощью ex[1](). Это сработает, если у всех коллбеков нет аргументов. Но в предложенном задании у них разные сигнатуры: у коллбека bar() нет аргументов, а у коллбека lambda есть - '_'. Не уверен, но кажется, чтобы это работало, надо перед вызовом коллбека определять, какая у него сигнатура и вызывать его с ожидаемым количеством аргументов. IMO. P.S.: или исправить кортеж с анонимной функцией, чтобы она тоже была без параметров (IndexError, lambda : print(2))
@DavidBitiev.20003 ай бұрын
Были идеи по решению, но дайти до результата было сложно👍👍👍
@zarddark24406 ай бұрын
Первая легко, третья легчайше для олимпиадника, просто дефолтный стек с префиксным минимумом. А для второй нужно синтаксис подучить
@krosh89824 ай бұрын
Да тут ЕГЭ уровень
@arturio10Ай бұрын
Эта (3) задача взята с литкода и вроде MinStack называется чтоли,. В целом она достаточно простая, если проблема с push, pop и top достаточно просто решается на уровне обычного списка, то для getMin с временной сложность за O(1) нужно при каждом push добавлять минимум, то есть если предыдущего значения минимум меньше вставляемого значения, то вместе с ним и сохраняем, если новый элемент меньше текущего, то добавляем само число и дополнительно число, обозначающее текущий минимум, относительно него дальше и будут добавляться элементы. Так мы гарантируем, что при вызове pop (удаление элемента) следующий перед ним будет хранить свой минимум.
@PetrovDS12 күн бұрын
В последней задаче стек будет некорректно себя вести, если добавлять туда 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ъ6 ай бұрын
это куда такие собесы? очень хотелось бы
@izey__Ай бұрын
думаю здесь нужно было использовать бинарный поиск так как если у нас нужно цифра или число будет находиться в самом конце то программа будет каждый элемент перебирать
@spi4caru95016 күн бұрын
Эти задачи по-моему относятся к джунам и ближе к мидлам, да к тому-же вторая задача чуть посложнее чем третья.
@_english_90252 ай бұрын
Раньше когда слушал других программистов думал, что не дотягиваю даже до +- уровня стажёра, а после просмотра видео понимаю, что я уже сижу на нем точно, а возможно даже ещё годик другой практики и буду Джуном
@нрраголлдьщщАй бұрын
2:42 неа, это же set, а не list, тут вобще нет номеров, эта функция выводит элемент 0 из множества
@asyncio_run2 ай бұрын
Я себя отношу к джуну… Ибо изучаю сам все и только лишь полгода))) но эти задачки я бы решил немного по-другому, но в целом контент прикольный) Спасибо))) А декораторы, это очень полезная и хорошая штука!
@Hamsters_Rage25 күн бұрын
список ексепшинов у чатагпт спрашиваешь? )
@xximde12 күн бұрын
самая жесть в первой задаче - это переопределенный object 😀
@relyawang3 ай бұрын
Третья задача это 155 с литкода, не? Кстати, что лучше на собесе делать если встретил задачу к которой знаешь решение? Прикинутся что видишь её в первый раз или признаться что знаешь?
@artemshumeiko3 ай бұрын
Конечно прикинуться, что не знаешь)
@billykid86783 ай бұрын
Решение у задачи 3 сломается. Например, если запушить 323, а потом достать два последних элемента. В стеке останется 3, а список мин элементов будет пустой. Решение: вместо двух массивов сделать один двумерный. При каждом push в него будет добавляться: [добавленный элемент,мин элемент на момент добавления]
@HeppygroupDifermen3 ай бұрын
Почему список останется пустой? При пуше первой тройки в него добавится тройка по условию not mins, потом при втором пуше добавится двойка т.к она меньше последнего элемента списка т.е тройки которую мы добавили. При пуше последней тройки в список ниче не добавится. В итоге в стеке 323 а в списке 32. Первый пуп удаляет тройку из стека и ниче не удаляет из списка, второй удаляет двойку везде, третий удаляет двойку везде. Все ок
@HeppygroupDifermen3 ай бұрын
Ну а с двумерным впринципе тоже думаю будет работать
@billykid86783 ай бұрын
@@HeppygroupDifermen да, моя ошибка, на 323 сработает. Но на 222 все же сломается. А на 322 будет неверный ответ
@ВасильКостриба2 ай бұрын
@@billykid8678 там он потом исправил код и при 222 список min тоже будет 222
@irondanil34614 ай бұрын
Спасибо тебе большое, бро. Ты делаешь глупых людей как я чуточку умнее.
@illia45034 ай бұрын
3:09 Всегда хочеться треснуть чем-то тяжелым тех кто в одну строку пишет много операторов, как это в строке 2 и 9. Код в первую очередь должен быть визуально легко читаем, потому что читаем код мы чаще чем пишем, экономия количества строк не дает преймуществ, кроме демонтрации умственных отклонений автора подобного кода.
@grayboyАй бұрын
Во второй строчке списковое включение должно быть, и оно эффективнее чем через простой цикл for. Да, согласен, он загруженный, но это типо норм на питоне, если дальше загружать это списковое включение, то тогда уже реально перемудрено. В 9 строчке вообще не понятно что тебе не нравится? То что скобочки не открыли? lambda? Элементы списка отдельно не написали? Предполагаю это сделано, чтобы не занимать много времени
@droidnah2 ай бұрын
Интересное видео. Я (пытаюсь) писать игры и программы на Годот и там язык в некотором роде схож с питоном, но захотелось глянуть что тут. Половину слов и понятий не знаю, поэтому хотелось бы задать вопрос по последней задаче. Если нужен минимальный элемент массива, то зачем создавать массив из предыдущих его значений? И что значит "за постоянное время"? В решении не заметил какого-либо уравнённого значения скорости выполнения функций 🤔
@ЯнПацюпа2 ай бұрын
Постоянное время - оно же константное, оно же O(1). Что бы нормально это понять лучше почитать простую книжку по алгоритмам. Можно начать с "Грокаем алгоритмы". Конкретно здесь: Если не было бы ограничения на постоянное время, get_min() мог бы просто возвращать встроенную min(self.stack), а она работает за линейное время. Если написать свою реализацию min, то это сразу видно: чтобы найти минимальный элемент придётся перебрать все элементы, то есть в худшем случае минимальный элемент будет последним, и в среднем время поиска линейно зависит от длины последовательности. В отличии от операций push, pop, top: когда мы в конец просто добавляем / удаляем элемент, это не зависит от размера последовательности (на самом деле там есть подводные камни про перевыделение памяти при увеличении размера). В реализации за постоянное время и есть смысл задачи. Артем сразу это упоминает на 18:01.
@droidnah2 ай бұрын
@@ЯнПацюпа Спасибо, вроде бы понял. А что даёт -1 в номере индекса элемента массива? (Или это не оно?) Я так понимаю последнее значение переменной из массива, да?
@ЯнПацюпа2 ай бұрын
@@droidnah Да, это последний элемент. Это стандартный способ в Python, он поддерживает отрицательные индексы, можно вообще посмотреть на срезы - они очень удобные)
@droidnah2 ай бұрын
@@ЯнПацюпа спасибо большое за ответы, теперь догнал суть 😁
@ЯнПацюпа2 ай бұрын
@@droidnah Рад слышать. Вообще если есть желание поплотнее посмотреть на Python, можно для этого взять книжку Эрик Мэтиз. Изучаем Python. Программирование игр, визуализация данных, веб-приложения (Eric Matthes. Python Crash Course). Там как раз первый проект второй части - это игра на pygame (первая часть - основы Python), правда алгоритмов там нет
@IvaNFallout7 ай бұрын
Один из вариантов решения первой задачи: def get_first_matching_object(predicate, objects): return next((x for x in objects if predicate(x)), None)
@SabFo_7 ай бұрын
Да проще filter использовать
@maximkoltsov98337 ай бұрын
@@SabFo_ лист компрехеншен выполняется быстрее
@saitaro6 ай бұрын
@@maximkoltsov9833 Лист компрехеншен создаст список, пройдясь по всем объектам. Это избыточно, как по памяти, так и по времени.
@maximkoltsov98336 ай бұрын
@@saitaro ладно, согласен, ошибся
@QKekos6 ай бұрын
@@saitaro круглые скобки это не лист компрехеншен а генератор эскпрешн, ленивые вычисления, некст один раз выполнится да и все, дальше эвальюейтится ничего не будет(но понятное дело, что само условие будет проверяться для каждого элемента до первого трушного)
@artemkashipov98653 ай бұрын
вообще pop из-за структуры данных лист, не будет работать. так как лист требует сдвига, это медленно. и top тоже кстати будет медленный иногда из за переаллокации нужно создавать всего три связных списка, один чтобы работал pop а другой чтобы работал top только недавно увидел аналогичную задачу про это) изначально офигевал как можно такое сделать. задача была - что то про нахождения минимальной суммы для каждой подстроки в K элементов в массиве аналогичным образом делается
@oxfaaaaa96872 ай бұрын
Не понял момент с худшей O(1) и лучшей O(n). Откуда вдруг взялось две сложности?
@Toksi862 ай бұрын
Всегда ориентироваться надо на худшую сложность, сложность в худшем случае. Но есть вариации, когда получится лучше, чем мы ожидали. Отсюда худшая и лучшая сложности, все зависит от поступающих данных.
@АртемРазумов-щ9г5 ай бұрын
Так много комментариев, что задачи легчащие и не тянут даже на стажера и так мало комментариев, что третья задача решена не верно, точнее не для всех случаев) Видимо эти комментаторы только во сне разработчики)
@rawil67515 ай бұрын
Я вот заметил, но правильное решение за константное время так и не придумал. Интересно, а на собесе это заметили или нет?
@АзаматКостоев-ы1н2 ай бұрын
Может написал бы сначала для каких случаев это будет неправильно прежде чем пизд*ть?
@Dw3mwtf2 ай бұрын
Оскорбительно у людей такое спрашивать. Данная задача решается за 20-40 секунд ( с учётом написание кода ) Я считаю на такой вакансии куда важней понять есть у человека инженерное мышление. Может ли он понять что написанно в коде и его знание английского языка.
@abaahi4 ай бұрын
Для меня сложно было второе. В третьем сразу понял что нужно параллельно сортированный список создавать при инициализации и добавлять в нужное место новый при пуше
@enzopaupau23024 ай бұрын
Не могу не спросить)) а что за тема редактора которым они шеряться? Monokai чуть другой, этот приятнее
@rotsaatkrahe71785 ай бұрын
Я немного не понял, но получается что в min_nums будут добавляться не все числа? разве за этим не последует ситуация когда get_min даст неверное значение, вроде 4 5 1 1, список минимумов заполнится единицами, а когда их обе вытолкнут, то get_min ничего не вернет?
@Marlo-Smile3 ай бұрын
Я тоже запутался но потом понял что здесь в стек числа добавляются с права и убираются справа. В этом случае если число не добавляется в min_nums то оно там и не нужно, ведь его удалят прежде чем справа останется минимальное число)
@anton66432 ай бұрын
@@Marlo-Smileерунда
@Marlo-Smile2 ай бұрын
@@anton6643 Поясни
@xtray2727 ай бұрын
Я почему то думал что Джунам сложнее вопросы задают, я знаю почти всё что было на собесе из видео, но я до сих пор не нашел работу, может я что-то делаю не так. Хотя у меня и собеса никогда не было :). Видео придало мне уверенности в своих знаниях, надеюсь скоро найду работу
@symbol9new7 ай бұрын
Сколько учишься уже?
@gggppp2287 ай бұрын
А на какое количество вакансий ты отправлял резюме? Сейчас на джунов высокая конкуренция, поэтому надо просто часами сидеть на сервисах поиска работы и закидывать своё резюме везде где можешь
@СтепанВоробьев-л2р5 ай бұрын
так это база, тут ничего трудного нет
@UserSo4reUsu75ry4 ай бұрын
@@gggppp228какие шансы джуну устроится на удаленку ?
@user-lh9nk1vm8u7 ай бұрын
Пару комментов: задача 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()
@sergey66613135 ай бұрын
на 12:09 копирует и спрашивает у нейросети :)
@astimch6 ай бұрын
Первые две задачи без комментариев - там ничего сложного. 3-я задача встречалась в нескольких курсах по алгоритмам и структурам данных, поэтому если знаешь, то реализовать ее тоже не составляет большого труда.
@kqvwvpk7 ай бұрын
Вы реально не знали ответ на эти задачи будучи синьором? Или спецом тупили чтобы не спалил интервьюер? Если первое, то получается такие сложные вопросы или вы не такой хороший синьор?! И как проходить такие собесы челам без опыта?!
@anoshin457 ай бұрын
В маленькой компании синьором можно стать имея год опыта.
@PeterSidoroff6 ай бұрын
По поводу "И как проходить такие собесы челам без опыта?!" - А как проходят собеседования для FANGа ? Есть разные видоскики на Ютубе, где люди рассказывают как они по много месяцев прорешивали задачи на LeetCode + там же можно изучать чужие решения. Через год такой практики вы тоже сможете быстро находить решения под такие задачки на собесах - в подсознании уже накопятся типовые алгоритмические решения.
@vor67586 ай бұрын
@@PeterSidoroff, целый год тратить на алгосы) звучит жестко
@gradkb6 ай бұрын
@@vor6758 в гугл по алгосам чтоб попасть надо их лет пять на олимпиадах применять, в среднем :-)
@dansky_music2 ай бұрын
@@vor6758кто-то всю жизнь на них тратит :)
@nadyamoscow24613 ай бұрын
Очевидно, про принцип kiss в этой конторе не слышали.
@gradkb6 ай бұрын
в первой задаче не нужно разделять худший/лучший случай, строго говоря - твой ответ некорректный, правильный - просто О(N), но для джуна норм
@dmoroz0v6 ай бұрын
можно бригаду. это спецом сеньор так тупит? или реально? или постановка?
@lesbian_economy4 ай бұрын
Смотря для кого. Олимпиадник с такими задачами на изи справится, сеньер, у которого последние 5 лет было решение реальных задач, а не этого бреда, будет закономерно тупить.
@АзаматКостоев-ы1н2 ай бұрын
Это фейковый сеньор
@Kalyancheg3 ай бұрын
Подскажите, я пайтон больше года не ковырял, в 3 задаче почему просто по стеку нельзя get min пробежаться? Долго?
@artemshumeiko3 ай бұрын
Да, долго. Получится O(n), а нужно O(1)
@Kalyancheg3 ай бұрын
@@artemshumeiko да, алгоритмы я так и не понял тогда Спс
@tegeranchikrus43894 ай бұрын
Ну я честно не понимаю две вещи: 1. Каким образом человек которого заявляют как сеньора так долго (и так плохо) решал эти задачи 2. Почему после такого собеса человека (судя по заявлениям в видео) взяли, это же даже не уровень стажера
@artemshumeiko3 ай бұрын
Вам виднее, наверняка 500к зарабатываете?
@tegeranchikrus43893 ай бұрын
@@artemshumeiko меньше, врать не буду. Но с таким уровнем прохождения алго-задач даже на стажировки в биг тех не берут, там банально развернут на первом этапе. Я понимаю что алгосы это не то что показывает уровень разработчика, но если бы собеседующие так считали - зачем они бы дали вообще эту задачу, да еще и в конце (в конце дают задачи посложнее обычно)
@tegeranchikrus43893 ай бұрын
Кстати в защиту собеседуемого стоит заметить что с декоратором вроде быстро все получилось, мое почтение
@andrewlim24102 ай бұрын
@@tegeranchikrus4389 Бро забей, автор канала очередной инфоцыган, который вместо импрува своих хард скиллов, выбрал дорогу продажи платных курсов и развития канала (это и не плохо и не хорошо, бабки есть бабки). Но очев видно, что чел максимум мид (ито не в каждом даже российском бигтехе). Алгосы с собеса на видео реально самые базированные, буквально литкод грид 75. И можно долго с пеной у рта доказывать, что алгоритмы - это не про грейд, но когда ты не знаешь как работает трейсбек в языке, в котором ты себя называешь сеньором, это нонсенс. Еще насмешило, что автор канала не выдержал критики с твоей стороны и сразу затронул тему с зарплатой, а ведь это говорит о том, что поцанчик то оказывается - полный мудак, раз мерит достижения и компетенцию людей по зарплате. Ам сори за бурный конец.
@novorec1287 күн бұрын
Вот смотрю уже 3-го блогера и понимаю, что питон они совершенно не понимают. Предлагаю на такие задачи строить блок схемы, чтобы понимать зачем это все и какой результат нужно.
@otekkvinke2 ай бұрын
А точно ли у джуна нужно спрашивать алгоритмическую сложность? Это точно вопрос по грейду? А? а? А?
@aeternaar6 ай бұрын
Никто не написал про ваш сайт - отличный инструмент для подготовки к собеседованию! Подольше бы он оставался бесплатным!
@ИннаЛиксакова-о4н6 ай бұрын
в защиту автора видео хочу сказать, что на собеседовании очень сильный стресс и даже такие легкие задачи как первая могут вогнать в ступор, так как очень много нервов мешает думать. Это надо прокачивать скилл прохождения собеседований, чтобы на них не переживать
@mrveles6 ай бұрын
Очень хорошее видео, прям как гора с плеч.
@no101vmv2 ай бұрын
Ты же сеньор как можно было так на первом затупить с возвращаемым значением)
@MrHumanLock19 күн бұрын
Да вряд ли Сениор, если вообще работал в индустрии хз
@UserSo4reUsu75ry4 ай бұрын
У меня только на одну задачу ушло бы 30-40 минут. Сколько бы я не нарешивал эти задачи, я не могу решать их быстро
@вапвапвавава17 күн бұрын
Это нормально. Вы тупой просто. Я тоже тупой. Поэтому работаю руками,а не головой
@ghoul42252 ай бұрын
3 задача частно на кружках для ол програмирование встречаеться
@КотовДанил-с8б7 ай бұрын
Почему 3 задача проще 2?
@ГазинурРысмухаметов5 ай бұрын
3 задача решена неверно)
@YGNETATEL_30006 ай бұрын
А нельзя было написать Filter(predicate, object) ?
@saitaro6 ай бұрын
И что делать потом с этим фильтром?
@vladgusakov33286 ай бұрын
@@saitaro что-то аля try next(objects) except StopIteration
@imdmotcm89535 ай бұрын
Если это Senior то в отличие от Джуна воспользуется chat gpt
@SaintVes7 ай бұрын
Не знаю ответ ни на одну задачу. Учусь питону уже второй день. Я тупой, надо бросать?
@alexeynesin4837 ай бұрын
Ахах, за 22 дня ты не сможешь этот собес пройти. Это серьзная работа, нужно много времени потратить, чтобы научиться.
@digitaIdevil7 ай бұрын
Бросай
@SaintVes7 ай бұрын
@@digitaIdevil хорошо, пошёл бросать
@h3ckphy2466 ай бұрын
@@SaintVes 🤣🤣
@kornalexandr4 ай бұрын
@@SaintVesскажи, куда бросил? Просто так спрашиваю
@qulinxao7 ай бұрын
"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()) # храним в стеке сами значения и его текущий минимум
@daniyarkhabibulin16964 ай бұрын
Честный отзыв! Если честно не тянешь на senior разработка очень слабо, на middle специалиста еще можно !
@ruslankrivoshein28934 ай бұрын
Сеньор - это не про классное решение алгоритмических задач с собеседования
@Nickek-g5k5 ай бұрын
Блин даже первая задача вызвала звон в голове... Прорвемся, готовимся дальше)))
@incios5 ай бұрын
Знания АСД помогли решить третью задачу в первые 4 секунды после ее прочтения
@@knowledgedose1956дисциплина "алгоритмы и структуры данных"
@dangerbenens3 ай бұрын
Помоему в первой задаче можно было сделать бинарный поиск
@dru_i_d3 ай бұрын
Не имея опыта работы с decorator, 3ье задание показалось намного проще)))
@yauhent6715 ай бұрын
каждый раз искать минимум массива?
@alexbalgor91423 ай бұрын
Все что я увидел в коде это ?????? ?????? ?????? ????? .)) вот сижу и думаю а стоит вообще начинать если я не разбираюсь в этом вообще от слова совсем ) и с чего начать_)
@besckvitek685815 күн бұрын
Сначала просто нужно выучить синтаксис языка чтобы понять что это все такое и как этим всем пользоваться. пользоваться
@Volodya727 ай бұрын
Push все равно кривой получился. Если до конца списка делать pop, то с какого-то момента не будет значений из упорядоченного списка. Всё из за условия добавления
@ГеоргийЛухтура-в8м7 ай бұрын
Для этого есть условие в pop: if res == self.min_nums[-1]
@PeterSidoroff6 ай бұрын
Нет, там правильно. В push-е стоит условие на пустой массив мин.чисел и на возможное совпадение с текущим мин.числом (
@QKekos6 ай бұрын
@@PeterSidoroff там фича в том, что добавление в упорядоченный массив у тебя происходит только при пуше меньшего элемента, т.е. push(1), push(2), push(3), pop() -> 1, pop() -> None т.к. 2 и 3 тупо не добавлялись, оба гения сидят(как сделать пуш за О(1) если там придется по нормальному по всему массиву проходиться чтобы его в нужное место воткнуть не представляю)
@Trezvy_Papa5 ай бұрын
@@QKekos в вашем случае при вызове pop() удалится 3, потом 2. А 1 так и будет минимальным числом в стеке.
@Septman5 ай бұрын
По голосу интервьювера, ему лет 17-19, если это так, мне значит немного стыдно 😢
@artemshumeiko5 ай бұрын
Не, точно больше
@Sila_v_pravde1234 ай бұрын
Так , все, иду работать в пятерочку . Чему я научился за месяц хз.
@yanalsheuski2633 ай бұрын
третья задача развалится, когда в список залетят два одинаковых числа и оба будут минимальными
@izobretate2 ай бұрын
Нет, так как там при пуше "меньше либо равно" оба числа добавятся в стек минимумов, при попе так же будут выниматься.
@asadbekimaraliev75616 ай бұрын
Молодец, ты конечно достоин
@sowar686729 күн бұрын
У того кто введет собес голос не слишком грубый и это привело к мыслям про прикол о 14 летних сениорах 😂
@qulinxao7 ай бұрын
эээ а не проще ли через словарь созданный из типов исключений и обработчиков - хватем исключение e и проверяем функцией из первого задания if match:=get_first_matching_object(pred=lambda x:x in ourdict,[type(e)]+list(type(e).__bases__)):match() raise e?
@saitaro6 ай бұрын
Читаемость огонь.
@Сергей-ф2ъ7яАй бұрын
блин, поставил на паузу. потратил час на вторую задачку. и это в VSCode
@Сергей-ф2ъ7яАй бұрын
да, и про @wraps не знал
@АндрейПопов-н2г2м7 ай бұрын
33 минуты боли, но увы без этого никуда, сразу вспомнил все свои тупняки))
@5классвиленкин-ъ4п6 ай бұрын
вообще не понял третью задачу. Первое что мне пришло в голову - создать связный список. Добавление - переназначение указателя на вершину на новый, удаление - переназначение указателя на следующий, топ - указатель уже указывает на нужное, get_min можно искать при каждом добавлении элемента в стек или при его удалении(если уадлили минимальный, то нужно найти следующий минимальный), либо если по памяти нам все равно, то создать multi_set и там уже изи все хранить. первое что пришло в голову
@БогданАтрошенко-в9уАй бұрын
я вот не понял Артём специально тупит так на 1-ой задаче или он по настоящему?
@artemshumeikoАй бұрын
в комфортной обстановке любая задача кажется простой
@oBiba_and_aBoba6 ай бұрын
Привет, мне очень нравятся твои видео, можешь ли ты пожалуйста в одном из следующих видео рассказать как сделать онлайн оплату чего либо
@AstorQwestАй бұрын
это только в России програмисту платят 1 тыс $ ?
@JansisoevАй бұрын
Наитупейший вопрос
@Сергей-ф2ъ7яАй бұрын
не вырезай молчание. а то слишком бысто и сильнее комплексую перед собесом
@artemshumeikoАй бұрын
Сорри, но так очень скучно смотреть(
@sergeymalkovski38777 ай бұрын
Жестко. Я ни одной не знаю😢
@khafizovilnaz7 ай бұрын
Ты не один друг, я тоже почувствовал себя тупым
@danivais70825 ай бұрын
Решил 1 и 3 (сириус курсы спасибо), декоратор плохо сел в память
@porohmega6 ай бұрын
А дядя смог вам объяснить как это пригодится при написании реальных задач с REST и бизнес логикой?
@alexander_gk6 ай бұрын
Очевидно, что никак
@ДавидКутдусов7 ай бұрын
не понял, почему нельзя просто def get_min(self): return min(self.stack) все остальные методы изменяют данные self.stack и метод всегда будет возвращать данные согласно актуальному стеку. Либо я не понял задачу
@ГеоргийЛухтура-в8м7 ай бұрын
Требуется решить за постоянное время, а у Вас O(n)
@artemshumeiko6 ай бұрын
Потому что эта функция занимает O(n) времени, а нужно O(1)
@ChrisColeDC7 ай бұрын
это явно не уровень джуна и не 100 тысяч зп, первая задача только, остальные уровня мидл
@РоманДемидов-ц2и7 ай бұрын
нет) порог входа с каждым разом всё выше, мб раньше джунам нужно было ложкой с первого раз в рот попадать, и их уже брали доучиваться, но сейчас ищут самостоятельных спецов, 2 и 3 задачи вполне адекватные, проверяют твои знания в ООП (не совсем), алгоритмах и структурах данных и основах языка, декораторы используются везде, с ними тоже нужно уметь работать уже на начальных стадиях
@myacc25176 ай бұрын
Что задачи, что вопросы это уровень стажера
@ChrisColeDC6 ай бұрын
@@myacc2517 может сразу уровень школьника начальных классов?
@myacc25176 ай бұрын
@@ChrisColeDC Первая задача сравнима с заданием на егэ, вторая и третья это основа основ Если для вас эти задачи на мидлов, то у меня плохие новости
@ChrisColeDC6 ай бұрын
@@myacc2517 чел ты сейчас автора видео дураком выставил)))
@user-tt9hx4kh1e6 ай бұрын
полтора гола ежедневной учебы и 100к ваши. На самом деле пох сколько предлагают 50, 70, 100. Если компания норм, то сам факт влиться в структуру и уже расти по грейду это и есть основная цель.
@jdwwsz6 ай бұрын
выходит у меня в 16 лет уровень джуниор? и зачем мне в универ поступать тогда...
@bek15071991Ай бұрын
100 к сейчас 800 баксов 😂
@merzbow77 ай бұрын
ну так декораторы с параметрами писали во втором пайтоне, изращение, уже как 10 лет можно проще
@СергейЮров-б6е7 ай бұрын
хех, одно дело вещать по подготовленному сценарию, а другое дело в realtime. Хорошо порешал
@arthurarthur40757 ай бұрын
Возможно это старая запись вашего интерьерью? Вопросы не тянут даже на стажёра
@Артем-п6ф9э6 ай бұрын
Что же тогда должны были спросить? Как написать свой фейсбук или нетфликс?
@TheWorld-hs1hf5 ай бұрын
@@Артем-п6ф9эчувствую, в 2025 от джунов (по крайней мере в вебе) будут требовать написать полноценное приложение-чат (при этом не просто чат, а асинхронный real-time чат), который полностью заменит чат в каком-нибудь вк, так еще и с разделением на личные сообщения и беседу, и это в качестве тестового задания, но платит таким спецам будут те же 50-80к; а уже в 2027 такое задание на джуна тянуть не будет. Люди всё больше идут в программирование, python один самых популярных языков (если не самый), конкуренция на позицию джуниор огромная, так как все торопятся выйти на работу. Зарплаты растут медленно, уровень понимания и количество знаний должны быть всё глубже и больше, ну и помимо этого увеличивается требуемое количество сайд скиллов (по типу git, но конкретно к нему нет претензий, просто для ясности пример)
@kornalexandr4 ай бұрын
@@Артем-п6ф9эзачем "как"? Просто написать. Причем чтобы к концу лайв кодинга количество пользователей было больше, чем в ТГ. Это на Джуна. На стажёра - больше, чем в Фейсбук
@akashiseijura2 ай бұрын
у чела было на мидла собеседование в два раза легче
@nurbolatnurzhanov19586 ай бұрын
Кому интересно, вот такой код у меня получился на последний вопрос. 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())