Прошел онлайн онсайт в Амазон. Интервью начался вечером в 5:00 и длилось до 9:30.
До начала собеседования начал готовить рабочее место. Пробежался по моему списку и настроил рабочее место. Подключил телефон чтобы транслировать доску для SDI, набрал воды, жена купила шоколадок чтобы был бодреньким. (на фото мой сетап для собеседования, рабочего стола у меня нет).
#story #amazon
До начала собеседования начал готовить рабочее место. Пробежался по моему списку и настроил рабочее место. Подключил телефон чтобы транслировать доску для SDI, набрал воды, жена купила шоколадок чтобы был бодреньким. (на фото мой сетап для собеседования, рабочего стола у меня нет).
#story #amazon
👍1
Что там было?
В самом начале на видео звонка залетел мой HR чтобы узнать все ли норм. Мы потестили звук и видео, она отключилась и стал ждать первого интервьюера.
Round 1.
Зашел в чат чувак средних лет. Он рассказал о себе. Я о себе. Поспрашивал LP вопросы. Что то типа “Каким проектом ты гордишься больше всего? Почему?”, “Какие были сложности при разработке?” и т.д. Болтали так минут 20. Остальные полчаса были на задачу. Дал задачу на массивы, мол даны какие то API, нужно к ним обратиться, собрать какие то данные и что то там посчитать. Уровень Easy/Medium на Leetcode. Я поспрашивал вопросы чтобы понять что именно он хочет и как работать с этими API (спрашивайте вопросы всегда). Потом я описал решение по шагам на словах, написал в редакторе кода, мол буду делать то то и то то. После каждого шага спрашивал “What do you think about it?”, “Does it sounds good for you?”, “Is that makes sense for you?” и т.д. Это тоже очень важно, так как надо понимать в правильном ли направлении я двигаюсь. После того как интервьюер сказал “Sounds good”, я сказал что хочу перейти к написанию кода.
Написал решение быстро. Показал, тот сказал что все ок. Спросил потом усложненную версию этого вопроса, который уже был похож на проблему графов. Сказал что можно решить через DFS. Чувак не стал настаивать на написании кода и просил объяснить только на словах. Потом он спросил как это все можно запустить на нескольких потоках. Я рассказал про локи, про общие ресурсы потоков и т.д. Сказал что как альтернативу можно использовать functional programming, чтобы изолировать операции на каждом потоке.
Чувак сказал что больше нет вопросов. Я его поспрашивал про его работу и мы попрощались. Мы закончили на 10 минут раньше срока. Плюс 10 минут перерыва, в итоге меня было около 20 минут на отдых. Я чувствовал себя уверенно после этого собеседования. После каждого раунда я вставал, разминался, ел шоколадки, пил воды.
#story #amazon
В самом начале на видео звонка залетел мой HR чтобы узнать все ли норм. Мы потестили звук и видео, она отключилась и стал ждать первого интервьюера.
Round 1.
Зашел в чат чувак средних лет. Он рассказал о себе. Я о себе. Поспрашивал LP вопросы. Что то типа “Каким проектом ты гордишься больше всего? Почему?”, “Какие были сложности при разработке?” и т.д. Болтали так минут 20. Остальные полчаса были на задачу. Дал задачу на массивы, мол даны какие то API, нужно к ним обратиться, собрать какие то данные и что то там посчитать. Уровень Easy/Medium на Leetcode. Я поспрашивал вопросы чтобы понять что именно он хочет и как работать с этими API (спрашивайте вопросы всегда). Потом я описал решение по шагам на словах, написал в редакторе кода, мол буду делать то то и то то. После каждого шага спрашивал “What do you think about it?”, “Does it sounds good for you?”, “Is that makes sense for you?” и т.д. Это тоже очень важно, так как надо понимать в правильном ли направлении я двигаюсь. После того как интервьюер сказал “Sounds good”, я сказал что хочу перейти к написанию кода.
Написал решение быстро. Показал, тот сказал что все ок. Спросил потом усложненную версию этого вопроса, который уже был похож на проблему графов. Сказал что можно решить через DFS. Чувак не стал настаивать на написании кода и просил объяснить только на словах. Потом он спросил как это все можно запустить на нескольких потоках. Я рассказал про локи, про общие ресурсы потоков и т.д. Сказал что как альтернативу можно использовать functional programming, чтобы изолировать операции на каждом потоке.
Чувак сказал что больше нет вопросов. Я его поспрашивал про его работу и мы попрощались. Мы закончили на 10 минут раньше срока. Плюс 10 минут перерыва, в итоге меня было около 20 минут на отдых. Я чувствовал себя уверенно после этого собеседования. После каждого раунда я вставал, разминался, ел шоколадки, пил воды.
#story #amazon
❤1👍1
Round 2.
Сел обратно на рабочее место. Подключились 2 чувака. Рассказали о себе. Главный из них поспрашивал LP вопросы. Что то типа “Бывали ли случаи когда ты не вписывался в дедлайн?”, “Было ли такое что ты помогал коллеге?” и т.д. Болтали так минут 20. Потом мне дали System Design кейс. Построить некую рекомендательную систему и написать алгоритм для этого. Я прифигел, так как до этого я только юзал готовые алгоритмы. Я собрал требования. Нарисовал общую схему такой системы. Сказал что будет 3 этапа, сбор данных, подсчет рекомендаций и в конце сам API рекомендаций. Нарисовал компоненты. Потом нарисовал как буду собирать данные, в каком формате они будут храниться, сколько примерно у меня будет данных в террабайтах. Потом нарисовал как буду обрабатывать данные и как буду записывать результаты. Написал очень тупой алгоритм для рекомендаций. Чувак поспрашивал про то как работает шардинг баз данных. Я рассказал что знаю. Мы немного пообщались и на этом все. Я чувствовал себя уже не так уверенно после этого собеседования. Я болтал без умолку и мог упустить фидбек от интервьюера. Это жирный минус.
Round 3.
LP вопросы. Потом чувак дал мне 2 вопроса и сказал чтобы я выбрал какой мне нравиться больше. Первый был задачей на стэки уровня Hard, второй Medium на графы. Так как я хорошо знал графы и не хотел мудохаться с Hard задачей выбрал второе. Решил быстро. Мы поболтали. И на этом все. Я чувствовал себя уверенно после этого собеседования.
Round 4.
LP вопросы. Чувак попросил задизайнить модуль который бы искал кое что по определенным критериям. Я написал рекурсивный алгоритм, потом начал переделывать его на итеративный, хотя интервьюеру было ок с рекурсией. Я настоял чтобы был итеративный, так как легче дебажить и не будет проблем с лимитом кол стэка. Я начал рефакторить и долго тупил. Чувак начал нервничать и говорить чтобы я оставил как есть, но я настоял на своем (не делайте так) и в итоге через пару минут сделал итеративный вариант. Потом меня спросили как бы я изменил свой модуль если бы мне нужно было обрабатывать динамическое количество критериев. Я спер идею query builder из PHP, Laravel, Yii и сделал что то похожее. Интервьюер похвалил мой подход. Мы поболтали. И на этом все. У меня были смешанные чувства после собеседования. С одной стороны я все решил и меня похвалили. С другой я перечил интервьюеру и долго мусолил итеративный подход, это могло сыграть против меня.
#story #amazon
Сел обратно на рабочее место. Подключились 2 чувака. Рассказали о себе. Главный из них поспрашивал LP вопросы. Что то типа “Бывали ли случаи когда ты не вписывался в дедлайн?”, “Было ли такое что ты помогал коллеге?” и т.д. Болтали так минут 20. Потом мне дали System Design кейс. Построить некую рекомендательную систему и написать алгоритм для этого. Я прифигел, так как до этого я только юзал готовые алгоритмы. Я собрал требования. Нарисовал общую схему такой системы. Сказал что будет 3 этапа, сбор данных, подсчет рекомендаций и в конце сам API рекомендаций. Нарисовал компоненты. Потом нарисовал как буду собирать данные, в каком формате они будут храниться, сколько примерно у меня будет данных в террабайтах. Потом нарисовал как буду обрабатывать данные и как буду записывать результаты. Написал очень тупой алгоритм для рекомендаций. Чувак поспрашивал про то как работает шардинг баз данных. Я рассказал что знаю. Мы немного пообщались и на этом все. Я чувствовал себя уже не так уверенно после этого собеседования. Я болтал без умолку и мог упустить фидбек от интервьюера. Это жирный минус.
Round 3.
LP вопросы. Потом чувак дал мне 2 вопроса и сказал чтобы я выбрал какой мне нравиться больше. Первый был задачей на стэки уровня Hard, второй Medium на графы. Так как я хорошо знал графы и не хотел мудохаться с Hard задачей выбрал второе. Решил быстро. Мы поболтали. И на этом все. Я чувствовал себя уверенно после этого собеседования.
Round 4.
LP вопросы. Чувак попросил задизайнить модуль который бы искал кое что по определенным критериям. Я написал рекурсивный алгоритм, потом начал переделывать его на итеративный, хотя интервьюеру было ок с рекурсией. Я настоял чтобы был итеративный, так как легче дебажить и не будет проблем с лимитом кол стэка. Я начал рефакторить и долго тупил. Чувак начал нервничать и говорить чтобы я оставил как есть, но я настоял на своем (не делайте так) и в итоге через пару минут сделал итеративный вариант. Потом меня спросили как бы я изменил свой модуль если бы мне нужно было обрабатывать динамическое количество критериев. Я спер идею query builder из PHP, Laravel, Yii и сделал что то похожее. Интервьюер похвалил мой подход. Мы поболтали. И на этом все. У меня были смешанные чувства после собеседования. С одной стороны я все решил и меня похвалили. С другой я перечил интервьюеру и долго мусолил итеративный подход, это могло сыграть против меня.
#story #amazon
👍1
Какие ощущения?
После собеседования были смешанные чувства. С одной стороны я вроде сделал все правильно и задачи были достаточно легкими. Но с другой стороны меня не покидало ощущение что это я не смог углубиться в проблему и решил ее неверно. Из минусов я несколько раз перечил интервьюеру, тупил при решении задачи и что то там накалякал на SDI. Против меня еще играет нынешняя ситуация с вирусом. Из плюсов я решил все задачи оптимальным путем, расписал все за и против разных подходов, решал достаточно быстро и без багов. Меня даже пару раз похвалили. В итоге у меня ощущение 50/50. 50% что меня пошлют и 50% что пропустят дальше. Сказали что ответ будет на следующей неделе. Будем ждать. К концу интервью был очень измотан, но не мог долго уснуть. Не мог долго собраться с мыслями чтобы все расписать.
#story #amazon
После собеседования были смешанные чувства. С одной стороны я вроде сделал все правильно и задачи были достаточно легкими. Но с другой стороны меня не покидало ощущение что это я не смог углубиться в проблему и решил ее неверно. Из минусов я несколько раз перечил интервьюеру, тупил при решении задачи и что то там накалякал на SDI. Против меня еще играет нынешняя ситуация с вирусом. Из плюсов я решил все задачи оптимальным путем, расписал все за и против разных подходов, решал достаточно быстро и без багов. Меня даже пару раз похвалили. В итоге у меня ощущение 50/50. 50% что меня пошлют и 50% что пропустят дальше. Сказали что ответ будет на следующей неделе. Будем ждать. К концу интервью был очень измотан, но не мог долго уснуть. Не мог долго собраться с мыслями чтобы все расписать.
#story #amazon
👍1
Позвонил HR из Амазона. Сказала стандартную фразу “We unfortunately will not be moving your application forward…”, что означает соси палец, ты нам не подходишь. Фидбэк отказались давать, но сказали что были бы рады увидеть меня через годик. Я чет взгрустнул.
Почему меня отшили?
⁃ Я точно завалил SDI, так как нес бред и чересчур волновался. Задавал неверные вопросы. Нужно больше практики.
⁃ Я несколько раз перечил одному интервьюеру и оптимизировал код который он просил оставить в покое. Не делайте так.
⁃ Возможно мои LP ответы были не достаточно убедительными. Стоило уделить больше времени на проработку историй.
⁃ В связи с вирусом компания может быть излишне избирательна, так как цена ошибки сейчас выше.
Минус один. Остался еще Google и Facebook. Делаю ставку на Google, так как в Facebook слишком высокая позиция для меня. Буду готовиться дальше. Главное не падать духом.
#story #google #facebook #amazon
Почему меня отшили?
⁃ Я точно завалил SDI, так как нес бред и чересчур волновался. Задавал неверные вопросы. Нужно больше практики.
⁃ Я несколько раз перечил одному интервьюеру и оптимизировал код который он просил оставить в покое. Не делайте так.
⁃ Возможно мои LP ответы были не достаточно убедительными. Стоило уделить больше времени на проработку историй.
⁃ В связи с вирусом компания может быть излишне избирательна, так как цена ошибки сейчас выше.
Минус один. Остался еще Google и Facebook. Делаю ставку на Google, так как в Facebook слишком высокая позиция для меня. Буду готовиться дальше. Главное не падать духом.
#story #google #facebook #amazon
👍2
На следующей неделе будет 2 онсайт собеса в Google и Facebook. Готовлюсь потихоньку. За последние несколько собеседований понял что с алгоритмами я справляюсь уже неплохо. Главное не спешить и задавать вопросы, прорабатывать edge кейсы. Спешка и волнение мои главные враги.
Самая моя главная слабость на данный момент это System Design. Нужно больше практики чтобы уметь задавать правильные вопросы, понимать scope задачи, держать структуру собеседования и не уходить туда куда интервьюер не просил, коммуницировать, не прыгать преждевременно в детальный разбор какого либо модуля.
Так же у меня очень слабая математика, я очень плохо считаю в уме, это сейчас играет против меня. К примеру, надо быстро посчитать если в день на сайте бывает 2 миллиарда пользователей, сколько серверов нужно чтобы эти запросы обрабатывать? Ну и ты начинаешь думать 24 часа, в часе 60 минут, в минуте 60 секунд это будет 86400 секунд в день. Округлим до 87000 чтобы было легче считать. Если в день заходит примерно 2 миллиарда людей, то это примерно 2 млрд/87000 ~ 250K пользователей в секунду. Если представить что один сервер будет держать 5K одновременных соединений, то это примерно 250K/5K ~ 50 серверов. Точность тут не нужна, но нужно уметь хотя бы примерно делить и умножать и не путать нули, чтобы не ляпнуть терабайт вместо гигабайта, что очень важно. Короч нужно много практики. Поэтому стараюсь делать математички операции в уме, потом перепроверяю на калькуляторе.
Чтобы практиковать System Design использовал Pramp пару раз, но оба раза опыт был отрицательный, попадались очень слабые ребята. Поэтому написал знакомым чтобы они провели со мной несколько сессий System Design по телефону. Я буду собеседовать человека 1:1, а потом он меня, по часу каждый, а потом мы пишем друг на друга фидбэк, что делали хорошо, а где надо подтянуть. Пока откликнулся один человек и мы провели одну такую сессию. Сессия была очень полезна для меня, так как я начал лучше чувствовать структуру собеседования и получил очень полезный фидбэк.
Вот что мне написал мой интервьюер:
- Don't assume something you don't know ahead
- Try to think about use cases, put yourself in the center of service, like you are customer
- Don't waste time on things that interviewer doesn't want to cover
- You struggled to design the tables and relationship between them
- Be consistent on naming to make the conversation clear
Я слишком много полагаюсь на те видео и лекции которые я смотрю и читаю онлайн. Я начал понимать что не нужно пытаться рассказать много и прыгать с темы на тему и рисовать умные графики, рисовать умные цифры.
Что я понял:
⁃ Нужно опираться на свой опыт и знания, не использовать готовые архитектуры из интернета. Представить как бы ты разрабатывал такое приложение в реальности. Шаг за шагом уточнять детали у интервьюера.
⁃ Чтобы улучшить свой опыт много читать, смотреть разные варианты решения. Не запоминать, по стараться понять логику за этим и учить концепции.
⁃ Практиковать, даже простые архитектурные решения применять у себя на работе или на домашнем проекте. К примеру индексы, кэш, load balancer и т.д. Это все простые вещи, но мы не всегда думаем как это применять и как это может улучшить архитектуру приложения.
⁃ Относиться к интервью не как к интервью, а больше как к brainstorming. Представить что вы обсуждаете решение с коллегой.
⁃ Не кидай на стол технологии и термины о которых ты не имеешь понятия. Тебя закопают.
⁃ Говори только о тех вещах с которыми ты хорошо знаком. Если ты хорош в дизайне API говори об этом, если ты хорош в структуре данных расскажи как ты будешь хранить данные и т.д.
⁃ Будь честен и не строй из себя Батьку.
⁃ Слушай интервьюера, записывай детали проекта, дай интервьюеру возможность подсказывать и вести тебя. Интервьюеру порой интересны определенные аспекты проблемы, поэтому старайся понять что он хочет узнать. И если он куда то тебя ведет, то слушай его.
⁃ Общайся и задавай правильные вопросы.
#story #interviewtip #systemdesign #facebook #google
Самая моя главная слабость на данный момент это System Design. Нужно больше практики чтобы уметь задавать правильные вопросы, понимать scope задачи, держать структуру собеседования и не уходить туда куда интервьюер не просил, коммуницировать, не прыгать преждевременно в детальный разбор какого либо модуля.
Так же у меня очень слабая математика, я очень плохо считаю в уме, это сейчас играет против меня. К примеру, надо быстро посчитать если в день на сайте бывает 2 миллиарда пользователей, сколько серверов нужно чтобы эти запросы обрабатывать? Ну и ты начинаешь думать 24 часа, в часе 60 минут, в минуте 60 секунд это будет 86400 секунд в день. Округлим до 87000 чтобы было легче считать. Если в день заходит примерно 2 миллиарда людей, то это примерно 2 млрд/87000 ~ 250K пользователей в секунду. Если представить что один сервер будет держать 5K одновременных соединений, то это примерно 250K/5K ~ 50 серверов. Точность тут не нужна, но нужно уметь хотя бы примерно делить и умножать и не путать нули, чтобы не ляпнуть терабайт вместо гигабайта, что очень важно. Короч нужно много практики. Поэтому стараюсь делать математички операции в уме, потом перепроверяю на калькуляторе.
Чтобы практиковать System Design использовал Pramp пару раз, но оба раза опыт был отрицательный, попадались очень слабые ребята. Поэтому написал знакомым чтобы они провели со мной несколько сессий System Design по телефону. Я буду собеседовать человека 1:1, а потом он меня, по часу каждый, а потом мы пишем друг на друга фидбэк, что делали хорошо, а где надо подтянуть. Пока откликнулся один человек и мы провели одну такую сессию. Сессия была очень полезна для меня, так как я начал лучше чувствовать структуру собеседования и получил очень полезный фидбэк.
Вот что мне написал мой интервьюер:
- Don't assume something you don't know ahead
- Try to think about use cases, put yourself in the center of service, like you are customer
- Don't waste time on things that interviewer doesn't want to cover
- You struggled to design the tables and relationship between them
- Be consistent on naming to make the conversation clear
Я слишком много полагаюсь на те видео и лекции которые я смотрю и читаю онлайн. Я начал понимать что не нужно пытаться рассказать много и прыгать с темы на тему и рисовать умные графики, рисовать умные цифры.
Что я понял:
⁃ Нужно опираться на свой опыт и знания, не использовать готовые архитектуры из интернета. Представить как бы ты разрабатывал такое приложение в реальности. Шаг за шагом уточнять детали у интервьюера.
⁃ Чтобы улучшить свой опыт много читать, смотреть разные варианты решения. Не запоминать, по стараться понять логику за этим и учить концепции.
⁃ Практиковать, даже простые архитектурные решения применять у себя на работе или на домашнем проекте. К примеру индексы, кэш, load balancer и т.д. Это все простые вещи, но мы не всегда думаем как это применять и как это может улучшить архитектуру приложения.
⁃ Относиться к интервью не как к интервью, а больше как к brainstorming. Представить что вы обсуждаете решение с коллегой.
⁃ Не кидай на стол технологии и термины о которых ты не имеешь понятия. Тебя закопают.
⁃ Говори только о тех вещах с которыми ты хорошо знаком. Если ты хорош в дизайне API говори об этом, если ты хорош в структуре данных расскажи как ты будешь хранить данные и т.д.
⁃ Будь честен и не строй из себя Батьку.
⁃ Слушай интервьюера, записывай детали проекта, дай интервьюеру возможность подсказывать и вести тебя. Интервьюеру порой интересны определенные аспекты проблемы, поэтому старайся понять что он хочет узнать. И если он куда то тебя ведет, то слушай его.
⁃ Общайся и задавай правильные вопросы.
#story #interviewtip #systemdesign #facebook #google
👍2
Есть в архитектуре систем (System design) понятие “Back-of-the-envelope calculation”, что означает быстрый и примерный подсчет каких либо цифр без использования калькулятора. Выражение пошло от того что, иногда мы берем для быстрых подсчетов на бумаге какой нибудь маленький кусок типа страницы тетради, или салфетки, или ненужный конверт как в нашем случае.
Эта техника широко применяется на System Design собеседованиях для подсчёта объема данных, количество запросов в секунду и т.д., что помогает понять масштабы системы. Точность тут не главное, но главное сделать подсчёт таким образом чтобы это было максимально близко к реальным цифрам.
Как я уже говорил, у меня большие проблемы с подсчетом в уме и поэтому я искал какие нибудь лекции на эту тему, чтобы найти какие либо хорошие практики и наткнулся на эту очень интересную лекцию.
https://youtu.be/-_-Vg_B3nzM
#interviewtip #systemdesign
Эта техника широко применяется на System Design собеседованиях для подсчёта объема данных, количество запросов в секунду и т.д., что помогает понять масштабы системы. Точность тут не главное, но главное сделать подсчёт таким образом чтобы это было максимально близко к реальным цифрам.
Как я уже говорил, у меня большие проблемы с подсчетом в уме и поэтому я искал какие нибудь лекции на эту тему, чтобы найти какие либо хорошие практики и наткнулся на эту очень интересную лекцию.
https://youtu.be/-_-Vg_B3nzM
#interviewtip #systemdesign
🔥1
Я прошел 2 онсайт собеседования на этой неделе, должен вам 2 фидбэка. Постараюсь коротко.
Google
Было 3 кодинг собеседований утром, обед, потом 1 LP собеседование, 1 System Design. Каждое собеседование длилось час. Кодинг часть была не сложной. И решал задачи я уверенно. LP тоже вроде все ответил верно. System Design я тупил жестко. Нужно было сделать кэш систему для Google Search, супер стандартная проблема. Я долго не мог понять сколько серверов нам надо. Я думал что нужно отталкиваться от количества запросов который каждый сервер может обработать, но оказалось что этого не достаточно и нужно еще учитывать network bandwidth. Еще я не смог поделить 1000/800. Я сказал что это будет 0.3, тогда как это будет 1.3. Вот такой вот у меня уровень математики.
Какие ощущения?
+ Решал задачи уверенно, минимум багов, тестил, говорил свои мысли.
+ LP отвечал уверенно, рассказал о моем опыте. Тут тоже вроде все норм.
- System Design был просто атас. Я чувствовал себя школьником который решил откликнуться в Google и случайно попал на онсайт.
Я думаю что мои шансы 50/50. Так как я показал хороший результат на кодинге, но к сожалению у меня был очень слабый System Design. Нужно больше практики.
Facebook
Утром был System Design и Кодинг, обед, LP и еще один Кодинг. Каждое собеседование длилось 45 минут. На кодинге давали 2 задачи, одну на разогрев, вторую уже посложнее. Я все раскидал, задачи уровня Easy/Medium на LeetCode. Уложился в 45 минут. System Design попалась тема, которая мне очень хорошо знакома, это локализация приложения и много чего еще. Поскольку у меня был опыт в этом я был на волне, описал все плюсы и минусы разных подходов, описал реализацию классов, описал как это все будет храниться и т.д. С математикой тут было проще. В основном умножения, с умножениями у меня лучше.
Какие ощущения?
+ Решал задачи уверенно, минимум багов, тестил, говорил свои мысли.
+ LP отвечал уверенно, рассказал о моем опыте. Тут тоже вроде все норм.
+ Раскидал System Design. (По крайней мере я так думаю)
- Одну задачу я решил неверно, поскольку не до конца понял проблему. Интервьюер меня поправил, я это быстро исправил.
- Было несколько мелких багов в другой задаче. Исправил с подсказкой интервьюера.
Тут я позволю себе смелость сказать что ставлю 40/60, 40 - что мне откажут, 60 - что пропустят. Но опять же против меня играет то что это высокая позиция, вирус бушует и мест мало. Поскольку я не показал себя на 200%, могут сказать что я хорош, но не настолько чтобы меня брать в команду. Могут докопаться что иногда я был не инициативным и не вел разговор, так как бывало что я неправильно понимал задачу и не понимал что делать дальше. После собеседования вышел уверенным в себе.
После отказа Амазона я уже поплакал в душе. И я стараюсь не питать фантазий. Это помогло мне меньше нервничать на собеседовании. Я отпустил ситуацию, будь что будет. Откажут, погрущу. Примут, порадуюсь. Надо двигаться дальше. На работе очень ответственный проект, надо собраться и входить уже в рабочий ритм и отдохнуть от собеседований.
Update
Хочу сделать короткий пост о том как попасть на собеседование в Google, Amazon, Facebook (и как завалить его). Так что не теряйте меня.
#story #facebook #google
Было 3 кодинг собеседований утром, обед, потом 1 LP собеседование, 1 System Design. Каждое собеседование длилось час. Кодинг часть была не сложной. И решал задачи я уверенно. LP тоже вроде все ответил верно. System Design я тупил жестко. Нужно было сделать кэш систему для Google Search, супер стандартная проблема. Я долго не мог понять сколько серверов нам надо. Я думал что нужно отталкиваться от количества запросов который каждый сервер может обработать, но оказалось что этого не достаточно и нужно еще учитывать network bandwidth. Еще я не смог поделить 1000/800. Я сказал что это будет 0.3, тогда как это будет 1.3. Вот такой вот у меня уровень математики.
Какие ощущения?
+ Решал задачи уверенно, минимум багов, тестил, говорил свои мысли.
+ LP отвечал уверенно, рассказал о моем опыте. Тут тоже вроде все норм.
- System Design был просто атас. Я чувствовал себя школьником который решил откликнуться в Google и случайно попал на онсайт.
Я думаю что мои шансы 50/50. Так как я показал хороший результат на кодинге, но к сожалению у меня был очень слабый System Design. Нужно больше практики.
Утром был System Design и Кодинг, обед, LP и еще один Кодинг. Каждое собеседование длилось 45 минут. На кодинге давали 2 задачи, одну на разогрев, вторую уже посложнее. Я все раскидал, задачи уровня Easy/Medium на LeetCode. Уложился в 45 минут. System Design попалась тема, которая мне очень хорошо знакома, это локализация приложения и много чего еще. Поскольку у меня был опыт в этом я был на волне, описал все плюсы и минусы разных подходов, описал реализацию классов, описал как это все будет храниться и т.д. С математикой тут было проще. В основном умножения, с умножениями у меня лучше.
Какие ощущения?
+ Решал задачи уверенно, минимум багов, тестил, говорил свои мысли.
+ LP отвечал уверенно, рассказал о моем опыте. Тут тоже вроде все норм.
+ Раскидал System Design. (По крайней мере я так думаю)
- Одну задачу я решил неверно, поскольку не до конца понял проблему. Интервьюер меня поправил, я это быстро исправил.
- Было несколько мелких багов в другой задаче. Исправил с подсказкой интервьюера.
Тут я позволю себе смелость сказать что ставлю 40/60, 40 - что мне откажут, 60 - что пропустят. Но опять же против меня играет то что это высокая позиция, вирус бушует и мест мало. Поскольку я не показал себя на 200%, могут сказать что я хорош, но не настолько чтобы меня брать в команду. Могут докопаться что иногда я был не инициативным и не вел разговор, так как бывало что я неправильно понимал задачу и не понимал что делать дальше. После собеседования вышел уверенным в себе.
После отказа Амазона я уже поплакал в душе. И я стараюсь не питать фантазий. Это помогло мне меньше нервничать на собеседовании. Я отпустил ситуацию, будь что будет. Откажут, погрущу. Примут, порадуюсь. Надо двигаться дальше. На работе очень ответственный проект, надо собраться и входить уже в рабочий ритм и отдохнуть от собеседований.
Update
Хочу сделать короткий пост о том как попасть на собеседование в Google, Amazon, Facebook (и как завалить его). Так что не теряйте меня.
#story #facebook #google
👍2
Как попасть на собеседование в FAANG (Facebook, Apple, Amazon, Netflix, Google) и завалить его.
Это короткий пост о том как попасть на собеседование в FAANG. Тут не будет глубокого анализа.
Нахрена мне все это?
⁃ Ты узнаешь много чего за время подготовки и вырастешь как программист.
⁃ Как минимум слетаешь в другую страну за счет компании, посетишь офис FAANG.
⁃ А как максимум найдешь отличную работу.
Шаг 0. Подготовка.
Как понять что ты готов:
⁃ Технический английский и умение вежливо обшаться
⁃ Базовое знание структур данных. (Arrays, LinkedList, Stack, Queue, Heap, Graph и т.д.)
⁃ Базовое знание алгоритмов (Binary Search, BFS, DFS и т.д)
⁃ Если ты можешь решить Easy/Medium задачи на Leetcode за 15 минут в среднем
⁃ Если ты можешь решить Hard задачи на Leetcode за 20-30 минут в среднем
⁃ Решил как минимум 200 задач на Leetcode за все время. (50% - Medium, 40% - Easy, 10% - Hard)
⁃ Если есть опыт в архитектуре приложений. (Если ты только закончил универ, то это не важно. Если у тебя >= 3 лет опыта, то это обязательно. )
⁃ Есть базовые понятия о серверах, сетях, базах данных и т.д.
⁃ Есть базовые понятия о том как работают компы, треды, процессы, память и т.д. Университетская программа.
Если что то из этого отсутсвует, то бегом учить. В интернете очень много видосов, курсов и статей на эту тему. Все бесплатно.
Некоторые ресурсы я уже шейрил на канале:
⁃ Leetcode. (Начинай с простых задач, и усложняй потихоньку. Читайте Discussions если не смог решить)
⁃ Канал Tushar Roy на YouTube.
⁃ Канал Hackerrank на YouTube. (Тут есть несколько крутых лекций по структурам данных)
⁃ Cracking the Coding Interview. (Не читал его полностью, но использовал как энциглопедию)
⁃ Канал Gaurav sen на YouTube. (Тут больше про архитектуру)
⁃ Канал CS Dojo на YouTube. (Посмотрите старые видосы по алгоритмам)
⁃ Algoexpert.io (платный)
Да, да я слишком много сижу на YouTube.
Первые пару месяцев будешь чувствовать себя тупым куском говна который даже не может решить Easy задачу. Прими это. Прочувствуй эту боль. Это нормально. Решай по одной задаче в день. Если не смог решить в течении дня, то смотри Discussions и смотри объяснения. Решай заново. Будь последователен и постоянен в своей подготовке. Мне понадобилось пол года чтобы от человека который не может написать Bubble Sort стать человеком которого пригласили на онсайт в Google.
Шаг 1. Сделай резюме.
Писал об этом уже тут https://t.me/hiremegoogle/5
Шаг 2. Каким-либо образом попасть на собеседование.
Делай этот шаг только после подготовки. Есть много способов. Я опишу те с которыми я сталкивался. Список отсортирован по мере эффективности.
⁃ Реферал. Попросить человека который уже работает в FAANG закинуть туда ваше резюме. А если у меня нет таких знакомых? Рад что ты спросил. Поспрашивай знакомых знакомых, жену, одногруппников, родственников и т.д. Кто-то да найдется. Вероятность что тебе ответят 90%.
⁃ Написать рекрутеру в Linkedin. Вы можете найти профиль рекрутера в Linkedin и попросить чтобы они вас рассмотрели. Подробности на есть на канале CS Dojo на YouTube. Вероятность ХЗ, я так не делал. Но говорят он эффективнее чем просто откликнуться на сайте.
⁃ Просто откликнуться на сайте. Заходите на сайт компании и оставляете там отклик. Вероятность 50%.
В прошлом году я попал на собеседование в Google просто оставив отклик на сайте. Тут мне просто повезло. В этом году в Google я попал через реферал парня с которым встречалась подруга моей жены в Тиндере. В Facebook реферал получил через бывшую коллегу у который был знакомый в этой компании. В Amazon я получил реферал через бывшего начальника моей сестры, который также является мужем подруги моей жены. Во как. Я просто писал всем подряд и спрашивал может ли кто нибудь закинуть мое резюме в ту или иную компанию.
#interviewtip #algo #systemdesign
Это короткий пост о том как попасть на собеседование в FAANG. Тут не будет глубокого анализа.
Нахрена мне все это?
⁃ Ты узнаешь много чего за время подготовки и вырастешь как программист.
⁃ Как минимум слетаешь в другую страну за счет компании, посетишь офис FAANG.
⁃ А как максимум найдешь отличную работу.
Шаг 0. Подготовка.
Как понять что ты готов:
⁃ Технический английский и умение вежливо обшаться
⁃ Базовое знание структур данных. (Arrays, LinkedList, Stack, Queue, Heap, Graph и т.д.)
⁃ Базовое знание алгоритмов (Binary Search, BFS, DFS и т.д)
⁃ Если ты можешь решить Easy/Medium задачи на Leetcode за 15 минут в среднем
⁃ Если ты можешь решить Hard задачи на Leetcode за 20-30 минут в среднем
⁃ Решил как минимум 200 задач на Leetcode за все время. (50% - Medium, 40% - Easy, 10% - Hard)
⁃ Если есть опыт в архитектуре приложений. (Если ты только закончил универ, то это не важно. Если у тебя >= 3 лет опыта, то это обязательно. )
⁃ Есть базовые понятия о серверах, сетях, базах данных и т.д.
⁃ Есть базовые понятия о том как работают компы, треды, процессы, память и т.д. Университетская программа.
Если что то из этого отсутсвует, то бегом учить. В интернете очень много видосов, курсов и статей на эту тему. Все бесплатно.
Некоторые ресурсы я уже шейрил на канале:
⁃ Leetcode. (Начинай с простых задач, и усложняй потихоньку. Читайте Discussions если не смог решить)
⁃ Канал Tushar Roy на YouTube.
⁃ Канал Hackerrank на YouTube. (Тут есть несколько крутых лекций по структурам данных)
⁃ Cracking the Coding Interview. (Не читал его полностью, но использовал как энциглопедию)
⁃ Канал Gaurav sen на YouTube. (Тут больше про архитектуру)
⁃ Канал CS Dojo на YouTube. (Посмотрите старые видосы по алгоритмам)
⁃ Algoexpert.io (платный)
Да, да я слишком много сижу на YouTube.
Первые пару месяцев будешь чувствовать себя тупым куском говна который даже не может решить Easy задачу. Прими это. Прочувствуй эту боль. Это нормально. Решай по одной задаче в день. Если не смог решить в течении дня, то смотри Discussions и смотри объяснения. Решай заново. Будь последователен и постоянен в своей подготовке. Мне понадобилось пол года чтобы от человека который не может написать Bubble Sort стать человеком которого пригласили на онсайт в Google.
Шаг 1. Сделай резюме.
Писал об этом уже тут https://t.me/hiremegoogle/5
Шаг 2. Каким-либо образом попасть на собеседование.
Делай этот шаг только после подготовки. Есть много способов. Я опишу те с которыми я сталкивался. Список отсортирован по мере эффективности.
⁃ Реферал. Попросить человека который уже работает в FAANG закинуть туда ваше резюме. А если у меня нет таких знакомых? Рад что ты спросил. Поспрашивай знакомых знакомых, жену, одногруппников, родственников и т.д. Кто-то да найдется. Вероятность что тебе ответят 90%.
⁃ Написать рекрутеру в Linkedin. Вы можете найти профиль рекрутера в Linkedin и попросить чтобы они вас рассмотрели. Подробности на есть на канале CS Dojo на YouTube. Вероятность ХЗ, я так не делал. Но говорят он эффективнее чем просто откликнуться на сайте.
⁃ Просто откликнуться на сайте. Заходите на сайт компании и оставляете там отклик. Вероятность 50%.
В прошлом году я попал на собеседование в Google просто оставив отклик на сайте. Тут мне просто повезло. В этом году в Google я попал через реферал парня с которым встречалась подруга моей жены в Тиндере. В Facebook реферал получил через бывшую коллегу у который был знакомый в этой компании. В Amazon я получил реферал через бывшего начальника моей сестры, который также является мужем подруги моей жены. Во как. Я просто писал всем подряд и спрашивал может ли кто нибудь закинуть мое резюме в ту или иную компанию.
#interviewtip #algo #systemdesign
www.algoexpert.io
AlgoExpert | Ace the Coding Interviews
The leading platform to prepare for coding interviews. Master essential algorithms and data structures, and land your dream job with AlgoExpert.
👍4
Шаг 3. Не завалить.
Я максимум добирался до онсайта. До предложения о работе пока не доходило. Если сделал все как я описал в Шаге 0, то все должно пройти хорошо. Ты сможешь пройти телефонное собеседование и тебя бесплатно скатают в Лондон или Цюрих или в Ванкувер. Ты будешь 4 дня бесплатно жить в отеле за счет компании и побываешь в офисе этих компаний (если не будет пандемии или ты будешь проходить все этапы онлайн), и сможешь рассказывать друзьям как ты завалил интервью туда. Будет весело.
#interviewtip #algo #systemdesign
Я максимум добирался до онсайта. До предложения о работе пока не доходило. Если сделал все как я описал в Шаге 0, то все должно пройти хорошо. Ты сможешь пройти телефонное собеседование и тебя бесплатно скатают в Лондон или Цюрих или в Ванкувер. Ты будешь 4 дня бесплатно жить в отеле за счет компании и побываешь в офисе этих компаний (если не будет пандемии или ты будешь проходить все этапы онлайн), и сможешь рассказывать друзьям как ты завалил интервью туда. Будет весело.
#interviewtip #algo #systemdesign
👍3
Получил фидбэк от Google и Facebook. Момент истины.
Google
Рекрутер сказал что есть 2 новости хорошая и плохая.
Плохая.
Сказали что 3/5 собеседований (1 LP, 2 coding) я показал себя отлично и они сказали что я большой молодец. 2 собеседования (1 coding, 1 System Design) сказали что я не смог дотянуть до уровня качества компании. По итогам компания не может продолжать рассматривать меня на позицию Software Engineer, так как я еще слабоват по их меркам. Мне сказали “we will not be moving forward with your application”
Хорошая.
Поскольку большая часть собеседований прошла хорошо меня решили не оставлять на следующий год и предложили рассмотреть позицию TSE (Technical Solution Engineer). Это техническая позиция где меньше кодинга и больше работы с людьми и больше дебаггинга. Это примерно то чем я занимаюсь сейчас в нынешней компании. Мне отправили описание позиции. Сказали что будет еще дополнительное собеседование. Сейчас договариваюсь по времени.
Facebook
Опять же рекрутер сказал что есть 2 новости хорошая и плохая.
Плохая.
Сказали что я показал себя отлично на кодинге и LP. Но в одном кодинге интервьюер неверно объяснил задачу из за чего я неверно решил ее по началу и много времени потерял на легкой задаче. И System Design был хорош, но было мало “positive signals” как они говорят, хотят больше инициативности, больше рассуждений насчет плюсов и минусов разных решений, и не привязываться к одному решению. В итоге они получили смешанные чувства после собеседования и не смогли прийти к единому решению.
Хорошая.
Чтобы уже окончательное разобраться мне назначили еще 2 дополнительных собеседования. 1 кодинг и 1 System Design. Если я пройду меня возьмут, если нет то окончательно отошьют. Придется откликаться повторно через год. Сейчас договариваюсь по времени.
Итоги
Я надеялся что к этому времени уже все решиться и я уже смогу расслабиться и сфокусироваться на работе. Я уже пару недель не решал задачи на Leetcode. И тут хренак, оказывается еще не конец, а только все начинается и будет еще куча собеседований. Нужно начать готовиться и уже дожать оставшиеся собеседования, выложиться на все 200%. Хуже уже не будет.
#story #facebook #google
Рекрутер сказал что есть 2 новости хорошая и плохая.
Плохая.
Сказали что 3/5 собеседований (1 LP, 2 coding) я показал себя отлично и они сказали что я большой молодец. 2 собеседования (1 coding, 1 System Design) сказали что я не смог дотянуть до уровня качества компании. По итогам компания не может продолжать рассматривать меня на позицию Software Engineer, так как я еще слабоват по их меркам. Мне сказали “we will not be moving forward with your application”
Хорошая.
Поскольку большая часть собеседований прошла хорошо меня решили не оставлять на следующий год и предложили рассмотреть позицию TSE (Technical Solution Engineer). Это техническая позиция где меньше кодинга и больше работы с людьми и больше дебаггинга. Это примерно то чем я занимаюсь сейчас в нынешней компании. Мне отправили описание позиции. Сказали что будет еще дополнительное собеседование. Сейчас договариваюсь по времени.
Опять же рекрутер сказал что есть 2 новости хорошая и плохая.
Плохая.
Сказали что я показал себя отлично на кодинге и LP. Но в одном кодинге интервьюер неверно объяснил задачу из за чего я неверно решил ее по началу и много времени потерял на легкой задаче. И System Design был хорош, но было мало “positive signals” как они говорят, хотят больше инициативности, больше рассуждений насчет плюсов и минусов разных решений, и не привязываться к одному решению. В итоге они получили смешанные чувства после собеседования и не смогли прийти к единому решению.
Хорошая.
Чтобы уже окончательное разобраться мне назначили еще 2 дополнительных собеседования. 1 кодинг и 1 System Design. Если я пройду меня возьмут, если нет то окончательно отошьют. Придется откликаться повторно через год. Сейчас договариваюсь по времени.
Итоги
Я надеялся что к этому времени уже все решиться и я уже смогу расслабиться и сфокусироваться на работе. Я уже пару недель не решал задачи на Leetcode. И тут хренак, оказывается еще не конец, а только все начинается и будет еще куча собеседований. Нужно начать готовиться и уже дожать оставшиеся собеседования, выложиться на все 200%. Хуже уже не будет.
#story #facebook #google
👍4
Пока готовлюсь к собеседованиям хотел узнать больше про аудиторию. Кто ты? Какой контент ищешь на этом канале?
Anonymous Poll
38%
Студент, программист
5%
Студент, не программист
38%
Работаю, программистом
12%
Работаю, не программист
7%
Другое
Это будет последняя неделя собеседований в FAANG, по крайне мере пока. На этой неделе мне предстоит 4 собеседования, 2 от Google, 2 от Facebook.
Google
2 собеседования, как я понял это Troubleshooting и Scripting. Это специальные собеседования для позиции TSE. На Troubleshooting будут давать какую то проблему, мол “Пользователь не может увидеть страницу A” и мне надо будет показать как я буду дебажить и исправлять причины ошибки. На Scripting будут смотреть как я пишу письма, это нужно на случай коммуникации с клиентом. Тоже будут даваться разные ситуации и я буду обязан составить толковое письмо клиенту. Тут главное это вежливость, хороший английский, правильный тайминг (когда отвечать), умение разжёвывать причину и решение ошибки, прикладывать полезные ссылки и картинки и т.д. Поскольку нет каких то правил и курсов на эту тему я просто почитал статьи в интернете на тему как правильно общаться с клиентом. Отдельной практики я тоже не делал, так как это все то чем я занимаюсь на нынешней работе. Насчет Troubleshooting немного почитал про TCP/IP, UDP, HTTP и про API, REST, gRPC и т.д чтобы освежить знания.
Facebook
Тут по интереснее будет. 2 собеседования, Кодинг и System Design. Для кодинга начал снова решать задачи на Leetcode по тэгу Facebook. Для System Design провел мок собеседование со знакомым. Планирую еще почитать и разобрать несколько кейсов с курса Grokking System Design Interview.
Какие ощущения?
Я измотан умственно. Тяжело одновременно совмещать подготовку к собеседованию, работу и семью с ребенком. Приходиться какие вещи ставить на паузу и выделять время для решения задач. Стараюсь пару часов в день выделять и решать примерно 2-3 задачи уровня Hard/Medium на Leetcode.
По уровню сложности самый тяжелый будет Facebook SDI, потом Facebook Coding, потом Google Troubleshooting, потом Google Scripting. Надеюсь попадется тема которую я уже делал.
На удивление оказывается что большая часть аудитории это Рабочие, я думал будут студенты. Это круто! Пробую потихоньку добавлять интерактив голосование, комменты, реакции и т.д чтобы понимать какие темы вам больше интересны.
#story #facebook #google
2 собеседования, как я понял это Troubleshooting и Scripting. Это специальные собеседования для позиции TSE. На Troubleshooting будут давать какую то проблему, мол “Пользователь не может увидеть страницу A” и мне надо будет показать как я буду дебажить и исправлять причины ошибки. На Scripting будут смотреть как я пишу письма, это нужно на случай коммуникации с клиентом. Тоже будут даваться разные ситуации и я буду обязан составить толковое письмо клиенту. Тут главное это вежливость, хороший английский, правильный тайминг (когда отвечать), умение разжёвывать причину и решение ошибки, прикладывать полезные ссылки и картинки и т.д. Поскольку нет каких то правил и курсов на эту тему я просто почитал статьи в интернете на тему как правильно общаться с клиентом. Отдельной практики я тоже не делал, так как это все то чем я занимаюсь на нынешней работе. Насчет Troubleshooting немного почитал про TCP/IP, UDP, HTTP и про API, REST, gRPC и т.д чтобы освежить знания.
Тут по интереснее будет. 2 собеседования, Кодинг и System Design. Для кодинга начал снова решать задачи на Leetcode по тэгу Facebook. Для System Design провел мок собеседование со знакомым. Планирую еще почитать и разобрать несколько кейсов с курса Grokking System Design Interview.
Какие ощущения?
Я измотан умственно. Тяжело одновременно совмещать подготовку к собеседованию, работу и семью с ребенком. Приходиться какие вещи ставить на паузу и выделять время для решения задач. Стараюсь пару часов в день выделять и решать примерно 2-3 задачи уровня Hard/Medium на Leetcode.
По уровню сложности самый тяжелый будет Facebook SDI, потом Facebook Coding, потом Google Troubleshooting, потом Google Scripting. Надеюсь попадется тема которую я уже делал.
На удивление оказывается что большая часть аудитории это Рабочие, я думал будут студенты. Это круто! Пробую потихоньку добавлять интерактив голосование, комменты, реакции и т.д чтобы понимать какие темы вам больше интересны.
#story #facebook #google
👍2
Сегодня было собеседование с Google на позицию TSE (Technical Solutions Engineer). Было 2 собеседования по 45 минут, один за другим без перерыва или “back to back” как любят говорить рекрутеры.
Что там было?
Первое собеседование было Troubleshooting, то есть разобрать какой то баг и найти решение. Интервьюер спросил что то типа есть две системы, одна система отправляет сообщения в другую, но не все сообщения доходят, моя задача было разобраться почему так происходит и почему не все сообщения доставляются. Интервьюер в данном случае выступал как клиент который столкнулся с такой проблемой и я должен был задавать ему вопросы чтобы докопаться до истины. Это очень похоже на этакий детектив, есть притупление и ты должен найти кто убийца. Я рассказал стандартные вещи как просмотр логов, просмотр всяких инструментов аналитики. Написал несколько писем клиенту, интервьюеру было интересно какие вопросы я буду спрашивать в письме. Через минут 20 я нашел что проблема была в том что сообщение которое мы отправляли было большим по размеру и превышала лимиты, поэтому некоторые сообщения не доставлялись. Как решение я предложил несколько вариантов: отправлять большие сообщения частями, увеличить лимит для запроса, хранить сообщение в централизованной базе данных и отправлять только ID записи, чтобы запись можно было позже извлечь из базы данных. Я старался привести как можно больше разных вариантов решения, хотя некоторые могли бы звучать немного топорно. Но я хотел показать что у меня фонтан идей и я учитываю альтернативы и знаю плюсы и минусы разных подходов. Ощущение после собеседования было положительным.
Второе собеседование было хрен знает что. Это некая смесь System Design и Coding. Началось с того что интервьюер спросил меня как бы я оптимизировал веб приложение. Я начал кидать все что было в голове: cache, gzip, сжатие статических файлов, CDN, уменьшить количество вмешательств в DOM в загрузке, убрать кастомный скорлл и т.д. Потом был вопрос про оптимизацию сервера под рост запросов. Тут тоже стандартные ответы типа replication, load balancing и т.д. Потом про то как оптимизировать базу данных, replication, sharding, индексы, оптимизация медленных запросов, кэш, batch requests и многое многое другое. На этом этапе я начал немного тупить, так как задача была оптимизация базы данных под большие нагрузки, но интервьюер плавно перешел на тему оптимизации скорости базы данных. Replication и sharding я рассказал, но про индексы и оптимизацию медленных запросов забыл, были подсказки. Но я сразу подхватил интервьюера и дал полный ответ. Оставалось немного времени и чувак спросил задачу связанную с поисками по логам. Я успел написать только концепцию моего алгоритма и время закончилось, я не успел написать код.
Какие ощущения?
Ощущения смешанные. Вопросы во многом “open ended”, то есть в них нет одного правильного решения, поэтому трудно судить насколько ты прав. Но по моим ощущениям первое собеседование прошло хорошо, второе начал хорошо, но концовку немного смазал. Старался давать разные варианты решения одной проблемы, попутно рассказывая плюсы и минусы разных подходов. Я думаю фидбэк должен быть положительным, но могут сказать что уровень пока не доходит до уровня Google, потому что общая производительность была в ок, но не умопомрачительно. Я ставлю 60/40, 60% что пропустят, 40% отошьют.
#story #google
Что там было?
Первое собеседование было Troubleshooting, то есть разобрать какой то баг и найти решение. Интервьюер спросил что то типа есть две системы, одна система отправляет сообщения в другую, но не все сообщения доходят, моя задача было разобраться почему так происходит и почему не все сообщения доставляются. Интервьюер в данном случае выступал как клиент который столкнулся с такой проблемой и я должен был задавать ему вопросы чтобы докопаться до истины. Это очень похоже на этакий детектив, есть притупление и ты должен найти кто убийца. Я рассказал стандартные вещи как просмотр логов, просмотр всяких инструментов аналитики. Написал несколько писем клиенту, интервьюеру было интересно какие вопросы я буду спрашивать в письме. Через минут 20 я нашел что проблема была в том что сообщение которое мы отправляли было большим по размеру и превышала лимиты, поэтому некоторые сообщения не доставлялись. Как решение я предложил несколько вариантов: отправлять большие сообщения частями, увеличить лимит для запроса, хранить сообщение в централизованной базе данных и отправлять только ID записи, чтобы запись можно было позже извлечь из базы данных. Я старался привести как можно больше разных вариантов решения, хотя некоторые могли бы звучать немного топорно. Но я хотел показать что у меня фонтан идей и я учитываю альтернативы и знаю плюсы и минусы разных подходов. Ощущение после собеседования было положительным.
Второе собеседование было хрен знает что. Это некая смесь System Design и Coding. Началось с того что интервьюер спросил меня как бы я оптимизировал веб приложение. Я начал кидать все что было в голове: cache, gzip, сжатие статических файлов, CDN, уменьшить количество вмешательств в DOM в загрузке, убрать кастомный скорлл и т.д. Потом был вопрос про оптимизацию сервера под рост запросов. Тут тоже стандартные ответы типа replication, load balancing и т.д. Потом про то как оптимизировать базу данных, replication, sharding, индексы, оптимизация медленных запросов, кэш, batch requests и многое многое другое. На этом этапе я начал немного тупить, так как задача была оптимизация базы данных под большие нагрузки, но интервьюер плавно перешел на тему оптимизации скорости базы данных. Replication и sharding я рассказал, но про индексы и оптимизацию медленных запросов забыл, были подсказки. Но я сразу подхватил интервьюера и дал полный ответ. Оставалось немного времени и чувак спросил задачу связанную с поисками по логам. Я успел написать только концепцию моего алгоритма и время закончилось, я не успел написать код.
Какие ощущения?
Ощущения смешанные. Вопросы во многом “open ended”, то есть в них нет одного правильного решения, поэтому трудно судить насколько ты прав. Но по моим ощущениям первое собеседование прошло хорошо, второе начал хорошо, но концовку немного смазал. Старался давать разные варианты решения одной проблемы, попутно рассказывая плюсы и минусы разных подходов. Я думаю фидбэк должен быть положительным, но могут сказать что уровень пока не доходит до уровня Google, потому что общая производительность была в ок, но не умопомрачительно. Я ставлю 60/40, 60% что пропустят, 40% отошьют.
#story #google
👍2
Пару дней назад прошло мое дополнительное собеседование с Facebook. Было 2 собеседования по 45 минут, System Design и Кодинг.
Что там было?
System Design.
Зашел интервьюер, мы немного поболтали. Он дал задание сделать API дизайн для одного из сервисов компании. Я начал задавать уточняющие вопросы, нужно ли касаться Scalability системы, серверов, базы данных и т.д или он хочет сфокусироваться только на API. Интервьюер сказал что ему интересен только API и то как я буду это оптимизировать под страны с медленным интернетом.
Я немного рассказал про то как можно хранить данные чтобы сделать быстрым чтение, но не стал уходить глубоко и старался не уходить от главной темы. Начал с того какой можно протокол использовать для передачи данных. Упомянул REST vs gRPC, JSON vs Protobuf, HTTP 1.1 vs HTTP 2.0 и т.д. Рассказал про плюсы и минусы разных подходов. В итоге остановился на связке gRPC+Protobuf+HTTP 1.1. gRPC+Protobuf потому что это внутренний API и мы будет отправлять большое количество данных и нужно делать это с минимальным размером запроса. gRPC для этого подходит идеально. Если бы это был публичный API можно было бы обойтись REST+JSON, так как он более распространён и более читабелен. Хотя по умолчанию gRPC работает с HTTP 2.0, я предложил использовать его с HTTP 1.1, так как в бедных странах может быть старое железо и софт которое не поддерживает HTTP 2.0, а gRPC может работать с HTTP 1.1 если сделать серализацию в JSON строку. Построил модели для request и response, рассказал про реализацию пагинации. На этом закончилось время и я не успел обсудить оптимизацию глубже.
Coding.
Зашел интервьюер, мы немного поболтали. Интервьюер сказал что хочет спросить 2 задачи.
Первая задача было связана с матрицей. Я начал рассказывать brute-force решение, и в какой то момент интервьюер меня прервал и бросил мне в лицо финальное решение. Точнее, очень так жирно намекнул на него. Я быстро подхватил и реализовал это решение. Он спросил про то если в матрице будут строки разной длины, я сказал можно добавить проверку по индексам или выбросить ошибку, так как матрица обычно имеет равное количество колонок в каждой строке. Он согласился выбросить ошибку.
Вторая задача была связана со строками. Я опять начал рассказывать brute-force решение, и опять интервьюер меня прервал и недвусмысленно намекнул на финальное решение. Я начал тупить, так как надо было работать с индексами, а это очень запутывает, плюс я не сам пришел к решению. Интервьюер увидел что я запутался и предложил вынести работу с индексами в абстрактную функцию, что я и сделал. Это сильно упростило решение и я быстро написал решение. Интервьюер указал на один edge case который я упустил, быстро исправил.
Чтобы было дальше?
Я решил написать свой фидбэк своему рекрутеру, так как второе интервью было очень сумбурным и странным. Только я сел писать, как получил письмо от рекрутера, спустя буквально пол часа после собеседования. Он там писал что уже получил фидбэк от интервьюеров и они позитивные (“it’s looking positive”), так же он сказал что после обсуждения результатов отправит их в понедельник на рассмотрение в Engineering Directors, что бы это не значило. Сказал что финальные результаты будут уже на следующей неделе.
Какие ощущения ?
Первое собеседование прошло хорошо, но я не смог охватить все темы. Второе прошло хрен знает как, я жестко тупил, интервьюер меня постоянно подгонял. Ощущение опять смешанное. Я ставлю 50/50.
#story #facebook
Что там было?
System Design.
Зашел интервьюер, мы немного поболтали. Он дал задание сделать API дизайн для одного из сервисов компании. Я начал задавать уточняющие вопросы, нужно ли касаться Scalability системы, серверов, базы данных и т.д или он хочет сфокусироваться только на API. Интервьюер сказал что ему интересен только API и то как я буду это оптимизировать под страны с медленным интернетом.
Я немного рассказал про то как можно хранить данные чтобы сделать быстрым чтение, но не стал уходить глубоко и старался не уходить от главной темы. Начал с того какой можно протокол использовать для передачи данных. Упомянул REST vs gRPC, JSON vs Protobuf, HTTP 1.1 vs HTTP 2.0 и т.д. Рассказал про плюсы и минусы разных подходов. В итоге остановился на связке gRPC+Protobuf+HTTP 1.1. gRPC+Protobuf потому что это внутренний API и мы будет отправлять большое количество данных и нужно делать это с минимальным размером запроса. gRPC для этого подходит идеально. Если бы это был публичный API можно было бы обойтись REST+JSON, так как он более распространён и более читабелен. Хотя по умолчанию gRPC работает с HTTP 2.0, я предложил использовать его с HTTP 1.1, так как в бедных странах может быть старое железо и софт которое не поддерживает HTTP 2.0, а gRPC может работать с HTTP 1.1 если сделать серализацию в JSON строку. Построил модели для request и response, рассказал про реализацию пагинации. На этом закончилось время и я не успел обсудить оптимизацию глубже.
Coding.
Зашел интервьюер, мы немного поболтали. Интервьюер сказал что хочет спросить 2 задачи.
Первая задача было связана с матрицей. Я начал рассказывать brute-force решение, и в какой то момент интервьюер меня прервал и бросил мне в лицо финальное решение. Точнее, очень так жирно намекнул на него. Я быстро подхватил и реализовал это решение. Он спросил про то если в матрице будут строки разной длины, я сказал можно добавить проверку по индексам или выбросить ошибку, так как матрица обычно имеет равное количество колонок в каждой строке. Он согласился выбросить ошибку.
Вторая задача была связана со строками. Я опять начал рассказывать brute-force решение, и опять интервьюер меня прервал и недвусмысленно намекнул на финальное решение. Я начал тупить, так как надо было работать с индексами, а это очень запутывает, плюс я не сам пришел к решению. Интервьюер увидел что я запутался и предложил вынести работу с индексами в абстрактную функцию, что я и сделал. Это сильно упростило решение и я быстро написал решение. Интервьюер указал на один edge case который я упустил, быстро исправил.
Чтобы было дальше?
Я решил написать свой фидбэк своему рекрутеру, так как второе интервью было очень сумбурным и странным. Только я сел писать, как получил письмо от рекрутера, спустя буквально пол часа после собеседования. Он там писал что уже получил фидбэк от интервьюеров и они позитивные (“it’s looking positive”), так же он сказал что после обсуждения результатов отправит их в понедельник на рассмотрение в Engineering Directors, что бы это не значило. Сказал что финальные результаты будут уже на следующей неделе.
Какие ощущения ?
Первое собеседование прошло хорошо, но я не смог охватить все темы. Второе прошло хрен знает как, я жестко тупил, интервьюер меня постоянно подгонял. Ощущение опять смешанное. Я ставлю 50/50.
#story #facebook
👍3❤1
Пока жду результатов собеседования, хотел узнать какие будут ваши ставки. Какие по вашему будут результаты?
Anonymous Poll
21%
Пройду в Google, Warsaw
42%
Пройду в Facebook, London
31%
Пройду в обе компании
5%
Не пройду никуда и буду сосать палец
Кто то нагнал трафика на мой канал. Ппц вас много тут стало. Ну я должен рассказать итоги итогов.
Google
Созвонились с рекрутором насчет позиции TSE. Он сказал что мои результаты все еще не однозначны и направил меня на собес с Hiring Manager. Она поспрашивала меня про мою мотивацию, мол ты же Software Engineer, нафига тебе сдался Technical Solutions Engineer. Я начал втирать что мол это возможность поработать в Google, набраться опыта, также потому что я уже работаю на похоже позиции сейчас.
Hiring Manager сказала что у них нет в данной момент позиции TSE Platform (веб разработчики), но они ищут ребят для TSE Storage где будет больший упор на знание SQL если мне это интересно то они готовы меня рассмотреть. Я сказал что хотел бы сфокусироваться на Веб и не влезать глубоко в SQL, делать упор на мои основные навыки. На что получил ответ что то типа “Ну хрен знает чувак, мне надо будет тогда обсудить все с твоим рекрутером”. Но был намек что меня отошьют, так как нет подходящей позиции. Посмотрим как пойдет.
Facebook
За день до того как я уехал на летний отпуск мне позвонил мой рекрутер. Сказал что то типа “I have good news for you…”, я такой воу-воу полегче парень, и он такой “we would like to make you an formal offer…”, и все я уже дальше ничего не слышал. Все что было в моей голове это “Facebook?! London?! E5?! Серьезно?!”. Я прифигел, мягко говоря. Мы немного поболтали и он сказал что дальше уже будут вопросы по ЗП, переезд, виза и всякое прочее.
Это значит что тебя берут?
Формально да. На практике мне нужно будет сделать кучу бумажной работы прежде чем я начну работать там. Это займет по мои расчетам от 3-4 месяцев. Если на одном из этих этапов что то сломается, мне откажут в визе или Великобритания закроет границы или вдруг не будет доступных мест для меня, что угодно, я могу остаться где я есть сейчас. Поэтому не хочется говорить “гоп”, пока я не подписал все необходимые бумаги. Но получается я получил офер от Facebook, выкусите те 15 человек которые думали что я будут сосать палец (15-ый это я сам). Cейчас веду переговоры по ЗП.
#story #facebook #google
Созвонились с рекрутором насчет позиции TSE. Он сказал что мои результаты все еще не однозначны и направил меня на собес с Hiring Manager. Она поспрашивала меня про мою мотивацию, мол ты же Software Engineer, нафига тебе сдался Technical Solutions Engineer. Я начал втирать что мол это возможность поработать в Google, набраться опыта, также потому что я уже работаю на похоже позиции сейчас.
Hiring Manager сказала что у них нет в данной момент позиции TSE Platform (веб разработчики), но они ищут ребят для TSE Storage где будет больший упор на знание SQL если мне это интересно то они готовы меня рассмотреть. Я сказал что хотел бы сфокусироваться на Веб и не влезать глубоко в SQL, делать упор на мои основные навыки. На что получил ответ что то типа “Ну хрен знает чувак, мне надо будет тогда обсудить все с твоим рекрутером”. Но был намек что меня отошьют, так как нет подходящей позиции. Посмотрим как пойдет.
За день до того как я уехал на летний отпуск мне позвонил мой рекрутер. Сказал что то типа “I have good news for you…”, я такой воу-воу полегче парень, и он такой “we would like to make you an formal offer…”, и все я уже дальше ничего не слышал. Все что было в моей голове это “Facebook?! London?! E5?! Серьезно?!”. Я прифигел, мягко говоря. Мы немного поболтали и он сказал что дальше уже будут вопросы по ЗП, переезд, виза и всякое прочее.
Это значит что тебя берут?
Формально да. На практике мне нужно будет сделать кучу бумажной работы прежде чем я начну работать там. Это займет по мои расчетам от 3-4 месяцев. Если на одном из этих этапов что то сломается, мне откажут в визе или Великобритания закроет границы или вдруг не будет доступных мест для меня, что угодно, я могу остаться где я есть сейчас. Поэтому не хочется говорить “гоп”, пока я не подписал все необходимые бумаги. Но получается я получил офер от Facebook, выкусите те 15 человек которые думали что я будут сосать палец (15-ый это я сам). Cейчас веду переговоры по ЗП.
#story #facebook #google
🔥5❤1
Обговорили ЗП и всякие ништяки с Facebook.
ЗП или как говорят тут TC (Total Compensation) состоит из 3 частей.
⁃ Base salary - базовый оклад, то что ты получаешь стабильно в конце месяца. Каждый февраль ЗП увеличивается на несколько процентов в зависимости от продуктивности в течении года.
⁃ Bonus - дополнительная денежка поверх Base Salary. Обычно это какой то процент от твоей ЗП в зависимости от твоей продуктивности. Хорошо - 15%, Очень хорошо - 30%, Окуительно - 40% и т.д. Процентаж пересчитывается 2 раза в год.
⁃ Equity - это тоже денежка, но в виде ценных бумаг, акций компаний. Их дают на 4 года, и каждые несколько месяцев эту сумму по частям тебе дают. К примеру если ты договорился на $200K на 4 года, то тебе ежегодно будут давать по $50K.
То есть Base salary+Bonus+Equity = TC (Total Compensation).
Сколько ты зарабатываешь?
Сколько платят в Facebook можно посмотреть на картинке, суммы очень близки к действительности. Но не обольщайся, это сумма Gross Salary, то есть сумма ЗП без вычета налогов. В Великобритании достаточно конские налоги в 40% (на самом деле там работает система прогрессивного налога, но я считаю грубо). То есть получается что почти половину твоих кровных забирает государство. Там могут быть какие то льготы, но я пока не в курсе о них. ЗП с вычетом налогов называется Net Salary или Take Home Salary, те жалкие гроши которые ты получаешь на руки, после того как оплатил налоги.
Что еще дает компания?
⁃ Оплата визы, билетов на самолет для всей семьи.
⁃ Оплата отеля на 2 месяца, пока не найдешь квартиру в городе.
⁃ Relocation bonus - денежка на всякие траты во время переезда (примерно $20K-$30K).
⁃ Перевозка домашнего барахла.
⁃ Крутой офис.
⁃ Рабочий комп и телефон (Айфон и Мак).
⁃ Мед страховка.
⁃ Деньги на транспорт.
⁃ Деньги на химчистку.
⁃ Бесплатная еда в офисе (привет Коронавирус).
⁃ Бесплатное посещение и лечение зубов у дантиста.
⁃ Деньги на спортзал.
⁃ 25 дней отпуска в году.
⁃ Декретный отпуск если заделаю еще детей.
⁃ И много чего еще.
Что дальше?
Мне будут делать Background Check и проверять не напиздел ли я о моем образовании и о прошлом опыте в резюме. Потихоньку собирают документы и данные для разрешения на работу. Надо привезти квартиру в порядок, чтобы при сдаче не было проблем, починить то что дочь тут наломала. Надо доделать проекты на работе, оставить доки чтобы ребята потом смогли подхватить. Настроение хорошее. А какое у вас настроение?
#story #facebook
ЗП или как говорят тут TC (Total Compensation) состоит из 3 частей.
⁃ Base salary - базовый оклад, то что ты получаешь стабильно в конце месяца. Каждый февраль ЗП увеличивается на несколько процентов в зависимости от продуктивности в течении года.
⁃ Bonus - дополнительная денежка поверх Base Salary. Обычно это какой то процент от твоей ЗП в зависимости от твоей продуктивности. Хорошо - 15%, Очень хорошо - 30%, Окуительно - 40% и т.д. Процентаж пересчитывается 2 раза в год.
⁃ Equity - это тоже денежка, но в виде ценных бумаг, акций компаний. Их дают на 4 года, и каждые несколько месяцев эту сумму по частям тебе дают. К примеру если ты договорился на $200K на 4 года, то тебе ежегодно будут давать по $50K.
То есть Base salary+Bonus+Equity = TC (Total Compensation).
Сколько ты зарабатываешь?
Сколько платят в Facebook можно посмотреть на картинке, суммы очень близки к действительности. Но не обольщайся, это сумма Gross Salary, то есть сумма ЗП без вычета налогов. В Великобритании достаточно конские налоги в 40% (на самом деле там работает система прогрессивного налога, но я считаю грубо). То есть получается что почти половину твоих кровных забирает государство. Там могут быть какие то льготы, но я пока не в курсе о них. ЗП с вычетом налогов называется Net Salary или Take Home Salary, те жалкие гроши которые ты получаешь на руки, после того как оплатил налоги.
Что еще дает компания?
⁃ Оплата визы, билетов на самолет для всей семьи.
⁃ Оплата отеля на 2 месяца, пока не найдешь квартиру в городе.
⁃ Relocation bonus - денежка на всякие траты во время переезда (примерно $20K-$30K).
⁃ Перевозка домашнего барахла.
⁃ Крутой офис.
⁃ Рабочий комп и телефон (Айфон и Мак).
⁃ Мед страховка.
⁃ Деньги на транспорт.
⁃ Деньги на химчистку.
⁃ Бесплатная еда в офисе (привет Коронавирус).
⁃ Бесплатное посещение и лечение зубов у дантиста.
⁃ Деньги на спортзал.
⁃ 25 дней отпуска в году.
⁃ Декретный отпуск если заделаю еще детей.
⁃ И много чего еще.
Что дальше?
Мне будут делать Background Check и проверять не напиздел ли я о моем образовании и о прошлом опыте в резюме. Потихоньку собирают документы и данные для разрешения на работу. Надо привезти квартиру в порядок, чтобы при сдаче не было проблем, починить то что дочь тут наломала. Надо доделать проекты на работе, оставить доки чтобы ребята потом смогли подхватить. Настроение хорошее. А какое у вас настроение?
#story #facebook
👍3
В самом начале прохождения собеседования мне не хватало менторства. Я готовился к собеседованиям и не знал правильно ли я все делаю или нет. Очень важно при подготовке к собеседованиям иметь возможность поговорить с кем нибудь у кого есть опыт в этом, чтобы знать в правильном ли направлении ты движешься.
В этом плане мне сильно помогли 2 человека. Clément Mihailescu, основатель AlgoExpert.io, который я использовал для прокачки алгоритмов и Аскар Сатыбалдиев, который познакомил меня с несколькими ребятами которые тоже проходили собеседования в FAANG. И общаясь с этими ребятами я понимал где я допустил ошибку и что я могу улучшить.
В какой то момент я дал себе слово что если я пройду собеседование успешно, то сделаю QnA (вопросы и ответы) на канале, чтобы поделиться тем, что помогло мне пройти собеседование и ответить на те вопросы на которые вы ищите ответы, но не можете найти или боитесь спросить.
Сейчас идет самая скучная часть устройства на работу: проверки, документы и всякая бюрократическая волокита. Я думаю это хорошее время чтобы ответить на ваши вопросы.
Что ты можешь спросить?
⁃ Все что касается подготовки и прохождения собеседования в FAANG.
⁃ Не стесняйтесь задавать вопросы, даже те которые могут показаться вам глупыми.
⁃ Лайкните вопрос, если вы видите что ваш вопрос уже спросили.
⁃ Лайкните вопрос, если вам понравился какой то вопрос.
Как я буду отвечать?
⁃ Я буду смотреть на те вопросы которые чаще спрашивают или больше лайкают и буду отвечать в первую очередь на них.
⁃ Я буду писать ответы в канал в виде постов.
⁃ Если есть несколько простых вопросов, буду объединять их в один пост.
⁃ Я буду смотреть комментарии до конца Августа, и несколько раз в неделю постить ответы на вопросы.
Залетайте в комментарии и задавайте свои вопросы.
#interviewtip #algo
В этом плане мне сильно помогли 2 человека. Clément Mihailescu, основатель AlgoExpert.io, который я использовал для прокачки алгоритмов и Аскар Сатыбалдиев, который познакомил меня с несколькими ребятами которые тоже проходили собеседования в FAANG. И общаясь с этими ребятами я понимал где я допустил ошибку и что я могу улучшить.
В какой то момент я дал себе слово что если я пройду собеседование успешно, то сделаю QnA (вопросы и ответы) на канале, чтобы поделиться тем, что помогло мне пройти собеседование и ответить на те вопросы на которые вы ищите ответы, но не можете найти или боитесь спросить.
Сейчас идет самая скучная часть устройства на работу: проверки, документы и всякая бюрократическая волокита. Я думаю это хорошее время чтобы ответить на ваши вопросы.
Что ты можешь спросить?
⁃ Все что касается подготовки и прохождения собеседования в FAANG.
⁃ Не стесняйтесь задавать вопросы, даже те которые могут показаться вам глупыми.
⁃ Лайкните вопрос, если вы видите что ваш вопрос уже спросили.
⁃ Лайкните вопрос, если вам понравился какой то вопрос.
Как я буду отвечать?
⁃ Я буду смотреть на те вопросы которые чаще спрашивают или больше лайкают и буду отвечать в первую очередь на них.
⁃ Я буду писать ответы в канал в виде постов.
⁃ Если есть несколько простых вопросов, буду объединять их в один пост.
⁃ Я буду смотреть комментарии до конца Августа, и несколько раз в неделю постить ответы на вопросы.
Залетайте в комментарии и задавайте свои вопросы.
#interviewtip #algo
www.algoexpert.io
AlgoExpert | Ace the Coding Interviews
The leading platform to prepare for coding interviews. Master essential algorithms and data structures, and land your dream job with AlgoExpert.
👍3
И так у нас накопилось около 30 вопросов. Некоторые из них пересекаются, некоторые очень специфичные. Всем спасибо что делитесь и лайкаете.
Больше всего набрали лайков вопросы про подготовку, про мой прошлый опыт до прохождения интервью, про затраченное время от нуля до офера. Погнали!
Больше всего набрали лайков вопросы про подготовку, про мой прошлый опыт до прохождения интервью, про затраченное время от нуля до офера. Погнали!