Хочу в Google
3.11K subscribers
52 photos
6 videos
6 files
75 links
🎙 Рассказываю о том как прохожу собеседования на позицию программиста в крупных ИТ компаниях мира, в том числе в Meta, Google, Amazon .
📍 London, United Kingdom

📬 Насчет сотрудничества и обратной связи писать сюда - @hiremegoogle_feedback_bot
Download Telegram
​​Обговорили ЗП и всякие ништяки с 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
👍3
И так у нас накопилось около 30 вопросов. Некоторые из них пересекаются, некоторые очень специфичные. Всем спасибо что делитесь и лайкаете.

Больше всего набрали лайков вопросы про подготовку, про мой прошлый опыт до прохождения интервью, про затраченное время от нуля до офера. Погнали!
Факты обо мне, чтобы вы понимали мой уровень, до 2018 года, до начала подготовки:
Учился в сельской школе на казахском языке в регионе Казахстана до 11 класса.
Не прошел в КТЛ, не смог пройти тест в 7 классе.
В 9 классе отец отдал меня на курсы английского, 2 года учил. Поэтому у меня хороший английский.
После окончания школы подавал в СДУ в Алматы, не смог поступить на грант. Учился на платном.
GPA был 2.8/4. Чуть не ушел на ретейк по математике. Чуть не ушел на ретейк по компьютерным сетям.
Работал в основном в мелких и средних ИТ компаниях. В разное время клепал сайты под заказ, поддерживал интернет магазины и веб порталы.
Один раз дропнул сайт компании, один раз дропнул базу данных. После этого начал многие вещи автоматизировать.
Думал что алгоритмы нафиг не нужны для работы в Казахстане(отчасти я был прав), до этого ничего не знал про алгоритмы.
Dijkstra, BFS, DFS, Binary Search - это были просто термины которые я когда то слышал на лекциях. На деле не имел никакого понятия что это такое.
Знал PHP, Java, Python, JavaScript, MySQL - стандартный набор вэб разработчика, который достался после универа.
Умел писать простой CRUD.
Умел дизайнить  API, хорошо знал теорию REST API. Читал посты в интернетах.
0 знаний про распределенные системы.
0 знаний как работает железо. Я даже не знал что такое ядра в процессорах (чтобы вы понимали мой уровень).

#story
👍2
Как я готовился? Сколько ушло времени?

Список ресурсов я публиковал уже тут https://t.me/hiremegoogle/46

Если вы послушаете историю ребят которые попали FAANG, то в большинстве случаев ни упускают ту часть где они учили алгоритмы. Их рассказы звучат типа “Я учился в универе, Я подался в Google, прошел собеседование и меня в взяли в на работу в Google, Цюрих”. Хотя казалось бы алгоритмы это 90% собеседования, почему люди про это не говорят. Мне это не понятно. Я думаю про это надо рассказывать. Далее рассказываю как я нарабатывал знания алгоритмов.

У меня ушло примерно 1.5-2 года чтобы получить офер. Я начал готовиться осенью 2018 года. Начал тупо решать задачи на Hackerrank. Решал примерно 1-2 задачи в неделю, решал очень медленно даже легкие задачи. Примерно через пару тройку месяцев уже решал 1-2 задачи в день, уровня Easy, уровнь Medium так же решал в течении недели. Читал Dicussions, смотрел лекции на YouTube. Позже пересел на Leetocde, так как там вопросы более близки по контексту к тем что спрашивают на собеседованиях и там отличное сообщество. Задачи решал ежедневно, по 1-2 часа, даже на выходных. Участвовал в онлайн контестах 1-2 раза в месяц. В свободное время либо решал задачи, либо, смотрел лекции. Пытался решать на разные темы, неделю Графы, неделю Строки, неделю Массивы и т.д.

Параллельно я подавался в крупные Казахстанские и Европейские компании, чтобы отточить навыки собеседования и посмотреть какие технические навыки требуются на рынке. Подавал в Германию, Нидерланды, Норвегию, Литву, Польшу и т.д. Просто искал интересные компании в блогах и на  LinkedIn, и откликался на их вакансии. Про резюме писано тут https://t.me/hiremegoogle/5.

В весной 2019 года начал отправлять свое резюме в Booking, Amazon, Facebook, Google, без реферала, попытка не пытка. К этому времени я решал задачи более менее уверенно, но все равно очень медленно. Я понимал что меня отошьют, но было интересно как далеко я зайду. Я понимал что все равно подамся еще раз через год. Booking дали онлайн тест, который я сдал, обещали перезвонить и не перезвонили. Amazon завалил онлайн тест. Facebook посмотрели мое резюме и сразу отшили. Google единственные кто допустили меня до телефонного интервью. Я его прошел, мне попался вопрос который я на днях решал 2-3 раза подряд, чтобы лучше понять рекурсию. И меня позвали на онсайт в Цюрих, который я очевидно завалил. Сейчас я понимаю что мой уровень тогда был очень низкий.

После того как я завалил интервью в Google, я понял что попасть на онсайт не так уж и сложно, нужно просто наработать алгоритмы. Поставил себе цель что буду в течении года интенсивно готовиться и через год обязательно пройду. Я знал чего мне не хватает. Это теоретической базы и практики которая есть у олимпиадых программистов. Я попытался этого добиться слушая лекции и участвуя в онлайн контекстах, просил друзей олимпиадников почитать мне лекции. Но все равно мне не хватало четкой программы и структуры. Я не понимал что учить, а что нет.

Тогда я и наткнулся на AlgoExpert. Это своеобразный Leetcode, только с ограниченным пулом задач на все базовые темы и с видео лекциями, почему и как это решается. Я понимал что это может быть хорошей инвестицией и купил годовой доступ. Я сгруппировал задачи по категориям и решал категория за категорией в течении 2 месяцев, каждый день по 1-2 часа. После того как я все исчерпал, я начал решать все задачи, но теперь уже в случайном порядке. Если раньше я решал одну Medium задачу от часа, до недели, теперь по истечению 4 месяцев я решал Medium задачу за 15-30 минут. После этого мне стало скучно решать одни и те же задачи и я перешел обратно на Leetcode и уже просто набивал руку. Это было круто, это ощущается как суперспособность, ты видишь задачу и уже видишь потенциальные речения задачи. Чтобы справиться со стрессом я использовал Pramp. 1-2 сессий в месяц. Он бесплатный. Этой стратегии я придерживался в течении года. Это уже стало привычкой. Во время собеседований я уже решал по 1-2 задачи по 2 часа утром и 2 часа вечером, в общем 3-4 часа в день. #story #interviewtip #google
👍81
Какой я бы дал совет по подготовке по алгоритмам?

По алгоритмам все крайне просто, но долго и муторно:
Учи обязательно базу, теорию.
Составь себе программу и двигайся по ней.
Найди себе ментора, который будет тебе объяснять что ты делаешь не так.
По всему что выше я использовал AlgoExpert. Очень крутой ресурс. Мне никто не платил.
Решай по 1-2 задачи в день и уделяй этому 2 часа день как минимум.
Решай по пропорции 50% - Medium, 40% - Easy, 10% - Hard.
Для набивания рук, я использовал Leetcode.

Делай упор на постоянство, не старайся решать сразу много. Решай по чуть чуть, но каждый день. Представь что твой мозг это мышца, а ты это спортсмен который готовиться к Олимпиаде. Спортсмен не лежит весь год свесив ноги, а потом тренируется как угорелый перед Олимпиадой. Нет, он тренируется в течении года, по графику. Ты должен готовиться в течении года, а потом просто ближе к собеседованию увеличивать нагрузку. В начале будет сложно, запустить процесс, растрясти жир, размять мышцы. Через пару тройку месяцев станет легче, а через годик будет вообще как у ребенка мороженое отобрать. Постоянство это сила. В будущих лекциях еще расскажу что делать с провалами.

#interviewtip #algo
👍2
​​Вопрос:
Различаются ли интервью для фронтенд и бэкенд разработчиков в faang? Либо всегда будут задачи на алгоритмы?

Ответ:
Вопрос я думаю будет интересен и для мобильных разработчиков. Короткий ответ: отличий по большей части не будет. Стандартный набор алгоритмы, System Design и Behavioural. Как сказал бы Noize MC: “Все как у людей”.

Единственное могут немного отличаться System Design интервью, в ваших ответах и в ожидании интервьюера. К примеру, у тебя спросили про реализацию Facebook Feed API.
Если ты Backend Engineer, то ты будешь рассказывать про API design, про протоколы, возможно затрагивать базу данных и нагрузку.
Если же ты  Frontend Engineer, то ты будешь больше рассказывать о том как ты будешь это отображать, как сделать так чтобы страница не лагала если на нем много постов, как оптимизировать доставку статики и т.д.
Если ты Mobile Engineer, то рассказывать о том как бы сжимал запросы чтобы экономить трафик, как бы ты организовал локальную базу данных и т.д.

Ожидается что у тебя должны быть базовые знания в твоей области. Ожидается что у тебя должны быть базовые знания по Distributed Systems. Нет четкого сценария и ответа на System Design интервью. Опять же ты должен рассказывать либо про то в чем ты силен, либо про то что хочет знать интервьюер. Общайся с интервьюером, он твой друг, он тебе подскажет куда двигаться. И еще раз да, разницы при подготовке особо нет.
👍1
​​Вопрос:
Я хорошо справляюсь с алгоритмическими вопросами, но у меня одна проблема: заикание. И я боюсь что не справлюсь с behavioral interview и с объяснениями решения. Что можете сказать по этому поводу, стоит ли дальше стараться или это всё пустая трата времени?

Ответ:
Это очень интересный вопрос. Я думаю сюда же можно отнести людей с какой либо неполноценностью, людей которые плохо знают английский или людей которые по каким либо другим причинам испытывают трудности с коммуникацией.

Коммуникация это очень важная часть собеседования. Не менее важная часть чем алгоритмы. Под коммуникацией подразумевается очень много вещей:
Приветливость. Поздоровался, спросил как дела.
Вежливость и обходительность
Не “өзінше” ли ты. (Не высокомерный ли ты)
Как ты умеешь слушать
Как ты принимаешь критику и правки
Задаешь ли ты правильные вопросы
Можешь ли ты объяснить свои алгоритм
Умеешь ли ты излагать свои мысли понятно для окружающих
Умеешь ли ты думать вслух, чтобы интервьюер понимал как ты делаешь решения
И много чего еще.

Заметь, тут не говориться о том заикаешься ли ты, или у тебя плохой английски, или у тебя дефект речи и т.д. Это тут не имеет абсолютно никого значения. Если ты можешь найти решение, объяснить свое решение и написать его за 15-20 минут, так чтобы интервьюер это понял, то ты пройдешь это собеседование. Вот и все. Есть много людей без заикания, с академическим английским которые нибуя не умеют излагать свои мысли. Они вот точно не пройдут интервью.

Мой совет, поделай мок собеседования с друзьями или на Pramp, 1-2 раза в неделю. Получи фидбэк, если есть комментарии к твоей речи, попробуй поработать над ней. Делай еще моки, смотри результаты. Над речью тоже надо работать не меньше чем над алгоритмами.

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

#interviewtip #behavioral
👍1
​​Был интересный вопрос про то как улучшить аккуратность и скорость кодинга. Думаю вопрос очень важный, отвечаю.

Думай на бумаге (или на доске)

На настоящем собеседовании тебе придется решать задачу на доске или в редакторе кода. У тебя не будет возможности компилировать, запускать и дебажить код как ты привык делать в реальной жизни. Поэтому очень важно уметь писать код на бумаге и компилировать его у себя в голове.

Как это работает? Перед тем как сесть решать задачу, берешь ручку с бумагой (или доску с маркером), и пишешь свое решение сначала на бумаге.

Шаг 1. Conceptual overview - прежде всего опиши свой алгоритм по шагам, просто словами, как список. Возьми какой нибудь пример и запусти свой алгоритм на этом примере. Записывай как твои данные будут меняться, по мере продвижения по списку. Формат не имеет значения, пиши как тебе удобно. Это поможет проверить жизнеспособность твоего алгоритма, поможет найти  edge case-ы, исправить баги на раннем этапе. Также это хороше упражнение для мозга, который привык к тому что все в разработке уже автоматизировано.

Например, проверка строки на полиндромность:
If string is empty or contains only one symbol return True
Create two pointers, on left end and right end
Create loop from 0 to N/2, check left and right symbols
If pointers are equal, shift them to the center
If pointers are different, return False
Return True in the end
Loop from i: 0 -> 3

i = 0
“ten1et”
^ ^
L R => “t” == “t”
——
i = 1
“ten1et”
^ ^
L R => “e” == “e”
——
i = 2
“ten1et”
^^
LR => “n” != “1” => return False


Шаг 2. Написание кода - теперь после того как ты обкатал свой алгоритм на нескольких разных примерах можно приступать к написанию кода, опять на бумаге. Не псевдокод, а настоящий рабочий код, со всеми точками и запятыми. После того как ты закончил, опять прогони примеры через свой код, опять запиши как меняются данные. Попытайся сломать свой код и найти edge case-ы. Попробуй пустую строку, попробуй строку с четной и нечетной длиной, попробуй строку с цифрами и с символами и т.д.

Пример кода на Python:
def isPalindrome(string):
    for i in range(len(string)//2): 
        if string[i] != string[len(str)-i-1]:
            return False
    return True

Ш
аг 3. Запуск - когда ты уже на 100% уверен что твой код работает, можешь переписать его в редактор и попробовать его запустить. Компилятор выкинул ошибку синтакса? Это нормально, будь готов к тому что код не запуститься с первого раза и его надо будет отредактировать, это нормально. После того как код запустился проверь свои примеры на рабочем коде, сравни со своими записками. Если все не сходится в начале это нормально, нужно нарабатывать навыки решения задач на бумаге постепенно.

На фото мой блокнот.

#interviewtip #algo
👍1
Решил вспомнить во сколько компаний я откликался и завалил интервью. Это история за последние 2 года, которые я активно готовился. Расписал Название компании, Год, 📍 Локация компании, 🗒 На каком этапе мне отказали, ℹ️ Как я откликался:
Kolesa Group,
2019:
📍 Almaty
🗒 Technical interview
ℹ️ HeadHunter
Khan Group, 2019:
📍 Almaty
🗒 Technical interview
ℹ️ HeadHunter
Emesa, 2019:
📍 Amsterdam
🗒 Technical interview
ℹ️ LinkedIn
Bunq, 2019:
📍 Amsterdam
🗒 Onsite
ℹ️ LinkedIn
Shopify, Oberlo, 2019:
📍 Vilnius,
🗒 HR interview
ℹ️ LinkedIn
Delivery Hero, 2019:
📍 Berlin
🗒 Screening
ℹ️ LinkedIn
GetYourGuide, 2019:
📍 Berlin
🗒 Screening
ℹ️ LinkedIn
Spotify, 2019:
📍 Stockholm
🗒 Screening
ℹ️ LinkedIn
Takeaway, 2019:
📍 Berlin
🗒 Technical interview
ℹ️ LinkedIn
Booking, 2019:
📍 Amsterdam
🗒 Screening
ℹ️ LinkedIn
Facebook, 2019:
📍 London
🗒 Screening
ℹ️ Facebook careers website
Amazon, 2019:
📍 Vancouver
🗒 Screening
ℹ️ LinkedIn
Google, 2019:
📍 Zurich,
🗒 Onsite
ℹ️ Google careers website
Prezi, 2019:
📍 Budapest
🗒 Technical interview
ℹ️ LinkedIn
Personio, 2019 :
📍 Munich
🗒 Technical interview
ℹ️ LinkedIn
Amazon, 2020:
📍 Vancouver
🗒 Remote onsite
ℹ️ Referral
Google, 2020:
📍 Warsaw
🗒 Remote onsite
ℹ️ Referral
Apple, 2020:
📍 London
🗒 Screening
ℹ️ Apple careers website

#story #amazon #google #facebook
👍1
Мысли об аудитории канала

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

Также интересно что большинство людей думает откликаться, но через несколько лет. Я же сторонник того чтобы делать это здесь и сейчас и не откладывать это в долгий ящик. О чем я еще напишу, когда буду затрагивать тему провалов и отказов.

Притча в тему

Жил-был старик. Он был очень набожным, молился каждый день, помогал людям, никогда не обманывал и не воровал, был очень честным и порядочным человеком.

У старика была только одна мечта: выиграть в лотерею. И он днем и ночью молил об этом Бога. Но проходили года, а его мечта все не исполнялась.

В какой то момент старик умер и попал в Рай.

В Раю он встретил Бога и говорит:
⁃  Боже, я всю жизнь был набожным человеком, молился каждый день, помогал людям, никогда не обманывал и не воровал, был очень честным и порядочным человеком. У меня была только одна мечта: выиграть в лотерею. Почему ты не исполнил эту мою единственную мечту?
И Бог ему отвечает:
⁃ Ты бы выиграл в лотерею, но какого-то хрена ты так и не купил лотерейный билет.

Выводы у нас на канале вы делаете сами.
О провалах

Самое первое что нужно принять то что провалы будут, их будет много, будет не принято слышать отказы снова и снова, но это нормально. За время откликов только в FAANG мне отказывали 6 раз (Google 2 отказа, Amazon 2 отказа, Facebook 1 отказ, Apple 1 отказ).

Когда я проходил собеседование в Google мой рекрутер сказал очень интересную вещь. Она сказала что то типа: “Не расстраивайся если ты не пройдешь собеседование. Многие кто сейчас работает в компании попали сюда со второго или с третьего раза. Я сама попала сюда только со второго раза. ”. Большинство попадает в FAANG не с первого раза. Держи это в голове.

Отказывают не только слабым кандидатам

Провалы могут постичь как слабых кандидатов, так и сильных кандидатов. Под сильным кандидатом я имею ввиду сильный как в программировании и System Design, так и в коммуникациях. Слабых понятно, но почему отказывают сильным кандидатам?

Есть много факторов которые не зависят от тебя, несмотря на степень твоей подготовки. К примеру тебе попался вопрос который ты плохо практиковал, или интервьюер встал не с той ноги и был излишне придирчив, или накануне твой сосед устроил вечеринку и ты не выспался и т .д. Интервьюер достаточно субъективен. Не смотря на то что ты вообщем можешь быть сильным кандидатом, из за каких то мелочей ему может показаться что ты недостаточно хорош и тебе откажут.

Это называется False-Negative (ложный отказ), то есть ложный отказ  хорошему кандидату. Такие случаи False-Negative очень частые и причина таких случаев кроется в подходе к найму. Компания лучше откажет сильному кандидату (False-Negative), чем возьмет в штат слабого кандидата (False-Positive), так как уволить слабого кандидата потом будет сложнее. При возникновении малейших признаков слабины или сомнений тебе скорее всего откажут. Компания будет брать только тех кандидатов в найме которых уверены на 200%. 

Как это исправить?

Если ты слабый кандидат и тебе отказали, просто надо больше готовиться, это понятно, но что делать если ты попал под False-Negative? Ответ банальный, немного подготовиться и откликнуться еще раз, но попозже. Единственный действенный способ обойти False-Negative это несколько попыток.

Что будет после отказа?

• Тебя не будут добавлять в никакие черные списки. Это бред и распространенный миф. 
• Твой отказ сейчас абсолютно никак не будет влиять на твои будущие отклики. Тебе не будут занижать баллы за прошлые отказы. Это тоже бред. 
• Если тебе отказали после собеседования, это скорее всего не из за твоего опыта(опыт работы важен только при скрининге резюме), или то что ты из какой то там страны третьего мира, или потому что ты не закончил Гарвард. На отказ влияет только твоя деятельность во время собеседования. Остальное не важно.
• После каждого собеседования тебе дадут обратную связь. Тебе дословно скажут где ты провалился, чтобы ты мог лучше подготовиться (все кроме Amazon). 
• После отказа каждому кандидату дают cooldown. Cooldown это период времени в течении которого ты не можешь откликаться на вакансии компании. Обычно это от 6-10 месяцев. Это делается чтобы кандидаты не заваливали своими откликами рекрутеров и чтобы кандидат мог отдохнуть и подготовиться лучше к следующему разу. То есть по сути в одну компанию можно откликаться 1-2 раза в год, остальное время тратить на подготовку. 
• После отказа HR обычно сообщает период для cooldown. Если кандидат сильный дают мало(6 месяцев), если слабый то больше(до 10 месяцев). 
• После того как истечет cooldown можно сново откликаться как и прежде, без каких либо последствий. 
• Нет лимита на количество откликов, хоть сто раз откликайся. 
• Если твой рекрутер до сих пор работает в компании по истечению срока, можно даже повторно ему написать.

Поэтому чем раньше ты откликнешься, тем быстрее ты получишь опыт собеседований в FAANG и преодолеешь свой страх провала, а так же получишь обратную связь, что поможет тебе лучше подготовиться в будущем. Короче, чем скорее ты откликнешься, тем лучше. Есть отличная статья на эту тему http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
#interviewtip
👍1
Нужно знать алгоритмы

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

С чего начать?

Совет тем кто вообще не соприкасался с алгоритмами, то есть мне два года назад:
• Найди какие либо курсы по Алгоритмам и Структурам Данных  (Data Structures and Algorithms), пройди их. Начни хоть с чего нибудь. Читай и слушай все что найдешь. 
• Почитай что такое Big O Notation, Time and Space Complexity. Попробуй подсчитать за какое время запускается твой код, сколько памяти он использует. 
• Начни читать Cracking the Coding Interview, поделай там упражнения.
• Порешай задачи на LeetCode. Начинай с уровня Easy. Решай по 1-2 задачи в день. Если в течении 2-3 дней не получается решить задачу, смотри решение в Discussions, не трать свое время. Поищи лекции в тему на YouTube. Решай похожие задачи чтобы закрепить тему. 
• Узнай за сколько каждый алгоритм запускается и сколько использует памяти (Time and Space Complexity). 
• Узнай за сколько каждая структура данных запускается и сколько использует памяти.
• Узнай почему именно так, а не иначе. Пытайся понять логику за этими подсчётами. 

Какие алгоритмы учить?

На этот вопрос вам мало кто ответит. Нет какого-то единого списка, так как задачи на собеседованиях постоянно меняются и нет четкой границы. Но есть базовые алгоритмы с которых стоит начать:
• Array Prefix Sum, Range Sum, Two pointers, Is Palindrome, Sliding Window
• Binary Search
• Kadane’s algorithm
• Longest Increasing Subsequence
• Recursion, Fibonacci
• BFS, DFS
• Dijkstra 
• Topological Sort
• Merge Sort, Quick Sort
• Inorder, Preorder, Postorder Tree Traversals
• Union Find
Это далеко не полный список. Посмотрите лекции Tushar Roy на YouTube. Он очень крутой. Посмотрите курс по алгоритмам от Hackerrank на YouTube. 

Какие структуры данных  учить?

Их тоже очень много. Но можете начать с:
• String
• Array
• Stack
• Queue
• LinkedList
• Graph
• Tree
• Heap
Это далеко не полный список. 

Что мне попадалось часто?

Это не значит что тебе попадется то же самое, по этому учи больше:
• String
• Array Prefix Sum, Range Sum, Two pointers, Is Palindrome, Sliding Window (это вообще классика)
• Stack
• Heap (классика)
• Graph
• Tree
• Binary Search
• Recursion
• BFS, DFS, Topological Sort (тоже классика)
• Quick Sort

Challenge 

И вот вам еще упражнение на разогрев. Есть список классических задач по алгоритмам на LeetCode, называется Blind Curated 75. https://leetcode.com/list?selectedList=x48j71o1

Выбери  себе любые 3 задачи уровня Easy, Medium и попробуй решить каждую за 15-20 минут, поставь таймер. Вообщем у тебя уйдет час на это. Напишите в опроснике за сколько вы решали задачи в среднем. Подсчитай Time and Space Complexity своего алгоритма.

#interviewtip #algo
👍2
7 техник которые помогут тебе быстрее решать задачи

Судя по итогам опроса большая часть аудитории канала испытывает проблемы с решением алгоритмических задач. Если ты активно решаешь задачи по алгоритмам в течении полу года и у тебя некоторые задачи отнимают от часа или больше времени, это нормально. Но это средний результат, и есть куда расти. Чтобы пройти собеседование тебе нужно научиться решать задачи за 15-20 минут. Это займет время, но это возможно и достижимо. Сегодня я хотел бы поделиться 7 техниками которые помогут тебе быстрее решать задачи.

Техника 1. Решай много.

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

Техника 2. Найди неоптимальное решение (brute force solution ). 

Попытайся найти хоть какое либо решение. Оно может быть не самым умным, не самым оптимальным, это нормально. Ты сможешь оптимизировать его позже. Неоптимальное решение это лучше чем отсутсвие решения. 

Техника 3. Думай на бумаге. 

Про это я писал тут https://t.me/hiremegoogle/65 

Техника 4. Внимательно перечитай задачу. 

Часто в самой задаче дается подсказка на ее решение. К примеру дают “отсортированный массив” или “только цифры больше нуля” и т.д. Эти подробности мы часто упускаем когда думаем о решении, хотя такие детали могут помочь найти быстрое и простое решение. К примеру, если вам нужно найти цифру в  “отсортированном  массиве” или “массив с одним пиком” или “отсортированный массив который был сдвинут вправо или влево”, то самый оптимальный способ это использовать бинарный поиск. Поэтому внимательно читайте текст задачи. 

Техника 5. Используй HashMap.

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

Техника 6. Используй структуры данных. 

Так как у каждой структуры данных есть свои преимущества и недостатки, подумай какая структура данных может помочь тебе в решении данной задачи и от этого отталкивайся. К примеру, известная задача LRU Cache, где надо быстро (за O(1) время) добавлять и удалять пару key, value, но при этом нужно помнить порядок добавления ключей. Для хранения пары key, value можно использовать HashMap, это очевидно. Но как помнить порядок ключей? Добавлять ключи в массив? Сколько стоит удалить элемент из массива? O(1) если элемент из конца массива и O(N) все остальные позиции в массиве. O(N) это не далеко не O(1). Кто еще умеет хранить порядок, но также умеет удалять данные за O(1) время? Ответ LinkedList, так как для удаление достаточно переставить ссылки. Значит можно использовать связку HashMap+LinkedList и т.д.

Техника 7. Посмотри решение

Ну если совсем не прет, то не чурайся смотреть готовое решение. Это нормально. Все мы это делаем. Как понять когда пора? Если ты не можешь решить задачу в течении  1-2 дней, то смело смотри решение, не трать свое время, не надо никому ничего доказывать. Главные правила тут это:
• Попытайся решить сам по началу.
• Не пытайся просто слизать решение, почитай комментарии и попытайся понять логику за этим решением.
• Почитай про алгоритмы и структуры данных которые были использованы.
• Попробуй написать решение сам, своими руками, без copy/paste.
• Попробуй решать похожие задачи. 
• Через некоторые время, попробуй повторно решить эту задачу, чтобы закрепить материал.  

Надеюсь эти техники помогут тебе решать задачи быстрее. Если у тебя есть еще техники делись в комментариях.  

#interviewtip #algo
👍5
Всем привет! Это сообщение для новых ребят которое задаются вопросами о чем этот канал.

О чем канал?

Это анонимный канал. Тут я рассказываю в реальном времени о том как я готовлюсь и прохожу собеседования в крупные ИТ компании, в том числе и в FAANG (Facebook, Apple, Amazon, Netflix, Google  и т.д.), также делюсь полезными советами. Изначально это был своеобразный дневник где я писал свой прогресс, чтобы мотивировать себя и друзей готовиться к собеседованиям.

Завел канал в Ноябре 2019 и еженедельно писал свой процесс подготовки и прохождения собеседований. Вы можете использовать эти хештеги чтобы найти посты по определённой тематике.
#story - Истории о там как готовился и проходил собеседования.
#interviewtip - Советы по тому как готовиться к собеседованиям.
#resume #algo #systemdesign #behavioral - Советы по тематикам резюме, алгортмов, System Design и Behavioural соотвественно.
#google #facebook #amazon #outtalent - Истории прохождения собеседований в компании.

Кто ты?

Я программист с опытом 3-5 лет. Долгое время жил, учился и работал в Алматы, Казахстан. Пару лет назад меня пригласили в одну крупную ИТ компанию в Европе на позицию старшего разработчика и последние пару лет я нахожусь тут. Женат, есть ребенок.

Учился я в обычной сельской школе и закончил казахстанский ВУЗ по специальности ВТиПО. Никогда не занимался ACM (спортивное программирование). До 2018 года я вообще не знал ничего про алгоритмы и начал активно это наверстывать.

За год подготовки я прокачался до того что летом 2019 попал на онсайт собеседование в Google, Zurich и завалил его.  Тогда я понял что попасть в компанию как Google не так уж и сложно как я думал. И я поставил себе цель сделать это через год. Тогда родилось и название канала “Хочу в Google”.

Какой статус сейчас?

В августе 2020 я получил офер от компании Facebook, London на позицию E5 Software Engineer. В данный момент я активно собираю документы, делаю визу и готовлюсь к переезду в Лондон. Весь процесс, от отклика до офера, описан на канале.

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

Что дальше?

Дальше я планирую немного отдохнуть от процесса подготовки, пока будут переезжать, привыкать к новому месту. Но скоро снова начну решать задачи на LeetCode и читать статьи по System Design. Планирую также рассказывать про переезд и работу в Facebook, London во время пандемии.

Рассказывайте о канале своим знакомым. Делитесь своими мыслями насчет канала в комментариях. 

#story #facebook
👍2
Хочу в Google pinned «Всем привет! Это сообщение для новых ребят которое задаются вопросами о чем этот канал. О чем канал? Это анонимный канал. Тут я рассказываю в реальном времени о том как я готовлюсь и прохожу собеседования в крупные ИТ компании, в том числе и в FAANG (Facebook…»