Сап двач. Начал прорешивать литкод ~2 месяца назад, прорешал около 500 задачек, поучаствовал в их типа соревнованиях. До сих пор испытываю проблемы в задачах на графы и динамическое программирование. Сколько нужно прорешать, чтобы чувствовать себя уверенно? Есть на доске гуру алгоритмов и олимпиадники? Посоветуйте материал, расскажите как сами прокачались. пикрандом
>>2448946 >Какого уровня сложности и на какие темы? В алгоритмах пока нубас, поэтому easy=343,medium=145,hard=8 по темам: two pointers/sliding window, recursion, dfs/bfs, trees, linkedlist, binary search, вот это все Пробовал еще прорешивать sql там же, задачки не фонтан, заковыристые, на собесах такое редко попадается, sql-ex выглядит удачнее.
>Какие результаты участия? 3 вопроса из четырех сделал, топологическую сортировку графа не осилил, по результатам где-то в верхних 30%, для первого раза сойдет. В планах доделать все easy вопросы, и дальше уже делать только medium и hard.
Есть куда стремиться короче. Еще начал читать широко рекомендуемую "elements of programming interviews java" (pdf легко гуглится), там дельно все объясняется, и параллельно слушать MIT лекции из курса ADS. в планах года за 2 выйти по алгоритмам на нормальный уровень среднего гугломидла.
>>2448918 (OP) Зачем тебе это? Хайлоад собрался на ассемблере писать? По сабжу. Когда-то лет 12 назад будучи школьником занимался олимпиадной информатикой пиковый результат - какое-то там место с конца на всеросе довольно упорно и с увлечением вот чтобы прям максимально интенсивно и с нормальным подходом - около года. До определённого уровня дефицита в понимании алгоритмов не испытывал, но для уровня всероссийских этого явно было мало. Например, алгоритм Дейкстры на хипе был вне моего понимания, равно как и какой нибудь алгоритм построения суффиксного дерева. В университете на олимпиады хуй я забил почти сразу, но чисто из принципа (и подоженной жопы) дефицит понимания вещей, вроде тех, что выше, компенсировал самостоятельно. Схема была очень простая. Читаю нужные куски из Кормена, потом дошлифовываюсь на emaxx, затем пиздую решать задачи на acm.timus.ru. Занимался этим первые два курса просто по приколу, пока окончательно не остопиздело. По итогу теперь я датасосонист и умение посчитать амортизационную стоимость добавления элемента в пирамиду Фибоначчи мне нахуй не нужно. Современные поделия вроде грокаем алгоритмы и какой-то модной книжки каких-то индусов считаю шлаком для зумеров и упражнением по самоодебиливанию. Известный курс Седжвика - для девочек (хотя задача про percolation там годно изложена). Только фундаментальная подготовка, только тяжёлый труд, только хардкор. Паши два года, сука =))
>>2449227 Да ниче особенного, отучился пару курсов в московском тех вузе, забил на него, в 2016 прорешал 900 задач на javarush, освоил git, прошел кое-какие курсы (первую часть курса getjavajob и javaops), пошел работать стажером в российский интегратор джуном, там дослужился до погонщика, параллельно выучил английский на уровне B1 (репетиторы и englishlive), потом уехал в соседнюю страну, там работал на баренских проектах и в стартапах, после - некоторое время работал еще кое-где в восточной европке контрактором на одну известную adоbe шарагу, потом вернулся в москву, работал в бодишопе в финтехе за норм зп(380), потом началась специальная военная война, барен съебался, я решил остаться, уволили по соглашению сторон выдав ~3 зарплаты, теперь сижу дома решаю алгоритмы, да в общем-то все, лол.
Вроде прошаренный, а на самом деле действительно сложного особо ничего не писал, все относительно короче, не считаю себя образцом успешного успеха, полно людей более технически подкованных, да и с карьерой получше. Я не уверен что тебе нужно как я, лол.
В остальном, полит ситуация мутная, за бугор пока больше не тянет, а на российском рынке перспективы размытые, лол. Так что решил подучить то, в чем никогда не шарил, и алгоритмы - одна из дыр, которые я намереваюсь закрыть. Сижу под кондиционером, решаю задачки, собсно все, кек
>>2449271 >Зачем тебе это? Хайлоад собрался на ассемблере писать? ну если невойна закончится, может в FANG попробую, если нет - в какую-нибудь аналогично задротскую контору в России.
> довольно упорно и с увлечением а это сколько часов в день и сколько задач в неделю? примерно?
> Паши два года, сука =)) лол, как и ожидалось, шорткатов не завезли
>>2449287 Свободного времени во время семестров было немного, но часов 8-10 в неделю уделял. На каникулах мог бы и по 5-6 часов сидеть, но тратил это время на математику и более тяжёлые вещи, вроде линейного программирования, дпфа с вариациями или численных методов. Как-то убил неделю на то, чтобы полностью разобраться в разложении Жордана. Задач с тимуса решал максимум штук 5 в неделю, обычно две-три, слишком много времени они отжирали. Я хз, может, тогда просто тупой был, сейчас все это не выглядит таким уж сложным.
>>2449312 Да, ещё добавлю, что этим я занимался в одиночку, дногруппникам похую был весь этот матан и какие-то сортировки. Более того, ветхие препода тоже нихуя не знали о том, зачем и где это нужно, так что единственным местом, где я что-то спрашивал, был c/ нульчана.
>>2449330 >>2449312 выглядит будто 1000 часов должно хватить, чтобы прокачаться до уровне очень сильно выше среднего.
тоже в одного занимаюсь, все кого удалось сагитировать - побросали после 150 задач если не пригодится - переживу, литкод до сих пор интереснее 99.9% игр в steam/ps5, лол
>>2449749 >Помогает ли задрачивание задачек в непосредственно работе, или они нужны только лишь для прохождения собесов в фаанги? как выше сказали, помогает не отупеть недавно позвонил брат, сказал что тупит над задачей, написал ему код за 2 минуты прямо в месседжере. без тренировки сам бы сидел и думал, а так рука очень круто набивается.
>>2449926 если к умению прорешать задачки добавится умение в базы данных и сможешь накидать типовой проект с паттернами-хуяттернами и фреймворками - то вполне.
Литкод - максимально гойская вещь, которой занимаются одибилевшие малолетние снежинки в надежде, что когда они попадут в ДОЛГОЖДАННЫЙ ГУГЛ - ТАМ ТО ВСЕ БУДЕТ ПО ДРУГОМУ на самом деле нет, будете кнопку по полгода передвигать и постоянно выгорать от осознания как вас наебали с ИнТеРеСнЫмИ ЗаДаЧаМи МеНяЮщИмИ МиР
Я считаю, что FАANG-парашам надо сдвинуть планку отбора внушаемых гоев ещё выше - например, чтобы пройти интервью - надо победить интервьювера в партию в Го. Предвкушаю, как появятся десятки книг по тактикам, сотни часов лекций от индусни на ютубе по началу партии а весь программач будет завален вопросами типа "игра в Го ОЧЕНЬ ПОЛЕЗНАЯ, я уже выучил 500 этюдов, как думаете уже можно подаваться?"
>>2451639 бабах по моей практике, больше половины самоназванных "синьоров" не могли написать на собесе метод вида "double findAvg(int[] arr)" а кто мог - не могли его протестировать. Тоже наверняка говорили что литкод им нахуй не нужон
>>2452380 так блять никто и не говорит про высокую планку. Доп практика никому не вредит, хз че тебя бомбит по поводу литкода. В гугл не пускают? лол
>Дорогой литкоддебил, а теперь опиши решение для случая, когда надо найти не среднее, а 99-й перцентиль. В массиве несколько миллионов значений.
если массив не собирается меняться - сортируешь и радуешься жизни. и будет у тебя и 99й персентиль и 25й и какой угодно.
Если нужно знать значение только один раз - частичная сортировка выбором или частичная быстрая сортировка (aka quickselect) в помощь.
Какой рэнж значений? если небольшой, то к ним применим count sort, который делается за n.
Если это не массив, а данные которые поступают из внешнего источника, создаешь две PriorityQueue, в одной 99% минимумов, в другой 1% максимумов. поддерживаешь их в таком состоянии дальше, берешь ответ из второй очереди.
Может есть и лучше вариант, я хуй знает. Вообще вопрос хороший
>>2452434 Вот видишь, в этом и проблема! Ты настолько задрочился литкодом, что оперируешь мартыханскими стандартными решениями - сортировка, очереди и т.д. Хорошо, что два указателя не взял, и не стал их дрочить.
Задача подсчёта квантилей возникает в любой мониторингом системе, никаких сортировок и т.д. там нет - в зависимости от нужной точности делают набор бакетов-диапазонов, и с каждым новым значением увеличивают счётчик. Самая сложная задача там - как раз придумать это разбиение на бакеты.
Конечно же ты не обязан этого знать, но заметь, что при реальном решении инженерной проблемы подход литкод-мартыханов малопригоден, однако литкод-дебил считает, что если задачка прошла через чекер - она решена.
Даже в твоём "простом" примере с подсчётом среднего - если числа очень разные - то ты не можешь тупо складывать их (каждое деля на N), потому что у тебя накопится катастрофически большая ошибка округления, есть специальные алгоритмы для изменения порядка сложения для минимизации ошибки. Знает ли это все литкод-макака? Одна на миллион. Знает ли это тот, кто практически решал такую задачу? Наверняка каждый 2-й.
Моя претензия к литкоду в том, что она даёт макакену иллюзию того, что она умеет программировать, но это не так. Если бы оброченные фанги давали в качестве собеса игру в Го, у кандидатов в гои не было бы ложного ощущения, что они что-то умеют. А так получаем ситуацию, что литкод-макак все больше, а софт - все хуже
Программирование - это построение сложных систем на тысячи строк кода, а не дрочение задачек для задров-олимпиадников. Хочешь писать хороший код - пиши код, а не решай задачки. Читай литературу по CS(БД, ОС, сети, прикладные разделы математики), а не двигай байтики, как аутист.
Алсо, большая часть задач с литкода не на смекалочку, а тупо на знание нужного алгоритма. Прочитал про алгоритм перебора всех комбинаций символов? Значит решишь задачу. Нет? Будешь сидеть и изобретать велосипеды.
>>2452956 бля это все замечательно отличные аргументы и вся хуйня вот только за свою карьеру я слышал следующее >- Зачем ты учишь английский? это ведь пустая трата времени >- Зачем ты сдаешь сертификаты это ведь пустая трата времени? >- Зачем ты проходишь курсы, ведь это пустая трата времени? >- Зачем ты пишешь пет-проекты, ведь это пустая трата времени?
теперь и >- Зачем ты решаешь задачи на литкод, ведь это пустая трата времени?
спойлер, большинство элементов этого списка окупились, так нахуя вставлять свою "Фи" ? Ради самооправдания почему ты конкретно этим не занимаешься? Да даже если это пустая трата времени, да и пусть, каждый дрочит как он хочет.
>>2453072 первые три пункта понятны. это базовые штуки. но "пет-проект" ведь не окупился? да и как можно называть пет-проектом твою дрысню? это реально твой Pet? вызывает желание приходить и допиливать? ты получаешь эмоциональную отдачу?
Я не утверждаю что leetcode совсем уж пустая трата времени. Просто жалко греть воздух этим
>>2453275 если на этом заслуги заканчиваются - то это маловато. если ты еба знаток алгоритмов и занимал места какие-то там на серьезных соревнованиях, то думаю кто-то заинтересуется а так. у меня послужной список норм, литкод скорее всего вообще не будет в моем резюме
>>2453126 Пет проекты делают вкатуны чтобы освоить самые базовые приемы работы с либами и фреймворками, пытаясь собрать из них что-то рабочее, уровня курсового проекта в универе. А так пет проекты в здравом уме мало кто делает, так как идей что-либо делать особо и нет.
>>2453873 дада мы уже поняли, что ничего не надо делать ВСЕМУ НА РАБОТЕ НАУЧИШСЯ))))00
нихуя только не научишься на работе будешь пилить одно и то же от забора до заката и все посидеть дома и поковырять задачи на что-то, с чем до сих пор не сталкивался фу-фу да?
Начал прорешивать литкод ~2 месяца назад, прорешал около 500 задачек, поучаствовал в их типа соревнованиях.
До сих пор испытываю проблемы в задачах на графы и динамическое программирование.
Сколько нужно прорешать, чтобы чувствовать себя уверенно?
Есть на доске гуру алгоритмов и олимпиадники?
Посоветуйте материал, расскажите как сами прокачались.
пикрандом