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

📬 Насчет сотрудничества и обратной связи писать сюда - @hiremegoogle_feedback_bot
Download Telegram
​​Вопрос:
Я хорошо справляюсь с алгоритмическими вопросами, но у меня одна проблема: заикание. И я боюсь что не справлюсь с 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…»
Новости с полей

Все еще идет процесс оформления документов. Прошел успешно background check, начали вести переговоры с компаниями которые будут помогать нам перевозить вещи, искать квартиру. Скоро начнем делать инвентаризацию, смотреть что уедет, а что будем продавать.

Начали смотреть недвижимость и цены в Лондоне. Пиздец там дорого. К примеру хорошая 3 комнатная (как там говорят, 2 bedroom) квартира, недалеко от центра обойдется в £2000 в месяц. Плюс на первое время надо будет еще дать депозит за квартиру, которая ровняется 5 неделям проживания в квартире, это примерно £2300 сверху. И того за первый месяц нам надо будет отдать около £4000, это на минуточку 2 млн тенге за первый месяц в трешке, Крал. К счастью часть этих денег будет возмещена компанией через пару месяцев. Цены за детсады вообще лучше не гуглить.

За это время также успел получить подтверждение знания английского от UK NARIC, сработало что учился на английском. Это значит что я могу подаваться на визу не сдавая тесты типа IETLTS.

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

Завел карту в Revolute, на случай если надо будет делать оплату в фунтах. Приедет в начале октября.

Тем временем работаю работу, задачь по горло, ничего не успеваю.

#story #facebook
👍1
Продуктивность 101.

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

• Выдели себе Alone Time (что это читай ниже) 1-2 часа в день как минимум. Можно делать несколько таких интервалов и между ними делать передышку в 15-20 минут, чтобы ходить, общаться, проверять соцсети и т.д. 
• Делай список дел на день из 3-4 важных задач, это поможет не тупить и терять время. Придерживайся этого списка. 
• Сделай себе рабочее место, стол, стул, свет, хороший воздух, минимум шума. Желательно место изолированное, чтобы там не ходили люди, желательно отдельная комната. Никогда не работай в кафе, это говно собачье. 
• На это время телефон на беззвучный, экраном вниз, и подальше от рабочего места.
• Отключи на телефоне уведомления вообще, кроме мессенджеров (ибо может быть что то важное), убери отображение количества уведомлений на иконке приложения. Проверяй почту и соц сети вручную, раз в 3-4 часа, чем реже тем лучше. В рабочее время у меня телефон постоянно на беззвучном, если я не жду звонков, к примеру если должен прийти сантехник или должна позвонить жена. 
• Если ты напишешь комментарии в соц сети, или ответишь на письмо на пару часов позже ничего не измениться, мир не рухнет. Поэтому забей на это, расслабься, ответишь как закончиться Alone Time. Исключение, если ты не программист, а SMM.
• Никогда не смотри видео, не слушай музыку, подкасты или что то еще во время работы. Мозг может работать только в одном потоке. Не отвлекай его. Сосредоточься на работе. 
• Тем не менее одевай наушники, чтобы показать окружающим что тебя нельзя беспокоить. Я порой сижу в наушниках, без какой либо надобности, использую их больше для шумоподавления.
• Имей стакан воды или стакан чая под рукой, чтобы не бегать на кухню.
• Не работай на голодный желудок.
• Высыпайся.

Alone Time

(Это выдержки из книги Getting Real by Basecamp)

People need uninterrupted time to get things done. There are only about 4-5 hours during the day that we’re all up and working together. At other times, the us team is sleep- ing while David, who’s in Denmark, is working. The rest of the time, we’re working while David is sleeping. This gives us about half of the day together and the other half alone.

Guess which part of the day we get the most work done? The alone part. It’s not that surprising really. Many people prefer to work either early in the morning or late at night – times when they’re not being bothered.

When you have a long stretch when you aren’t bothered, you can get in the zone. The zone is when you are most productive. It’s when you don’t have to mindshift between various tasks. It’s when you aren’t interrupted to answer a question or look up something or send an email or answer an im. The alone zone is where real progress is made. 

Getting in the zone takes time. And that’s why interruption is your enemy. It’s like rem sleep – you don’t just go to rem sleep, you go to sleep first and you make your way to rem. Any interruptions force you to start over. rem is where the real sleep magic happens. The alone time zone is where the real development magic happens

Set up a rule at work: Make half the day alone time. From 10am-2pm, no one can talk to one another (except during lunch). Or make the first or the last half of the day the alone time period. Just make sure this period is contiguous in order to avoid productivity-killing interruptions.

A successful alone time period means letting go of communication addiction. During alone time, give up instant messenging, phone calls, and meetings. Avoid any email thread that’s going to require an immediate response. Just shut up and get to work. 

#interviewtip
👍1
Нужно знать System Deign.

Трудность System Design собеседования в том что вопросы тут “open ended” (тут нет четкого правильного или неправильного ответа, как в алгоритмах), плюс тем и понятий там так много что черт ногу сломит.

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

Совет тем кто вообще не соприкасался с System Design:
• Почитай курс Grokking the system design interview by educative.io (курс платный, но можно нагуглить копию этого курса). Умные люди скажут что он поверхностный. Но это отличный ресурс для первого знакомства, чтобы начать вникать в тему. Он отлично передает структуру собеседования, дает понимание куда двигаться, что спрашивать, на что обращать внимание.
• Загугли и почитай курс System Design Primer.
• Посмотри канал  Gaurav Sen на YouTube, очень крутой канал. 
• Посмотри канал  Success in Tech на YouTube
• Посмотри лекцию Jackson Gabbard по System Design. 
• На курсах которые я порекомендовал попробуй поделать примеры задач, типа “Design TinyUrl”, попробуй симулировать настоящее собеседование и объяснить все на доске не глядя в конспект. 
• Не надо запоминать точные ответы которые там написаны. Тут нет верного или нервного ответа. Учи концепции и учи где и как их применять. 
• Тут нет золотого молотка который решит все твои проблемы. Тут нет одной деревянной концепции которую ты можешь запомнить и применять везде. Не делай так, тебя сразу отклонят.
• Старайся понимать в чем плюсы и минусы разных технологий.
• Почитай как работает Facebook, Google, Uber в реальной жизни. В интернетах очень много ресурсов на эту тему. 
• Элементарно почитай про технологии которые ты используешь каждый день, чем JSON лучше Protobuf, чем MySQL  лучше PostgreSQL?
• Если у тебя дофига времени почитай книгу Designing Data-Intensive Applications by Martin Kleppmann. Это акуительная книга. Ты почувствуешь е себя очень тупым в начале, но очень умным в конце. 
• Ну и самое главное применяй все это на практике, на работе, на личных проектах. Добавь индексы в базу данных, поставь gzip на выдачу статики и т.д. Опыт тут играет огромную роль. 

Как вести себя во время собеседования?

• Веди разговор. 80% времени должен говорить ты. Но ты не должен болтать без умолку, нужно общаться с интервьюером и понимать куда двигаться и какие есть требования к системе. Тут нужен баланс. Нужно вести разговор, но в то же время не уйти в себя. Тут мне отлично помогли mock interview с друзьями. 
• Не используй buzzwords (ключевые слова), типа Cassandra, Redis, Sharding и т.д. без контекста или без обоснования. Если ты выбрасываешь какую то технологию на стол, ты должен на 100% быть уверенным что она тут необходима. 
• Задавай вопросы и общайся как с коллегой, представь что вы обсуждаете новую фичу на работе. Четко обозначь  Scope of Work (объем работ) с самого начала, чтобы не тратить время не темы которые нас не интересуют. 
• Reasoning, обосновывай свои решения и приводи аргументы за или против тех или иных решений. 
• Tradeoff, выбирай одни решения перед другими в зависимости от требований системы.

Какие темы учить?

Тема очень обширная, как уровень коррупции в Казахстане. Но можешь начать с этих тем:
• TCP/IP, UDP
• DNS, HTTP 1, HTTP2, Websockets, Long Polling, HTTPS
• API Design (REST, gRPC, SOAP)
• Availability, Durability, Consistency, Scalability
• CAP Theorem
• ACID vs BASE
• Latency, Bandwidth, Throughput
• Vertical and Horizontal scaling
• Partitioning, Replication
• Consistent Hashing
• Load Balancer  
• Strong vs Eventual consistency
• SQL vs NoSQL
• Key value Store, Document Store
• Caching
• Queues and Topics
• CPU, Memory, Hard Drive, Network
• OOP, Functional Programming
• Design patterns, Singleton, Factory, Publisher/Subscriber. 
• Threads, Concurrency,  Locking 

Это разумеется не полный список того что надо знать. То что в списке это супер базовые темы. Ты не обязан знать все это на 100%, но какие то основы знать надо.

Что из этого мне попадалось часто?

Все из списка выше и даже больше. 

#interviewtip #systemdesign
👍21
В комментарии к прошлому посту мне дали хороший совет, добавить хештеги к постам, чтобы было удобно искать и читать контент. Я потратил немного времени на выходных и добавил их. Вы можете использовать эти хештеги чтобы найти посты по определённой тематике.

#story - Истории о там как готовился и проходил собеседования.
#interviewtip - Советы по тому как готовиться к собеседованиям.
#resume #algo #systemdesign #behavioral - Советы по тематикам резюме, алгортмов, System Design и Behavioural соотвественно.
#google #facebook #amazon #outtalent - Истории прохождения собеседований в компании.
👍1
​​Новости с полей. Сегодня сообщил своему менеджеру о том что получил офер от Facebook. Он взгрустнул, просит остаться еще до конца года и закрыть проекты, так как в связи с короной будет тяжело искать новых ребят на мое место. Я вежливо отказался, объясняя это тем что хотел бы переехать пока не закрыли опять границы из за второй волны и пока не начался декабрь, так как в декабре все уйдут на рождественские выходные.

Сказал что было бы круто закрыть все за месяц и к концу октября уже двинуть в Лондон. Но мой менеджер сказал что это маловероятно, так как мой Notice Period (период времени который я должен отработать перед уходом) это один месяц и он будет считаться только со следующего месяца, то есть с ноября. Он сказал что подумает, есть подозрение что меня оставят еще на месяц, чтобы я закрыл текущие проекты.

Нет больших проблем что меня оставят, Facebook будет все равно платить ЗП с ноября, даже если я выйду позже, будет больше времени закрыть все документы. Из минусов нужно будет либо продлевать контракт в текущей квартире, либо искать новую на ноябрь, придется больше пахать чтобы закрыть все проекты до ухода.

Тем временем нам назначили время для подачи документов на визу. Собираем миллион копий разных документов, надеюсь что все пройдет чики-пуки.

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

#story
👍2
Много разных мыслей.

Меня оставляют до конца ноября. Сообщил об этом своему рекрутеру, дату начала в Facebook сдвинули на начало декабря. Жду теперь ответа от хозяина квартиры, надеюсь он нас оставит.

Написал письмо в HR департамент компании чтобы начали процесс ухода из компании. Процесс запузырился.

Отправили документы на визу в посольство Великобритании. Сказали что ответ будет готов в течении 2-3 недель. Визу пришлют на домашний адрес. Мы должны заехать на территорию Великобритании до конца января.

А тем временем в Европе наступает вторая волна коронавируса. Ужесточаются картинные меры, снова закрываются границы. Скорее всего это докатиться и до Казахстана через месяцок, так что берегите себя.

Телеграмм добавил фичу комментариев. Я включил его для этой группы, посмотрим как это дело работает.

#story
👍1
Походу нативные комменты Телеграмм не работают с реакциями ☹️
Мотивация 

Процесс подготовки к собеседованию очень долгий и муторный. Это не спринт, а скорее марафон. Как все это не забросить и довести все до конца?

Строй привычки

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

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

Часто такое бывало что я садился решать задачи поздно, так как надо было укладывать дочь спать. Бывали времена когда я был так измотан, что мозг уже не варил. Даже тогда я садился, старался решить хотя бы пару задач уровня Easy на LeetCode, чтобы просто не изменять привычкам. 

Создавай вокруг себя атмосферу

Создавай вокруг себя атмосферу подготовки к собеседованию. К примеру, я подписался на YouTube каналы про алгоритмы (Clément Mihailescu, Tushar Roy, Gaurav Sen  и т.д.), купил годовую подписку на  LeetCode и начал участвовать в ежемесячных марафонах, добавился в чат с ребятами которые тоже готовились по алгоритмам, сделал телеграмм канал про подготовку к собеседованиям и даже ездил на KBTU Open (соревнования по спортивному программированию) чтобы посмотреть как решают задачи профессионалы. Старался сделать так, чтобы все вокруг было напоминанием о том что мне нужно готовиться, чтобы я варился во всем этом. 

Визуализируй (мечтай)

Это банально, это звучит тупо, но мне это помогает. Время от времени представлял себе как я прохожу собеседование, как получаю офер, смотрел ЗП в интернетах, считал куда все это потрачу, представлял как гуляю по Лондону или Цюриху с семьей, как рассказываю одноклассникам что работаю в COOLCOMPANYNAME. Делал это пока мыл посуду или купался в душе. Визуализация помогала мне не опускать руки и не терять азарт. Так же это помогало мне держать картину будущего в голове и не забывать куда я иду и зачем. 

Отказы делают тебя лучше

Многие из нас боятся отказов, но отказы это неотъемлемая часть процесса. Отказы не получает только тот, кто ничего не делает. Они будут и их будет много. За последние два года я получил отказы от более чем 20 компаний. Чем быстрее ты получишь свой первый отказ тем лучше. Это как нырять в холодную воду, ты долго стоишь, мнешь сиськи, ломаешься. А потом прыгаешь, тебя накатывать холодной водой, организм в шоке, тебя трясет, но через некоторое время это проходит. И ты уже не боишься нырять еще и еще, так как твой организм это уже пережил это, твой мозг уже осознал это чувство. 

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

#interviewtip
👍1
Теперь я официально покидаю компанию. Подписал свое заявление об уходе. Мой менеджер объявил об этом команде. Сейчас заполняю кучу документов в связи с этим.

Приехали наши паспорта. У нашей семьи теперь есть виза в Великобританию. У нас есть 90 дней чтобы заехать на территорию Великобритании. Будем надеяться что до конца Января границы будут открытыми. 

Поскольку я уже официально покидаю компанию, думаю могу раскрыть немного деталей о том где я работаю. 

Что за компания?

Я являюсь Старшим Разработчиком (Senior Software Engineer) в компании EPAM.  Офис компании закрыт из за говновируса, с марта 2020 работаю из дому. 

Где ты находишься?

Живу и работаю я в городе Краков, Польша. Также со мной тут жена и ребенок. Переехали сюда летом 2019. Прекрасный город, прекрасные люди. 

Как ты там оказался?

До лета 2019 я жил и работал в Алматы, Казахстан. Работал в обычной софтверной компании. Писали внутренние инструменты для разных бизнесов. Примерно в тоже время когда я проходил собеседование в Google Zurich, со мной связались рекрутеры из EPAM Poland. Нашли мое резюме в LinkedIn. В итоге Google меня отшили, а EPAM сделал мне офер. Я согласился. 

Чем ты там занимался?

Занимался я тем же что и в Алматы. Делал инструменты автоматизации бизнеса для нашего клиента. Клепал формы на фронтенде и делал обычный CRUD на бэкенде. Ничего космического. 

На чем пишешь?

В Алматы я писал обычно на PHP+VueJS. В EPAM наш стэк был во многом навязан клиентом, Python+Angular+Dart (тут вы можете примерно понять кто был нашим клиентом).

Как тебе компания?

EPAM это аутсорсинговая компания, поэтому все сильно зависит от того в какую команду ты попадаешь. Мне в этом плане повезло, я работал в отличной маленькой команде. WLB (Work–life balance) тут отличный. ЗП средние по рынку. Дают страховку и всякие ништяки от компании. По рабочей визе можно кататься по Европе. В общем впечатления позитивные. 

Планирую на неделе написать пост по теме #interviewtip. Если есть вопросы по прохождению собеседования в FAANG, пишите. 

#story
👍2