Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузись в захватывающий фэнтезийный мир! Создай уникального мага и вступай в эпичные тактические сражения. Оттачивай навыки в динамичных онлайн-битвах . Всё это ждёт тебя в «Битве магов»!

Битва Магов

Хардкорные, Мидкорные, Ролевые

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 44 поста
  • Antropogenez Antropogenez 18 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
11
DELETED
Лига программистов
Серия На пути к FAANG

На пути к FAANG 14⁠⁠

1 год назад

Итак, за прошедшее время я:

  1. Стал прямым свидетелем покушения на убийство (со стрельбой из пистолета в окно припаркованного авто). Из-за этого пропустил мок (был на нервах + давал показания полиции). Ууу, сука.

  2. Почти закончил топик Facebook на LeetCode.

  3. Впервые в жизни вывел собственное (и довольно крутое) решение dp-задачи, которого нет в editorial.

  4. Продвинулся по системному дизайну.

И поскольку первый пункт - это скучная, никому не интересная херня, давайте остановимся на последних трех!

Топик Facebook на LeetCode оказался довольно интересным. Некоторые задачки реально заставили попотеть, например, мне очень понравились вот эти две:

https://leetcode.com/problems/regular-expression-matching

https://leetcode.com/problems/longest-valid-parentheses

В случае с обеими мне пришлось лезть в подсказки, и у обеих мне очень понравились решения - это элегантно, красиво и не очень очевидно. Highly recommended, как говорится. Зато я смог сам решить вот это, чем вполне себе горжусь.

https://leetcode.com/problems/remove-invalid-parentheses/des...

И это еще не все! Наверняка вы ведь видели классическую DP-задачку?

https://leetcode.com/problems/decode-ways

Я уже решал ее когда-то, но как это часто бывает, тотально забыл, как, поэтому когда я открыл ее снова - засел на пару часов, перебирая и откидывая в уме разные варианты решения. И в процессе я обнаружил любопытную вещь - если строка состоит только из "1" и "2", число вариантов росло ровно как числа Фиббоначи! После этого понадобилось буквально 15 минут, чтобы вывести формулу для чисел 3-9 и 0, после чего я написал вот это:

На пути к FAANG 14

И это сработало! Более того - этого решения нет в editorial, а значит, я, пусть и случайно, сделал что-то новое и нестандартное! Не могу даже описать, как это круто. Ни о чем таком я даже и думать не мог, когда начинал год назад.

Ну и наконец системный дизайн. Тут получилось забавно - я разобрал еще три главы из книги, про которую писал в прошлой части. Один из комментаторов посоветовал мне забить ровно после 100-й страницы и переключиться на что-то конкретное, поэтому сегодня, после главы про проектирование веб-краулера (150-я страница - до меня медленно доходит), я решил из интереса чекнуть, не учу ли я что-то, что потом придется проходить еще раз в том самом всеми обожаемом курсе на Educative. И - сюрприз - все это там есть. В общем, завтра начинаю этот курс. Книгу буду просто использовать как шпаргалку.

В конце, как обычно - пожелание всем, кто идет или собирается пойти по моим стопам, не сдаваться. Неважно, как все это закончится и смогу ли я пройти с первой/второй/n-ной попытки в big tech, главное - что даже у самоучки есть шанс этого добиться. Так что занимайтесь, и не позволяйте всякой фигне типа стрельбы на улицах выбить вас из колеи больше чем на пару дней)

Показать полностью 1
[моё] IT Faang Учеба
3
340
DELETED
Лига программистов

На пути к FAANG 13⁠⁠

1 год назад

Итак, прошел год с premium подпиской Leetcode.

На пути к FAANG 13

Увы, но до беджа "300 дней" мне в итоге было далеко, суммарно получилось около 220 дней активности. Маловато для человека, который хочет попасть в FAANG, но я ленивая жопа. Кстати, какой-то гений мне написал еще в самом начале, мол, посмотрите на дурака, хочет за счет решения easy-задачек в big-tech попасть. Так вот, спустя год (на самом деле меньше, тут я начал писать с мая) могу смело сказать - да, именно так люди и строят успешную карьеру - начинают с легкого, и постепенно усложняют себе задачу.

Ну а в общем и в целом могу сказать, что по итогу я, самоучка без образования в computer-science, смог таки в алгоритмы. Я провел уже три мока на платформе Pramp (не реклама), и в принципе ни на одном не потерялся. Даже попробовал себя в роли более опытного интервьюера, объясняя одному тестировщику из Калифорнии (блин, круто), как решить 4-sum за O(n^3). Люблю глобализацию.

Теперь фокус немного сместился в системный дизайн, и тут я, конечно, офигеваю. Думал, это будет легко, но нет - очень много новой информации, вроде и все понятно, но тупо мозги пухнут. Репликация, шардирование, алгоритмы консенсуса, векторные часы, согласованное хеширование - и это только часть информации из первых 100 страниц книги. Книга, кстати - "System Design. Подготовка к сложному интервью" Alex Xu. Очень рекомендую, есть на русском. Себе тоже заказал, пока занимаюсь по pdf с компа. После этого останется курс на educative по системному дизайну... и все, надо будет отправлять резюме и просить рефералы. Страшно, блин.

В общем, если все пройдет по плану, то в Amazon или Meta, возможно, станет на одного работника в моем лице больше.

Маленькое послание тем, кто решит пойти по моим стопам - не сдавайтесь. Помните, что как и многое другое, рынок труда подчиняется законом экономики - чтобы получить что-то ценное и редкое (в данном случае высокооплачиваемую работу с кучей плюшек), надо предложить что-то ценное и редкое взамен (готовность впахивать год по два-три часа в день, изучая основы алгоритмов и распределенных систем ради просто шанса(!) пройти собеседование). Это сложно, муторно, местами скучно, и я даже не знаю, сколько раз за последний год слышал "оно тебе надо?". За этот год я доказал себе, что да, действительно надо.

Показать полностью
[моё] IT Faang Программирование
120
29
iuhrm
IT-юмор

Когда получил оффер в правильный faang⁠⁠

1 год назад

#comment_292035809

Когда получил оффер в правильный faang
Показать полностью 1
IT юмор Faang Скриншот Комментарии на Пикабу
9
27
DELETED
Лига программистов
Серия На пути к FAANG

На пути к FAANG 12⁠⁠

1 год назад

Итак, прорыв.

Если что, тут два Medium алгоритма, решенных сегодня, не влезли

Если что, тут два Medium алгоритма, решенных сегодня, не влезли

За последние 4 дня - 9 алгоритмов уровня Hard, 22 алгоритма Medium и 7 Easy. Практически все - без заглядываний в рефы.

Что случилось и откуда такой прогресс на пустом месте? Дело в том, что я прошел свой первый мок. И героически его завалил, во всяком случае, алгоритмическую часть.

Как ни странно, меня это просто охренеть как расслабило и воодушевило одновременно. Во-первых, я все же почти пришел к правильному алгоритму, хоть и с подсказками. Во вторых - я понял, что уже действительно много знаю (почти год учебы, как никак). В третьих - и это самое важное - я смог с помощью интервьюера (святой человек!) отследить свою главную ошибку.

Я слишком торопился, и начинал писать решение прям сразу, даже не обдумав (и не проговорив) его предварительно. Типа, по ходу дела придет.

Тупо? Да, тупо. Но теперь я это исправил (я стараюсь прям вслух проговорить решение от и до, прежде чем приступать к написанию кода) и моя продуктивность улетела куда-то в стратосферу. Откровенно говоря, за последние 4 дня я только один раз потратил на алгоритм больше часа. Вот он, очень рекомендую попробовать.

https://leetcode.com/problems/word-ladder-ii/description/

Первый word ladder, кстати, решить было довольно легко (строим граф, делаем BFS по графу, профит). Но вторая часть - это конечно что-то. Если мне дадут это, вряд ли я напишу готовое решение за полчаса.

Книжка по системному дизайну идет довольно легко, сейчас изучаю распределенные хранилища key-value. Из интересного до этого была только тема со стратегиями rate limiting. Конспект по книге уже на 20+ страниц чистых терминов и определений. Книга очень крута, автор не растекается мыслью по дереву и расписывает коротко и ясно, highly recommended (Alex Xu, System Design), just in case.

Короче, не сдавайтесь.

Показать полностью
[моё] Программирование Учеба Faang IT
8
8
DELETED
Лига программистов
Серия На пути к FAANG

На пути в FAANG 11⁠⁠

1 год назад

Давненько я не писал, наверное, мои 65 подписчиков меня уже потеряли... шучу, кому я сдался) Но тем не менее, считаю своим долгом выложить очередной отчет.

Курс на Educative закончен. Правда, напоследок он дал мне прикурить, подсунув пару-тройку алгоритмов уровня Hard по Disjoint Set (он же Union-Find). Один я решил сам, один разобрал и над одним (обозначенным как Medium по какой-то неведомой мне причине) просто посмеялся и закрыл. Как любят шутить на LeetCode - "если вам дали это на интервью, знайте - они не хотят вас нанимать". Вот вам ссылка, попробуйте свои силы.

После этого я вроде как оказался на распутье. Те, кто пробовал готовиться к таким интервью, наверняка знает, что в один день ты чувствуешь себя Кнутом, Седжвиком и Дейкстрой в одном лице, а в другой... нууу...

На пути в FAANG 11

В общем, так получилось и со мной после того, как я открыл гайд по подготовке к интервью одной хабровчанки (жители Хабаровска, это не про вас написано), и узнал, что, по ее мнению, я знаю где-то 20% от требуемого уровня. Там и дискретная математика, и теория вероятности, и master theorem, и основы криптографии, и битовые манипуляции - и это все только база. В общем, я было перенес сроки еще на пару лет вперед, но один умный человек, который уже давно в этом самом FAANG, меня успокоил и посоветовал сосредочиться на основах. Чем я и решил заняться.

Так что сейчас я просто начал прорешивать по 4 задачки из топика Amazon в день. Когда закончу с ним - начну Meta. Это две компании, в которые у меня потенциально есть рефералы.

Плюс начал книжку Alex Xu по системному дизайну. Для опытных людей, наверное, она довольно примитивная, но для меня, как способ "вкатиться в тему" - прям must have, как оказалось. Минимум воды, максимум информации, люблю такое.

Ну и да, я начинаю моки по алго части. It's time. Страшновато, конечно. Так что пожелайте мне удачи.

Показать полностью
[моё] Faang Учеба Программирование IT Гифка
8
11
DELETED
Лига программистов
Серия На пути к FAANG

Разбираем задачку с LeetCode на Dynamic Programming⁠⁠

2 года назад

Вчера у меня случилась великая радость - я наконец-то без подсказок написал решение medium DP задачи, используя bottom-up подход (то есть циклом вместо рекурсии). Рекурсивные (up-down) подходы более интуитивны, зато циклы дают лучшую производительность и меньшее потребление памяти. В общем, давайте попробуем разобрать daily-challenge c LeetCode за вчерашний день.

Дана строка, нужно найти и вернуть самый длинный палиндром из нее (если несколько одной длины, вернуть любой).

Дана строка, нужно найти и вернуть самый длинный палиндром из нее (если несколько одной длины, вернуть любой).

Начинаем с интуитивного решения. Рекурсивно переберем все возможные варианты.

Не самый красивый код, но со своей ролью справляется.

Не самый красивый код, но со своей ролью справляется.

Предсказуемо работает - и вылетает по Time Limit. Еще бы, у нас Time Complexity O(n^3). Кошмар.

А ведь это далеко не самая большая строка...

А ведь это далеко не самая большая строка...

Но ведь это задачка на DP. Даже если бы этого не было в тегах - все равно можно понять, что места для оптимизации тут есть, ведь мы по факту обрабатываем некоторые подстроки по многу раз. Скажем, если мы возьмем слово длиной в 5 символом, то, построив стек вызовов в виде обычного бинарного дерева, можно убедиться, что подстрока [2,3] будет проверена трижды. Не круто.

Давайте-ка добавим мемоизацию.

О, мы сразу прошли все тесты (снизили TC до O(n^2)). Но результаты не радуют.

Особенно ужасает потребление памяти. Даже для Java это перебор.

Особенно ужасает потребление памяти. Даже для Java это перебор.

Плохо. В основном плохо из-за мемоизации строк (приходится тратить время и место на их обрезку и хранение), плюс недешевая проверка на палиндром в O(n). Давайте-ка перепишем на bottom-up.

Мы помним, что у задачек на палиндром есть три общих случая в зависимости от длины строки n:

  • Если n = 1, строка всегда палиндром (в каком направлении букву не читай, выйдет одно и то же).

  • Если n = 2, то строка палиндром, если первая буква равна последней.

  • Если n > 2, то строка считается палиндромом, если первая буква равна последней, и строка между ними - палиндром.

Собственно, мы просто заполняем dp таблицу прямо по этому принципу.

Гораздо симпатичнее, но в разы менее интуитивно

Гораздо симпатичнее, но в разы менее интуитивно

Смотрите, какая красота

Да, это все еще в нижней планке решений (благодаря тому, что существует довольно замысловатый алгоритм, решающий эту проблему за линейное время), но в три раза сократили Runtime, и в два - потребление памяти. Это все еще O(n^2), но скажем так, с куда более приемлимыми константами.

Собственно, это был, наверное, один из наиболее базовых алгоритмов на тему динамического программирования, и шансы, что что-то подобное спросят на собеседовании в FAANG, довольно высоки. Просто посмотрите на топик Companies.

Так что имеет смысл уметь решать dp алгоритмы и сверху вниз, и снизу вверу. Чисто на всякий)

Показать полностью 8
[моё] IT Faang Длиннопост
3
12
DELETED
Лига программистов
Серия На пути к FAANG

Снова на пути к FAANG⁠⁠

2 года назад

Привет всем, кто за мной следит. Наверняка многие подумали, что я слился, но нет. По крайней мере, пока нет.

В общем, месяца так три назад я словил перегорание (походу, сидеть по 8 часов на LeetCode все же было плохой идеей) и какое-то время просто не хотел видеть ничего на эту тему. Я работал. Читал книги. Старался не сдохнуть от кипрской жары (+47, сука). Делал все, что угодно, лишь бы не возвращаться к алгоритмам. Так продолжалось около пары месяцев, пока я не осознал, что:

  1. До окончания контракта на Кипре чуть больше года, и я точно не хочу тут оставаться.

  2. Я действительно хочу перебраться в Штаты через пару лет.

  3. Я больше не хочу работать в стартапах за 4 килоевро, а радикально больше платят только в FAANG.

  4. Я откровенно скучаю по учебе. Этот пункт может показаться наигранным, но это действительно так. За все это время мне в самом деле начали нравится эти задачки и я начал получать положительную обратную связь. Дело в том, что когда ты продумываешь у себя в голове, как решить очередную проблему, ты буквально качаешь свое алгоритмическое мышление. В обычной работе, где один круд сменяет другой, такого откровенно мало - большинство тасок настолько типовые, что опытный программист может проделать их, практически не задействуя мозг.

В общем, в августе я вернулся и начал все заново. Не надо делать facepalm - я просто решил освежить свои знания по всем пройденным темам, чтобы гладко вкатиться назад. Начал решать daily challenge на Leetcode + повторять свою программу на Educative. Как оказалось. это было неплохой идеей, потому что мои прошлые знания никуда не делись, а с новыми силами я даже смог гораздо более детально разобрать некоторые паттеры и закрепить их в своей памяти. В общем, сейчас в пройденном материале я уверен гораздо сильнее, чем раньше.

И позавчера я наконец-то закончил с повторением и начал новую тему. Топологическая сортировка оказалась довольно легкой, если понимать графы (спасибо книжке "Грокаем алгоритмы"). Хотя на Alien Dictionary я угрохал почти четыре часа, но в основном из-за того, что криво прочитал условие и вместо порядка слов взял за основу для построения графа порядок букв в словах. Короче, сам себе злой Пиннокио. Из первых уст я знаю, что эту задачку спрашивают в Амазон, так что нейронная связь точно лишней не будет)

В общем, сдаваться я не собираюсь - курс на Educative почти перевалил за 50%, и я его закончу. После этого (наконец-то!) системный дизайн.

Показать полностью
[моё] Учеба Программирование IT Faang Текст
5
0
DELETED
Лига программистов
Серия На пути к FAANG

На пути в FAANG 9⁠⁠

2 года назад

Итак, за спиной еще неделя.

Тема графов оказалась не такой уж и простой, как я думал - сбивает с толку то, что каким-то образом это, блин, не отдельная структура данных! Обычно графы даются как набор граней (то есть тупо двухмерный массив), и нужно проделать несколько телодвижений, чтобы превратить это в мапу и начать уже BFS/DFS. Зато алгоритмы Прайма/Крускала оказались очень и очень легкими.

Вообще, именно топик с графами подсвечивает мне одну интересную проблему - говорят, что образцовое решение Medium алгоритма за редкими исключениями должно умещаться в 30 строчек. Каким образом в эти 30 строчек впихнуть, например, самописный класс UnionFind - хрен его знает. Тут либо оговаривать, что "это не считается", либо предлагать интервьюеру использовать воображение.

Еще забавно, что пока я грызу графы на LeetCode, добрые люди в Educative взяли и расширили несколько уже пройденных топиков моего курса. Топик по DP, например, разросся в два раза. Придется возвращаться и дорешивать, но я в целом не против. Вообще DP мне прям нравится, как и в принципе все рекурсивное (подход bottom-up заходит меньше, хотя не могу отрицать его изящность в некоторых случаях). Смешно вспоминать, что когда-то сама концепция рекурсии плотно выносила мне мозг. Даже жаль, что в работе ее практически не приходится использовать.

Сегодня пришла в голову идея подговить себе шпаргалки типа "Название алгоритма -> Алгоритм -> Применение". Ну то есть например:

BFS -> закидываем стартовый элемент в стек, далее в цикле -> вытаскиваем элемент из стека -> закидываем в стек соседей, удовлятворяющих условиям -> повторяем, пока не находим то, что нужно.

То же самое неплохо было бы сделать по паттернам типа бэктрекинга, которые скорее концепция, чем непосредственно алгоритм.

Собственно, выучить это все - и дело в шляпе. Звучит просто, но мне повезет, если я управлюсь до конца года. Впрочем, в этом же и кайф.

Показать полностью
[моё] Программирование Программист IT Faang Учеба Текст
11
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии