Очень круто, прям на одном дыхании смотрел. Классно, что показали как на стороне яндекса всё делается. Заметки огонь просто. Спасибо всем участникам и Кириллу за организацию.
@@AndroidBroadcast ой да перестаньте, мы все продаем свое время работодателю. И абсолютно нормально ценить себя и свой труд максимально высоко. А для души есть пет проекты ) Да и статус... Ну может быть в этом что то есть, но я выбрал в свое время нормальный оклад. И ни капли не жалею ) Но какгрицца, это сугубо личный кейс, ни в коем разе не настаиваю на мнении...
@@AndroidBroadcastтак а с чего ты взял, что ты бы без яндекса их не получил? Куча людей сидят на очень жирных офферах, но яндекса в резюме не имеет. Так и помимо прочего полно других статусных российских бигтех компаний, которые имеют адекватный процесс найма и платят больше. А несколько недель/месяцев решать литкод для собеса, чтобы потом быть гребцом за зп ниже рынка, но в яндексе, кажется такой себе идеей.
Тут скорее тема, что у фаангов подход похожий (только поадекватней), так что можно использовать Яндекс как бесплатное мок-собеседование при подготовке сразу в фаанг)
Сложность по памяти оценивается для вспомогательных данных, а не для выходных. Иначе бы сложность зависела от сигнатуры функции (возвращает ли она массив или в нее передается уже преаллоциорованный выходной массив)
На мой взгляд, большинство разрабов с большим опытом коммерческой разработки, но без олимпиадного бекграунда, не будут тратить время на leetcode задачки. Зачем ? Есть компании в России, которые платят не меньше или больше yandex, но на их собесах не спрашивают оторванные от реальной жизни задачки. Конечно, такие задачки используются при найме в FAANG, но там люди готовятся по полгода именно из-за 'жирных' офферов. А yandex, судя по всему, принимает в основном молодежь из бывших олимпиадников )
Я как миддл разработчик в крупной компании иногда не сходу въезжаю как решать литкодовские задачки даже легкого уровня, но тем не менее трудностей в работе не возникает.
а вы что не пользуетесь их ПО? попробуйте и поймете в чем прикол..🤣 я когда пользуюсь их ПО, икают все, даже те кто еще только собирается туда пойти.🤣знать алгоритмы конечно надо, но надо еще уметь правильно писать! не зная на хорошем уровне языка на котором пишешь, от алгоритмов толку что мертвому припарка..🤣 у них алгоритмы просто отсеивают людей. туда не берут лучших или худших, берут кто пройдет! а чтоб не перли все подряд, сделали это как важное. так делали во всех топ компаниях чтоб отсеять как можно больше, ну а если прошел то ок, придется взять..🤣 какой-то прям пользы, нет... я смотрю их собесы, да часто код верно написан но проблему которая потом догонит он не решает.. и тогда вопрос нафига?🤣алгоритмы писать может, а язык нормально не понимает, и лепит так что оптимизация алгоритмом тащится а языком гробиться. а потом посмотрели медленно пашет, переписали на более быстрый яп..🤣 вместо того чтоб просто нормально написать.
Сказали что нужно решить задачу максимально оптимально и по времени и по памяти. В то же время пишет коммент "Кандидат откуда-то взял идею, что нужно делать in-place:)"! Отличный подход, яндекс!
@@dmitriykonopinskiy3793 если вы не знаете значение данных слов + не умеете пользоваться переводчиком, думаю, вам не стоит вообще пытаться в программирование
Это звучит здорово, пока случайно не заходишь на Яндекс маркет. Это не то что на телефоне еле работает, так и на компьютере с большим трудом. Казалось бы, заявляется всё для оптимизации, но на выходе не сильно отличается, а местами и хуже чем в среднем по больнице
@@torburgmaxредкость конечно. Я как-то по приколу подался на самую простейшую вакансию Яндекса, чтобы посмотреть, реально ли туда попасть. Вакансия была как раз в подразделение маркета. Заниматься подготовкой и модерацией карточек товаров. Выслали тестовое задание. Сделал. Задание кстати муторное из нескольких частей. Но даже на собеседование не пригласили. И это вакансия была на полный рабочий день за что-то там 25 или 28 тыс. в месяц. Не знаю, что не устроило и каких гениев они на эти деньги ищут. Я может и не лучший специалист в мире, но уж точно не худший. Хотел бы я посмотреть на то, кого они находят на такие зарплаты.
42:37 -- я считаю, что некорректно считать, что сложность по памяти оценена некорректно. Мы же выделяем память под выходной массив. И чем больше первый, тем больше второй, Таким образом, потребление памяти растет линейно. Другое дело, что зачастую это учитывать необязательно, и на практике лучше спрашивать, учитывать ли выходной массив в оценке. Но ответ абсолютно корректен (если я заблуждаюсь, то объясните, пожалуйста, почему)
Это холиварный вопрос. Прочитав на stack exchange вопрос под номером 83586 можно получить ответ почему именно. На собеседованиях я специально уточняю, что меня интересует именно дополнительная память, потребляемая алгоритмом, а не какая-то абстрактная память, чтобы не было двусмысленности. На этом собеседовании я сделал так же :)
@@AntonRychagov Почему в этом случае память ты называешь абстрактной? Сколько ни думаю, получается, что на выходе мы возвращаем дополнительный массив, занимающий столько же памяти, сколько и исходные данные. Если исходный массив занимает 1ГБ, а у нас памяти 1.5 ГБ, то на выполнение алгоритма не хватит памяти. Потому что память не абстрактная , а вполне себе реальная. И дополнительная. Не получилось найти обсуждение по номеру. Нет ли у тебя возможности прислать ссылку или что-нибудь еще?
@@KlGleb говорить просто "Оцени потребляемую алгоритмом память" - говорить про какую-то абстрактную память. Это может быть как аллоцируемая дополнительная память, необходимая для корректно работы алгоритма, так и вся память (то бишь плюс входные и выходные данные). По этой причине я и говорю про конкретную память - мне нужна оценка именно дополнительной памяти, потребляемой алгоритмом.
@@AntonRychagov Но ведь эта память выделяется на конкретной строчке алгоритма, и она нужна для работы алгоритма (иначе пришлось бы "грязно модифицировать исходный массив"). То есть эта память в данном случае нужна для конкретно работы алгоритма, разве не так?
@@KlGleb это выход алгоритма, то бишь не попадают под определение дополнительной памяти. Ссылку youtube, к сожалению, режет :( Так что могу посоветовать только скопировать ссылку на любой ответ в stack exchange и подменить номер :)
Задача была не сложная, но я очень хорошо понимаю соискателя, на стрессе в голове пустота. На мой взгляд он прошёл хорошо. Мне на собес в Яндекс попалась задача из раздела "Medium" литкода - и да, я не прошёл с первого раза))
Заметил зависимость, чем больше алгоритмистов работает над проектом тем больше это неюзабельное г-но. Вот взять бы хоть фаанги, ну постоянно что-то падает, релизы с кучей багов и т.д. могу частично согласиться, что есть еще проблема больших команд, но это уже проблемы менеджмента. Работал с парнем, который был очень крутой андроидщик и даже в Тинькофф успел поработать, так вот его на алгоритмах в фб срезали, на задачке по графам. Я к чему это, к тому что вот он точно делает лучше чем эти калеки из фб, но время потраченное на андроид они потратили на литкод в итоге пишут не андроид, а литкод...
прямо в точку сказано про андроид и литкод. кроме алгоритмов есть еще сам яп на котором пишешь и еще гора всего.. если ты не понимаешь где какой цикл лучше или вообще итератор, а может и рекурсия, алгоритмы не помогут писать хорошо, лишь усложнят это все.. аналогично и с паттернами.. открываешь а там куча паттернов, алгоритмов, а сам код такое говно откровенное..🤣
Вообще не понял тезис о том что IDE развращает. И нужно писать код в блокноте. IDE это инструмент обязательный для разработчика. Я никогда нигде в жизни и в работе не писал код в блокноте и на листочке, разве что в универе. Давайте еще гвозди будем забивать рукой, молоток развращает. Да я не помню какие методы у List array и тд. но Studio мне подскажет, и я даже не задумываюсь об этом, я знаю что они есть и думаю над самой задачей а не парюсь над тем как называется тот или иной метод.
Про необходимость задач на алгоритмы. Можно было не лукавить, а сказать честно. Подбор в яндексе - это конвейер, а собеседования - фильтр. Выставили фильтр на задрот литкода. Если его не пройдет отличный программист, то у него за спиной стоит еще пять таких же. Пока народ идет в Яндекс, так и будет.
@@МаркНовиков-р1щничего не мешает порешать задачи, но при выборе кандидата это ключевой показатель, который +- ничего не значит, я собесил людей у которых 5+ лет опыта в Я, может мне конечно попадались "интеллектуалы" которые 2 слова не смогли связать, но это дно полное. Вывод: алгоритмы +- нужны но это не ключевой показатель при выборе кандидата.
Когда у тебя 100 людей на одну вакансию то лучше их быстро отфильтровать и набрать математиков чем искать мифических "хороших программистов" которые не умеют решать алгоритмические задачи.
@@zxcq откуда следует, что именно это "лучше"? И не нужно подменять условия, не "не умеют решать алгоритмические задачи", а "не укладываются в 30 минут, 10 из которых потрачено на общение с интервьюером для выяснения всех требований"
В целом, там не очень сложная секция - изи + мидл с литкода в большинстве случаев. В случае с поисковиком, например, я понимаю зачем эти алгоритмы спрашивают, вот только зачем они в Яндекс Банке - хз, я в финтехе почти всю свою карьеру (около 7 лет), на одной руке пальцы останутся, чтобы посчитать, сколько раз мне понадобился какой-нибудь алгоритм, например нахождение значения n-го элемента в односвязном списке. Не могу понять, зачем это спрашивают в областях, в которых не нужны эти алгоритмы, а если и понадобились раз в год, то и посмотреть можно
А есть список задач с литкода? А то за сайтик по решению задач отдавать 160 баксов? Цена неадекватная. Там к тебе препода не приставляют. Ладно там пару баксов в месяц отдать. Но ценник для такого рода ресурса неадекватный. Мобильная связь куда дешевле обходится, хотя это в принципе более сложная система, которой ты пользуешься постоянно. А тут тупо сайт с задачками.
1:25:52 Пример на 3 элементах довольно-таки вырожденный вариант, на котором сразу не очевидна симметрия, на более длинном примере уже можно увидеть 2 подмассива - левую и правую часть, которые необходимо смержить
Ну то есть в яндексе собес идёт путём быстрее подсказать, написать в комментах как ты был хорош в помощи, а по итогу сам меняешь условия на ходу. Нормально вообще) А можно этого же человека самого прогнать по алгоритмической секции? Прям с таким же подходом))
Алгоритм два указателя. Создаем два указателя:- левый на наибольшее отрицательное число и правый на наименьшее положительное. После сравниваем модуль отрицательного и положительное число. Далее создаем массив квадратов. Если левый дошел до 0, то остаток заполняем правым, пока не дойдет до границы массива. Если правый дошел до границы, то заполняем левым пока на 0 не уйдет. Так же нужны проверки на размеры 0 и 1
А что до условия цикла count-- >=0 не дошел вместо сверки указателей пока докапывался? И вообще в этих собесех проьлема в том что на тебя давят своим мониторингом, пока он пытается что то говорить ему некогда думать, делал бы в тишине решил бы задачу оптимально за 5 минут, так что отсев не обоснован
Чел просто алгоритмы не знает, поэтому ему так тяжело. У тебя цикл такой: думаешь - проговариваешь - пишешь - думаешь - проговариваешь - пишешь. Тогда норм будет
Яндекс - компания немного оторванная от реальности. Сталкивался с их спецами 3 раза и все три раза абсолютное разочарование. К тому же у них странное понятие о справедливости
Яндекс парадоксален, дофига собесов, кажется что туда проходят одни из лучших, а итог - вечные утечки данных, почти все приложения лагучее говно, где не только кадры видно даже на флагманах, но и куча всяких тупых багов, сервис хороший а приложением через силу пользуешься, даже яндекс карты - хорошая либа, видно что все же нормальные разрабы приложили руку, но почему она блин такая жирная
Потому что к алгоритмическим секциям надо долго готовиться и постоянно поддерживать эти знания. В обычной то работе таких задач почти и нет ) А для подготовки и поддержки знаний нужно много свободного времени. А у кого оно есть - у молодых ребят, вчерашних выпускников. Ибо ни детей, ни пресловутой ипотеки )) Но вот когда дело доходит до реального продукта - там же в основном нужны другие навыки, банально опыт. И, как следствие, возникает то, что вы описали )
Смысл алгоритмической секции понятен. Не понятно, с какой стати нельзя пользоваться интернетом? В каком случае сотрудник будет писать код И НЕ ИМЕТЬ ВОЗМОЖНОСТЬ ЗАГУГЛИТЬ? Хорошо, что больше и больше компаний уходят от такого подхода.
42:49 Комментарий 2:07. Почему константа по памяти? Ты создаёшь новый массив. Выделяешь новую память. Не трогаешь старый. А если ты тысячу массивов создашь с длиной исходного, то тоже константа?
А помню, у меня после собеса, интервьюер вдруг так вспомнил, что он забыл попросить, список развернуть.. Я ему прямо в чат набрал пару строк перед закрытие и всё.. это было примерно в возрасте моего студенчества, я меня на этот момент самодельный lisp и lua на компе валялся. А потом когда я уже работал там, оказывается у всех это спрашивают, я во-первых не понял зачем и какое отношение в работе имеет, учитывая какие задачи там были, там никто и никогда список вручную делать не позволит. Во-вторых мой водитель команды, оказывается 5 минут на это тратит!! такая сложная штука, для меня это удивлением было.. А опыт не опыт, я вообще жалею, что время на работу там потратил
Особенно интересно было смотреть на комментарии в процессе собеседования. И вообще после этого видео поняла, что алгоритмическая секция не так страшна, как про нее рассказывают. Любой первокурсник мехмата проходит подобное на "зачет" в первую же сессию. Я почему-то считала, что все намного сложнее. Теперь появился интерес подготовиться )))
вопросы интервьюеру 1) передавать внутрь метода важные данные, которые можно изменить - нарушение инкапсуляции. Какие могут быть претензии по его модификации? 2) зачем эти ребусы писать inputArray[right--]? это не лаконичней, это снижает читаемость - заставляет задумываться, что попусту снижает мыслетопливо. Хотя если это история про написал и забыл, то да.
1) Я не очень понимаю почему первый вопрос адресован ко мне, структуру данных, передаваемую в функцию, выбирал кандидат :) К сожалению, на языке Java/Kotlin массивы нельзя передавать немутабельными, но стоит исходить именно из этого при реализации. По-моему именно про это я и говорил. 2) Это субъективно, поэтому и спорить об этом смысла нет. Главное, чтобы в проекте делали придерживаясь общего codestyle команды.
@@AntonRychagov Про (2) " зачем эти ребусы писать inputArray[right--]" это не субъективно, за такое надо руки отрывать по шею. Понапишут говнокод, который сами понимают только первый час после написания, а потом ловят баги днями.. Зато рассказывают про "знаю хитрости" с умным видом..
я верно понял, что в примере ревью кода на наличие русского слова было реализовано не оптимальное решение, при условии, что ревью кода проходило по следам написанного разработчиком яндекса, который успешно прошел все секции, включая алгоритмическую? )))))))
Не могу не оставить комментарий относительно задачи 1. Вся проблема кандидата это не знание указателей. Как только понимаешь что все алгоритмы разделяются на паттерны под эти алгоритмы то все выглядит проще. Паттерн только заметить надо. Да, вспомнил про них, после подсказки. А когда дрочишь эти алгоритмы то всегда первым делом при работе с массивами пытаешь указатели применить
Мне кажется, что давать намного более сложные задачки в "контесте", на который зовут массово проходить отбор по всяким смс-рассылкам , чем на реальном собесе - не справедливо. Я тоже проходил 2 этапа алгоритмического собеса в Яндекс, и это небо и земля по сравнению с контестом, ещё и подскажут тебе вдобавок. Т.е. по сути получается, что в контест закладывают лишнюю сложность из-за всяких шулеров, а у честных людей нет шансов через него пройти, если только они не гении какие-то. Вдобавок к этому, ваш проверятель решений глючный и не показывает тестовые входные данные,. на которых сыпется решение.
я когда на собесе, двух слов не могу связать внятно... мое IQ уходит в минус..🤣но стоит выйти из созвона и чтоб ни кто не стоял над душой, IQ вырастает выше чем к Эйнштейна..🤣
Уровень требований должен соответствовать уровню предлагаемого заработка. А по факту яндекс не конкурент нормальным ИТ-компаниям. Потому и текучка там бешеная. Но всегда находятся талантливые стажеры которые поработают годик другой и пойдут дальше
В исходном массиве есть максимальный элемент - последний. Берем цикл, первый элемент возводим в квадрат, если он становится больше максимального, то ставим его в конец - и так делаем с каждым элементом исходного массива. Сложность О(n). Верно?
Решение за квадрат выйдет так-то. Перебор всего массива (О(n)) + удаление первого элемента, а значит и дальнейший сдвиг массива (O(n)). Неэффективно, да и к тому же неверно.
Превьюшка к видео - огонь 🔥 Я даже успела подумать, что это Антон свой канал завёл) Великолепный собеседующий, мегапрофессионал, идеальный руководитель, человек признанный, авторитетный, мэтр 😃 Классный получился разбор секции!
Я могу понять возмущения по-поводу практической секции, но тут не нужно быть олимпиадником. А тип мышления по ходу решения задачи показывает, что так разработчик и будет писать весь свой код, как то делать костыли. Пишет объективно сложно. Вы представьте, что вам потом такой код читать придется.
Двумя указателями идешь Если числа равны, то разницы особой нет, ведь порядок не важен в каком они будут стоять Что так, что так конечный массив будет 4 4 9 9
Во времена ФП, ДДД, реактивщины, способность решать алгоритмические задачи, как блокер для полученя оффера? Яндекс, именно поэтому я скипаю всех ваших рекрутёров. Скиллы, которые вам нужны - лично мне не интересны.
Мой личный опыт про "алгоритмы не нужны": после месяца подготовки к алг. секции программировать на работе стало комфортнее. Появились две новые привычки: 1) Всегда задумываться о крайних случаях 2) Писать код целиком, без промежуточных запусков Да, без алгоритмов можно работать, но тут как в математике или в теории музыки: всему, что умеешь, применение находится.
ну вообще вторая привычка не особо полезная, при промежуточных запусках проще выявить ошибки, чем написать простыню и потом пытаться понять почему же ничего не работает. Понятно, что в контексте собесов придется делать так, но это не good practice
Я согласен, замечательная логика, должен добавить, что с тех пор, как научился играть в шахматы до уровня КМС, появилось понимание, как планировать написание кода, стал отличать стратегию от тактики, это помогает руководить командой и двигать проект (я тимлид последние 8 лет). Поэтому я считаю, что на собеседованиях на роль тимлида и сеньора мы все обязаны проверять кандидата на умение играть в шахматы. Ведь если тимлид может управлять 16 фигурами на доске и планировать их роль в партии в будущем - он и подавно управится командой в компании. А если он даже с фигурками не может разобраться, то каких успехов можно от него ждать в реальной жизни? Ведь людьми управлять гораздо сложнее! Когда уже яндекс это поймёт и добавит 10-й этап собеседования с шахматным турниром против собеседующего? Кандидатов с рейтингом ниже 2000 рассматривать никак нельзя, это очевидно любому. Ждём прогрессивных нововведений!
Антон способен испепеллить самомнение любого раздутого сеньора-помидора за O(1) операций. Компилирует когда моргает, дебажит когда дышит. Студенты Яндекс.Практикума утверждают, когда в аудитории выключился свет, Антон положил руку на сетевой фильтр и все заработало, скомпилировалось, протестировалось и в Яндекс.Лавку улетели заказы на манговые смузи. Собес с Антоном - единственное место в мире, где ты можешь почувствовать себя nullable объектом. Ходит легенда, что однажды самый сильный в мире разработчик написал once-функцию, позволяющую делить на ноль. Когда она отработала, появился Яндекс. Говорят, этим разрабом был Антон. Антон любит дождь, потому что в нем можно прятать слёзы неокрепших сеньоров, дошедших до алгоритмической секции и нахрен проваливших её. Официально является GodObject-ом Яндекса. Прошедшие и непрошедшие алгоритмическую секцию с Антоном живут в разных районах Силиконовой Долины. Ну а если серьёзно, Антон - топовый прогер. Единственный человек, от которого ты искренне рад удостоиться похвалы за интеллект И! От которого не обидна никакая критика. Знакомство и работа с ним - лучшее, что может произойти в Яндексе, потому что таких профессионалов просто не найти. Я рад быть знаком с этим человеком.
Мне как sql пареньку интересно решать такие задачи. На мой взгляд такие задачи дают важный урок: 1.не считай то что не нужно ; 2.используй все исходные данные для поиска ответа.
01:32:45 Изменение индекса и одновременное обращение к массиву по этому индексу - НЕ ПРИНЯТ. В коммерческом программировании код должен читаться (и проверяться на корректность) слету. Сегодня пишем на одном языке, завтра на другом, а потом все это путаем и ловим ошибку полдня. Никогда так не делайте!
Как можно не любить алгоритмы, это же тааак увлекательно:) Сама решаю их иногда на codewars , но только изи левел пока что в начале пути программирования) Даже если это не имеет отношения к реальному программированию, просто приятно провести время, «размять мозг» По задаче, у меня сразу возникла идея с помощью бинарного поиска найти два ближайших к нулю соседних числа в массиве(написать свой бинарный поиск и сохранить индексы левого и правого указателя), и уже их сравнивая двигаться из середины(условно середина-там где отрицательное и положительное соседи) к краям. Квадраты были бы от меньшего к большему. Но после подсказки об крайних числах уже поняла, что тоже чуть промахнулась. Спасибо за выпуск, было интересно☺️
Потому что в сутках 24 часа и всегда стоит выбор куда их "инвестировать". А так как в программировании нужно изучить миллион всего, то решение задачек не всегда стоит во главе списка приоритетов. Так как есть много вещей, изучив которые ты сможешь начать приносить бОльшую пользу бизнесу. Не отрицаю важность алгоритмов, но не задрачивать их до такой степени, чтобы мочь решать их в стрессовой ситуации, под "надзором", сходу, без IDE, без дебагера, с ограничением по времени. Ибо эти навыки не мастхэв (за 6 лет практики только 1 раз столкнулся с задачей, алгоритм для которой пришлось гуглить, остальные были тривиальные в алгоритмическом плане, сложность бизнесовых задач обычно в другом, на что и стоит инвестировать основной пул свободного времени)
Потому что помимо алгоритмов есть дофигища вещей, которые ты каждый день используешь в работе - язык, библиотеки, архитектура кода, систем дизайн, разные базы, очереди, кэши, их особенности, распределенность и репликации разные. При этом алгоритмы ты используешь дай Бог чтоб раз в пару месяцев, и при этом у тебя под рукой и гугл и chatgpt и коллеги и все что угодно есть, и времени достаточно, чтобы его написать и отладить. Вот и получается по сути ситуация, что нужно потратить полгода год на зубрежку-тренировку алгосекции - чтобы исключительно попасть на работу и потом практически не использовать эти знания. Это как если бы перед экзаменом на водительские права спрашивали шахматы (или покер или скороговорки), кто не обыграл интервьюера - дальше не проходит.
какой смысл в бинарном поиске, если у тебя только один запрос на нахождение числа. Т.е ты и так считываешь массив за N, но зато для поиска одного элемента пишешь бин поиск) Из пушки по воробьям, кандидат не догоняет, не брать на работу.
Не согласен с интервьюером, что видно, что человек много пишет, тк осмысленно именует переменные. Как раз кодит он мало, у него нет мышечной памяти элементарной, как минимум модули обозначаются как abs. Count названа некорректно, скорее pos. Плюс те же отступы, left != right и ряд других моментов
Про то что задач хард не бывает на собеседованиях Яндекса это ложь, сам лично такую задачу решал, по крайней мере на LeetCode задача светится как Хард, возможно у Яндекса своя оценка задач
@@fromsiberia4985 есть предварительные секции, секции по специальности, архитектура и алгоритмы. На каждой, безусловно, могут быть алгоритмические задачи. Я говорю именно про последнюю, она более формализованная, чем остальные.
@@AndroidBroadcastесли было заготовлено две задачи, тогда почему из получасового интервью отнимают время на вербальное объяснение решения интевьюеру? Почему задача изначально поставлена неполностью и интервьюер отнял время у собеседуемого на уточнение условий задачи про линейное решение?
Я чет не понял а что там у интервьюера со сложностью по памяти - откуда там константа если не инплейс заполнение? Досмотрел до конца - Интервьюер: «я бы мог решить эту задачу за 5 минут» Ведущий: «как решить эту задачу inplace с той же сложностью» Интервьюер: «никак» В принципе все что нужно знать про интервьюеров Яндекса
const sortFunc = arr => { let result = [] for(num of arr) { const square = num * num result.push(square) } return result.sort((a,b) => a-b) } оцените решение :)
а в этом языке список на чём основан? просто в шарпе список на основе массива сделан и он расширяться будет с затратами, если массив большой и не задать лист изначально по размеру
"Есть ведро для того чтобы носить воду. Кажется, все знают, что ведро нужно использовать чтобы носить воду. Но кто то его носит как головной убор." Если этот кто но носит ведро как головной убор, но умудряется носить в нем воду (как вариант ведро на голове, как на востоке) то разве это плохо? Это дискриминация людей по способу реализации задачи - нести воду. Если ведро позволяет носить себя на голове, хорошее ли это ведро? Если завтра сделают ведро исключительно для ношения на голове, то увидим ли мы переобувание - про ведро на голове, а кто носит в руках - тот чудак? В этом выражается весь смысл хипстерского айти. У нас есть то, что нам нравится - либо ты отвечаешь как нам нравится, либо идешь куда нибудь ещё. А там, в другой избушке (айти компании) свои погремушки. Это одна из огромных проблем айти - никаких стандартов, как по коду, так и по приему на работу и собеседованиям. В 90% фирм свои стандарты, продукт, алгоритмы (не оптимальные, выдуманные) но вот так - и ты либо соглашаешься, либо идешь искать дальше. И, главное, никакого карьерного роста. Мидл-на одном месте, джун на другом, инженер на третьем, программист на четвертом. Кто ты? Да хрен его знает - мальчик на побегушках по айти компаниям. Ну а с развитием технологий, расширением зоопарка систем, фреймворков, языков попадать в стек всё сложнее. И висят вакансии годами. С зп 100+ к, что для регионов (не Москвы) или дальнего востока, это очень хорошие деньги. Вакансии висят, а людей нет. Никто не подходит ) Хотя это уже ближе к инфоциганству... PS Кроме Яндекса есть и другие компании. Крупных компаний на рынке мало и попасть туда сложно.
01:24:26 Крайне сомнительная тема с константной сложностью алгоритма по памяти. По определению, емкостная сложность алгоритма - это сколько памяти алгоритму требуется в процессе работы. Алгоритм в процессе работы создает выходной массив. Не до своей работы, не после своей работы - во время своей работы. Значит, алгоритму для работы нужно линейное количество памяти. Если поставить другую задачу: разрешено модифицировать входной массив, то это другой алгоритм с константной сложностью по памяти.
Продублирую ответ двухмесячной давности: "Это холиварный вопрос. Прочитав на stack exchange вопрос под номером 83586 можно получить ответ почему именно. На собеседованиях я специально уточняю, что меня интересует именно дополнительная память, потребляемая алгоритмом, а не какая-то абстрактная память, чтобы не было двусмысленности. На этом собеседовании я сделал так же :)"
@@AntonRychagov В дополнение к моему прошлому ответу. Я нашел какое-то обсуждение на SE в разделе cs номер 156949, еще видел обсуждения на SO. Так вот, там обсуждается: включать ли ВХОД алгоритма в емкостную сложность. В обсуждении на SE 156949 приводится ссылка на книжку ОРейли "Hands-On Data Structures and Algorithms with JavaScript by Kashyap Mukkamala" Space complexity and Auxiliary space Space complexity and Auxiliary space are two of the most often confused and interchangeably used terms when talking about the space complexity of a certain algorithm: Auxiliary Space: The extra space that is taken by an algorithm temporarily to finish its work Space Complexity: Space complexity is the total space taken by the algorithm with respect to the input size plus the auxiliary space that the algorithm uses. -- то есть НИГДЕ не обсуждают, включать ли ВЫХОД алгоритма в емкостную сложность. Разговоры только про ВХОД, а про ВЫХОД всем понятно (что надо включать, потому что выход формируется в результате работы алгоритма) Может, ты что-то перепутал? ("ты" - ну это как в яндексе и в интернетах принято)
@@vitaly1461 Я как раз спрашиваю про Auxiliary Space Complexity. В любом случае, несмотря на то, что Саша на интервью ответил некорректно на этот вопрос, я увидел, что он понимает, как именно считается Space Complexity, а это главное. Я бы не стал снижать ему за это баллов, если бы это было реальное собеседование.
@@AntonRychagov Почему-то твои ответы ютуб часто прячет.. каким-то образом получилось увидеть, а теперь снова не видно. Из ответа я понял, что ты не вникал в суть моего сообщения. Просто обрати внимание, что никто не обсуждает объем выхода. Обсуждают: 1) объем входа 2) объем памяти в процессе работы алгоритма 3) общий объем памяти. В цитате из книги ОРейли не обсуждается объем выхода. Вопрос - Как думаешь, почему не обсуждают объем выхода? Я уже отвечал на этот вопрос. Попробуй теперь ты. (обсуждение 83586 недоступно, про это я писал, не знаю что там)
задача была поставленна некоректно сразу нужно говорить что массив сортированный имеет положительные и отрицательные числа и тд теперь я понимаю почему в крупные компании не берут нормальных программистов.
Ведущий сразу же написал пример массива с отрицательным числом, хотя по хорошему, собеседуемый сам должен был догадаться или уточнить, внимательно прочитав условие
можно было бы разделить исходный массив на два - массив отрицательных чисел и положительных. Отрицательный перевернуть. В while проходимся пока не обойдем оба массива с двумя индексами под каждый. Сравниваем на каждой итерации квадраты значений по индексу и добавляем меньший.
походу надо кодить молча, чтобы тебе минусов не наставили. В процессе написания решения для новой для тебя задачи всегда будет изначально грязное решение, которое в конце можно докрутить. А если решение знаешь, то просто пишешь самое оптимальное решение, которое люди придумали
Блин, такая простая задача, и человек, который работает уже несколько лет, так туго ее кодит... Делает костыли, такой кривой код... Что же он пишет в реальных задачах? Одну ошибку не заметил ни тот, кто писал, ни тот, кто принимал. В конце в костыле после цикла не нужны проверки левого и правого, там ссылка на одну ячейку, там надо просто писать последнее число в итоговый массив и все. Те, кто в комментах пишут, что алгоритмические тесты не нужны, ответ вам такой. Если у программиста проблема с мышлением, он будет писать плохо. Другое дело, что во многих решениях похрен на красивый код, грамотную реализацию, работает и нормально. Там обезьяну посади и она напишет, потому и не важно проверять на алгоритмы. А уметь думать могут далеко не все. Сколько кривого кода в результате получается, это мрак.
Я тоже пока смотрел, всё ерзал и офигевал, ну как так можно тупить. А потом подумал я то сидел на диване мне никто в ушал не нудел , не перебивал и не стучал по клавиатуре. И код я бы писал в IDE и там были бы все подсказки, и дебагинг на лету. И на месте этого парня бы тоже затупил.
Мне одному показалось, что задача была сортернуть в итоге? Судя по алгоритму он работает для [-3,2,4] но если расширить входные данные, он уже не работает. По ощущению тут не было ни нормальной задачи, ни нормальной оценки кандидата... Тут кандидата по моему просто валили... Нет таких сортировок строго за O(n) только если в лучших случаях (Что и было реализовано в данном видео)... Смотрел и недоумевал че тут вообще происходит... Яндекс такой яндекс...😂😂😂
Программист проявил смелость, конечно. Но кажется, что не из-за волнения он так плохо справился. Не понимаю, как с тремя годами опыта можно так... тормозить
После этого видео расхотелось даже идти на собеседование в Яндекс. Ну вот представьте вы натренировались на собес, вас взяли на работу, а потом с этим каждый день работать, и вместо arr.map().sort() писать такие портянки? Ну нафиг, где тут удовольствие от работы?))
8:30 "алгоритмическая секция блокирует, даже если остальные прошел на отлично"
Мы поставили ее в конец.
Это так алгоритмически оптимально :facepalm
1:52:25
Саше большой респект, смелый поступок прийти на стрим по алгоритмике от Яндекса!
Очень круто, прям на одном дыхании смотрел. Классно, что показали как на стороне яндекса всё делается. Заметки огонь просто. Спасибо всем участникам и Кириллу за организацию.
Для себя главный вывод сделал, что лишнего лучше не болтать :))))
Самое обидное, пройти все круги ад... собесов в Я, после чего получить оффер, который даже до уровня столичной галеры средней руки не дотягивает.
Статус, опыт и дальнейший. Не все ради огромных денег работают. Зато после Яндекса я получал очень жирные оферы выше среднего
@@AndroidBroadcast ой да перестаньте, мы все продаем свое время работодателю. И абсолютно нормально ценить себя и свой труд максимально высоко. А для души есть пет проекты ) Да и статус... Ну может быть в этом что то есть, но я выбрал в свое время нормальный оклад. И ни капли не жалею ) Но какгрицца, это сугубо личный кейс, ни в коем разе не настаиваю на мнении...
@@AndroidBroadcastтак а с чего ты взял, что ты бы без яндекса их не получил? Куча людей сидят на очень жирных офферах, но яндекса в резюме не имеет. Так и помимо прочего полно других статусных российских бигтех компаний, которые имеют адекватный процесс найма и платят больше. А несколько недель/месяцев решать литкод для собеса, чтобы потом быть гребцом за зп ниже рынка, но в яндексе, кажется такой себе идеей.
@@AndroidBroadcast чем измеряется статус? Способностью заработать больше в других местах? Тогда можно сразу пойти зарабатывать туда.
Тут скорее тема, что у фаангов подход похожий (только поадекватней), так что можно использовать Яндекс как бесплатное мок-собеседование при подготовке сразу в фаанг)
1:24:27 если не ошибаюсь, у сдающего по памяти сложность верна оценена - O(n) не O(1) так как он создал result с N элементами
Поддерживаю, экзаменующему двойка
Сложность по памяти оценивается для вспомогательных данных, а не для выходных. Иначе бы сложность зависела от сигнатуры функции (возвращает ли она массив или в нее передается уже преаллоциорованный выходной массив)
@@dmitrysapelnikov
Ага, расскажи это процессу JVM, когда ему памяти не хватит
На мой взгляд, большинство разрабов с большим опытом коммерческой разработки, но без олимпиадного бекграунда, не будут тратить время на leetcode задачки.
Зачем ? Есть компании в России, которые платят не меньше или больше yandex, но на их собесах не спрашивают оторванные от реальной жизни задачки.
Конечно, такие задачки используются при найме в FAANG, но там люди готовятся по полгода именно из-за 'жирных' офферов.
А yandex, судя по всему, принимает в основном молодежь из бывших олимпиадников )
Это как в универе предмет никому не сдался но препод будет душить как ненормальный
Я как миддл разработчик в крупной компании иногда не сходу въезжаю как решать литкодовские задачки даже легкого уровня, но тем не менее трудностей в работе не возникает.
@@olegin1995 трудности возникают у вашего руководства виде доп затрат на ваш неоптимальный код
а вы что не пользуетесь их ПО? попробуйте и поймете в чем прикол..🤣 я когда пользуюсь их ПО, икают все, даже те кто еще только собирается туда пойти.🤣знать алгоритмы конечно надо, но надо еще уметь правильно писать! не зная на хорошем уровне языка на котором пишешь, от алгоритмов толку что мертвому припарка..🤣 у них алгоритмы просто отсеивают людей. туда не берут лучших или худших, берут кто пройдет! а чтоб не перли все подряд, сделали это как важное. так делали во всех топ компаниях чтоб отсеять как можно больше, ну а если прошел то ок, придется взять..🤣 какой-то прям пользы, нет... я смотрю их собесы, да часто код верно написан но проблему которая потом догонит он не решает.. и тогда вопрос нафига?🤣алгоритмы писать может, а язык нормально не понимает, и лепит так что оптимизация алгоритмом тащится а языком гробиться. а потом посмотрели медленно пашет, переписали на более быстрый яп..🤣 вместо того чтоб просто нормально написать.
@@IT_psychopath Согласен
Сказали что нужно решить задачу максимально оптимально и по времени и по памяти. В то же время пишет коммент "Кандидат откуда-то взял идею, что нужно делать in-place:)"! Отличный подход, яндекс!
что значит in-place ?
@@dmitriykonopinskiy3793изменять текущий входной массив не создавая новый
@@dmitriykonopinskiy3793 если вы не знаете значение данных слов + не умеете пользоваться переводчиком, думаю, вам не стоит вообще пытаться в программирование
@@dmitriykonopinskiy3793 менять элементы внутри массива, не создавая новый список
@@dmitriykonopinskiy3793"на месте". то есть не выделяя новую память
Я бы ещё и вычисление модуля убрал. Можно сравнивать квадраты, которые идут в ответ.
Это звучит здорово, пока случайно не заходишь на Яндекс маркет. Это не то что на телефоне еле работает, так и на компьютере с большим трудом. Казалось бы, заявляется всё для оптимизации, но на выходе не сильно отличается, а местами и хуже чем в среднем по больнице
просто после таких задач разработчик яндекса не берет мап и сорт, а пишет ин-плейс метод на указателях, а потом ловит баги с утекшей памятью)
@@alexlightweight по какому блату? прийти в яндекс через собеседование - редкость по вашему, получается?
@@torburgmaxредкость конечно. Я как-то по приколу подался на самую простейшую вакансию Яндекса, чтобы посмотреть, реально ли туда попасть. Вакансия была как раз в подразделение маркета. Заниматься подготовкой и модерацией карточек товаров. Выслали тестовое задание. Сделал. Задание кстати муторное из нескольких частей. Но даже на собеседование не пригласили. И это вакансия была на полный рабочий день за что-то там 25 или 28 тыс. в месяц. Не знаю, что не устроило и каких гениев они на эти деньги ищут. Я может и не лучший специалист в мире, но уж точно не худший. Хотел бы я посмотреть на то, кого они находят на такие зарплаты.
@@torburgmaxв Яндекс можно попасть по инвайту знакомых, сам избежал так собеседования. Главное иметь знакомых разработчиков там
просто спрашивают алгосики, а на особенности языка и фреймворка можно и забить, нафиг они нужны)
42:37 -- я считаю, что некорректно считать, что сложность по памяти оценена некорректно. Мы же выделяем память под выходной массив. И чем больше первый, тем больше второй, Таким образом, потребление памяти растет линейно. Другое дело, что зачастую это учитывать необязательно, и на практике лучше спрашивать, учитывать ли выходной массив в оценке. Но ответ абсолютно корректен (если я заблуждаюсь, то объясните, пожалуйста, почему)
Это холиварный вопрос. Прочитав на stack exchange вопрос под номером 83586 можно получить ответ почему именно. На собеседованиях я специально уточняю, что меня интересует именно дополнительная память, потребляемая алгоритмом, а не какая-то абстрактная память, чтобы не было двусмысленности. На этом собеседовании я сделал так же :)
@@AntonRychagov Почему в этом случае память ты называешь абстрактной? Сколько ни думаю, получается, что на выходе мы возвращаем дополнительный массив, занимающий столько же памяти, сколько и исходные данные. Если исходный массив занимает 1ГБ, а у нас памяти 1.5 ГБ, то на выполнение алгоритма не хватит памяти. Потому что память не абстрактная , а вполне себе реальная. И дополнительная.
Не получилось найти обсуждение по номеру. Нет ли у тебя возможности прислать ссылку или что-нибудь еще?
@@KlGleb говорить просто "Оцени потребляемую алгоритмом память" - говорить про какую-то абстрактную память. Это может быть как аллоцируемая дополнительная память, необходимая для корректно работы алгоритма, так и вся память (то бишь плюс входные и выходные данные). По этой причине я и говорю про конкретную память - мне нужна оценка именно дополнительной памяти, потребляемой алгоритмом.
@@AntonRychagov Но ведь эта память выделяется на конкретной строчке алгоритма, и она нужна для работы алгоритма (иначе пришлось бы "грязно модифицировать исходный массив"). То есть эта память в данном случае нужна для конкретно работы алгоритма, разве не так?
@@KlGleb это выход алгоритма, то бишь не попадают под определение дополнительной памяти.
Ссылку youtube, к сожалению, режет :( Так что могу посоветовать только скопировать ссылку на любой ответ в stack exchange и подменить номер :)
Задача была не сложная, но я очень хорошо понимаю соискателя, на стрессе в голове пустота. На мой взгляд он прошёл хорошо. Мне на собес в Яндекс попалась задача из раздела "Medium" литкода - и да, я не прошёл с первого раза))
Заметил зависимость, чем больше алгоритмистов работает над проектом тем больше это неюзабельное г-но. Вот взять бы хоть фаанги, ну постоянно что-то падает, релизы с кучей багов и т.д. могу частично согласиться, что есть еще проблема больших команд, но это уже проблемы менеджмента. Работал с парнем, который был очень крутой андроидщик и даже в Тинькофф успел поработать, так вот его на алгоритмах в фб срезали, на задачке по графам. Я к чему это, к тому что вот он точно делает лучше чем эти калеки из фб, но время потраченное на андроид они потратили на литкод в итоге пишут не андроид, а литкод...
прямо в точку сказано про андроид и литкод. кроме алгоритмов есть еще сам яп на котором пишешь и еще гора всего.. если ты не понимаешь где какой цикл лучше или вообще итератор, а может и рекурсия, алгоритмы не помогут писать хорошо, лишь усложнят это все.. аналогично и с паттернами.. открываешь а там куча паттернов, алгоритмов, а сам код такое говно откровенное..🤣
Просто основная масса говнокодеры, алгоритмы здесь не причем.
@@StringerDкак не быть говнокодером ?
Воистину
Вообще не понял тезис о том что IDE развращает. И нужно писать код в блокноте. IDE это инструмент обязательный для разработчика. Я никогда нигде в жизни и в работе не писал код в блокноте и на листочке, разве что в универе. Давайте еще гвозди будем забивать рукой, молоток развращает. Да я не помню какие методы у List array и тд. но Studio мне подскажет, и я даже не задумываюсь об этом, я знаю что они есть и думаю над самой задачей а не парюсь над тем как называется тот или иной метод.
Про необходимость задач на алгоритмы. Можно было не лукавить, а сказать честно. Подбор в яндексе - это конвейер, а собеседования - фильтр. Выставили фильтр на задрот литкода. Если его не пройдет отличный программист, то у него за спиной стоит еще пять таких же. Пока народ идет в Яндекс, так и будет.
А что тебе мешает порешать задачи?
@@МаркНовиков-р1щничего не мешает порешать задачи, но при выборе кандидата это ключевой показатель, который +- ничего не значит, я собесил людей у которых 5+ лет опыта в Я, может мне конечно попадались "интеллектуалы" которые 2 слова не смогли связать, но это дно полное. Вывод: алгоритмы +- нужны но это не ключевой показатель при выборе кандидата.
@@МаркНовиков-р1щ даже если ничего не мешает решать задачи, этот факт не дает ответа на вопрос об эффективности фильтра.
Когда у тебя 100 людей на одну вакансию то лучше их быстро отфильтровать и набрать математиков чем искать мифических "хороших программистов" которые не умеют решать алгоритмические задачи.
@@zxcq откуда следует, что именно это "лучше"? И не нужно подменять условия, не "не умеют решать алгоритмические задачи", а "не укладываются в 30 минут, 10 из которых потрачено на общение с интервьюером для выяснения всех требований"
В этой задаче счетчик текущей позиции записи count по большому счету можно не вводить, т.к. его значение всегда будет равно right - left
Начал что-то про ведо на голове, так и не пояснил при чём здесь ведро. Отличный пример мышления ребят из яндекса.
В целом, там не очень сложная секция - изи + мидл с литкода в большинстве случаев. В случае с поисковиком, например, я понимаю зачем эти алгоритмы спрашивают, вот только зачем они в Яндекс Банке - хз, я в финтехе почти всю свою карьеру (около 7 лет), на одной руке пальцы останутся, чтобы посчитать, сколько раз мне понадобился какой-нибудь алгоритм, например нахождение значения n-го элемента в односвязном списке. Не могу понять, зачем это спрашивают в областях, в которых не нужны эти алгоритмы, а если и понадобились раз в год, то и посмотреть можно
А есть список задач с литкода? А то за сайтик по решению задач отдавать 160 баксов? Цена неадекватная. Там к тебе препода не приставляют. Ладно там пару баксов в месяц отдать. Но ценник для такого рода ресурса неадекватный. Мобильная связь куда дешевле обходится, хотя это в принципе более сложная система, которой ты пользуешься постоянно. А тут тупо сайт с задачками.
@@phat80 так там бесплатных полно, я на них и тренил, имхо, их хватит. По сути, алгоритмов не так много, а все задачи просто их вариации
@@tr3mendous24 спасибо за информацию. Что-то думал, что там платный доступ только.
1:25:52 Пример на 3 элементах довольно-таки вырожденный вариант, на котором сразу не очевидна симметрия, на более длинном примере уже можно увидеть 2 подмассива - левую и правую часть, которые необходимо смержить
Ну то есть в яндексе собес идёт путём быстрее подсказать, написать в комментах как ты был хорош в помощи, а по итогу сам меняешь условия на ходу. Нормально вообще) А можно этого же человека самого прогнать по алгоритмической секции? Прям с таким же подходом))
Какое условие поменялось?
@@alexneo4880 ну по условию задачи как минимум никто не уточнил, в том же все массиве все должно произойти или записываем в новый
Алгоритм два указателя.
Создаем два указателя:- левый на наибольшее отрицательное число и правый на наименьшее положительное.
После сравниваем модуль отрицательного и положительное число.
Далее создаем массив квадратов.
Если левый дошел до 0, то остаток заполняем правым, пока не дойдет до границы массива.
Если правый дошел до границы, то заполняем левым пока на 0 не уйдет.
Так же нужны проверки на размеры 0 и 1
А что до условия цикла count-- >=0 не дошел вместо сверки указателей пока докапывался? И вообще в этих собесех проьлема в том что на тебя давят своим мониторингом, пока он пытается что то говорить ему некогда думать, делал бы в тишине решил бы задачу оптимально за 5 минут, так что отсев не обоснован
Чел просто алгоритмы не знает, поэтому ему так тяжело. У тебя цикл такой: думаешь - проговариваешь - пишешь - думаешь - проговариваешь - пишешь. Тогда норм будет
25:51 чувак пришел на собес по алгам от Я и говорит, что не помнит алгоритмы сортировок.
Кирилл, спасибо за организацию.
Яндекс - компания немного оторванная от реальности. Сталкивался с их спецами 3 раза и все три раза абсолютное разочарование. К тому же у них странное понятие о справедливости
Яндекс парадоксален, дофига собесов, кажется что туда проходят одни из лучших, а итог - вечные утечки данных, почти все приложения лагучее говно, где не только кадры видно даже на флагманах, но и куча всяких тупых багов, сервис хороший а приложением через силу пользуешься, даже яндекс карты - хорошая либа, видно что все же нормальные разрабы приложили руку, но почему она блин такая жирная
Потому что к алгоритмическим секциям надо долго готовиться и постоянно поддерживать эти знания.
В обычной то работе таких задач почти и нет ) А для подготовки и поддержки знаний нужно много свободного времени.
А у кого оно есть - у молодых ребят, вчерашних выпускников. Ибо ни детей, ни пресловутой ипотеки ))
Но вот когда дело доходит до реального продукта - там же в основном нужны другие навыки, банально опыт.
И, как следствие, возникает то, что вы описали )
Зато они умеют задачки с leetcode быстро решать ^^
Яндекс как организация - так себе. Там везде аналогичный подход абсолютно бредовый.
Смысл алгоритмической секции понятен. Не понятно, с какой стати нельзя пользоваться интернетом? В каком случае сотрудник будет писать код И НЕ ИМЕТЬ ВОЗМОЖНОСТЬ ЗАГУГЛИТЬ? Хорошо, что больше и больше компаний уходят от такого подхода.
Недавно проходил собес в один Российский банк, на нём давали гуглить, но почему-то только на английском и без поисковиков с нейронками)
Было похожее задание про симметричную последовательность на Яндекс Тренировки 1.0 , в секции 2 - Линейный поиск, F задача.
42:49
Комментарий 2:07.
Почему константа по памяти?
Ты создаёшь новый массив. Выделяешь новую память. Не трогаешь старый.
А если ты тысячу массивов создашь с длиной исходного, то тоже константа?
А помню, у меня после собеса, интервьюер вдруг так вспомнил, что он забыл попросить, список развернуть.. Я ему прямо в чат набрал пару строк перед закрытие и всё.. это было примерно в возрасте моего студенчества, я меня на этот момент самодельный lisp и lua на компе валялся. А потом когда я уже работал там, оказывается у всех это спрашивают, я во-первых не понял зачем и какое отношение в работе имеет, учитывая какие задачи там были, там никто и никогда список вручную делать не позволит. Во-вторых мой водитель команды, оказывается 5 минут на это тратит!! такая сложная штука, для меня это удивлением было.. А опыт не опыт, я вообще жалею, что время на работу там потратил
Спасибо, за такой формат
Особенно интересно было смотреть на комментарии в процессе собеседования.
И вообще после этого видео поняла, что алгоритмическая секция не так страшна, как про нее рассказывают.
Любой первокурсник мехмата проходит подобное на "зачет" в первую же сессию.
Я почему-то считала, что все намного сложнее. Теперь появился интерес подготовиться )))
@@alexlightweight алгоритмы не только в яндекс нужны. Их еще и в фаанг использует :)
Забавная попытка 15-минутного оправдания бесполезной секции, но так и не услышал ни одного случая, когда это понадобилось Android-разработчику.
Обычное слияние двух отсортированных массивов. Первый - квадраты отрицательных чисел, второй - квадраты положительных чисел. Решается за один проход.
вопросы интервьюеру
1) передавать внутрь метода важные данные, которые можно изменить - нарушение инкапсуляции. Какие могут быть претензии по его модификации?
2) зачем эти ребусы писать inputArray[right--]? это не лаконичней, это снижает читаемость - заставляет задумываться, что попусту снижает мыслетопливо. Хотя если это история про написал и забыл, то да.
1) Я не очень понимаю почему первый вопрос адресован ко мне, структуру данных, передаваемую в функцию, выбирал кандидат :) К сожалению, на языке Java/Kotlin массивы нельзя передавать немутабельными, но стоит исходить именно из этого при реализации. По-моему именно про это я и говорил.
2) Это субъективно, поэтому и спорить об этом смысла нет. Главное, чтобы в проекте делали придерживаясь общего codestyle команды.
@@AntonRychagov Про (2) " зачем эти ребусы писать inputArray[right--]" это не субъективно, за такое надо руки отрывать по шею.
Понапишут говнокод, который сами понимают только первый час после написания, а потом ловят баги днями.. Зато рассказывают про "знаю хитрости" с умным видом..
@@vitaly1461 как скажете, это ваше право так считать.
Хлопаю Сане, красавчик!
спасибо за видео!
я верно понял, что в примере ревью кода на наличие русского слова было реализовано не оптимальное решение, при условии, что ревью кода проходило по следам написанного разработчиком яндекса, который успешно прошел все секции, включая алгоритмическую? )))))))
у Кормэна 2 книги Основы алгоритмов и большая книга по алгоритмам. Обе хороши
У меня книга Кормена "Алгоритмы вводный курс" это третья книга этого автора? Или это и есть Основы?
Не могу не оставить комментарий относительно задачи 1. Вся проблема кандидата это не знание указателей. Как только понимаешь что все алгоритмы разделяются на паттерны под эти алгоритмы то все выглядит проще. Паттерн только заметить надо.
Да, вспомнил про них, после подсказки. А когда дрочишь эти алгоритмы то всегда первым делом при работе с массивами пытаешь указатели применить
в попытках оправдать необходимость задач на алгоритмы в собеседованиях, особенно удалась параллель с рассомахай
Отличный сервис для собесов! Мы идем на встречу прогрессу
хз за решение, сделал за 5 секунд разбив массив по полам > 0 и
Мне кажется, что давать намного более сложные задачки в "контесте", на который зовут массово проходить отбор по всяким смс-рассылкам , чем на реальном собесе - не справедливо. Я тоже проходил 2 этапа алгоритмического собеса в Яндекс, и это небо и земля по сравнению с контестом, ещё и подскажут тебе вдобавок. Т.е. по сути получается, что в контест закладывают лишнюю сложность из-за всяких шулеров, а у честных людей нет шансов через него пройти, если только они не гении какие-то. Вдобавок к этому, ваш проверятель решений глючный и не показывает тестовые входные данные,. на которых сыпется решение.
ахах тесты ему не показывают))
нифига не easy)) первая задачка может да, но вторая задачка, как правило, уровня middle.
Блин, вот сидя на диванчике кажется легко, нг на собесах мозг выходит погулять...
я когда на собесе, двух слов не могу связать внятно... мое IQ уходит в минус..🤣но стоит выйти из созвона и чтоб ни кто не стоял над душой, IQ вырастает выше чем к Эйнштейна..🤣
Хм "Научитесь кодить на бумажке, IDE развращает, нам это нужно что бы вы могли пройти наши тесты"
Уровень требований должен соответствовать уровню предлагаемого заработка. А по факту яндекс не конкурент нормальным ИТ-компаниям. Потому и текучка там бешеная. Но всегда находятся талантливые стажеры которые поработают годик другой и пойдут дальше
"Нормальные IT-компании" - это кто?
@@AndroidBroadcast Прежде всего это компании откуда не хотят уходить через несколько месяцев )))
В исходном массиве есть максимальный элемент - последний. Берем цикл, первый элемент возводим в квадрат, если он становится больше максимального, то ставим его в конец - и так делаем с каждым элементом исходного массива. Сложность О(n). Верно?
а если не больше, то что?
Решение за квадрат выйдет так-то. Перебор всего массива (О(n)) + удаление первого элемента, а значит и дальнейший сдвиг массива (O(n)). Неэффективно, да и к тому же неверно.
Превьюшка к видео - огонь 🔥
Я даже успела подумать, что это Антон свой канал завёл)
Великолепный собеседующий, мегапрофессионал, идеальный руководитель, человек признанный, авторитетный, мэтр 😃
Классный получился разбор секции!
Метод двух указателей. Сразу его не увидел к сожалению. Кто-то знает признак для определения задачи для 2 указатели? Сортировка?
Я бы сказал, да, если массив отсортирован, то тут или бинарный поиск, или 2 указателя
Какое-то полурелигиозное «мы не учитываем место под выходной массив». Откуда оно взялось-то?
Я могу понять возмущения по-поводу практической секции, но тут не нужно быть олимпиадником. А тип мышления по ходу решения задачи показывает, что так разработчик и будет писать весь свой код, как то делать костыли.
Пишет объективно сложно. Вы представьте, что вам потом такой код читать придется.
Не увидел в решении условия для массива с одинаковыми по модулю числами. Пример [-3, -2, 2, 3]
Двумя указателями идешь
Если числа равны, то разницы особой нет, ведь порядок не важен в каком они будут стоять
Что так, что так конечный массив будет 4 4 9 9
Задача интересная. Интересно на сколько время давит на кандидата?
Why people are not allowed to use IDEs in interviews like this?
Во времена ФП, ДДД, реактивщины, способность решать алгоритмические задачи, как блокер для полученя оффера? Яндекс, именно поэтому я скипаю всех ваших рекрутёров. Скиллы, которые вам нужны - лично мне не интересны.
@@alexlightweight видел, пользуюсь, полная балумба
Мой личный опыт про "алгоритмы не нужны": после месяца подготовки к алг. секции программировать на работе стало комфортнее. Появились две новые привычки:
1) Всегда задумываться о крайних случаях
2) Писать код целиком, без промежуточных запусков
Да, без алгоритмов можно работать, но тут как в математике или в теории музыки: всему, что умеешь, применение находится.
ну вообще вторая привычка не особо полезная, при промежуточных запусках проще выявить ошибки, чем написать простыню и потом пытаться понять почему же ничего не работает. Понятно, что в контексте собесов придется делать так, но это не good practice
@@liam_ma_alla хз моим коллегам абсолютно все равно сколько я раз запустил код) им вообще пофиг на мои задачи, у них свои есть
А у меня теперь нет коллег. Только подчиненные :)
@@liam_ma_alla 😎😅
Я согласен, замечательная логика, должен добавить, что с тех пор, как научился играть в шахматы до уровня КМС, появилось понимание, как планировать написание кода, стал отличать стратегию от тактики, это помогает руководить командой и двигать проект (я тимлид последние 8 лет).
Поэтому я считаю, что на собеседованиях на роль тимлида и сеньора мы все обязаны проверять кандидата на умение играть в шахматы. Ведь если тимлид может управлять 16 фигурами на доске и планировать их роль в партии в будущем - он и подавно управится командой в компании. А если он даже с фигурками не может разобраться, то каких успехов можно от него ждать в реальной жизни? Ведь людьми управлять гораздо сложнее!
Когда уже яндекс это поймёт и добавит 10-й этап собеседования с шахматным турниром против собеседующего? Кандидатов с рейтингом ниже 2000 рассматривать никак нельзя, это очевидно любому. Ждём прогрессивных нововведений!
Интервьюер надменный)
интересно в яше потом лог этот читают глазами или алгоритм лог анализирует и выставляет оценку?
никогда не видел чтобы насттолько подробный лог писали
42:45 "Некорректно оценил сложность по памяти (линейная, а не константная)" Так ведь константная - это решение in-place ))
объясняет как оно у них считается на 1:24:50
Антон способен испепеллить самомнение любого раздутого сеньора-помидора за O(1) операций.
Компилирует когда моргает, дебажит когда дышит.
Студенты Яндекс.Практикума утверждают, когда в аудитории выключился свет, Антон положил руку на сетевой фильтр и все заработало, скомпилировалось, протестировалось и в Яндекс.Лавку улетели заказы на манговые смузи.
Собес с Антоном - единственное место в мире, где ты можешь почувствовать себя nullable объектом.
Ходит легенда, что однажды самый сильный в мире разработчик написал once-функцию, позволяющую делить на ноль. Когда она отработала, появился Яндекс. Говорят, этим разрабом был Антон.
Антон любит дождь, потому что в нем можно прятать слёзы неокрепших сеньоров, дошедших до алгоритмической секции и нахрен проваливших её.
Официально является GodObject-ом Яндекса.
Прошедшие и непрошедшие алгоритмическую секцию с Антоном живут в разных районах Силиконовой Долины.
Ну а если серьёзно, Антон - топовый прогер. Единственный человек, от которого ты искренне рад удостоиться похвалы за интеллект И! От которого не обидна никакая критика. Знакомство и работа с ним - лучшее, что может произойти в Яндексе, потому что таких профессионалов просто не найти. Я рад быть знаком с этим человеком.
Ну прям священная корова)
🤣
Спасибо за развернутые комментарии и за задачу) Очень понравилось, как ведет себя интервьюер, было бы комфортно)
Мне как sql пареньку интересно решать такие задачи. На мой взгляд такие задачи дают важный урок: 1.не считай то что не нужно ; 2.используй все исходные данные для поиска ответа.
01:32:45 Изменение индекса и одновременное обращение к массиву по этому индексу - НЕ ПРИНЯТ.
В коммерческом программировании код должен читаться (и проверяться на корректность) слету.
Сегодня пишем на одном языке, завтра на другом, а потом все это путаем и ловим ошибку полдня.
Никогда так не делайте!
Как можно не любить алгоритмы, это же тааак увлекательно:)
Сама решаю их иногда на codewars , но только изи левел пока что в начале пути программирования)
Даже если это не имеет отношения к реальному программированию, просто приятно провести время, «размять мозг»
По задаче, у меня сразу возникла идея с помощью бинарного поиска найти два ближайших к нулю соседних числа в массиве(написать свой бинарный поиск и сохранить индексы левого и правого указателя), и уже их сравнивая двигаться из середины(условно середина-там где отрицательное и положительное соседи) к краям. Квадраты были бы от меньшего к большему.
Но после подсказки об крайних числах уже поняла, что тоже чуть промахнулась.
Спасибо за выпуск, было интересно☺️
Я тоже про бинарный поиск подумал
Потому что в сутках 24 часа и всегда стоит выбор куда их "инвестировать". А так как в программировании нужно изучить миллион всего, то решение задачек не всегда стоит во главе списка приоритетов. Так как есть много вещей, изучив которые ты сможешь начать приносить бОльшую пользу бизнесу.
Не отрицаю важность алгоритмов, но не задрачивать их до такой степени, чтобы мочь решать их в стрессовой ситуации, под "надзором", сходу, без IDE, без дебагера, с ограничением по времени. Ибо эти навыки не мастхэв (за 6 лет практики только 1 раз столкнулся с задачей, алгоритм для которой пришлось гуглить, остальные были тривиальные в алгоритмическом плане, сложность бизнесовых задач обычно в другом, на что и стоит инвестировать основной пул свободного времени)
Потому что помимо алгоритмов есть дофигища вещей, которые ты каждый день используешь в работе - язык, библиотеки, архитектура кода, систем дизайн, разные базы, очереди, кэши, их особенности, распределенность и репликации разные. При этом алгоритмы ты используешь дай Бог чтоб раз в пару месяцев, и при этом у тебя под рукой и гугл и chatgpt и коллеги и все что угодно есть, и времени достаточно, чтобы его написать и отладить.
Вот и получается по сути ситуация, что нужно потратить полгода год на зубрежку-тренировку алгосекции - чтобы исключительно попасть на работу и потом практически не использовать эти знания.
Это как если бы перед экзаменом на водительские права спрашивали шахматы (или покер или скороговорки), кто не обыграл интервьюера - дальше не проходит.
какой смысл в бинарном поиске, если у тебя только один запрос на нахождение числа. Т.е ты и так считываешь массив за N, но зато для поиска одного элемента пишешь бин поиск) Из пушки по воробьям, кандидат не догоняет, не брать на работу.
Не согласен с интервьюером, что видно, что человек много пишет, тк осмысленно именует переменные. Как раз кодит он мало, у него нет мышечной памяти элементарной, как минимум модули обозначаются как abs. Count названа некорректно, скорее pos. Плюс те же отступы, left != right и ряд других моментов
Первый алгоритм для котов или белок?
а в чем прикол говорить что сложност ьпо памяти константная при том что как минимум для массива-ответа - линия.
Про то что задач хард не бывает на собеседованиях Яндекса это ложь, сам лично такую задачу решал, по крайней мере на LeetCode задача светится как Хард, возможно у Яндекса своя оценка задач
На алгоритмической секции - не бывает.
@@AntonRychagov А в бэкенде могут быть сложнее задачи? Или алгоритмическая секция во всех направлениях плюс минус одинаковая?
@@heybeachMIN просто одинаковая на всех направлениях
@@AntonRychagov а что вы под алгоритмической секцией понимаете? Для меня все 3 собеса Яндекса были по сути на алгоритмы
@@fromsiberia4985 есть предварительные секции, секции по специальности, архитектура и алгоритмы. На каждой, безусловно, могут быть алгоритмические задачи. Я говорю именно про последнюю, она более формализованная, чем остальные.
Неужели уверенного умения (не как на видео) решать задачи подобной сложности достаточно для попадания в Яндекс?
да нет конечно, это для хомячков ютубовских, чтобы руки не опускали и бегали в своем колесе)
легкая задача для мида, даже с оглядкой на то что смотрят подход к методике решения, в институте и посложнее решать приходиться
Задачи было заготовлено 2. Вторая была сложнее
А как с5бя попробовать? Я трейни, но задачу решил поуверенее)))
Попробовать в чем?
@@AndroidBroadcastесли было заготовлено две задачи, тогда почему из получасового интервью отнимают время на вербальное объяснение решения интевьюеру? Почему задача изначально поставлена неполностью и интервьюер отнял время у собеседуемого на уточнение условий задачи про линейное решение?
@@flowname все было поставлено верно изначально. было сказано сделать оптимально по времени и по памяти
я за 2 минуты решил на js, яндекс жди меня
Саня молодец!
Я чет не понял а что там у интервьюера со сложностью по памяти - откуда там константа если не инплейс заполнение? Досмотрел до конца -
Интервьюер: «я бы мог решить эту задачу за 5 минут»
Ведущий: «как решить эту задачу inplace с той же сложностью»
Интервьюер: «никак»
В принципе все что нужно знать про интервьюеров Яндекса
Так интересно что никто про преждевременную оптимизацию в комментариях
const sortFunc = arr => {
let result = []
for(num of arr) {
const square = num * num
result.push(square)
}
return result.sort((a,b) => a-b)
}
оцените решение :)
На самом деле слишком усложнил)))) Можно было сделать сильно проще проверяя только что итератор записываемой позиции больше или = 0))
а в этом языке список на чём основан? просто в шарпе список на основе массива сделан и он расширяться будет с затратами, если массив большой и не задать лист изначально по размеру
За 10 лет работы он 2 раза применял алгоритмы. Зато потратил 5 лет на литкоде.
"Есть ведро для того чтобы носить воду. Кажется, все знают, что ведро нужно использовать чтобы носить воду. Но кто то его носит как головной убор."
Если этот кто но носит ведро как головной убор, но умудряется носить в нем воду (как вариант ведро на голове, как на востоке) то разве это плохо? Это дискриминация людей по способу реализации задачи - нести воду. Если ведро позволяет носить себя на голове, хорошее ли это ведро? Если завтра сделают ведро исключительно для ношения на голове, то увидим ли мы переобувание - про ведро на голове, а кто носит в руках - тот чудак?
В этом выражается весь смысл хипстерского айти. У нас есть то, что нам нравится - либо ты отвечаешь как нам нравится, либо идешь куда нибудь ещё. А там, в другой избушке (айти компании) свои погремушки. Это одна из огромных проблем айти - никаких стандартов, как по коду, так и по приему на работу и собеседованиям.
В 90% фирм свои стандарты, продукт, алгоритмы (не оптимальные, выдуманные) но вот так - и ты либо соглашаешься, либо идешь искать дальше.
И, главное, никакого карьерного роста. Мидл-на одном месте, джун на другом, инженер на третьем, программист на четвертом. Кто ты? Да хрен его знает - мальчик на побегушках по айти компаниям. Ну а с развитием технологий, расширением зоопарка систем, фреймворков, языков попадать в стек всё сложнее.
И висят вакансии годами. С зп 100+ к, что для регионов (не Москвы) или дальнего востока, это очень хорошие деньги. Вакансии висят, а людей нет. Никто не подходит )
Хотя это уже ближе к инфоциганству...
PS
Кроме Яндекса есть и другие компании. Крупных компаний на рынке мало и попасть туда сложно.
Ляя, с прожаркой стейков угарнул)
Скиньте ссылку на задачу в литкоде.
977 задача
@@kalin5150 thx
С таким интервьюером тяжело проходить собез
01:24:26 Крайне сомнительная тема с константной сложностью алгоритма по памяти.
По определению, емкостная сложность алгоритма - это сколько памяти алгоритму требуется в процессе работы.
Алгоритм в процессе работы создает выходной массив.
Не до своей работы, не после своей работы - во время своей работы.
Значит, алгоритму для работы нужно линейное количество памяти.
Если поставить другую задачу: разрешено модифицировать входной массив, то это другой алгоритм с константной сложностью по памяти.
Продублирую ответ двухмесячной давности: "Это холиварный вопрос. Прочитав на stack exchange вопрос под номером 83586 можно получить ответ почему именно. На собеседованиях я специально уточняю, что меня интересует именно дополнительная память, потребляемая алгоритмом, а не какая-то абстрактная память, чтобы не было двусмысленности. На этом собеседовании я сделал так же :)"
@@AntonRychagov > вопрос под номером 83586
На SE не нашлось. Там есть разделы - если там, то в каком разделе?
На SO также не нашлось.
@@AntonRychagov В дополнение к моему прошлому ответу. Я нашел какое-то обсуждение на SE в разделе cs номер 156949, еще видел обсуждения на SO.
Так вот, там обсуждается: включать ли ВХОД алгоритма в емкостную сложность.
В обсуждении на SE 156949 приводится ссылка на книжку ОРейли "Hands-On Data Structures and Algorithms with JavaScript by Kashyap Mukkamala"
Space complexity and Auxiliary space
Space complexity and Auxiliary space are two of the most often confused and interchangeably used terms when talking about the space complexity of a certain algorithm:
Auxiliary Space: The extra space that is taken by an algorithm temporarily to finish its work
Space Complexity: Space complexity is the total space taken by the algorithm with respect to the input size plus the auxiliary space that the algorithm uses.
--
то есть НИГДЕ не обсуждают, включать ли ВЫХОД алгоритма в емкостную сложность. Разговоры только про ВХОД, а про ВЫХОД всем понятно (что надо включать, потому что выход формируется в результате работы алгоритма)
Может, ты что-то перепутал?
("ты" - ну это как в яндексе и в интернетах принято)
@@vitaly1461 Я как раз спрашиваю про Auxiliary Space Complexity.
В любом случае, несмотря на то, что Саша на интервью ответил некорректно на этот вопрос, я увидел, что он понимает, как именно считается Space Complexity, а это главное. Я бы не стал снижать ему за это баллов, если бы это было реальное собеседование.
@@AntonRychagov Почему-то твои ответы ютуб часто прячет.. каким-то образом получилось увидеть, а теперь снова не видно.
Из ответа я понял, что ты не вникал в суть моего сообщения.
Просто обрати внимание, что никто не обсуждает объем выхода.
Обсуждают: 1) объем входа 2) объем памяти в процессе работы алгоритма 3) общий объем памяти.
В цитате из книги ОРейли не обсуждается объем выхода.
Вопрос - Как думаешь, почему не обсуждают объем выхода?
Я уже отвечал на этот вопрос. Попробуй теперь ты.
(обсуждение 83586 недоступно, про это я писал, не знаю что там)
задача была поставленна некоректно сразу нужно говорить что массив сортированный имеет положительные и отрицательные числа и тд
теперь я понимаю почему в крупные компании не берут нормальных программистов.
Может ещё и решение? Я смотрел за процессом и задание было объяснено полностью нормально
Ведущий сразу же написал пример массива с отрицательным числом, хотя по хорошему, собеседуемый сам должен был догадаться или уточнить, внимательно прочитав условие
он же нписал условие задачи, или левая часть экрана не видна собесеуемому
хорошая попытка , Я, но нет
можно было бы разделить исходный массив на два - массив отрицательных чисел и положительных. Отрицательный перевернуть. В while проходимся пока не обойдем оба массива с двумя индексами под каждый. Сравниваем на каждой итерации квадраты значений по индексу и добавляем меньший.
походу надо кодить молча, чтобы тебе минусов не наставили. В процессе написания решения для новой для тебя задачи всегда будет изначально грязное решение, которое в конце можно докрутить. А если решение знаешь, то просто пишешь самое оптимальное решение, которое люди придумали
getX2array - неверное название. X2 это *2
Лучше бы брали всех подряд, может, качество сервисов улучшится (почта, диск, браузер)
В коментах собрались одни обиженки, которых не взяли в Яндекс
Похоже, это такая традиция :)
алгоритмы яндекса на яндекс картах: "реальные пользователи ставят только 4 и 5" 1,2,3 ставят боты!
Блин, такая простая задача, и человек, который работает уже несколько лет, так туго ее кодит... Делает костыли, такой кривой код... Что же он пишет в реальных задачах? Одну ошибку не заметил ни тот, кто писал, ни тот, кто принимал. В конце в костыле после цикла не нужны проверки левого и правого, там ссылка на одну ячейку, там надо просто писать последнее число в итоговый массив и все. Те, кто в комментах пишут, что алгоритмические тесты не нужны, ответ вам такой. Если у программиста проблема с мышлением, он будет писать плохо. Другое дело, что во многих решениях похрен на красивый код, грамотную реализацию, работает и нормально. Там обезьяну посади и она напишет, потому и не важно проверять на алгоритмы. А уметь думать могут далеко не все. Сколько кривого кода в результате получается, это мрак.
Я тоже пока смотрел, всё ерзал и офигевал, ну как так можно тупить. А потом подумал я то сидел на диване мне никто в ушал не нудел , не перебивал и не стучал по клавиатуре. И код я бы писал в IDE и там были бы все подсказки, и дебагинг на лету. И на месте этого парня бы тоже затупил.
не понял а что сложного в задаче? обычный цикл на питоне который перебирает массив и создает новый упорядоченный массив чисел возведенных в квадрат
хомячок детектед даже условие не понимаем, даже с удачным примером
молодец что понял, наверное очень горд собой?)@@Viacha-wo3lb
@@vladimir7759 я не горд, мне скорее стыдно за вас, вайтишников с ICQ 80
мда, как он столько лет програмировал и ноль идей по решению.. странно..
Мне одному показалось, что задача была сортернуть в итоге? Судя по алгоритму он работает для [-3,2,4] но если расширить входные данные, он уже не работает. По ощущению тут не было ни нормальной задачи, ни нормальной оценки кандидата... Тут кандидата по моему просто валили... Нет таких сортировок строго за O(n) только если в лучших случаях (Что и было реализовано в данном видео)... Смотрел и недоумевал че тут вообще происходит... Яндекс такой яндекс...😂😂😂
Все тут работает, просто ты не соображаешь немного
@@7Denial7 Бесполезный ответ. Ага, сспасссибо!😅
@@Rodeon10 запусти код не в голове, а на компе, и скажи что здесь может не работать
@@Rodeon10 твои смайлики только подтверждают твой icq(
А с каких пор отрицательное число в n степени становится положительным?
Но с тех пор как умножается на другое отрицательное число :)
школу меньше прогуливать надо было😂
Да я многое позабыл после школы))@@sparrowwin
Сверхразум Dmitry в чате решил с O(1) по памяти =)
Программист проявил смелость, конечно. Но кажется, что не из-за волнения он так плохо справился. Не понимаю, как с тремя годами опыта можно так... тормозить
После этого видео расхотелось даже идти на собеседование в Яндекс. Ну вот представьте вы натренировались на собес, вас взяли на работу, а потом с этим каждый день работать, и вместо arr.map().sort() писать такие портянки? Ну нафиг, где тут удовольствие от работы?))