🔥

Тред (Владимир Калтырин)


День Знаний 👩‍🎓, и мы в треде поговорим о подготовке к алгоритмическим coding interview from zero to hero. В US компаниях вроде Toptal, Reddit, и конечно FAANG, всё это не редкость, хотя на рынке СНГ формат непривычный.

До прохождения в Toptal я тратил много времени на решение задач на leetcode, вот мой профиль: ​​leetcode.com/vkasci/ Потом решил отдохнуть, но, может, сегодня пора возобновить тренировки? :)
notion image

Я учился на математическом факультете, и в своё время у меня был курс по алгоритмам и структурам данных, но с сильным уклоном в теорию. Я особо не решал задач, и после многих лет в индустрии знания alma mater забылись совсем, так что считаю, что качался в алгоритмах почти с нуля

Так с чего начать? Вы точно не потеряете время, если хорошенько изучите Cracking the Coding Interview. Внимательно читайте теорию. Решаете ручкой на бумажке ВСЕ УПРАЖНЕНИЯ. Разбираете внимательно решения. Это foundational книга, после её прохождения у вас будет база.

Можно пройти курс по алгоритмам. Я проходил Algorithmic Toolbox на Coursera от ВШЭ и UC San Diego. Мне понравился упор на решение задач и на динамическое программирование. Можно пройти бесплатно, если упороться и решить все за неделю (я так и сделал из жадности).

Скучно возиться с книгой, курсами и хочется сразу в бой? Идём на leetcode решать списки: Top 100 Liked Questions Top Interview Questions Участвуем в челленджах, читаем теорию, комментарии, пишем сами, запиливаем статьи с решениями.

У вас есть какая-то база? Для подготовки к собеседованиям в Toptal полезно прорешать Tutorial из Codility, а также прорешать несколько челленджей Codility (решаешь активный челлендж – зовут на собес куда-нибудь). В Tutorial есть подробные решения. Полезно.

Если в Leetcode задачи в стиле “краткость сестра таланта”, то в Codility и HackerRank вы увидите длинные полотна текста с историями про Васю и спички, или что-нибудь в этом духе. Крайне рекомендую практиковаться с подобными задачами, и особенно внимательно смотреть на edge cases

Сколько тратить времени? Если у вас хороший уровень, то возможно хватит посидеть месяц-другой на Leetcode и всё. Если вы почти по нулям, как я в прошлом, то заложите 2-3 часа в день ежедневно на полгода, а также объясните близким, что на выходных вы будете потеряны для них

Полгода-год решать задачи это долго, тяжело и можно выгореть. Да. С другой стороны, эта инвестиция в себя окупится, и в будущем вам будет проще проходить собесы по алгоритмам. На Leetcode много историй в духе "год решал задачи – получил оффер в Google".

Как регулярно решать задачи? Можно пойти в September LeetCoding Challenge 2021 leetcode.com/explore/challe… и решать по задачке в день.

Или можете попробовать решить классическую задачку про сапёра из CCI (Cracking the Coding Interview): leetcode.com/problems/mines…
notion image

А еще интересная задачка: leetcode.com/problems/numbe… Часто спрашивали в Amazon. Попробуйте DFS, BFS, Union-Find.
notion image

Как решать задачи и не выгореть? Найдите группу по интересам. Хорошо, когда кто-то с вами тоже готовит алгоритмы для собесов. Лучше и дешевле всего иметь друзей-единомышленников :)

Я оставил за кадром вечный флуд: “Алгоритмы не нужны в реальной работе, это пустая трата времени и т.д.”. Поинты: Компании в US пока еще включают алгоритмы в собеседования – факт. Решение задач по алгоритмам улучшает здоровье мозга, в отличие от верстки UI– моё мнение. :)

Если интересует какие-то конкретные вопросы по стратегии подготовки к собесам по алгоритмам, пишите мне в телегу @vkaltyrin – рад ответить, как будет минутка. В будущем планирую возобновить тренировки, может, соберем группу единомышленников? :)

Владимир КалтыринВладимир Калтырин