FAANG Master
رفتن به کانال در Telegram
Cтатьи https://dev.to/faangmaster Youtube: https://www.youtube.com/@faangmaster Patreon: https://www.patreon.com/c/FAANGMaster Boosty: https://boosty.to/faangmaster
نمایش بیشتر2 952
مشترکین
-124 ساعت
-37 روز
+4230 روز
آرشیو پست ها
2 952
Amazon недавно обьявил о возвращении к 5-дневной работе из офиса. Т.е. полный отказ от гибридной работы. В нашей компании мы все еще работаем 3 дня из офиса и 2 из дома. Как у вас с этим и как вы к этому относитесь?
2 952
Почему большинство не Big Tech компаний не должны собеседовать как FAANG
Слепо копировать процесс хайринга с Google для подавляющего числа компаний не никакого имеет смысла.
Почему?
1) Разный масштаб. Это не значит, что в FAANG вы будете постоянно писать какие-то супер редкие и сложные алгоритмы. Нет. Но, решения, которые работают для 10k пользователей - не работают для 3 миллиардов пользователей. Нужно решать задачи масштабирования и эффективности. Из-за масштаба стоимость инфраструктуры исчисляется миллиардами долларов. И если люди не представляют, что такое сложность алгоритмов по времени и памяти (даже тривиальных), то они легко напишут неэффективный код. При 10k пользователях и 2-3 серверах это не заметно по деньгам. На масштабе FAANG это будет стоить сотни миллионов долларов. Поэтому желательно, чтобы разрабы имели представление об этом. Малый масштаб прощает большинство неэффективностей.
2) Разная сложность продуктов. Из-за большого масштаба, необходимости решения некоторых задач первыми в истории, а также необходимость в технологической независимости, заставляет такие компании делать весь стек своими силами, с минимальным переиспользованием чужих технологий. Кроме продукта, видимого конечным пользователям, эти компании сами разрабатывают все библиотеки и фреймворки, тулы для разворачивания и деплоймента, свои базы данных, кэши, даже компиляторы, виртуальные машины и свои языки программирования. В то время как большинство компаний не занимается разработкой инфраструктурных решений самостоятельно. Это дорого и не нужно большинству компаний. Им проще переиспользовать чужие опен сорс или лицензионные решения. Интеграторы даже часто не имеют своего продукта, они, по-сути, продают чужие решения и их внедряют. Средние продуктовые компании переиспользуют чужие инфраструктурные решения и делают среднего размера продукт. Аутсорсеры, чаще, просто, продают разрабов для работы над не самыми приоритетными задачами в других компаниях. Поэтому пробелы в фундаментальном образовании не сильно влияют на успешности такого бизнеса. По аналогии, проложить проводку в квартире и продумать элетроснабжение в рамках страны - это разные задачи и разного типа компетенции.
3) Выживание FAANG компаний зависит от качества программистов. Причем это должны быть одни из лучших (чтобы это не значило). Иначе они быстро потеряют конкурентные преимущества. Маленькие и средние компании от этого зависят намного меньше. Поэтому FAANG компании вынуждены предлагать самые высокие зп для привлечения самых лучших. Если бы они могли бы этого не делать - они бы этого не делали. Это не благотворительные организации.
4) Гигантское число откликов на вакансии. Стремление нанять лучших, а как следствие предоставление лучших условий, рождает высокий конкурс. Поэтому нужно правильно организовать процесс хайринга, который из большого числа кандидатов, наймет лучших. Для других компаний это менее критично. Нужно нанять первого, кто сможет выполнять хоть как-то нужную работу.
2 952
Подборка статей, которые я уже написал и опубликовал в этом канале по system design
#systemdesign
Обновление подборки
Общие статьи:
Как устроено System Design Interview в FAANG?
1) Load Balancers 1
2) Load Balancers 2
3) Load Balancers 3
4) Consistent Hashing
5) Data Partitioning/Sharding
6) Design Web Crawler
7) Дизайн Uber/Яндекс Такси
8) Дизайн новостной ленты соцсети типа Twitter или Facebook
9) Availability
10) Consistency
11) Дизайн мессенджера Telegram
12) Обработка ошибок при вызове другой компоненты
13) Распределенный кэш. Часть 1.
14) Распределенный кэш. Часть 2.
15) Распределенный кэш. Часть 3.
16) Характерные числовые характеристики, которые нужно знать для System Design собеседования
17) Дизайн Google Maps
18) Некоторые подходы к архитектуре приложений в Amazon
19) Какие AWS сервисы мы часто использовали, когда я работал в Amazon?
20) Какие базы данных используются в FAANG?
21) Memcached vs Redis
22) CAP Theorem
23) Bloom Filter
2 952
Подборка алгоритмических задач с решениями и описание алгоритмов уже опубликованных в этом канале
#interview #собеседование #алгоритмы #подборка
Обновление подборки.
Общие статьи:
1) Как выбрать язык программирования для алгоритмического собеседования?
2) Как решать алгоритмические задачи на подготовке, чтобы это было эффективно
3) Как не забыть решения задач и алгоритмы
4) Шпаргалка по основным алгоритмам для алгоритмического собеседования
5) Шпаргалка по Java для алгоритмического собеседования
6) Подборка из easy задач для начала подготовки к алгоритмическому собеседованию.
7) Сбалансированная подборка из 100 задач для подготовки к алгоритмическому собеседованию.
8) Видео: mock собеседование по алгоритмам в FAANG
Two Pointers:
1) Проверка на палиндром.
2) Усложненная версия проверки на палиндром.
3) Merge Two Sorted Arrays
4) Самая длинная палиндромная подстрока
5) Удалить дубликаты в отсортированном массиве
6) Видео: Merge Intervals
HashTable:
7) Two Sum
8) Видео: Сгруппировать анаграммы
9) Задача с собеседования в Google. 939. Minimum Area Rectangle
10) Задача с собеседования в Microsoft: Самое большое палиндромное число
Stack:
11) Проверить скобочное выражение.
12) Удалить минимальное число скобок, чтобы сделать скобочное выражение правильным
Sorting:
13) Первый пропущенный положительный элемент массива
LinkedList:
14) Удалить n-й элемент с конца в односвязном списке
15) Deep Copy списка со ссылкой на случайный элемент.
BinarySearch:
Описание алгоритма BinarySearch.
16) Пропущенный элемент в отсортированном массиве.
17) Пиковый элемент.
18) Число итераций в бинарном поиске.
19) Первая плохая версия
DFS:
Описание алгоритма DFS.
20) Flood Fill.
21) Видео: Число Островов
BFS:
Описание алгоритма BFS.
22) Проверить полноту дерева.
23) Обход дерева по уровням.
24) Remove Invalid Parentheses
Топологическая сортировка:
Топологическая сортировка
25) Видео: Top k elements
Binary Tree:
Алгоритмы обхода двоичного дерева
26) Invert Binary Tree
27) BranchSums
28) Максимальная высота дерева
29) Максимальная сумма пути в бинарном дереве
30) Сумма элементов бинарного дерева поиска в диапазоне значение
31) Удалить вершины в дереве и вернуть оставшийся лес/forest
Dynamic Programming:
Основные этапы решения задач на динамическое программирование Top-Down методом
32) Top Down подход на примере задачи про ступеньки
33) Задача на динамическое программирование. Разделение на слова.
34) Количество дождевой воды
35) Bottom-up подход: разменять деньги
36) Видео: Longest Increasing Subsequence
37) Лучшее время для покупки и продажи акции
Sliding Window
38) Contains Duplicate ||
39) Наибольшая подстрока без повторяющихся символов.
2 952
В последнее время вижу много постов в линкедине, что кодинг собеседования по алгоритмам ничего не показывают, кроме того, насколько человек хочет попасть в компанию
Что я думаю про это?
Краткий ответ: и да и нет. Но скорее нет.
Собеседования по алгосам, в первую очередь, решают две другие задачи:
1) Стандартизация собеседований.
2) Минимизация false positive.
Практически все крупнейшие IT-компании мира (FAANG/Big Tech) собеседуют одинаково. Эти компании нанимают гигантское число людей каждый год. А число собеседований измеряется миллионами в год.
Поэтому если вы готовитесь к собеседованию по алгосам, это не значит, что вы эксклюзивно закомитились в одну конкретную компанию и потратили год или два на подготовку. Вы, в целом, будете готовы к такому типу собеседований и сможете попасть в одну из десятков крупнейших компаний мира.
Но рациональное зерно в этом есть. Это, особенно, касается локальных IT-рынков. Где большинство компаний так не собеседуют, а 2-3 собеседуют именно так. Условный Яндекс или Mail ru vs местный аутсорсер.
Что касается, реальных задач такого собеседования:
1) Стандартизация собеседований. Вы проводите невероятное число собеседований. Вам нужно масштабировать этот процесс. Вам нужно иметь универсальную рабочую метрику. Если каждый будет собеседовать кто в лес, кто по дрова, то очень быстро уровень людей в компании станет приближенным к среднему уровню по рынку. А хайринг лучших - это ключевой аспект успеха всех FAANG/Big Tech компаний. Это не какие-то супер процессы или культура инжиниринга, и не культурные ценности компании. Однотипные собеседования по одним и тем же критериям, а также проведения нескольких собеседований разными людьми, позволяют минимизировать субъективность.
2) Минимизация false positive. False Positive - кандидаты, которые прошли собеседование, но стали плохими сотрудниками. Большие компании стремятся минимизировать такие случаи. Они легко мирятся с false negative. Это такие кандидаты, которые не прошли собеседование, но могли бы стать успешными сотрудниками. Из-за того, что число кандидатов астрономическое - не наняли одного хорошего сегодня, найдем другого завтра. Кандидаты, которые хорошо проходят кодинг собеседования, с большей вероятностью становятся хорошими сотрудниками. Как минимум, так считается. Минимизация false positive достигается также несколькими независимыми собеседованиями, которые проводят разные люди и дают фидбек независимо. Чтобы пройти собес - нужно пройти все. Это минимизирует субъективность.
Связанная мысль, которая также приводит к мнению, что такое собеседование ничего кроме желания попасть в конкретную компанию не показывает - любой может надрочить такие задачи и все также проходить, а мне просто лень надрачивать такие задачи, т.к. они никак не связанны с реальной работой. Это сильное утверждение. По аналогии можно сказать, что каждый школьник может написать ЕГЭ по всем предметам на 100 баллов просто надрочив задачи, но просто не хочет. Или каждый может выиграть межнар по математике или информатике, но просто не хочет. Или, что каждый может стать топ 10 на topcoder, но просто не хочет. Или каждый может стать гроссмейстером по шахматам, просто не хочет.
На самом деле, объем теории, необходимый для решения алгосов можно изучить за 1 неделю. А вот научиться навигироваться во время решения задачи, преобразовывать условие в алгоритм, а алгоритм в реальный код - не такая простая задача. Такие задачи позволяют за 15-20 минут проверить многие аспекты мышления в плоскости программирования в чистом виде. Да, эти задачи не проверяют способность реальной работы, т.к. реальный код это на 90% просто бойлер плейт код или код с очень тривиальной логикой.
Пишите в комментариях, что вы думаете про это.
2 952
Собеседовал только что многократного победителя соревнований на Kaggle
Текущая позиция кандидата - Staff ML Engineer. В прошлом у него несколько побед на платформе Kaggle. Это такой аналог https://www.topcoder.com/ или https://codeforces.com/, только для Data Scientists и ML.
На ML позиции, кроме собеседования, собственно, по ML, есть собеседование по кодингу.
Кандидат мгновенно придумывал правильные решения, но код был трехэтажным, без необходимости усложненным. То, что называется "индусский код". По всем осям я поставлю выше среднего (strong), но по кодингу - на грани.
Кроме индусского/спагетти-кода (запутанный, трудно понимаемый, слабоструктурированный код, с большим числом if-else и т.д.) бывает:
Пахлава/Лазанья код - когда чрезмерно много уровней абстракции для данной задачи. Я бы весь Spring назвал Лазанья кодом.
Равиоли-код - огромное число независимых компонентов. Легко понять отдельный класс, но не весь проект в целом.
Катамари-код - изначально нормально написанный код, но постепенно обросший костылями и новой функциональностью, простым добавлением кода, без редизайна.
А какой код у вас в компании?
2 952
Bloom Filter
#systemdesign
Написал статью про Bloom Filter: https://dev.to/faangmaster/bloom-filter-4f4e
2 952
Вышло новое интервью с Дороничевым
Это бывший Director в компании Google, который приложил руку к youtube mobile и stadia.
Позиция Director это L8 уровень. Что примерно эквивалентно позиции Principal в инженерной карьерной линейки. У Director в подчинении Senior Manager'ы и Senior Staff инженеры.
Он ушел из Google и говорит про свое самое дорогое письмо в жизни. Ему пришлось оставить 6.8 миллионов еще не завесченных стоков(еще не выплаченных акций). Я могу это понять, у меня конечно не 6.8 миллионов, но чуть больше миллиона. Это и есть так называемая "золотая клетка".
https://youtu.be/zNpTHznYMW4?si=rxlajhUXvF8gH72z
2 952
CAP Theorem
#systemdesign
Написал статью про CAP Theorem в распределенных системах:
https://dev.to/faangmaster/cap-theorem-413p
2 952
Собеседовал сегодня кандидата из Сингапура
У кандидата 16 лет опыта, позиции за последние 10 лет выглядят примерно так: CTO, Technical Director, CEO и т.д. Правда, компании, которые я первый раз вижу.
Я ничего не понимал, что он говорит. Акцент настолько сильный, что почти ничего не разобрать. Да и не сказал бы, что он быстро и легко говорил, и это мне было сложно понимать акцент. Ему в целом, размышления на английском не давались. Я понимал только код, который он писал на Go. Задачки решил так себе. В конце вопросы почти не задавал. Точнее он спросил один вопрос, который я не понял сначала. После уточнений, я понял, что это был вопрос с претензией. Вроде, как часто, в реальной работе, вы решаете задачи, подобные этим.
Как по мне, если вы не принимаете правила игры, то просто, не надо собеседоваться в FAANG/Big Tech. Я постоянно встречаю не только на собеседованиях, но в качестве постов на линкенине, что так не надо собеседовать. Только проблема, что они не пишут, как надо, и почему это будет работать в масштабе FAANG компаний.
2 952
Краткий сказ о том, как AI заменяет людей.
P.S. если что, там 3 буквы r и в другом месте.
2 952
Запись Mock Interview
Выложил запись одного из mock-собеседований. Я получал согласие на публикацию, но если есть возражения со стороны собеседуемого, то могу удалить или подредактировать.
https://youtu.be/iW35neg_Zg8?si=tRW4Q3M0XXo8IMCJ
2 952
Гайд по подготовке к собесу в FAANG
Написал, в рамках одной статьи на dev.to, гайд по подготовке к собесу в FAANG на основе уже опубликованных постов в этом тг канале.
Как подготовиться к собеседованию в FAANG/Big Tech
В основном, гайд сделан на основе, следующих моих постов:
Варианты подготовки к собеседованию в FAANG/около FAANG для разных уровней текущей подготовки Часть 2 , Часть 3, Часть 4
Также, смотрите подборку постов, не связанных с разбором задач, но полезных, тем кто думает про релокацию и работу в FAANG/Big Tech:
Подборка постов в канале, не связанная с задачами. Часть 1
Подборка постов в канале, не связанная с задачами. Часть 2
А также подборки с моими разборами реальных задач с собеседований на позиции Java разработчика, которые я уже публиковал в этом канале (которые встречались в том числе в Яндекс, Mail ru, инвест банки):
Подборка вопросов и ответов для подготовки к собеседованию на Java программиста
А также мои разборы алгоритмических и system design задач в FAANG:
Подборка статей, которые я уже написал и опубликовал в этом канале по system design
Подборка алгоритмических задач с решениями и описание алгоритмов уже опубликованных в этом канале
Все такие подборки можно найти в закрепленных постах в этом канале.
2 952
Что я думаю про задержание Павла Дурова
В сети часто встречаю два диаметрально противоположных мнения: это либо нападка на свободу слова, либо утверждение, что Telegram — это убежище для криминала.
Я не буду сильно вдаваться в политический аспект ситуации, а также разгонять разные конспирологии.
Имеют ли под собой основания предьявленные претензии?
Если кратко, то да. В странах СНГ люди используют телегу как для переписки, так и для чтения каналов. В странах Европы тоже самое делают, в основном, выходцы из СНГ. Среди местных широко пользуются спросом услуги по поиску и продаже наркотиков, проституток и детского порно. Достаточно включить функцию People Nearby, в предложениях будут, в основном, проститутки и продавцы наркотиков.
Делают ли все необходимое со стороны телеграмма для предотвращения этого? Неизвестно. В этом должен разбираться суд. Но сомнения имеют под собой основания. Сейчас не 2006 год. Государства создали большое число законов и нормативных актов, которые регулируют деятельность подобных платформ. И во многих крупных компаниях есть большие отделы, которые занимаются тем что называется Integrity и Privacy. Обычно это тысячи человек, которые делают решения для того, чтобы удовлетворят всем этим актам. Integrity один из самых крупных и старых use case для использования machine learning. Если вы работаете в области ML в крупных компаниях, то самые частые сценарии последние за последние 20 лет были рекомендационные движки, задачи поиска, перевода, а также задачи Integrity. На практике, распознавание образов на картинках, тексте, видео в промышленных масштабах применяется для распознавания порно, насилия, а не для распознавания котиков. В своем интервью Павел говорил, что у них работает 30 человек в компании. Это вызывает сомнения, что Integrity на должном уровне можно реализовать таким количеством людей, даже если это 10x супер звезды программисты.
Безопасность переписки.
Несмотря на изначальную уникальную фичу end-to-end шифрования, в телеге она есть только если вы явным образом создадите Secret Chat. При обычной переписке она не применяется. В Whatsapp сейчас эту функция применяется по умолчанию ко всем 1:1 перепискам. В групповых чатах такого нет. Поэтому Whatsapp не может прочитать вашу переписку, даже если захочет или передаст ее правоохранительным органам. Сообщения хранятся в зашифрованном виде, которые может расшифровать только конечный пользователь. Поэтому в телеге приватность можно гарантировать только если компания не передает переписку правоохранительным органам. Там используется client-server шифрование, которое теоретически могут расшифровать сотрудники компании.
Стоит ли забить на Integrity и позволять всем публиковать все что угодно?
В начале 2000-х так и было, в том числе и среди крупных компаний. Но с ростом популярности соцсетей и web 2.0 в целом, когда контент создают сами пользователи стало понятно, что этим будут пользоваться различные криминальные элементы и нужно какое-то регулирование. Facebook, относительно недавно обжегся на отсутствии должной модерации и получил обвинения в геноциде: Rohingya genocide Но любое регулирование со стороны государства очень быстро может привести не к модерации криминала, а к нечестной политической борьбе в лучшем случае или к преследованию политических оппонентов в худшем. Поэтому вопрос очень сложный и не однозначный. Недавно, Марк заявил, что Facebook просили модерировать посты про ковид (за что я был за) и посты про сына Байдена (что выглядит уже как нечестная политическая борьба).
Нужно ли за это сажать в тюрьму?
Я считаю, что конечно нет. Нужна ли какая-то ответственность для платформ вообще? Вопрос спорный. Но т.к. у платформы есть механизмы для предотвращения этого, то логично туда их добавить. Я бы рассматривал это не как соучастие в преступлениях, а как бездействие. Я считаю более логичным всяческие штрафы. Такие штрафы неоднократно применялись и в отношении первопроходцев в этом: Google, Facebook и т.д. Посадка в тюрьму выглядит неадекватной мерой и наводит ненужные мысли про политическое преследование.
2 952
Советы по написанию достижений в резюме
В продолжении темы резюме. Пост о том, как писать резюме: Советы по написанию резюме для FAANG, и не только
Почему нужно писать именно достижения, а не должностные обязанности или список проектов ?
Список должностных обязанностей у программистов в целом одинаков. Поэтому он никак не выделит вас среди других кандидатов. Кроме того, такой список не покажет особенностей вашей работы в конкретной компании. Ваши обязанности на аналогичной должности в разных компаниях вряд ли будут существенно отличаться.
Список проектов — это уже лучше. Описание проектов позволяет подчеркнуть уникальность вашего опыта. Однако простое перечисление проектов не даёт понимания вашей конкретной роли в них, того, что именно вы сделали. Также не ясен результат или влияние вашей работы (impact). Нередко остаётся неясным, был ли проект сложным, какие трудности пришлось преодолеть и т.д.
Как писать достижения?
Прежде чем описывать свои достижения, ознакомьтесь с методикой STAR. Она используется в том числе и на самом собеседовании (в поведенческой его части). Такой же подход можно применять на performance review в рамках вашей компании для оценки производительности сотрудников.
Если кратко, то вам нужно описать контекст проекта и в чем была его сложность. В чем была цель, что сделали именно вы для ее достижения и какой получился результат.
Читая достижение должно быть понятно, что именно сделали вы, как вы это сделали, соответствует ли то что и как вы сделали уровню, на который вы зааплаились.
Например,
Вместо: Занимался баг фиксами
Для Junior/Mid: Используя профилирование памяти, обнаружил утечку памяти, которая оставалась незамеченной в течение двух месяцев в продакшене. Предложил и реализовал способ её устранения с использованием XXX, что привело к увеличению пропускной способности приложения на 30%. Также предложил и реализовал YYY для предотвращения подобных проблем в будущем, а также создал метрики и алармы для их быстрого обнаружения.
Senior/Staff: Работал с инженерами из нескольких команд, чтобы выявить блокеры, которые снижают эффективность при работе над высокоприоритетными задачами саппорта, которые влияют на SLA/SLO ключевых компонент приложения. Предложил и драйвил реализацию XXX, что сократило время обнаружения и устранения проблем на N% в 4 командах.
Вместо: Принимал участие в напиcании кода, code review и дизайне.
Junior/Mid: Реализовал в составе команды из 4 человек функцию сортировки магазинов по удаленности от покупателя, которой пользуются 15 миллионов пользователей в месяц.
Senior/Staff: Предложил, сделал дизайн/архитектуру и драйвил реализацию командой из 4 человек функцию сортировки магазинов по удаленности от покупателя, которой пользуются 15 миллионов пользователей в месяц.
2 952
Наткнулся на это резюме на linkedin. Недавно, я писал свои рекомендации по написанию резюме: https://t.me/faangmaster/426
Какие есть минусы этого резюме:
1) Оно плохо парсится. Тут есть сайд бар. Тут есть фото. Фото, никого не интерисует в вашем резюме на инженерные позиции.
2) Нет достижений. Есть должностные обязанности. Работала работу, получала зп, ходила на митинги. Нужны достижения и результаты.
3) Саммари не продает. Прочитав самари человек должен понять, почему мне надо нанять его, а не кого-то другого.
4) Километровый стек технологий. Можно его не писать для каждой работы. А только в разделе скилов. И писать то, в чем вы действительно разбираетесь и что нужно работодателю. У человека скилов за 3 года опыта в резюме больше, чем мое резюме.
Что вы думаете, про такое составление резюме?
