Комментарии 77
Лучше б они на собеседовании спрашивали, как (и зачем) редирект настраивать:
По деньгам… ну так… средне. Ну может выше среднего, но никак не золотые горы. Не стоит оно убитого забесплатно месяца, если только не хочется именно в Гугл или времени свободного девать некуда.
Есть опыт общения с гуглерами и собеседования в гугл
Ну это аргумент из серии «одна бабка сказала»
Да и рокет сайнс у них местами тот еще. Ну в смысле, все, как у всех: habr.com/ru/company/itsumma/news/t/488802 (2020), habr.com/ru/news/t/538624 (2021)
Я вот тоже с гуглерами работал достаточно много, даже на гугл работал контрактором через третью фирму, но с возможностью посмотреть внутрь, доступами и т.д. и на собеседования туда ходил, и вот на этой серии «технических собеседований» был.
Впечатления средние. Безусловно там есть люди с руками и головой (кто-то же все это делает, там есть очень крутые штуки), там отличный HR департамент (внешний по крайней мере), в столовой в целом неплохо кормят, да.
Но компетенции и внутренняя структура большинства на типичном уровне крупной технологической компании. Добиваться решения месяцами — легко. Пойти по цепочке технической эскалации и обнаружить что там на самом деле 1. не знают, 2. не хотят знать — легко.
Короче обычная большая контора. Хорошо, если повезет и хватит скилов попасть в те проценты людей, которые действительно занимаются крутыми вещами. Но шанс, скажем так, весьма не велик.
Да, отбор там настроен на решение вот таких вот общих технических задачек и это очень чувствуется, когда человек в общем то решать задачки на алгоритмы и подобное умеет, а вот конкретную бизнес-задачу чет как-то не очень. Поэтому да, тебе с легкостью могут рассказать как обходить граф и какие мат. теории и приемы существуют на этот счет, но вот пойти и подебажить компонент или подумать над решением конкретной технической проблемы, с которой сталкиваются кастомеры — тут начинается что-то удивительное и люди как-то оперативненько сливаются, потому что там внезапно не только теория графов нужна, а надо, совершенно неожиданно, что-то руками делать, думать другими абстракциями и вообще вписывать продукт в бизнес-ожидания и работать на удовлетворение кастомера, а не собственного любопытства.
Это не значит, что там люди глупые (совершенно нет), или плохие (тоже нет), но сама система так построена, что люди, работающие в ней, создают весьма интересные технические решения, которые повернуты к кастомеру задней полусферой.
Ну это как очень неплохой Google Cloud, у которого нет кастомерской поддержки, куда можно хотя бы написать, так что если что-то пойдет не так, ну… ой. А там иногда идет что-то не так. Поэтому везде сквозит ощущение про «тут не для тебя все, а чтобы технически круто было».
Про интерфейсы я вообще молчу, оно подлагивает, местами крайне медленно работает и совершенно не отзывчивое даже на Ryzen 9 5950x, аппаратным ускорением отрисовки через GTX 1650 и полугигабитным интернет-каналом. Я хрен знает, как написать такой интерфейс, чтобы он ТАК себя вел. Или как придумать решение, когда у при удалении бакета в сторадже из UI он начинает удалять все объекты внутри бакета рекурсивно (что в целом правильно). Даже если их там миллион (а вот это уже не очень). По объкту на запрос (вообще что-то странное). Что ожидаемо подвешивает браузер, да. Вообще, я думаю у многих найдется история такого порядка про гугловые продукты.
Так что, я совершенно согласен и с 0xd34df00d, и с UnclShura. Рваться туда по сути смысла очень уж большого нет, в подавляющем большинстве случаев в компаниях F500 будет +- так же, даже с опционами. Но да, мерча из гугла не будет, хвастаться будет сложно:)
Мне интересно где ещё можно получать по 200-300к в год не будучи крутым специалистом по теории типов, математиком и прочим "узким" специалистом.
Не работал в гугле, но во-первых с ростом уровня зарплаты более чем конкуренты, судя по levels.fyi и прочим.
Во-вторых, множество бонусов, от своей столовой и залов, до множества офисов и возможности переезжать из страны в страну не меняя компании. Бонусы кстати, стоит перевести из натурального вида в денежный и сравнить. К примеру, вы явно наедите обедов на большую сумму. Здесь они бесплатны, значит, вы сэкономили столько то тысяч долларов в год. И так далее. Не говоря уже про страховку.
В-третьих, резюме с гуглом и резюме без гугла — это очень разные вещи "по весу". Одна только работа там не означает, что вы хороший девелопер и вроде как все это знают… Но я лично был свидетелем, как фраза "я работал в гугле и мой опыт говорит о том, что вот так то лучше" моментально выигрывает спор. Особенно в глазах менеджеров, да.
И в четвертых, это связи. В гугле работают тысячи крайне сильных программистов и не только, и знакомство с ними — это тоже огромный капитал. От возможности спросить совета и помощи (даже если вы уже уволились), до возможного инвайта"по знакомству" в перспективный стартап
— Львиная доля бонусов окажется «дайте лучше деньгами — и я сам ими распоряжусь: где мне обедать, куда ездить и из какого офиса работать».
— Строчка в резюме подсветит вас (и не кисло) на радарах HR-ов и будущих коллег, но не более. Ни один производственный спор вы не выиграете. Ну хотя бы потому, что в гугле куча своих велосипедов ссылаться на которые в реальном мире просто бессмысленно. Их неоткуда готовые взять, да и не работают они толком без гугловой инфраструктуры.
— Ну и про связи: да, люди приятные, образованные, но львиная масса тупо перекладывает json'ы и пилит банальные crud'ы. И ни в какой перспективный стартап они вас, конечно же не посоветуют, потому, что их никто и не спросит. Да и не пойдете вы в стартап после гугла.
Я не отговариваю. Наоборот. Идите. Даю «голову на отсечение» — это реально клевый опыт. Но розовые очки лучше дома оставьте. ;-)
А куда трактор заводили, если не секрет? В Германии из более чем десятка собесов меня только в одной конторе спрашивали что-то сильно сложнее 2+2. Задача была уровня:
Дано: есть массив с данными о серверах. Вида type Server = { cpu: int, memory: int, hdd: int }
. И есть набор задач вида type Task = { cpu: ... те же поля }
. Задача написать алгоритм так, чтобы он их пооптимальнее раскидал.
Ну я вначале написал решение в лоб. С тестами. Потом минут 5-10 обсудили как это можно сделать лучше чем в лоб. Я ничего умного не придумал, но очертил направления в которых я бы стал думать (всякие там сортировки).
Пожалуй это было самое сложное, что спрашивали на интервью. Была ещё 1 задачка уровня "догадается ли кандидат задействовать HashMap".
upd1. Перечитал ваш комментарий. Вы имеете ввиду именно все FAANG подобные компании? Туда я не собеседовался пока
То есть начиная со следующего апрельского отбора, будут просто выдавать визы тем, кому предлагается максимальная зарплата, начиная с максимальной и по уменьшению, пока не закончится лимит виз или пока предлагаемая зарплата не станет ниже ~85К в год, что является нижним лимитом. Это очень сильно повышает шанс получения визы, если приглашает крупная компания, которая готова платить хорошие деньги. И машет ручкой галерам, которые выгребают львиную долю виз.
Всего виз в год — 65 тысяч.
При этом только крупные бодишопы типа Infosys, TATA и Deloitte, Accenture и прочие в сумме подавали под пол миллиона заявок, при этом предлагая среднюю зарплату, к примеру, у Infosys — 83к, у TATA — 70к, а они крупнейшие просители, почти 200 тысяч заявок, и нет ни одного «консалтинга», который бодишоп на самом деле, который, прося больше 10 тысяч виз предлагал бы более 92 тысяч в год в среднем.
Для сравнения, реальные среди реальных продуктовых компаний больше всего просят IBM India (35 тысяч заявок со средней 77к) и Microsoft (34 тысячи заявок со средней в 136к). За ними идет Google с 26 тысячами заявок и средней почти в 145к. Если посмотреть в детализации, то бОльшая часть предлагаемых зарплат ниже 200к. В общем, если не хочется лотереи, нужно пробиваться на позицию с компенсацией 200+, что почти гарантирует получение H1B.
Кстати задачку с серверами я бы не решил. Понятно, что что-то из динамического программирования, но я оттуда помню только критерий оптимальности. Так что про 2+2 вы преуменьшаете
Я потому и написал, что она "сильно сложнее 2+2". Я тоже её не решил. Но offer мне дали. Точнее решил полным перебором, слегка покрыл тестами и мы вслух порассуждали как её решать оптимальнее, чем перебор. Я ничего умнее чем сказать "ну там наверное надо отсортировать исходные данные по каждому из критериев" и "отсеивать заведомо худшие результаты, чтобы более вероятные варианты просчитывать первыми". Когда уже понятно, что ранее мы уже посчитали что-то лучшее, чем текущая итерация, то можно конкретную ветку отбросить.
Ещё была 1 сложная задачка. Но она была тестовым заданием. Дано: Х файлов огромного размера. Файлы текстовые, внутри просто строчки текста. Задача — отсортировать эти строки текста и поместить результат в один результирующий файл. Есть ограничение по памяти — нельзя считывать и обрабатывать за раз больше Y строк в памяти. Причём Y >= 2. Было интересно. Сортировать терабайт строк не сортируя больше двух за раз :-D
По поводу скукоты и того что нужно формочки делать — это может быть правдой на определенных проектах, но если вы достаточно умный, чтобы эту скукоту автоматизировать и придумать, как это превратить в «не скукоту», то в Google есть такая возможность. Именно поэтому такие сложные собеседования, чтобы найти людей, которые потенциально могут не только «редирект настроить», но и придумать что-то получше.
Еще такого формата собеседования — это не только в Google, это стандарт по индустрии среди топ компаний (FAANG). По поводу убитого месяца времени, еще как стоит того. Ко всем остальным плюсам, при устройстве в FAANG можно легко получить бонус $15k-$30k (а иногда и выше) за подписание контракта. Вполне себе может покрыть месяц подготовки + значительное повышение зарплаты по сравнению со многими другими компаниями. levels.fyi вам в помощь — там цифры достаточно правдивые.
Я уже почти 2 года работаю в Google и скучно не стало. Нетривиальных задач хватает и с формочками работать не приходится. Все вышесказанное является моим личным мнением, а не позицией компании.
Насчет стандарта FAANG… Это не так. Они разные все. Да у вас может быть несколько coding interview, да у вас может быть несколько интервью с менеджерами. Но они все непохожи на Гугловые как Гугловые не похожи на Амазон. А если сделать шаг в сторону (совсем не далеко) то возникает море возможностей. По моему опыту стандарт это полчаса телефонного интервью, онсайт техническое с программированием на бумажке и 1-2 с менеджерами, плюс еще одно с HR. Это банки. Хеджфонды — сразу codility, потом один день с утра до вечера технические, математика, менеджеры и после этого еще менеджеры в другой день вплоть до отца основателя в зависимости от размера конторы. Так, что разные стандарты.
Подготовку к интервью я вообще не рассматриваю как валидную активность — она не дает ничего ни интервьюверу (это-же не реальный уровень кандидата, а надутый) ни интервьюируемому (вам кажется, что вы теперь знаете больше? смею вас разочаровать). Поясню: вот вы месяц готовитесь и теперь можете любую стортировку написать по пямяти и всю симптоматику помните наизусть. Хорошо. Тогда у меня вопрос: а раньше вы почему всего этого не знали? Не надо было? Или забыли? В обоих случаях, те знания что вы, как вам кажется, приобрели либо пропадут за ненадобностью либо вы и так все это знали и вам не месяц надо было а часа полтора покопаться в сети. Это очень повезло если они реально пригодятся в работе. Но это именно случай — сейчас слишком много информации. Все запомнить нельзя. Знать о существовании и уметь найти — обязательно. В памяти держать — нет. Я например не помню алгоритмов сортировки и из O(). Но сейчас они мне и не нужны вообще. Мне надо помнить совершенно другое — численные производные по поверхностям. И я это помню. Надо будет отсортировать что-то длиннее 20 элементов — посмотрю в сети. А один раз 20 элементов и дефолтный сорт (quick который) отсортирует без проблем.
Подготовку к интервью я вообще не рассматриваю как валидную активность — она не дает ничего ни интервьюверу (это-же не реальный уровень кандидата, а надутый) ни интервьюируемому (вам кажется, что вы теперь знаете больше? смею вас разочаровать).Тут теория игр в действии, как с эволюцией. Аналогичный пример на государственных экзаменах в разных странах: ЕГЭ, ВНО, ЕНТ. По изначальной идее оно призвано для того, чтобы оценить, как ученик освоил школьную программу в течение 11 лет. Но еще оно служит для пропуска в университет, особенно на бюджет. Если к нему сейчас не готовиться, то легко не попасть на бюджет, пропустив вперёд менее эрудированных и талантливых, но просто более подготовленных к самому экзамену. Выживает самый приспособленный, а не честный.
FAANG должен это учитывать, конечно.
Связные списки, битовые манипуляции, стеки и очереди, бинарный поиск, кучи, жадные алгоритмы, динамическое программирование, векторы/ArrayList, нотация большое О, время и пространство, сортировки, указатели, окна TCP/IP, системы непересекающихся множеств, операции со строками, графы и деревья, удержание стабильности системы, поиск в ширину и в глубину, рекурсия, поиск с возвратом, хеширования, синтаксическое дерево, обрезка деревьев и индексированных бинарных деревьев.
Должно быть что-то вроде:
Связные списки, битовые манипуляции, стеки и очереди, бинарный поиск, кучи, жадные алгоритмы, динамическое программирование, векторы/ArrayList, понимание сложности алгоритмов как по времени, так и по требуемой памяти, сортировки, метод двух указателей, метод скользящего окна, системы непересекающихся множеств, операции со строками, графы и деревья, поиск в ширину и в глубину, рекурсия, перебор с возвратом, хеширования, префиксное дерево, дерево сегментов и дерево Фенвика.
Linked-List, Bit-Manipulation, Stacks & Queues, Binary Search, Heaps, Greedy Algorithms, Dynamic Programming, Vectors/ArrayLists, Big O Time and Space, Sorting, Two Pointers, Sliding Window, Union-Find, String Manipulations, Trees and Graphs, BFS/DFS, Recursion, Back-Tracking, Hashing, Trie, Segment Trees & Binary Indexed Trees.
Конечно, вряд ли кто согласится с моим мнением, но кажется мне, что Google выдохся. Довольно неожиданно так говорить про компанию, которая везде и всюду, но просто подумайте – что они сделали нового за последние 10 лет? Все их ключевые программы и сервисы (поисковик, Gmail, Android, Chrome, Youtube, Карты) были сделаны уже более 10 лет назад. Ни одного реально нового пользовательского продукта за это время, только итеративное улучшение уже существующих. И при всем при этом, я постоянно нахожу самые разные баги во всех их приложениях. Даже удивительно, раз их создают так тщательно отобранные разработчики.
Не из-за этой ли системы отбора такая ситуация?..
gmail — давно пора сделать лучше, как с позиции фичей, так и UX
YouTube — круто
Chrome — круто, но последние годы только закручивание гаек
Android — круто, но множество UX проблем
Карты — проблемы с UX
Аналитика — мощно, но UX — говнище.
Я вижу системные проблемы в подходе гугла к развитию продуктов.
Эти же проблемы похоронили множество довольно хороших продуктов, в которых цена ошибки была выше.
В соседнем треде уже говорилось, что отличные инженеры великолепно решают технические задачи, но когда появляется контекст бизнеса — сливаются. Ибо это другая категория абстракции.
https://m.habr.com/ru/company/skillfactory/blog/538536/comments/#comment_22579576
Бизнес решает бизнес, а инженеры решают инженерные проблемы.
Вообще вся компания в первую очередь решает бизнесовые задачи, если это коммерческая компания, а не университет или RnD лаборатория, которая может себе позволить иногда заниматься инженерией ради инженерии в рамках исследований. Хотя их конечно потом все равно как-то коммерциализировать надо.
Нет никакого «бизнес решает бизнес», инженеры в коммерческой компании это не black box, в который с одной стороны грузят бабки тоннами, а с другой стороны он выдает идеальные инженерные продукты, которые берут какие-нибудь сейлзы и пытаются продать, это симбиоз специалистов, которые умеют делать много чего инженерного, но при этом не забывают, что их продукт придется продавать в каком-то виде.
Гугл при этом во многом похож именно на компанию, в которой engineering excellence (причем без customer experience) стоит во главе угла. Больших проблем это не создает потому, что есть стабильный поиск и относительно небольшая команда, которая занимается именно парой реклама+поиск и эта пара, как отличный печатный станок, приносит такое количество денег, которым можно закрыть любые коммерчески провальные эксперименты.
При этом, у гугла к сожалению за последнее время не получилось успешно запустить ни одного коммерческого продукта в новой для них нише и фейлились они не потому, что они технически плохо сделаны, а потому, что в них только technical excellence и есть, а вот про пользователя забыли. И кладбище закрытых продуктов продолжает шириться.
В целом ситуация то вполне объяснима — начиная именно с найма, они отбирают инженеров с хорошими фундаментальными знаниями, при этом не уделяя практически никакого внимания реальным навыкам решения реальных продуктовых проблем. Такие люди могут делать супер-крутые штуки, но им нужны не менее крутые визионеры и менторы уже над ними, которые будут задавать правильное направление и помогать правильно применять свои инженерные знания. Причем это должны быть весьма неординарные и сильные люди. А вот их уже нанять на несколько порядков сложнее. При том, что их нужно много, задача может стать крайне трудной, фактически близкой к невыполнимой.
Поэтому да, получается много сильных инженеров, которые делают технически крутые штуки, но при этом пользователи почему-то ими пользоваться не особо то хотят.
Пожалуй, из последнего в этом плане весьма показательна Stadia, которая фактически является иллюстрацией «как имея все технические компетенции, огромный бюджет и собственную общемировую маркетинговую машину провалить проект».
Как профессионально — на критику отвечать ёрничанием.
Что там с карьерным ростом? Программисты растут в лидов, потом — в управленцев (менеджеров, в западном понимании этого слова).
И лейтмотив сохраняется.
Комментарий до моего ответа тоже не особо детальный получился. И такое бывает.
— вы с 2008 года так и не написали ничего уровня Bleed
— а кто написал?
Это правда, но все выжившие пишут примерно это же. Вот например, в фейсбук прошёл готовился так-то: https://medium.com/@alimirio/before-you-start-solving-problems-on-leetcode-prep-work-9d65fc964c6f
Ну или вспомните Cracking the Coding Interview, там примерно похожий подход и ЕМНИП автор как программист, так и интервьюировавший в FAANG достаточно большое число кандидатов.
это к пониманию 'какойто общей образованности' да и среднестатистических программистских задач.
Зачем готовиться для остального?
Вы определённо переоцениваете уровень среднего разработчика. Причём сильно. К примеру задачу из п2 большинство из моих знакомых погроммистов будут весьма долго решать. Сам не так давно делал что-то подобное на linked list-е. Задача из п3. не совсем ясна, но я думаю подавляющее большинство разработчиков споткнётся уже на стадии — а как вычислить расстояние между двумя точками. А узнав это будут долго чесать репу, думая что теперь с этим делать? Сравнивать всё со всеми? А дальше? До рабочего кода я думаю дело не дойдёт.
Мне кажется у вас просто очень нерелевантный типичному опыт. В хорошем смысле этого слова. А обыкновенного разработчика который писал обыкновенный бакенд\фронтенд даже такие задачи могут поставить в долговременный ступор. Люди с 5+ годами опыта с муууками решают примерно такую задачу:
Напишите метод который принимает на входе массив чего-нибудь, и числоlimit: number
. Задача на выходе вернуть массив chunk-ов длинноюlimit
или меньше. Пример:test([1,2,3,4,5], 2) => [[1,2], [3,4], [4,5]]
.
Или такую задачу:
Нужно написать метод который может сжать строку по такому принципуAAABBCB
=>3A2B1C1B
.
Т.е. не задачи на какой-нибудь алгоритм начального уровня. А просто — проитерировать коллекцию, и на каждой итерации подкручивать какие-нибудь счётчики, написать пару условий.
Естественно не все кандидаты валятся на этом. Многие валятся много раньше Но многие Senior-ы, выстрадав и родив хоть что-то работающее, на полном серьёзе не понимают, зачем им что-то итерировать. Ведь JSON туда сюда и без этого можно переслать. И "вообще я React программист, а это не React" :-D
Так что отвечая на ваш вопрос "нужно ли готовиться?". Да… Нужно :)
1*. — берем стек
1** — а во тут уже сложнее. На литкоде похожую задачу помню делал, в итоге за полчаса (или час?) так и не сделал, когда время кончилось пошел подсматривать. Навскидку я бы попробовал тупо написать в рекурсию: сбалансированные собочные выражения длины L это все возможные скобочные комбинации длины (L-2)xКоличество вида скобок.
1*** — тут даже непонятно что хотят — откуда возьмутся дубликаты в последовательностях, который мы генерируем?
2. звучит не очень сложно, но опять же из нюансов то что поток может приостанавливаться незаметно для приложения или многопоток.
3. Задачу понял, решение не до конца: для каждых пар (человек, такси) посортировали по дистанциям и выбрали уникальные комбинации чтобы суммарная дистанция была минимальной? Или как? Опять же, задачи на оптимизации нужно решать какими-то умными методами: отжиги всякие, розенброки и прочее.
4. не знаю датасаенса в принципе, как и большинство «средних разрабов».
5. ну разве что пункт к которому готовиться действительно не надо)
По мере того, как подобные практики собеседования проникают из FAANG и fortune500 в остальные компании у вас может не остаться выбора, если хотите попасть в более-менее приличное место.
Меня собеседовали в одну западную компанию недавно по очень похожему алгоритму, ну только без трёх-пяти сессий, а один раз час, интервьюер-программист в конце показывал что и где я слажал и мимоходом сказал, что "там" давно в нормальных местах собеседуют по таким же принципам.
Поэтому не хотите, всё устраивает — да ради бога.
Может Яндекс, Майл, Сбер и тд крупные компании могут себе позволить повыпендриваться и искать супер-супер умы. Но остальным нужно не умение решать задачки. Им нужно здесь и сейчас решить проблему на их проекте. А решение задач не позволяет узнать есть ли у тебя такой опыт или соискателя нужно учить.
Я настолько ценю свое время, что отметаю вакансии с тестовыми заданиями. Месяц готовиться к интервью? Извините, спасибо, есть еще десятки вакансий с условиями лишь слегка похуже. А главное, гуглер из меня плохой, ведь у меня есть жизнь кроме работы.
Как я готовился к собеседованию в Google