Ну я бы за 20 минут решил бы задачу, в принципе надо понять задачу
@funtickgd95022 ай бұрын
За 2 месяца этого лета у меня прогресс, я решил 1 задачу...
@JesusAVGNarezkiАй бұрын
Нормально если ты не изучал каждый день по 8 часов@@funtickgd9502
@uvwzyxАй бұрын
и таких, как ты, 99% в откликах
@dimierlifeАй бұрын
@@uvwzyx Каких в откликах?
@Rulezzz33 ай бұрын
видео придает уверенности, что сеньоры тоже тупят на собеседовании джуна
@set1qs3 ай бұрын
Он тупил спецом ))
@ЮрийСтифеев2 ай бұрын
Это не сеньер явно. 3я задача просто уровень джун джун. Хранить 2 массива, целевой и с отсортированными уникальными значениями, любой реально работающий джун это сделает . 2я хосапде, проверка наследования эксепшена. До перемотки видел что там было if т.е, что произойдет если туда в параметр, а как я понял это массив, передадут 3е или n значение?). Первую ничерта не понял, но видимо потому что питон вижу 1й раз. Мне жаль рынок ИТ если такие менторят людей в интернете и их слушают. Теперь понятно почему хр не могут найти людей
@alexla_grange89572 ай бұрын
Это ж из разных сказок джин и сеньор Помидор
@alexander_gkАй бұрын
@@Rulezzz3 это канал просто принадлежит недосеньору. Нормальный сеньор на собесе не тупит.
@gradkb2 ай бұрын
омг) главный скилл на собесах это внимательно слушать вопросы и стараться отвечать именно на них
@gradkb2 ай бұрын
задача с минимальным элементом в стэке - огонь)
@AirenikMelkonyan3 ай бұрын
Object в Питоне же зарезервированно, и можно было бы сказать, что не корректно использовать такое название. 😊
@ogone4ek8803 ай бұрын
то что что то существует в пайтоне - не значит, что оно зарезервировано object - не зарезервировано, но объект с таким именем существует, но назвать переменную так можно in, for, class, def, async, await, return, and, or - зарезервированны, такими именами не получится назвать переменные
@intruder702 ай бұрын
зарезервирован object, но не Object
@cherimolah94932 ай бұрын
@@ogone4ek880 да, но это считается плохой практикой
@unnme27212 ай бұрын
@@ogone4ek880 Если вы используете object как имя переменной, вы затрудняете доступ к встроенному классу object в текущем контексте. Это может привести к путанице и ошибкам, особенно если ваш код зависит от базового функционала этого класса. Это фундаментальная штука и в коде она была неспроста. Основа основ ООП.
@ogone4ek8802 ай бұрын
@@unnme2721 и че, я сказал что это незарезервированное имя, а не то что можно свободно так переменные называть
@zarddark24402 ай бұрын
Первая легко, третья легчайше для олимпиадника, просто дефолтный стек с префиксным минимумом. А для второй нужно синтаксис подучить
@krosh8982Ай бұрын
Да тут ЕГЭ уровень
@dima_upgrade17202 ай бұрын
Спасибо за ваш контент! Очень познавательно и полезно! Продолжайте в том же духе!
@alexsur73153 ай бұрын
Отлично. Спасибо за собеседование. Покажешь на Ютубе ещё одно с лайв кодингом?
@rock4ts3 ай бұрын
это какой-то новый уровень троллинга)
@TheWorld-hs1hfАй бұрын
Почему? Слишком просто для джуниора? Если да, то зачем джуниору знать больше?
@knowledgedose195616 күн бұрын
@@TheWorld-hs1hf 😂😂😂😂😂
@паукшнюк-г8ъ2 ай бұрын
это куда такие собесы? очень хотелось бы
@rotsaatkrahe7178Ай бұрын
Я немного не понял, но получается что в min_nums будут добавляться не все числа? разве за этим не последует ситуация когда get_min даст неверное значение, вроде 4 5 1 1, список минимумов заполнится единицами, а когда их обе вытолкнут, то get_min ничего не вернет?
@user-lh9nk1vm8u3 ай бұрын
Пару комментов: задача 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()
@UserSo4reUsu75ry8 күн бұрын
У меня только на одну задачу ушло бы 30-40 минут. Сколько бы я не нарешивал эти задачи, я не могу решать их быстро
@Volodya723 ай бұрын
Push все равно кривой получился. Если до конца списка делать pop, то с какого-то момента не будет значений из упорядоченного списка. Всё из за условия добавления
@ГеоргийЛухтура-в8м3 ай бұрын
Для этого есть условие в pop: if res == self.min_nums[-1]
@PeterSidoroff2 ай бұрын
Нет, там правильно. В push-е стоит условие на пустой массив мин.чисел и на возможное совпадение с текущим мин.числом (
@QKekos2 ай бұрын
@@PeterSidoroff там фича в том, что добавление в упорядоченный массив у тебя происходит только при пуше меньшего элемента, т.е. push(1), push(2), push(3), pop() -> 1, pop() -> None т.к. 2 и 3 тупо не добавлялись, оба гения сидят(как сделать пуш за О(1) если там придется по нормальному по всему массиву проходиться чтобы его в нужное место воткнуть не представляю)
@Trezvy_PapaАй бұрын
@@QKekos в вашем случае при вызове pop() удалится 3, потом 2. А 1 так и будет минимальным числом в стеке.
@sergey6661313Ай бұрын
на 12:09 копирует и спрашивает у нейросети :)
@danivais7082Ай бұрын
Решил 1 и 3 (сириус курсы спасибо), декоратор плохо сел в память
@xtray2723 ай бұрын
Я почему то думал что Джунам сложнее вопросы задают, я знаю почти всё что было на собесе из видео, но я до сих пор не нашел работу, может я что-то делаю не так. Хотя у меня и собеса никогда не было :). Видео придало мне уверенности в своих знаниях, надеюсь скоро найду работу
@symbol9new3 ай бұрын
Сколько учишься уже?
@gggppp2283 ай бұрын
А на какое количество вакансий ты отправлял резюме? Сейчас на джунов высокая конкуренция, поэтому надо просто часами сидеть на сервисах поиска работы и закидывать своё резюме везде где можешь
@СтепанВоробьев-л2рАй бұрын
так это база, тут ничего трудного нет
@UserSo4reUsu75ry8 күн бұрын
@@gggppp228какие шансы джуну устроится на удаленку ?
@Sila_v_pravde123Ай бұрын
Так , все, иду работать в пятерочку . Чему я научился за месяц хз.
@oBiba_and_aBoba2 ай бұрын
Привет, мне очень нравятся твои видео, можешь ли ты пожалуйста в одном из следующих видео рассказать как сделать онлайн оплату чего либо
@КотовДанил-с8б3 ай бұрын
Почему 3 задача проще 2?
@kqvwvpk3 ай бұрын
Вы реально не знали ответ на эти задачи будучи синьором? Или спецом тупили чтобы не спалил интервьюер? Если первое, то получается такие сложные вопросы или вы не такой хороший синьор?! И как проходить такие собесы челам без опыта?!
@anoshin453 ай бұрын
В маленькой компании синьором можно стать имея год опыта.
@PeterSidoroff2 ай бұрын
По поводу "И как проходить такие собесы челам без опыта?!" - А как проходят собеседования для FANGа ? Есть разные видоскики на Ютубе, где люди рассказывают как они по много месяцев прорешивали задачи на LeetCode + там же можно изучать чужие решения. Через год такой практики вы тоже сможете быстро находить решения под такие задачки на собесах - в подсознании уже накопятся типовые алгоритмические решения.
@vor67582 ай бұрын
@@PeterSidoroff, целый год тратить на алгосы) звучит жестко
@gradkb2 ай бұрын
@@vor6758 в гугл по алгосам чтоб попасть надо их лет пять на олимпиадах применять, в среднем :-)
@АндрейПопов-н2г2м3 ай бұрын
33 минуты боли, но увы без этого никуда, сразу вспомнил все свои тупняки))
@qulinxao3 ай бұрын
эээ а не проще ли через словарь созданный из типов исключений и обработчиков - хватем исключение e и проверяем функцией из первого задания if match:=get_first_matching_object(pred=lambda x:x in ourdict,[type(e)]+list(type(e).__bases__)):match() raise e?
@saitaro2 ай бұрын
Читаемость огонь.
@asadbekimaraliev75613 ай бұрын
Молодец, ты конечно достоин
@nurbolatnurzhanov19582 ай бұрын
Кому интересно, вот такой код у меня получился на последний вопрос. 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())
@SaintVes3 ай бұрын
Не знаю ответ ни на одну задачу. Учусь питону уже второй день. Я тупой, надо бросать?
@alexeynesin4833 ай бұрын
Ахах, за 22 дня ты не сможешь этот собес пройти. Это серьзная работа, нужно много времени потратить, чтобы научиться.
@digitaIdevil3 ай бұрын
Бросай
@SaintVes3 ай бұрын
@@digitaIdevil хорошо, пошёл бросать
@h3ckphy2462 ай бұрын
@@SaintVes 🤣🤣
@kornalexandr22 күн бұрын
@@SaintVesскажи, куда бросил? Просто так спрашиваю
@porohmega2 ай бұрын
А дядя смог вам объяснить как это пригодится при написании реальных задач с REST и бизнес логикой?
@alexander_gk2 ай бұрын
Очевидно, что никак
@InojjHacker3 ай бұрын
Прикол конечно. Такие задачи могут на мидла и синьера дать, с зп в 2-4 раза больше
@irwynptytzelow2 ай бұрын
Угораешь? Я даже не джун это решаю
@InojjHacker2 ай бұрын
@@irwynptytzelow молодец, что сказать то тут) но я тут оффер на 300к получил без решения подобных задач, так что точно знаю о чем говорю)
@5классвиленкин-ъ4п2 ай бұрын
вообще не понял третью задачу. Первое что мне пришло в голову - создать связный список. Добавление - переназначение указателя на вершину на новый, удаление - переназначение указателя на следующий, топ - указатель уже указывает на нужное, get_min можно искать при каждом добавлении элемента в стек или при его удалении(если уадлили минимальный, то нужно найти следующий минимальный), либо если по памяти нам все равно, то создать multi_set и там уже изи все хранить. первое что пришло в голову
@arthurarthur40753 ай бұрын
Возможно это старая запись вашего интерьерью? Вопросы не тянут даже на стажёра
@Артем-п6ф9э2 ай бұрын
Что же тогда должны были спросить? Как написать свой фейсбук или нетфликс?
@TheWorld-hs1hfАй бұрын
@@Артем-п6ф9эчувствую, в 2025 от джунов (по крайней мере в вебе) будут требовать написать полноценное приложение-чат (при этом не просто чат, а асинхронный real-time чат), который полностью заменит чат в каком-нибудь вк, так еще и с разделением на личные сообщения и беседу, и это в качестве тестового задания, но платит таким спецам будут те же 50-80к; а уже в 2027 такое задание на джуна тянуть не будет. Люди всё больше идут в программирование, python один самых популярных языков (если не самый), конкуренция на позицию джуниор огромная, так как все торопятся выйти на работу. Зарплаты растут медленно, уровень понимания и количество знаний должны быть всё глубже и больше, ну и помимо этого увеличивается требуемое количество сайд скиллов (по типу git, но конкретно к нему нет претензий, просто для ясности пример)
@kornalexandr22 күн бұрын
@@Артем-п6ф9эзачем "как"? Просто написать. Причем чтобы к концу лайв кодинга количество пользователей было больше, чем в ТГ. Это на Джуна. На стажёра - больше, чем в Фейсбук
@Elita-o2n2 ай бұрын
Да... с каждым годом требы к Джунам увеличиваются в геометрической прогрессии😅😅 .... Страшно представить чем занимаются Мидлы и Сеньоры😅😅... Прямо в офисе чилят и эксплуатируют бедных Джунов😭😭😭
@oguretsagressive2 ай бұрын
Посмотри документацию pydantic, раздел "Handling custom generic classes", где рядом есть плашка warning с текстом "This is an advanced technique that you might not need in the beginning". Мидлы это те, кто такие штуки применяет, а сеньоры - кто придумывает.
@alexander_gk2 ай бұрын
Многовато 100 рублей за такие задачи имхо, как SDET Ruby говорю. А кому кажется это сложным, идите в мак на кассу, it это не ваше.
@artemshumeiko2 ай бұрын
а как вы проводите собеседования? какие задачи даете?
@alexander_gk2 ай бұрын
@@artemshumeiko У меня не веб разработка (хоть я и знаю RoR), но если тезисно, то интервью состоит из двух частей. 1) Теория: rest, soap, sql, ci/cd, git и тд. Практика: лайвкодинг по задачам. Задачи от элементарных, типа "найти ошибку в простейшем методе" или "что вернет этот метод", до сложных на ООП с подковырками, где в классе используются миксины и модификаторы доступа. Крутого кандидата могу и по метапрограммированию спросить, и попросить поднять простейший кастомный фреймворк для АТ, но джунов я не собесил, не было нужды, всегда мидлы и выше. З.ы. НИКОГДА не спрашиваю теорию тестирования типа "чем смок отличается от санити", "артефакты тестирования" и прочую чепуху. Это вопросы для ручников-стажеров, а для AQA и SDET такие вопросы == по глупости, как и "кем себя видишь..." )))
@alexander_gk2 ай бұрын
@@artemshumeiko У меня не веб разработка (хоть я и знаю RoR), но если тезисно, то интервью состоит из двух частей. 1) Теория: rest, soap, sql, ci/cd, git и тд. Практика: лайвкодинг по задачам. Задачи от элементарных, типа "найти ошибку в простейшем методе" или "что вернет этот метод", до сложных на ООП с подковырками, где в классе используются миксины и модификаторы доступа. Крутого кандидата могу и по метапрограммированию спросить, и попросить поднять простейший кастомный фреймворк для АТ, но джунов я не собесил, не было нужды, всегда мидлы и выше.
@TheWorld-hs1hfАй бұрын
@@alexander_gkс каких пор миксины, модификаторы доступа и вопросы по метапрограммированию это уровень выше слабого стажера (Что-то типа стажер- -)? Если добавить туда хорошее (± глубокое) понимание асинхронного программирования и отличия асинхронности от многопоточности, многопроцессорности, а для практики добавить задание с написанием функции с использованием asyncio, то, базару ноль, кандидат тянет на стажера, можно даже деньги ему платить, 25-30к
@alexander_gkАй бұрын
@@TheWorld-hs1hf с каких пор описанное тобой - это стажёр? Стажёр - это когда ты пишешь в сознании сразу двоичный код и передаешь его из нейронов в процессор.
@АртемРазумов-щ9г2 ай бұрын
Так много комментариев, что задачи легчащие и не тянут даже на стажера и так мало комментариев, что третья задача решена не верно, точнее не для всех случаев) Видимо эти комментаторы только во сне разработчики)
@rawil6751Ай бұрын
Я вот заметил, но правильное решение за константное время так и не придумал. Интересно, а на собесе это заметили или нет?
@nadyamoscow24613 күн бұрын
Очевидно, про принцип kiss в этой конторе не слышали.
@bulbul01124Ай бұрын
Ты же не синьор явно
@enzopaupau23027 күн бұрын
Не могу не спросить)) а что за тема редактора которым они шеряться? Monokai чуть другой, этот приятнее
@daniyarkhabibulin1696Ай бұрын
Честный отзыв! Если честно не тянешь на senior разработка очень слабо, на middle специалиста еще можно !
@ruslankrivoshein2893Ай бұрын
Сеньор - это не про классное решение алгоритмических задач с собеседования
@imdmotcm8953Ай бұрын
Если это Senior то в отличие от Джуна воспользуется chat gpt
@SeptmanАй бұрын
По голосу интервьювера, ему лет 17-19, если это так, мне значит немного стыдно 😢
@artemshumeikoАй бұрын
Не, точно больше
@dmoroz0v2 ай бұрын
можно бригаду. это спецом сеньор так тупит? или реально? или постановка?
@lesbian_economyАй бұрын
Смотря для кого. Олимпиадник с такими задачами на изи справится, сеньер, у которого последние 5 лет было решение реальных задач, а не этого бреда, будет закономерно тупить.
@YGNETATEL_30003 ай бұрын
А нельзя было написать Filter(predicate, object) ?
@saitaro2 ай бұрын
И что делать потом с этим фильтром?
@vladgusakov33282 ай бұрын
@@saitaro что-то аля try next(objects) except StopIteration
@sergeymalkovski38773 ай бұрын
Жестко. Я ни одной не знаю😢
@khafizovilnaz3 ай бұрын
Ты не один друг, я тоже почувствовал себя тупым
@vladislavfalyush1656Ай бұрын
1 k евро ? Пзд 😂
@tegeranchikrus43895 күн бұрын
Ну я честно не понимаю две вещи: 1. Каким образом человек которого заявляют как сеньора так долго (и так плохо) решал эти задачи 2. Почему после такого собеса человека (судя по заявлениям в видео) взяли, это же даже не уровень стажера
@artemshumeiko4 күн бұрын
Вам виднее, наверняка 500к зарабатываете?
@tegeranchikrus43893 күн бұрын
@@artemshumeiko меньше, врать не буду. Но с таким уровнем прохождения алго-задач даже на стажировки в биг тех не берут, там банально развернут на первом этапе. Я понимаю что алгосы это не то что показывает уровень разработчика, но если бы собеседующие так считали - зачем они бы дали вообще эту задачу, да еще и в конце (в конце дают задачи посложнее обычно)
@tegeranchikrus43893 күн бұрын
Кстати в защиту собеседуемого стоит заметить что с декоратором вроде быстро все получилось, мое почтение
@funtickgd95022 ай бұрын
2 месяца лета не зря... 1 задачу я решил, на второй запутался, но по ходу событий понял, что надо было сделать, а в 3 я сразу понял, что надо было сделать, да и сделал
@TheWorld-hs1hfАй бұрын
С нуля за два месяца?
@dllb19 күн бұрын
Где учился????
@funtickgd950219 күн бұрын
@@dllb сам по книгам, примерами алгоритмов, литкоду. Мне на курсах только базу синтаксиса дали
@dllb18 күн бұрын
@@funtickgd9502 а какие курсы и книги использовал?
@ВадимЕлисеев-ц8э17 күн бұрын
@@funtickgd9502 Помоги, пожалуйста. Вот тоже из скачанных курсов получил базу, но а щас я хз, че мне делать.. Хочу на веб-разраба пойти и по идее до изучения самого django нужно просто решать задачи и так далее, но я вообще не понимаю, где можно было бы подчеркнуть действительно важные и полезные знания ,а где практикой их закрепить.
@MintLoverG12 күн бұрын
Третья задача, которая "Самая сложная", на Сишарпе можно написать оч лего и быстро, минут за 10. Этому меня учили на 1 курсе, а если уже быть Мидл или Джуном, который закончил обучение это максимально изи. Если я будучи на Втором курсе, посмотрел на условие и понял, что в Шарпе "Самую сложную задачу" смогу написать за минут 15-20, т.к. Я еще не Джун и не Мидл
@irondanil346111 күн бұрын
Спасибо тебе большое, бро. Ты делаешь глупых людей как я чуточку умнее.
@ГазинурРысмухаметов2 ай бұрын
3 задача решена неверно)
@abaahiАй бұрын
Для меня сложно было второе. В третьем сразу понял что нужно параллельно сортированный список создавать при инициализации и добавлять в нужное место новый при пуше
@illia4503Ай бұрын
3:09 Всегда хочеться треснуть чем-то тяжелым тех кто в одну строку пишет много операторов, как это в строке 2 и 9. Код в первую очередь должен быть визуально легко читаем, потому что читаем код мы чаще чем пишем, экономия количества строк не дает преймуществ, кроме демонтрации умственных отклонений автора подобного кода.
@incios2 ай бұрын
Знания АСД помогли решить третью задачу в первые 4 секунды после ее прочтения
get_first_matching_object=lambda pred,obj=[]:next((v for v in obj if pred(v)),None)
@Maria_apelsinkaАй бұрын
почемуто 3 задача показалась самой прстой)
@aeternaar3 ай бұрын
Никто не написал про ваш сайт - отличный инструмент для подготовки к собеседованию! Подольше бы он оставался бесплатным!
@gradkb2 ай бұрын
в первой задаче не нужно разделять худший/лучший случай, строго говоря - твой ответ некорректный, правильный - просто О(N), но для джуна норм
@yauhent6712 ай бұрын
каждый раз искать минимум массива?
@CSGO-cr2ctАй бұрын
20:55 def get_min(self): return min(self.stack) if self.stack else None, надеюсь так будет,ибо я тупой совсем
@CSGO-cr2ctАй бұрын
А так разве нельзя было сделать? или я чего то не понимаю?
@artemshumeikoАй бұрын
по времени это занимает O(n), т.к. нужно пройтись по всему массиву и найти минимальное. Спрашивалось более оптимальное решение
@Mr_Fulani3 ай бұрын
Плохо ты претворялся друг ), джун тупит страшнее
@ИннаЛиксакова-о4н3 ай бұрын
в защиту автора видео хочу сказать, что на собеседовании очень сильный стресс и даже такие легкие задачи как первая могут вогнать в ступор, так как очень много нервов мешает думать. Это надо прокачивать скилл прохождения собеседований, чтобы на них не переживать
@djonidep89412 ай бұрын
Бл как надоели люди которые пишут что это просто нереально легко было все. Вы сидите смотрите видео, говорят ответ, вы в голове прокрутили и ответили про себя лучше и это изи. А вы отвечайте сами сперва, а потом слушайте ответ. 90 процентов кто писал «изи на все ответил» сразу откиснут
@АртемРазумов-щ9г2 ай бұрын
Веселее всего, когда понимаешь что третья задача в видео решена неверно или точнее не для всех случаев, а те кому просто этого и не поняли)
@Nickek-g5k2 ай бұрын
Блин даже первая задача вызвала звон в голове... Прорвемся, готовимся дальше)))
@СергейЮров-б6е3 ай бұрын
хех, одно дело вещать по подготовленному сценарию, а другое дело в realtime. Хорошо порешал
@astimch3 ай бұрын
Первые две задачи без комментариев - там ничего сложного. 3-я задача встречалась в нескольких курсах по алгоритмам и структурам данных, поэтому если знаешь, то реализовать ее тоже не составляет большого труда.
@ChrisColeDC3 ай бұрын
это явно не уровень джуна и не 100 тысяч зп, первая задача только, остальные уровня мидл
@РоманДемидов-ц2и3 ай бұрын
нет) порог входа с каждым разом всё выше, мб раньше джунам нужно было ложкой с первого раз в рот попадать, и их уже брали доучиваться, но сейчас ищут самостоятельных спецов, 2 и 3 задачи вполне адекватные, проверяют твои знания в ООП (не совсем), алгоритмах и структурах данных и основах языка, декораторы используются везде, с ними тоже нужно уметь работать уже на начальных стадиях
@myacc25172 ай бұрын
Что задачи, что вопросы это уровень стажера
@ChrisColeDC2 ай бұрын
@@myacc2517 может сразу уровень школьника начальных классов?
@myacc25172 ай бұрын
@@ChrisColeDC Первая задача сравнима с заданием на егэ, вторая и третья это основа основ Если для вас эти задачи на мидлов, то у меня плохие новости
@ChrisColeDC2 ай бұрын
@@myacc2517 чел ты сейчас автора видео дураком выставил)))
@IvaNFallout3 ай бұрын
Один из вариантов решения первой задачи: def get_first_matching_object(predicate, objects): return next((x for x in objects if predicate(x)), None)
@SabFo_3 ай бұрын
Да проще filter использовать
@maximkoltsov98333 ай бұрын
@@SabFo_ лист компрехеншен выполняется быстрее
@saitaro2 ай бұрын
@@maximkoltsov9833 Лист компрехеншен создаст список, пройдясь по всем объектам. Это избыточно, как по памяти, так и по времени.
@maximkoltsov98332 ай бұрын
@@saitaro ладно, согласен, ошибся
@QKekos2 ай бұрын
@@saitaro круглые скобки это не лист компрехеншен а генератор эскпрешн, ленивые вычисления, некст один раз выполнится да и все, дальше эвальюейтится ничего не будет(но понятное дело, что само условие будет проверяться для каждого элемента до первого трушного)
@user-tt9hx4kh1e2 ай бұрын
полтора гола ежедневной учебы и 100к ваши. На самом деле пох сколько предлагают 50, 70, 100. Если компания норм, то сам факт влиться в структуру и уже расти по грейду это и есть основная цель.
@jdwwsz2 ай бұрын
выходит у меня в 16 лет уровень джуниор? и зачем мне в универ поступать тогда...
@Antinormanisto2 ай бұрын
Мне кажется, что это совсем не для джуна, а на стажёра какого - нибудь. Уж слишком просто
@goldgold5942 ай бұрын
Это рофел?
@Antinormanisto2 ай бұрын
@@goldgold594, нет
@merzbow73 ай бұрын
ну так декораторы с параметрами писали во втором пайтоне, изращение, уже как 10 лет можно проще
@mrveles3 ай бұрын
Очень хорошее видео, прям как гора с плеч.
@Denzi333 ай бұрын
🐯
@borisdubrovin11052 ай бұрын
Третье задание примерно на уровне ЕГЭ по информатике. Весьма доступно. Если учащийся сам смог найти решение егэшных задач, а не тупо зубрил шаблонные готовые решения, то третья задача ему вполне должна быть по силам.
@SegeyKravtsov10 күн бұрын
🎯 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
@helish_882 ай бұрын
это троллинг? слишком сложно для JUNIOR
@TheWorld-hs1hfАй бұрын
Когда-то это было так, сейчас некоторые пишут, что это даже не уровень стажера, ибо конкуренция растёт
@helish_88Ай бұрын
@@TheWorld-hs1hf да не, бред же, сейчас очень сильно не хватает спецов в РФ
@TheWorld-hs1hfАй бұрын
@@helish_88 да, но это не мешает им так делать. Сам глянь другие свежие собеседования
@viper_00972 ай бұрын
На питоне не пишу, знаю только школьную программу, поехали. 1. Получить первый объект, соответствующий условию предиката. Она создает список, прогоняя объекты через предикат, и возращает первый элемент, если список не пустой 2. Без понятия :D 3. честно говоря, мне такая задача попадалась в одном курсе. Я просто использовал словарь(ключ: число, значение: количество чисел) и стек одновременно: ко всем новым в стеке числам в словаре прибавляется единица. И когда нужно получить минимальный элемент, просто выбираем первый элемент словаря Получается, 1 - правильно, 2 - неправильно, 3 - правильно.
@Forarit2 ай бұрын
знаю только школьную программу... мне такая задача попадалась в одном курсе.
@viper_00972 ай бұрын
@@Forarit Я знаю только школьную программу питона, курс был про другое
@shehamane351827 күн бұрын
Тут третья задача не про подсчет элементов, да и нет такого понятия как «первый элемент словаря»
@viper_009727 күн бұрын
@@shehamane3518 В словаре элементы отсортированы, я подразумеваю первым элементом минимальный. Про подсчёт, не про подсчёт, но задача решена
@ДавидКутдусов3 ай бұрын
не понял, почему нельзя просто def get_min(self): return min(self.stack) все остальные методы изменяют данные self.stack и метод всегда будет возвращать данные согласно актуальному стеку. Либо я не понял задачу
@ГеоргийЛухтура-в8м3 ай бұрын
Требуется решить за постоянное время, а у Вас O(n)
@artemshumeiko3 ай бұрын
Потому что эта функция занимает O(n) времени, а нужно O(1)
@НикитаЗавертайло3 ай бұрын
Последняя задача не до конца решена. 1. Есть бы сделаем push(3), push(6), push(7), pop(3) и запросим get_min, нам отдаст IndexError, хотябы по идеи должен отдать 6. Мы никак не сможем добиться O(1) в get_min, за исключением, если будем постоянно держать в get_min отсортированную коллекцию, но тогда у других операций увеличится Time Complexity.
@pavelosipov59513 ай бұрын
сможем, например, вот так: class Stack: def __init__(self): self.stack = [] self.mins = [] def push(self, n: int): self.stack.append(n) self.mins.append(min(self.get_min(), n) if self.mins else n) def pop(self) -> int: self.mins.pop() return self.stack.pop() def top(self) -> int: return self.stack[-1] def get_min(self) -> int: return self.mins[-1] и да, решение на видео с ошибкой, в некоторых случаях неправильно сработает.
@Vasilii_Furi3 ай бұрын
@@pavelosipov5951 def pop() у тебя неверно работает
@sonzu14683 ай бұрын
так это же стэк, мы можем удалить из него тока последнее число
@qulinxao3 ай бұрын
"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()) # храним в стеке сами значения и его текущий минимум
@НикитаЗавертайло3 ай бұрын
@@pavelosipov5951 И правда, что-то я ошибся. Спасибо за разъяснение.
@sergem68603 ай бұрын
По-моему некорректно говорить, что в худшем случае О(n), а в лучшем O(1), O вроде описывает имеено поведение в среднем (но надо посмотреть, сходу что-то не находится)
@EgorKissa3 ай бұрын
O-нотация характеризует верхнюю границу. Например алгоритм быстрой сортировки в худшем случае (при неудачном выборе опорных элементов) может выполниться за O(n*n), но верхняя граница в среднем находится на O(nlogn).
@sergem68603 ай бұрын
@@EgorKissa а что в лучшем случае она ограничена константой всё же корректно говорить или нет?
@EgorKissa3 ай бұрын
@@sergem6860 нет
@qulinxao3 ай бұрын
"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()) # храним в стеке сами значения и его текущий минимум
@qulinxao3 ай бұрын
def push(self,v): self.t+=1; self.s.append(q:=(v,self.t)); heapq.heappush(self.pq,q) def pop(self): v,t=self.s.pop(); set(heapq.heappop(pq) for _ in itertools.takewhile(lambda v:v[1]>=t,pq)); return v def top(self):return self.s[-1][0] $$$$это разрыв строки$$$ def get_min(self):return self.pq[0][0] def __init__(self): self.s,self.pq,self.t=[],[(float('inf'),0)],0
@qulinxao3 ай бұрын
def push(self,v): self.s.append(v); v
@novolume130Ай бұрын
Где таким задачам обучиться?
@artemshumeikoАй бұрын
leetcode
@VaeV1ct1s3 ай бұрын
Кажется последняя задача решается линкедлистом с указателем на последнюю ноду, а в ноде с указателями на предыдущую и минимальную. И не надо создавать второй лист
@anoshin453 ай бұрын
Тогда вам нужен кастомный ЛЛ с двумя указателями. Можно упростить и держать минимальное значение в каждой ноде вместо указателя. Но это будет занимать больше места.
@VaeV1ct1s3 ай бұрын
@@anoshin45 написать класс с 3 полями сложно?
@anoshin453 ай бұрын
@@VaeV1ct1s Упростить в плане не заморачиватся с указателями на минимальное значение.
@VaeV1ct1s3 ай бұрын
@@anoshin45 зачем забивать память? Оно у тебя хранится в ноде, на которую ты указываешь. В чем простота?
@anoshin453 ай бұрын
@@VaeV1ct1s а если у тебя два дупликэйта. Ты сам на себя будешь ссылаться ?