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

Копай Дыру в России

Симуляторы, Приключения, Экшены

Играть

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

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

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

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

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

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

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Faang

С этим тегом используют

IT Учеба Программирование Все
24 поста сначала свежее
11
DELETED
1 год назад
Лига программистов
Серия На пути к FAANG

На пути к FAANG 14⁠⁠

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

  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 IT, Faang, Учеба

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

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

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

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

На пути к FAANG 13⁠⁠

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

На пути к FAANG 13 IT, Faang, Программирование

Увы, но до беджа "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
1 год назад
IT-юмор

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

#comment_292035809

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

На пути к FAANG 12⁠⁠

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

На пути к FAANG 12 Программирование, Учеба, Faang, IT

Если что, тут два 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
1 год назад
Лига программистов
Серия На пути к FAANG

На пути в FAANG 11⁠⁠

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

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

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

На пути в FAANG 11 Faang, Учеба, Программирование, IT, Гифка

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

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

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

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

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

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

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

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

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

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

Разбираем задачку с LeetCode на Dynamic Programming IT, Faang, Длиннопост

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

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

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

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

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

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

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

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

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

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

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

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

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

На пути в FAANG 9⁠⁠

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

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

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

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

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

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

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

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

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