Порридж В Ко-ливинге
Хотите задачку?
Порридж В Ко-ливинге
Где здесь баг? class Solution: def firstMissingPositive(self, nums: List[int]) -> int: nums += [0] for i in range(len(nums)): while nums[i] in range(len(nums)) and nums[nums[i]] != nums[i]: nums[i], nums[nums[i]] = nums[nums[i]], nums[i] nums[0] = 0 for i, n in enumerate(nums): if i != n: return i return len(nums) or 1
Viktor
Где?
не, вроде вот это условие nums[i] in range(len(nums)) избавит от этого
Порридж В Ко-ливинге
Вместо привычного a > i && i < b
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Или вы просто прогнали? 🤣
Viktor
Не, прогнал, конечно!
Порридж В Ко-ливинге
Viktor
Я как раз из кода и не вижу почему он бесконечный
Порридж В Ко-ливинге
Там одна строчка всего
Порридж В Ко-ливинге
Через 10 минут скажу что там)
Viktor
Капец… Вот он опыт)
я пока не настолько терминатор 😂
Порридж В Ко-ливинге
Щас проверю, есть ли этот “баг/фича” в JS
Viktor
Есть)
Давай, не томи. Знаешь, что такое интрига. Что там за ошибка?
Порридж В Ко-ливинге
Давай, не томи. Знаешь, что такое интрига. Что там за ошибка?
Вот правильная строчка nums[nums[i]], nums[i] = nums[i], nums[nums[i]]
Порридж В Ко-ливинге
Казалось бы, мы ничего не поменяли, но щас могу показать как это видит интерпретатор
Порридж В Ко-ливинге
nums[nums[i]], nums[i] = nums[i], nums[nums[i]] против nums[i], nums[nums[i]] = nums[nums[i]], nums[i]
Порридж В Ко-ливинге
''' i == 0 nums[nums[i]], nums[i] = nums[i], nums[nums[i]] nums[nums[i]], nums[i] = nums[0], nums[nums[i]] nums[nums[i]], nums[i] = 1, nums[nums[i]] nums[nums[i]], nums[i] = 1, nums[nums[0]] nums[nums[i]], nums[i] = 1, nums[1] nums[nums[i]], nums[i] = 1, 2 nums[nums[0]], nums[i] = 1, 2 nums[1], nums[i] = 1, 2 nums[1] = 1 [1, 2, 0] -> [1, 1, 0] nums[i] = 2 nums[0] = 2 [1, 1, 0] -> [2, 1, 0] [1, 2, 0] [2, 1, 0] [2, 1, 0] [0, 1, 2]''' ''' i == 0 nums[i], nums[nums[i]] = nums[nums[i]], nums[i] nums[i], nums[nums[i]] = nums[nums[0]], nums[i] nums[i], nums[nums[i]] = nums[1], nums[i] nums[i], nums[nums[i]] = 2, nums[i] nums[i], nums[nums[i]] = 2, nums[0] nums[i], nums[nums[i]] = 2, 1 nums[0], nums[nums[i]] = 2, 1 nums[0] = 2 [1, 2, 0] -> [2, 2, 0] nums[nums[i]] = 1 nums[nums[0]] = 1 nums[2] = 1 [2, 2, 0] -> [2, 2, 1] [1, 2, 0] [2, 2, 1] [2, 2, 1] [1, 2, 1] [1, 2, 1] [2, 2, 1] [2, 2, 1] [1, 2, 1] [1, 2, 1] ... '''
Порридж В Ко-ливинге
Я там просто заменяю по очереди переменные
Порридж В Ко-ливинге
😆
Порридж В Ко-ливинге
По схеме понятно хотя бы из-за чего это ве происходит?
Порридж В Ко-ливинге
Viktor
Значит не понятно 🤣
Наверное, если каждую строку прочитать и сделать подстановки - станет ясно. «Но делать этого я конечно же не буду» (с)
Viktor
Так я же подставил за вас 🤣
ну да, короче, если поменяется nums[i] справа, то слева его уже использовать нельзя — потому что хотелось-то не этого. хочется исходные значения поменять, поэтому порядок важен.
Viktor
любопытные баг, мне нравится.
Viktor
это даже не баг никакой, а просто так работают последовательные вычисления, думаю где угодно будет так же, в любом языке.
Порридж В Ко-ливинге
посмотрел, стандартная реализация. если б побольше тестов добавить, было бы ещё лучше.
Вы оказались правы) 1) Вы пропустили баг, но оно и понятно, вам за это и не платят 🤣 2) Там оказался баг)
Порридж В Ко-ливинге
Я зачем-то после пользования Питона стал проверять есть ли индекс в массиве
Viktor
@Kadroff привет! @Glazomer47 сможешь рассказать товарищу про собеседования в Яндекс на фронта? какой там формат
Порридж В Ко-ливинге
Я зачем-то после пользования Питона стал проверять есть ли индекс в массиве
Забыл что в JS очень удобно можно undefined манипулировать. Главное чтобы не было unexpected behavior)
Viktor
Без шуток. @Kadroff просто дошёл до меня в личке, и я попросил добавиться его в чатик чтобы ты рассказал, т.к. ты недавно собеседовался.
Viktor
Человек готовится.
Порридж В Ко-ливинге
Ааа, я рассказать про фронта ему? Я думал наоборот 😆
Порридж В Ко-ливинге
Ну хорошо, опыт у меня большой, @vitkarpov знает 🤣
Marsel
Всем привет, было бы очень полезно послушать
Viktor
Ну хорошо, опыт у меня большой, @vitkarpov знает 🤣
Да-да, я поэтому и спрашиваю у тебя. Потому что я честно не знаю что сейчас в Яндексе творится.
Порридж В Ко-ливинге
В общем если на стажера, то там сильно не шманают, самое главное: 1) идеально знать сам язык (YDKJS и javascript ninja даст почти все НЕ БАЗОВЫЕ знания) 2) Шарить в алгоритмах, Литкод на уровне Изи, редко медиум
Marsel
Вообще есть 3 пути, на мой взгляд как туда попасть 1) ШРИ 2) Стажировка 3) Пойти на вакансию джуна Мне кажется первый самый легкий путь, а 3 наоборот
Порридж В Ко-ливинге
Стажерам так же меньше собесов, хотя по сложности от мадлов и сеньеров не отличаются, только нет Сист дизайна и меньше алгоритм секции. 1) Сначала будет телефонный скрининг. У меня из 4 собесов (не српашивай как я за полгода 4 раза проходил собес) 3 раза был на знание JS (базовые вопрос про типы, объекты, промисы, замыкание) и 1 раз интервьюер СРАЗУ без проверки языка давал задачки. 2) Далее очное, он у меня был один раз, меня собеседовал Хохулин (щас расскажу почему фамилия важна), у меня была задачка “Дан массив массивов размера 2, в нем лежит начало и конец промежутка, выдайте массив строк, обозначающие промежутки, попутно сливая из”, т.е. [[1,4],[6,8],[7,10]] -> [“1-4”, “6-10”] 3) Интервью с командами. В одну команду ты пройдешь 99%, т.к. там будет тот, кто у тебя уже брал интервью, т.к. он скажет “Ну, алгоритмы я знаю как ты раешь, давай побазарим” Остальные могут спросить легкую задачку, и скорее всего они просто будут хотеть что-то от тебя услышать (например меня собеседовало 2 чувака еще, один меня завалили до этого еще на скрининге, но в этот раз я прошел к нему, а второй хотел чтобы я сказал “Функциям можно передавать колбэк”, а у метя тогда мозг не соображал… Рандом)
Порридж В Ко-ливинге
Вообще есть 3 пути, на мой взгляд как туда попасть 1) ШРИ 2) Стажировка 3) Пойти на вакансию джуна Мне кажется первый самый легкий путь, а 3 наоборот
2 и 3 это одно и тоже. 3 дают только каким нибудь МФТИшникам, и единственное отличие, как я понял, в том что у 3 зп больше на 20 000
Порридж В Ко-ливинге
Вот еще способ
Порридж В Ко-ливинге
Ну, если они облегчат вступительное
Marsel
Спасибо большое. Но как и в 1 и во 2 варианте, думаю нужно будет очень стараться, чтобы было предложение там остаться
Порридж В Ко-ливинге
Спасибо большое. Но как и в 1 и во 2 варианте, думаю нужно будет очень стараться, чтобы было предложение там остаться
Да нет, на самом деле это все фигня, главное подготовиться и пройти собес. Даже без всего этого в мирное время берут
Порридж В Ко-ливинге
А щас только олимпиадников берут почему-то, я вот сам не могу попасть
Marsel
Разве так много олимпиадников идут на фронт, я думал им больше интересно big data и все в этом духе
Порридж В Ко-ливинге
Нет, у HR щас шиза, и они всех не олимпиадников отклоняют. Не знаю почему, но все большие дяди в Яндексе и некоторые источники говорят об этом
Viktor
Разве так много олимпиадников идут на фронт, я думал им больше интересно big data и все в этом духе
нужно быть как-то заметным, чтобы попасть на собеседование. есть разные способы, олимпиады один из них. какой ты вуз сейчас заканчиваешь? если топовый московский, то это ещё один способ. ты ещё говорил, что работаешь прямо сейчас на зарубежную компанию и делаешь какой-то мессенджер — сможешь про это круто написать в резюме, ещё один способ.
Viktor
разумеется подаваться лучше через рефер, чтобы это резюме вообще увидели.
Viktor
в моем случае, я у меня в резюме было «верстал говносайты в студии на потоке» — поэтому путь был только через шри 🙂
Marsel
Кстати, вот вопрос, мы не опенсорс и код конечно же не могу показать. Это как-то влияет или можно только рассказать о проекте без кода. Просто где-то читал, что смотрят код на твоих предыдущих проектах
Viktor
Конечно можно и нужно без кода. Надо рассказать какую проблему решал, как решил, какой результат получил.
Viktor
Все это можно сделать не нарушая NDA.
Marsel
Удивительный факт, приезжал на конференцию к нам в город Андрей Мелихов, удалось спросить, зачем алгоритмы фронту и все в этом духе. Его ответ был интересным: "Чтобы пройти техническое собеседование"
Marsel
Потом только загуглил с кем удалось пообщаться, оказывается "медийное лицо"
Порридж В Ко-ливинге
Я вот щас на проекте с человеком, который алгоритмы никогда не решал, сразу видно по коду, какие структуры он использует
Viktor
Я вот щас на проекте с человеком, который алгоритмы никогда не решал, сразу видно по коду, какие структуры он использует
Есть вариант, что у человека мало опыта просто. Например Данька Абрамов, который редакс написал, тоже никогда алгоритмы не решал, а код нормальный получился.
Порридж В Ко-ливинге
АААА, блин, я это репостнуть хотел
Порридж В Ко-ливинге
Вот это
Порридж В Ко-ливинге
А тут репосты запрещены
Viktor
Мне тут вчера задачку скинули порешать, на дпшечку. Интересная. Час решал. Рекомендую. Вообще вижу, что дпшечка самая сложная история для понимания. В понедельник буду разбирать задачу про робота, классика дп, которая встречается на собеседованиях. В целом, для собеседований дп редкая история, по идее.