да не, ты потом смотришь код чувака - олимпиадника и понимаешь - лучше бы они наняли просто с горящими глазами чувака с крепким знанием фреймворка и просто объяснили бы ему то, что он не знает (чуть научили) - он бы писал лучше - хотя бы из-за того, что не переусложнял бы и не мнил себя великим прогером - почаще доки читал или примеры из Интернета хотя бы
@@vladimirv5782 Эти задачи проверяют минимальный уровень адекватности. Если чувак не в состоянии написать 10 строчек без гугла, то его не нужно нанимать. Олимпиадники здесь ни при чем (да и невозможно их выявить такими простыми задачами)
@@djsjdjdjjdЛадно если просто стоят. Из Яндекса чуваки постоянно прерывают тебя и с мысли сбивают. Я последних двух на хер послал. Яндекс очевидно не мое
в идеале не допускать ошибок - значит уменьшать риски, продумывать в идеале тесты не писать - значит увеличивать риски нанимать идеальных разработчиков - но коментс
@@arthurfonzerelli6484 блять я пытаюсь пройти контест прямо сейчас и понимаю,что я не понимаю ничего в алгоритмах и математике ,накидайте ресурсов,если знаете,товарищи.
Я бы очень хотел посмотреть как эти великие алгоритмисты сами бы написали на пвседокоде новый для них алгоритм на 20 минут,а не надрючивались бы на LeetCode☺Может наконец то начнете давать инжененрные задачи,а не задачи на навыки кодера....
Нужны им алгоритмисты - пусть ищут алгоритмистов. Тебе-то что? Ясное дело лучше искать великих изобретателей, а не надрюченных заучек готового. Но мне непонятно, как твой коммент выступает в поддержку изобретательства? Ведь под инженерными задачами ты подразумеваешь явно не "антинадрюченские алгоритмы, которых нет на литкоде", например. А ровно наоборот: "нахуй алгоритмы, лучше спросите меня как я профессионально прикрутил фреймворк к фреймворку по готовым мануалам"
Спасибо! Полезное видео. Небольшой совет бы добавил для доски/бумажки -- писать через строчку/две, чтобы можно было в образовавшиеся зазоры добавить забытую переменную или условие.
You all prolly dont care but does any of you know a trick to get back into an instagram account?? I stupidly forgot my account password. I would appreciate any assistance you can give me!
@Erick Levi i really appreciate your reply. I found the site on google and Im in the hacking process atm. Takes quite some time so I will reply here later when my account password hopefully is recovered.
Яндекс это единственная компания, где процесс собеседования наглядно демонстрирует народную поговорку - "от любви до ненависти один шаг". И нигде так не радуешься, что провалил собеседование, потому что понимаешь, что работать в компании зазнавшихся токсичных снобов ты явно не сможешь долго. )))
Ну меня радуют их задачки, 3е друзей туда ушло, сидел решал их задачки в захлеб от счаться))) подписатся бы на задачки от яндекс как на мурзилку))) По 6 задачек каждое утро, для разминки мозга перед рабочим днем, а там и кодить будет просще после мозговой зарядки 🤣🤣🤣🤣
Большая часть задач, в том числе и в Яндекс, не требует алгоритмических навыков. Яндекс стреляет себе в ногу каждый раз когда ищет штампованные болванки.
@@theboredasfook Большинство копирует к несчастью, порой не понимая как можно иначе.. Большую часть времени разрабы будут писать бизнес логику и им не обязательно задумываться как устроена хеш таблица и как резруливаются коллизии в них.. в то время как рынок испытывает голод... разрабы которые собеседуют новобранцев не могут пропустить "незнаек" ибо эго жмёт, потом hr-ры как присоски.. хорошо бы иметь 2 QA на инженера, а тут по 2 hr на оного... оно и понятно, кушать хотят.. Ничего, рынок всё поставит по местам ))
@@TheCelaskon мой опыт в 8 лет показывает, что средний IQ, обучаемость и продуктивность человека, который знает, как устроена хеш таблица, выше, чем у тех, кто не знает. В том числе, в работе над рутинными задачами реального промышленного IT
@@aleksandrsolution2380 очень рад за Ваш опыт и IQ ;) а есть цифры? А то мой опыт в 20 лет показывает, что люди вполне справляются с поставленными задачами не всегда имея глубинных представлений. Хотя конечно, лишними эти знания не будут.
@@aleksandrsolution2380 а есть какой-то способ качественно измерить IQ? И если да, то что именно он показывает: навык человека проходить IQ тесты или же что-то другое? Как быть с IQ каких-нибудь вымирающих аборигенов в Африке и что произойдет, если поселить тебя с ними на год без телефона и интернета? Поможет ли твой невероятно высокий уровень IQ и знание устройства хэш таблиц выжить в подобных условиях? Если ты умрешь, то будет ли из этого следовать, что твой уровень IQ ниже, чем у среднестатистического аборигена? Твой опыт в восемь (ахаха) лет показывает лишь то, что за восемь (ой, смешно) лет ЧСВ у тебя раздулось значительно сильнее, чем твои профессиональные навыки.
@exru Тогда уж и if лучше не использовать, поскольку условный переход сбрасывает состояния конвейера :) Я думаю, в python ничто из этого не релеванто, ибо там под капотом дюже много всяких if-else, написанных на C. А для читабельности кода, в общем случае, else - не помеха.
@@MrLotrus забыл добавить "за нищие деньги". А потом после набора опыта можно перейти на хорошую зп в другую компанию и там "участвовать в разработке серьезных продуктов с большой нагрузкой"
Не вижу смысла выполнять max для каждой единицы. Смысл есть только когда последовательность единиц окончилась, т.е. предыдущей элемент был 1, а текущий стал 0 или текущий 1 и мы уже дошли до конца.
Прибыль Яндекса мб? Какой еще показатель вы ожидаете? Сколько кандидатов в категории "вместе с водой выплеснули дитя"? Для такой компании как Яндекс это неизбежно, они десятками людей набирают.
@@mapron1 Яндекс в минусах - живет за счет инвестиций или вливаний. Возможно из-за усложненного подхода. А может из-за амбиций, если из-за амбиций - хорошо и правильно. Но ... рынок он уступает и мирится с этим.. так что вариант с усложненным подходом не стоит отметать.
@@SuperMigman Он и зарабатывает на дешевой РАБ силе, так например Китай, Китаем стал. Мало того что Яндекс жарит всех, от водителей до аналитиков и в хвост и в гриву, так люди еще и радуются что у нас такая классная компания есть. Русский народ это просто атас
1. Начни с понимания условий. Лучший способ: написать тесткейсы и предполагаемые ответы. 2. Не старайся обработать корнеры сразу - переусложнишь код. 3. Что можно поправить: повторы в коде, корнеры при решении, необработанные кейсы из написанных при разборе задачи.
По проходу по бинарному массиву. Дублирования конечно нет, но такой вариант приводит к вызову функции max равному числу единиц в массиве. Понимаю, что для данного примера это не критично, но стоит ли это улучшение по сравнению с постоянным затратам на вызов функции? Хотя это и преждевременная оптимизация, и возможно это повлияет на производитетельность кода не критично.
А если в else обрабатывать - то вызовов будет столько, сколько нулей в массиве. Если есть основания полагать, что единиц много, а нулей мало (или наоборот) - тогда имеет смысл выбирать, куда ставить max().
@@pand5461 но можно else переделать в "elif current > 0:" и тогда мы уменьшаем кол-во операций. да и if легковесней. по-крайней мере, я всегда думаю о том, чтобы самую быструю версию написать, а не такую, в которой ни в коем случае не переповторяется код. быстрота против красоты кода.
Не знаю как на cisc процессорах, но на risk max функция транслируется в одну аппаратную инструкцию, а у вас еще и условие добавлено, которое добавляет столлы, обычно ваше решение медленнее.@@s.k.6563
Погодите, погодите...)) Зачем стирать две строчки кода с правильным алгоритмом, когда можно стереть одну строчку с названием функции и добавить объявления всех переменных вместо нее? Такой подход уже тянет на сложность 2^n. Опасно. :-D
А я-то, дурак, думал, что алгоритмическая задача - это когда ты рисуешь алгоритм в виде блок-схемы/дракон-схемы/псевдоязыка и т.д. А тут вон оно как. Настоящий разработчик должен наизусть знать стандартную библиотеку и кодить на доске, а потом в голове компилировать код в машинный и доказать в соответствии со спецификациями машинного кода, что код исполняется верно и отрабатывает за такое-то количество тактов.
@@AuthorProxy В целом подход вызывать max только тогда, когда необходимо, правильный. Да, в данном случае это элементарная операция, но в общем случае эта привычка поможет оптимизировать код. Вообще в идеале было бы else: if (counter > 0) best = max(...) - тогда вызывалось бы только при переходе с 1 на 0. Но это все для тех случаев, когда вместо max какая-то более долгая операция.
я конечно, не в Яндекс работаю, но мне кажется, в python задача решается гораздо проще num = ''.join(nums) ones = num.split('0') print(max(len(i) for i in ones))
такой код будет работать в разы дольше и требовать намного больше памяти, и если nums будет очень большим, то это может привести к неприятным последствиям
@@gleb.yuzhakov да сейчас вообще ср*ть хотели все на время и память. Посмотри сколько страничка гмейла в оперативке занимает и удивишься :) И как она лагает на слабых компах
Яндекс! У тебя большая аудитория, делай пожалуйста code review даже таких примеров, не учи людей плохому: - по условию задачи надо найти подряд идущие 1, поэтому условие должно быть не if n > 0, а if n == 1 или if n - сравнивать best и current надо только при изменении последовательности, а не на каждый элемент 1 (или 0, версии разные на доске были) - пишешь на Python -> пиши на Python, какой вдруг if len(seq) == 0?? надо же if not seq, pylint вам в помощь.
там же по условию, озвученному автором, на входе бинарный вектор соответственно, он может состоять только из 0 и 1, поэтому условие n > 0 равнозначно n == 1
@@artyompranovich5450 Так в том и дело, у тебя есть прямое условие (==1) и есть твои домыслы (если не ноль, то ровно то, что надо). Во-первых проверка на == 1 - это прямая проверка и она этим понятнее, во-вторых в будущем бинарный вектор может начать иметь больше состояний, а при ==1 продолжит работать без изменений кода.
Я вам больше скажу, len(seq) == 0 ещё и безопаснее, если вместо seq может прилететь не контейнер. Но у языка есть средства на такие случаи и каждому своё место.
У меня был одноклассник Леша Ильин, если это ты то исенме)))) Если нет то тоже хорошего денька) 1) в условии в массиве только 0 и 1, так что никаких домыслов - если не ноль, то единица. + Второй варик с if n отработает не только если n - единица, так что противоречие 2)в случае если последний элемент - единица, то сравнение не произойдет -> ответ может быть неверным 3)len() понятнее на интуитивном уровне, ну и кто то может не знать фишки питона
потому что без фломастера и доски ты не программист, так считает Яндекс! Да забыл, еще умный вид и не улыбаться, а то подумают что он какую то хуюню рассказывает!
Слушайте, ну выполнять функцию max() на каждый шаг цикла на миллионе, скажем, итераций - это весьма себе такое.... Так что компактность кода компактностью, но оптимизация же должна же хоть какая-то быть?
По поводу тогт, что проверка краевых условий вначале плохая практика, полностью не согласен. И обьяснение, что мол я могу наговнокодить из-за этого просто какое-то натянутое. Я пишу код по TDD и всегда проверяю исключительные ситуации первыми. Потом смело рефакторю, так как написаны тесты, и код становится чистым.
дичь для олимпиадников и задротеров. Совершенно бесплолезный хлам.. Когда будет бизнес - задача в реальной работе, ты отполируешь и алгоритм решения и сам код и тебе не нужны будут эти наскальные 500 задач на эти векторы с массивами.
Сразу возникает вопрос, а зачем писать код на доске? Спикер сам говорит, что нужно заранее продумывать код, чтобы для добавления промежуточных строк не стирать последующие. Да и писать на доске код уже звучит абсурдно. Не проще ли выдать разработчику ноутбук и шарить экран например на доску или на другие компьютеры?
Когда яндекс прекратит страдать этой хуйней? Я понимаю такую фигню спрашивать для тех кто в биг дата работает. А фронтам нахуя Ваша сложность и информатика?
Надеюсь парень не программирует на доске, а то запарится же все время переписывать. Из личной практики - код функции можно оставить в покое после 4-го варианта, лучше уже возможно не получится.
Стойкая неприязнь к подобному. В вашей компании никак от школьного синдрома не избавятся!!! Спецом даете доску,чтобы людям жизнь усложнить,когда им придется стирать половину и начинать заново7
Первое - это объявление переменной (счетчик) и присваивание ей значения нуля. Во втором случае, когда элемент массива 0, то счетчик следует обнулить, так как последовательность единиц нарушена.
Дорогой мой, "главное условие" - проверка входных данных. main condition или general condition. Без этого ваш код не рабочий изначально. PS проводить собеседование на доске в 2022-м это уже даже не мовитон. Любой реальный разработчик пользуется инструментами для разработки, а не "доской"! И собеседование человека на детсадовских алгоритмах, у которого есть опыт настоящего отраслевого программирования - смех и цирк.
Так не ходите в яндекс или в компании FAANG. Зачем приходить к ним и рассказывать что они неправильно собеседования проводят, заставляя решать алгоритмы? В вашей успешной компании может быть так, как нравится вам.
Здравствуй Леша руководитель У меня просьба на руководи нормальные цены в такси 🚕 почему убрали гарантийные выплаты их нет а возим по 50 95 итд это без гарантий не цена У меня машина арендная 1200 аренда 700 газ 200 мойка стоянка 60 моя зп за 12 часов 500 700 рублей вы че творите 140 рублей с одного конца города в другой по пробкам Физически не заработаешь больше
Забавно, что половину из комментаторов ("что за прикол с тестами в начале - написал ответы и... значит, что всё правильно понял"; "в XXI в. есть проекторы"; "зачем писать на доске, есть же ИДЕ" и пр.) уже можно после комментариев (и уже без тестов) на работу не брать. Ну, или брать... операторами какими-нибудь по вводу, например.
public static int check(int[] arr) { int count = 0; int max = 0; for (int e : arr) { if (e == 1) { count++; } else { if (count > max) { max = count; } count = 0; } } return max; } }
аллё, уважаемый:)) а что выдаст твой код, если: 1. массив заканчивается последовательностью единиц и она будет самой длинной последовательностью единиц? 2. массив состоит из только (например) пяти единиц? а?:))
Ну так раздайте компьютеры кандидатам, чего вы тупите. И что это за прикол с тестами в начале - написал ответы и это типа значит, что всё правильно понял? Что за дичь.... Массив заканчивается единицами - и что??? Это какие-то особенные единицы??
@@drovoseg а если не всегда понятно какие условия краевые, иногда над этим отдельно подумать надо, какой пример привести чтобы он стал краевым. И в итоге, какое решение правильное и красивое, а то закончили на длинном, которое лучше избегать?
Я поставил на паузу и сходу написал алгоритм, который предполагает вычисление макса сразу в операторе ретурн, что является быстрее (опустим, что это питон), чем выполнение функции макс в цикле, т.к. на ретурне эта функция выполняется единожды. Но на бумаге я бы много почиркал, могу ли я приходить в яндекс устраиваться? )))
А потом ты приходишь на проект и пилишь бизнес - логику. Где главная задача не забыть проверить на null, а не вот эта вот дичь с алгоритмами.
На фронте двигаешь кнопочки, на бэке перекладываешь джейсончики_)
да не, ты потом смотришь код чувака - олимпиадника и понимаешь - лучше бы они наняли просто с горящими глазами чувака с крепким знанием фреймворка и просто объяснили бы ему то, что он не знает (чуть научили) - он бы писал лучше - хотя бы из-за того, что не переусложнял бы и не мнил себя великим прогером - почаще доки читал или примеры из Интернета хотя бы
@@vladimirv5782 Эти задачи проверяют минимальный уровень адекватности. Если чувак не в состоянии написать 10 строчек без гугла, то его не нужно нанимать. Олимпиадники здесь ни при чем (да и невозможно их выявить такими простыми задачами)
@@dmitrypetrov8491 многое прогеры не могут, когда над душой стоят
@@djsjdjdjjdЛадно если просто стоят. Из Яндекса чуваки постоянно прерывают тебя и с мысли сбивают. Я последних двух на хер послал. Яндекс очевидно не мое
"в идеале ошибок лучше не допускать" - может тогда в идеале и тесты не писать, а просто нанимать идеальных разработчиков
в идеале не допускать ошибок - значит уменьшать риски, продумывать
в идеале тесты не писать - значит увеличивать риски
нанимать идеальных разработчиков - но коментс
😀
В идеале лучше не грешить, тогда становишься святым и работать в яндекс уже не нужно.
Надо на бересте писать. Зачем эти новомодные штучки в виде маркеров и досок?
"На компьютере можно просто вставить объявление переменных, на доске придется стирать, поэтому нужно продумывать заранее" - да это ж гениально!:)))
Можно ж не стирать, а дописать выше справа :)
Еще можно зазоры оставлять между строчками, на всякий случай :D
Отож. Боже упаси к такому попасть на интервью
Видео оказались полезными при подготовке, спасибо. Попался к Алексею на одной из технических встреч, было вдвойне приятно!))
Как долго проходить интервью чтобы работать за зарплату ниже рыночной, отвечает Яндекс
тоже слышал, что у них зарплаты ниже рынка, интересно, это правда?
откуда инфа? Я работал стажером за 60, джуном после 3 месяцев за 115к
@@alexyetto969 от коллег слышал. Но 115к для джуна - это отлично
@@arthurfonzerelli6484 блять я пытаюсь пройти контест прямо сейчас и понимаю,что я не понимаю ничего в алгоритмах и математике ,накидайте ресурсов,если знаете,товарищи.
@@alexyetto969 в СПб и Мск это зарплата ниже среднего, большинство знакомых после стажировки получали 140-170
Работать в нашей компании такая честь (c) Yandex
А деньги?
@@MrRadiostep а деньги будут после Яндекса
Для джунов, чтобы потом легче было уйти в компанию, в которой платят хорошие деньги
@@cheesebusiness практика показывает, что для того, чтобы тебя пригласили в хорошую компанию не обязательно иметь Яндекс или ему подобное в резюме.
@@АлексейКанаев-р8х это не противоречит моему комментирую
круто объясняет почти повседневный бул щит программиста - мне бы такого ментора
Хорошая поставленная речь, без слов-паразитов. Приятно слушать
Я бы очень хотел посмотреть как эти великие алгоритмисты сами бы написали на пвседокоде новый для них алгоритм на 20 минут,а не надрючивались бы на LeetCode☺Может наконец то начнете давать инжененрные задачи,а не задачи на навыки кодера....
Ну справедливости ради тут задача была простая, и не надрючиваясь на LeetCode мне сразу же пришла в голову ровна та же идея, что и в видео)
Нужны им алгоритмисты - пусть ищут алгоритмистов. Тебе-то что? Ясное дело лучше искать великих изобретателей, а не надрюченных заучек готового. Но мне непонятно, как твой коммент выступает в поддержку изобретательства? Ведь под инженерными задачами ты подразумеваешь явно не "антинадрюченские алгоритмы, которых нет на литкоде", например. А ровно наоборот: "нахуй алгоритмы, лучше спросите меня как я профессионально прикрутил фреймворк к фреймворку по готовым мануалам"
Спасибо! Полезное видео.
Небольшой совет бы добавил для доски/бумажки -- писать через строчку/две, чтобы можно было в образовавшиеся зазоры добавить забытую переменную или условие.
Зачем? Можно просто нажать enter на доске ))
You all prolly dont care but does any of you know a trick to get back into an instagram account??
I stupidly forgot my account password. I would appreciate any assistance you can give me!
@Keegan Corey instablaster ;)
@Erick Levi i really appreciate your reply. I found the site on google and Im in the hacking process atm.
Takes quite some time so I will reply here later when my account password hopefully is recovered.
@Erick Levi it worked and I finally got access to my account again. I'm so happy:D
Thank you so much you saved my account :D
Яндекс это единственная компания, где процесс собеседования наглядно демонстрирует народную поговорку - "от любви до ненависти один шаг". И нигде так не радуешься, что провалил собеседование, потому что понимаешь, что работать в компании зазнавшихся токсичных снобов ты явно не сможешь долго. )))
откуда информация, много с кем общался?
Ну меня радуют их задачки, 3е друзей туда ушло, сидел решал их задачки в захлеб от счаться))) подписатся бы на задачки от яндекс как на мурзилку))) По 6 задачек каждое утро, для разминки мозга перед рабочим днем, а там и кодить будет просще после мозговой зарядки 🤣🤣🤣🤣
Прямо с языка снял!
Большая часть задач, в том числе и в Яндекс, не требует алгоритмических навыков. Яндекс стреляет себе в ногу каждый раз когда ищет штампованные болванки.
Да да, ведь только яндекс так делает
@@theboredasfook Большинство копирует к несчастью, порой не понимая как можно иначе..
Большую часть времени разрабы будут писать бизнес логику и им не обязательно задумываться как устроена хеш таблица и как резруливаются коллизии в них.. в то время как рынок испытывает голод... разрабы которые собеседуют новобранцев не могут пропустить "незнаек" ибо эго жмёт, потом hr-ры как присоски.. хорошо бы иметь 2 QA на инженера, а тут по 2 hr на оного... оно и понятно, кушать хотят..
Ничего, рынок всё поставит по местам ))
@@TheCelaskon мой опыт в 8 лет показывает, что средний IQ, обучаемость и продуктивность человека, который знает, как устроена хеш таблица, выше, чем у тех, кто не знает. В том числе, в работе над рутинными задачами реального промышленного IT
@@aleksandrsolution2380 очень рад за Ваш опыт и IQ ;) а есть цифры? А то мой опыт в 20 лет показывает, что люди вполне справляются с поставленными задачами не всегда имея глубинных представлений. Хотя конечно, лишними эти знания не будут.
@@aleksandrsolution2380 а есть какой-то способ качественно измерить IQ? И если да, то что именно он показывает: навык человека проходить IQ тесты или же что-то другое? Как быть с IQ каких-нибудь вымирающих аборигенов в Африке и что произойдет, если поселить тебя с ними на год без телефона и интернета? Поможет ли твой невероятно высокий уровень IQ и знание устройства хэш таблиц выжить в подобных условиях? Если ты умрешь, то будет ли из этого следовать, что твой уровень IQ ниже, чем у среднестатистического аборигена? Твой опыт в восемь (ахаха) лет показывает лишь то, что за восемь (ой, смешно) лет ЧСВ у тебя раздулось значительно сильнее, чем твои профессиональные навыки.
Как говорится: "вам шашечки или ехать"
Вообще-то, первое, что приходит в голову:
else
current = 0
PS xD приехали туда же, но видео засталяет шевелировать извилинами, это лайк :)
@exru Тогда уж и if лучше не использовать, поскольку условный переход сбрасывает состояния конвейера :) Я думаю, в python ничто из этого не релеванто, ибо там под капотом дюже много всяких if-else, написанных на C. А для читабельности кода, в общем случае, else - не помеха.
А можете рассказать, зачем разработчику попадать в Яндекс? А то не очень понятно.
Печеньки. Всё дело в хороших печеньках.
Очевидно же, чтобы писать сортировку маркером на доске. Очень полезное и важное занятие.
Чтобы участвовать в разработке серьезных продуктов с большой нагрузкой.
@@MrLotrus забыл добавить "за нищие деньги". А потом после набора опыта можно перейти на хорошую зп в другую компанию и там "участвовать в разработке серьезных продуктов с большой нагрузкой"
@@SkyAntins нищие деньги это до какой суммы?
На самом деле все просто и понятно. Главное не волноваться.
Не вижу смысла выполнять max для каждой единицы. Смысл есть только когда последовательность единиц окончилась, т.е. предыдущей элемент был 1, а текущий стал 0 или текущий 1 и мы уже дошли до конца.
То есть все в яндекс пишут код сразу с первого раза, без отладки и ошибок? Написал, и сразу в прод?
Решал вместе с ним. Собрал ВСЕ ошибки (((
Зачем вы так издеваетесь над соискателями? Есть ли количественно подтверждённый показатель эффективности такого подхода?
Прибыль Яндекса мб? Какой еще показатель вы ожидаете? Сколько кандидатов в категории "вместе с водой выплеснули дитя"? Для такой компании как Яндекс это неизбежно, они десятками людей набирают.
@@mapron1 Яндекс в минусах - живет за счет инвестиций или вливаний. Возможно из-за усложненного подхода. А может из-за амбиций, если из-за амбиций - хорошо и правильно. Но ... рынок он уступает и мирится с этим.. так что вариант с усложненным подходом не стоит отметать.
@@user-ed3sg5vy2y в минусах? А ты смешной. Может для начала хоть финансовые отчёты публичные посмотришь.
@@SuperMigman Он и зарабатывает на дешевой РАБ силе, так например Китай, Китаем стал. Мало того что Яндекс жарит всех, от водителей до аналитиков и в хвост и в гриву, так люди еще и радуются что у нас такая классная компания есть. Русский народ это просто атас
1. Начни с понимания условий. Лучший способ: написать тесткейсы и предполагаемые ответы.
2. Не старайся обработать корнеры сразу - переусложнишь код.
3. Что можно поправить: повторы в коде, корнеры при решении, необработанные кейсы из написанных при разборе задачи.
а вот в правильно написанном коде у вас же увеличивается количество вызовов мак функции ?
После слов бинарный вектор поняла что мне еще рано
По проходу по бинарному массиву. Дублирования конечно нет, но такой вариант приводит к вызову функции max равному числу единиц в массиве. Понимаю, что для данного примера это не критично, но стоит ли это улучшение по сравнению с постоянным затратам на вызов функции? Хотя это и преждевременная оптимизация, и возможно это повлияет на производитетельность кода не критично.
А если в else обрабатывать - то вызовов будет столько, сколько нулей в массиве. Если есть основания полагать, что единиц много, а нулей мало (или наоборот) - тогда имеет смысл выбирать, куда ставить max().
@@pand5461 но можно else переделать в "elif current > 0:" и тогда мы уменьшаем кол-во операций. да и if легковесней. по-крайней мере, я всегда думаю о том, чтобы самую быструю версию написать, а не такую, в которой ни в коем случае не переповторяется код. быстрота против красоты кода.
Сразу же возникла такая же претензия. Best нужно записывать в else, проверяя на if (count>max)
тогда придется еще в конец добавить и будет не очень красиво
Не знаю как на cisc процессорах, но на risk max функция транслируется в одну аппаратную инструкцию, а у вас еще и условие добавлено, которое добавляет столлы, обычно ваше решение медленнее.@@s.k.6563
Погодите, погодите...)) Зачем стирать две строчки кода с правильным алгоритмом, когда можно стереть одну строчку с названием функции и добавить объявления всех переменных вместо нее? Такой подход уже тянет на сложность 2^n. Опасно. :-D
спасибо классная задачка !)
А я-то, дурак, думал, что алгоритмическая задача - это когда ты рисуешь алгоритм в виде блок-схемы/дракон-схемы/псевдоязыка и т.д. А тут вон оно как. Настоящий разработчик должен наизусть знать стандартную библиотеку и кодить на доске, а потом в голове компилировать код в машинный и доказать в соответствии со спецификациями машинного кода, что код исполняется верно и отрабатывает за такое-то количество тактов.
Мамкин тим-лид
Спасибо за полезное видео.
6:50 - Недостатков там нет. После изменения, увеличилось количество вызовов max
нет не увеличилось, столько же
Согласна. Уж лучше пусть будет копирование кода. Очень удивляет, что в Яндексе остановились на таком неэкономичном варианте
так с чего вдруг увеличилось? Есть основания полагать, что в векторе единиц больше, чем нулей?
@@AuthorProxy В целом подход вызывать max только тогда, когда необходимо, правильный. Да, в данном случае это элементарная операция, но в общем случае эта привычка поможет оптимизировать код. Вообще в идеале было бы else: if (counter > 0) best = max(...) - тогда вызывалось бы только при переходе с 1 на 0. Но это все для тех случаев, когда вместо max какая-то более долгая операция.
я конечно, не в Яндекс работаю, но мне кажется, в python задача решается гораздо проще
num = ''.join(nums)
ones = num.split('0')
print(max(len(i) for i in ones))
такой код будет работать в разы дольше и требовать намного больше памяти, и если nums будет очень большим, то это может привести к неприятным последствиям
к комменту выше добавлю, что претендента проверяют на алгоритмическое мышление, а не на знание либ питона.
Тем не менее это самое алгоритмически простое решение. Ни циклов, ни условных операторов :)
@@gleb.yuzhakov да сейчас вообще ср*ть хотели все на время и память. Посмотри сколько страничка гмейла в оперативке занимает и удивишься :) И как она лагает на слабых компах
@@primawerefox4020 цикл таки есть. И вообще тут один синтаксический сахар, если его развернуть алгоритм получится такой себе
кто первый халат одел, тот и доктор
надел
@@alexyetto969халат одели - тебя надели
Яндекс! У тебя большая аудитория, делай пожалуйста code review даже таких примеров, не учи людей плохому:
- по условию задачи надо найти подряд идущие 1, поэтому условие должно быть не if n > 0, а if n == 1 или if n
- сравнивать best и current надо только при изменении последовательности, а не на каждый элемент 1 (или 0, версии разные на доске были)
- пишешь на Python -> пиши на Python, какой вдруг if len(seq) == 0?? надо же if not seq, pylint вам в помощь.
там же по условию, озвученному автором, на входе бинарный вектор
соответственно, он может состоять только из 0 и 1, поэтому условие n > 0 равнозначно n == 1
@@artyompranovich5450 Так в том и дело, у тебя есть прямое условие (==1) и есть твои домыслы (если не ноль, то ровно то, что надо). Во-первых проверка на == 1 - это прямая проверка и она этим понятнее, во-вторых в будущем бинарный вектор может начать иметь больше состояний, а при ==1 продолжит работать без изменений кода.
if not seq менее эксплисит, чем len(seq) == 0
Я вам больше скажу, len(seq) == 0 ещё и безопаснее, если вместо seq может прилететь не контейнер. Но у языка есть средства на такие случаи и каждому своё место.
У меня был одноклассник Леша Ильин, если это ты то исенме)))) Если нет то тоже хорошего денька)
1) в условии в массиве только 0 и 1, так что никаких домыслов - если не ноль, то единица. + Второй варик с if n отработает не только если n - единица, так что противоречие
2)в случае если последний элемент - единица, то сравнение не произойдет -> ответ может быть неверным
3)len() понятнее на интуитивном уровне, ну и кто то может не знать фишки питона
Бинарный вектор ёмаё
Задачки - это хорошо. А кто у вас ваяет это навязчивое авнище Алису и тонны саморекламы Яндекс браузера?
Приятная музыка на фоне!
Все же делать сравнение на каждом шаге ( момент в коде max()) так себе...
Вариант с сравнением только при обнаружении 0 и в конце - лучше.
А чем он лучше? Ноль же тоже может быть на каждом шаге.
Только зачем программисту уметь писать код на доске? Давно уже есть средства для удаленной колаборации.
потому что без фломастера и доски ты не программист, так считает Яндекс! Да забыл, еще умный вид и не улыбаться, а то подумают что он какую то хуюню рассказывает!
Потому что это большая честь
понял?:) это большая честь.
Слушайте, ну выполнять функцию max() на каждый шаг цикла на миллионе, скажем, итераций - это весьма себе такое.... Так что компактность кода компактностью, но оптимизация же должна же хоть какая-то быть?
Да, алгоритмы они такие :)
По поводу тогт, что проверка краевых условий вначале плохая практика, полностью не согласен. И обьяснение, что мол я могу наговнокодить из-за этого просто какое-то натянутое. Я пишу код по TDD и всегда проверяю исключительные ситуации первыми. Потом смело рефакторю, так как написаны тесты, и код становится чистым.
дичь для олимпиадников и задротеров. Совершенно бесплолезный хлам.. Когда будет бизнес - задача в реальной работе, ты отполируешь и алгоритм решения и сам код и тебе не нужны будут эти наскальные 500 задач на эти векторы с массивами.
Сразу возникает вопрос, а зачем писать код на доске? Спикер сам говорит, что нужно заранее продумывать код, чтобы для добавления промежуточных строк не стирать последующие. Да и писать на доске код уже звучит абсурдно. Не проще ли выдать разработчику ноутбук и шарить экран например на доску или на другие компьютеры?
Сейчас на доске уже никто код не пишет. Это ушло в прошлое. Сейчас на собеседованиях в Яндексе используют IDE в браузере без подсветки синтаксиса.
@@stunislove190то есть уже продвинулись до блокнота. Хай-тек
Очень крутая идея по проработке тестовых и критических значений.
Спасибо!
Ну уж если следовать правилам то массивы на Python называются кортежами а в данном примере идет работа со списками
Когда яндекс прекратит страдать этой хуйней? Я понимаю такую фигню спрашивать для тех кто в биг дата работает. А фронтам нахуя Ваша сложность и информатика?
А если мы не попали в условие if n > 0, не будет ли best undefined? (руководствуясь логикой js)
Так мы best заранее определили как 0
Ну так как нужно правильно описывать алгоритм, я так и не понял?
Если нет цели получить спортивный разряд по стиранию доски, то оставляйте по 2-3 пустых строки между строками на случай вставки.
Вы меня конечно простите, но на каждую встреченную единицу вызывать макс(), это както жирно будет. т.е. производительность не важна в принципе?
А есть основания полагать, что нулей будет меньше в последовательности, чтобы вызывать макс() на каждый встреченный ноль?
Надеюсь парень не программирует на доске, а то запарится же все время переписывать.
Из личной практики - код функции можно оставить в покое после 4-го варианта, лучше уже возможно не получится.
Очевидно рекурсией будет получше. А каждый раз вызывать функцию max - ну такое себе по эффективности.
почему код громоздкий если можно переписать в 2 тернара и цикл
Т.е. называть метод foo это ок?
len(max(''.join(map(str, array)).split('0'))) # вот еще необычный способ решения:)
Эффективность низкая
@@user-kj9zl3hl2h это да, просто для прикола показал, как в питоне можно кратко писать, иногда в спортивном прогрммировании помогает.
даже в отрыве от курсов яндекса, это тупо трезвое рассуждение о написании любого кода
Стереть одну строку - нее, стереть 2 строки- даа
эта вообще легкая задача:
public static int Foo(int[] nums) {
int count = 0, prev = 0;
for (int i = 0; nums.Length > i; i++) {
if (nums[i] > 0)
{
count++;
prev = prev < count ? count : prev;
}
else {
count = 0;
}
}
return prev;
}
Стойкая неприязнь к подобному. В вашей компании никак от школьного синдрома не избавятся!!!
Спецом даете доску,чтобы людям жизнь усложнить,когда им придется стирать половину и начинать заново7
Кажется, это у тебя школьный синдром, раз доски боишься
@Dzmitry Lahoda в резюме ссылка на гитхаб есть. А при чём тут мой код?
Почему доска-то вместо среды разработки?
Понятно, что людям лица приятнее скриншотов, но приятнее ли они айтишникам...
Писать код на доске это хороший навык, помогает в реальной жизни. Плюс это устоявшаяся традиция, показывает насколько ты ясно мыслишь
@@polkovnikpolovnik помогает в реальной жизни? это сарказм?
В яндексе оказывается нужен навык написания кода на доске, надо аж сразу код продумывать перед написанием. Бред собачий.
Ok
как нет дублирования кода когда current = 0 два раза
Первое - это объявление переменной (счетчик) и присваивание ей значения нуля. Во втором случае, когда элемент массива 0, то счетчик следует обнулить, так как последовательность единиц нарушена.
@@osmig3565 ты гений 👏этот код можно переписать в тернар и логику переделать гораздо лучше этого говна примитивного
Говорят зарплаты в Яндексе невысокие?
Всегда можно посмотреть на glassdoor или levels
В этом году был гроб от Халявина
Дорогой мой, "главное условие" - проверка входных данных. main condition или general condition. Без этого ваш код не рабочий изначально. PS проводить собеседование на доске в 2022-м это уже даже не мовитон. Любой реальный разработчик пользуется инструментами для разработки, а не "доской"! И собеседование человека на детсадовских алгоритмах, у которого есть опыт настоящего отраслевого программирования - смех и цирк.
Так не ходите в яндекс или в компании FAANG. Зачем приходить к ним и рассказывать что они неправильно собеседования проводят, заставляя решать алгоритмы? В вашей успешной компании может быть так, как нравится вам.
Просто не ходите в яндекс. Низкие зарплаты и дроч алгосами.
Здравствуй Леша руководитель У меня просьба на руководи нормальные цены в такси 🚕 почему убрали гарантийные выплаты их нет а возим по 50 95 итд это без гарантий не цена У меня машина арендная 1200 аренда 700 газ 200 мойка стоянка 60 моя зп за 12 часов 500 700 рублей вы че творите 140 рублей с одного конца города в другой по пробкам Физически не заработаешь больше
Иде и проектор не судьба?
сколько воды
Фуууу, а почему такие супер программисты не решают задачку через тестирование.
по мне так итерация != ошибка
В Google даже таких задач не дают на собеседование 😂 Яндекс 🤦 просто шарашка . Иди лучше навигатор почини !
а какие задачи в Гугл?
Забавно, что половину из комментаторов ("что за прикол с тестами в начале - написал ответы и... значит, что всё правильно понял"; "в XXI в. есть проекторы"; "зачем писать на доске, есть же ИДЕ" и пр.) уже можно после комментариев (и уже без тестов) на работу не брать. Ну, или брать... операторами какими-нибудь по вводу, например.
жаль IT мир про это не знает, ну да ладно.
@@ЕгорМазур-х1с Про что?
Еще один вариант :)
m = [0,0,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1]
t = "".join(map(m, lambda x: str(x)))
print(max(map(lambda x: len(x), t.split('0'))))
Индусокодстайл?
@@avazart614 нет, нужно больше строчек. ))
@@wlepnoga Кучей кеп-стал-комметариев добьете
@@avazart614 индусо код это какраз когда куча циклов иф фор элс) ну по моему наблюдению
синтаксический сахар индусы не особо юзают
однострочник)
max(map(len, ''.join(map(str, m)).split('0')))
public static int check(int[] arr) {
int count = 0;
int max = 0;
for (int e : arr) {
if (e == 1) {
count++;
} else {
if (count > max) { max = count; }
count = 0;
}
}
return max; }
}
аллё, уважаемый:))
а что выдаст твой код, если:
1. массив заканчивается последовательностью единиц и она будет самой длинной последовательностью единиц?
2. массив состоит из только (например) пяти единиц?
а?:))
@@manOfPlanetEarth очевидно
1. не максимум
2. 0
@@valery5022
а мне ты зачем это пишешь?🤦♂️ Я же и придумал этот пример - я-то знаю как он работает.
Ага, а в задаче этих условий нет. Додумывай сам.
Каких? о_О
ниче не понятно нет обьяснений
Ну так раздайте компьютеры кандидатам, чего вы тупите. И что это за прикол с тестами в начале - написал ответы и это типа значит, что всё правильно понял? Что за дичь.... Массив заканчивается единицами - и что??? Это какие-то особенные единицы??
Это TDD, единицы в конце как раз помогли найти баг
@@drovoseg а если не всегда понятно какие условия краевые, иногда над этим отдельно подумать надо, какой пример привести чтобы он стал краевым. И в итоге, какое решение правильное и красивое, а то закончили на длинном, которое лучше избегать?
если волосы еще подлиннее отрастит, будет похож на девушку)
Это какой то отдельный вид мазохизма после которого получаем "не могу жить в стране которая воюет с соседями"
А по факту ты перекладываешь json-ы
2024 году для меня яндекс это клоака
Я поставил на паузу и сходу написал алгоритм, который предполагает вычисление макса сразу в операторе ретурн, что является быстрее (опустим, что это питон), чем выполнение функции макс в цикле, т.к. на ретурне эта функция выполняется единожды. Но на бумаге я бы много почиркал, могу ли я приходить в яндекс устраиваться? )))
Math.max(...yourArr.join().replaceAll(',', '').split('0').map(i => i.length))