
Заглавието на статията изглежда като епичен провал, но всъщност не е толкова еднозначно. Във всеки случай, тази история завърши доста положително, макар и не в Google. Но това е тема за друга статия. В тази статия ще разкажа за три неща: как премина моят процес на подготовка, как протичаха интервютата в Google и защо, според мен, всичко не е толкова еднозначно, колкото може да изглежда.
Как всичко започна
В един хладен кипърски зимен вечер ми хрумна мисълта, че познанията ми в класическите компютърни науки са доста далеч от средните, и трябва да направя нещо по въпроса. Ако случайно някой не е чел защо вечерта е кипърска и хладна, може да разбере това. . След някои размисли реших първо да премина онлайн курс по алгоритми и структури от данни. Чух от един бивш колега за курса на Робърт Седжуик (Robert Sedgewick) в Coursera. Курсът се състои от две части ( и ). Ако случайно линковете се променят, винаги може да се потърси по името на автора. Всяка част трае 6 седмици. В началото на седмицата се предоставят лекции, а през седмицата трябва да се решават упражнения. Първата част на курса обхваща основните структури от данни, основните видове сортиране и сложността на алгоритмите. Втората част вече е по-предизвикателна, започва с графи и завършва с неща като Линейно програмиране и Нереализируемост. След като обмислих всичко това, стигнах до извода, че именно това ми е нужно. Тук любопитният читател може да попита какво общо има Google с това. И действително, до момента той не беше свързан с темата. Но ми трябваше цел, тъй като да учиш в продължение на 12 седмици вечер без цел е трудна задача. Каква може да бъде целта при придобиването на нови знания? Разбира се, тяхното практическо приложение. В ежедневието това е доста проблематично, но по време на интервю в голяма компания става лесно. Леко гуглене показа, че Google (извинете за повторението) е една от най-големите компании в Европа (а аз разглеждах именно Европа), в която провеждат такива интервюта. А именно, офисът им се намира в Цюрих, Швейцария. Така решено — учим и отиваме на интервю в Google.
Подготовка за първия опит
Изминаха 12 седмици незабележимо и завърших двата курса. Впечатленията ми от курсовете са повече от положителни и мога да ги препоръчам на всички заинтересовани. Харесаха ми курсовете по следните причини:
- Лекторът говори на достатъчно ясен английски
- Материалът е добре структуриран
- Страхотни презентации, показващи вътрешността на всеки алгоритъм
- Умела подборка на материала
- Интересни упражнения
- Упражненията се проверяват автоматично на сайта, след което се създава отчет
Работата ми по курсовете обикновено преминаваше по следния начин. За 1-2 дни слушах лекциите. След това преминавах бърз тест за знания. Останалата част от седмицата правих упражнението в няколко итерации. След първата получавах 30-70%, а следващите довеждаха резултата до 97-100%. Упражнението обикновено се състоеше в реализирането на някой алгоритъм, например или .
След завършването на курсовете осъзнах, че много познания означават много мъки. Ако преди просто знаех, че нищо не знам, то сега започнах да осъзнавам какво точно не знам.
Тъй като все още беше май месец, а интервюто планирах за есента, реших да продължа образованието си. След преглед на изискванията за вакансията, взех решение да продължа паралелно в две направления: да продължа изучаването на алгоритми и да премина основен курс по машинно обучение. За първата цел реших да премина от курсове на книга и избрах монументалния труд на Стивън Скиена (Steven Skiena) „Алгоритми. Ръководство по разработка“ (The Algorithm Design Manual). Не е толкова монументален, колкото този на Кнут, но въпреки това. За втората цел отново се записах на Coursera и се записах за курса на Ендрю Ын (Andrew Ng) .
Минаха още 3 месеца и завърших курса и книгата.
Нека да започнем с книгата. Четенето се оказа достатъчно интересно, макар и не лесно. В принципе, бих я препоръчал книгата, но не веднага. В общи линии, книгата предоставя по-дълбок анализ на това, което научих на курсовете. Освен това открих за себе си (от формална гледна точка) неща като хеуристики и динамично програмиране. Разбира се, преди съм ги използвал, но не знаех как се наричат. В книгата също така има известно количество анекдоти от живота на автора (War Story), които малко разсекретяват академичността на изложението. Втората половина на книгата всъщност може да бъде пропусната, там става по-скоро дума за описание на съществуващите проблеми и методи за тяхното решение. Полезно е, ако редовно се прилага на практика, иначе веднага ще бъде забравено.
Курсът определено ме зарадва. Авторът явно знае какво прави и разказва интересно. Освен това доста от материалите, а именно линейната алгебра и основите на невронните мрежи, помнех от университета, така че не срещнах особени затруднения. Структурата на курса е достатъчно стандартна. Курсът е разбит на седмици. Всяка седмица първо следват лекции, смесени с кратки тестове. След лекциите се дава задача, която трябва да се изпълни, да се изпрати и тя автоматично ще бъде проверена. В кратце, списъкът на материалите в курса е следният:
— функция на разходите
— линейна регресия
— градиентен спуск
— мащабиране на признаците
— нормално уравнение
— логистична регресия
— многокласова класификация (един срещу всички)
— невронни мрежи
— обратна пропаганда
— регуляризация
— предразположение/вариация
— криви на обучение
— метрики за грешка (прецизност, отзив, F1)
— Машини с опорни вектори (класификация с голям марж)
— K-средни
— Анализ на основните компоненти
— откриване на аномалии
— колаборативно филтриране (система за препоръки)
— стохастичен, мини-партиден, партидни градиентни спускания
— онлайн обучение
— map reduce
— анализ на ограниченията
След преминаването на курса, разбиране на всички тези теми присъстваше. След 2 години почти всичко естествено беше забравено. Препоръчвам на тези, които не са запознати с машинното обучение и искат да получат добро разбиране на основните неща за напредване.
Първи опит
На двора вече беше септември и дойде време да помисля за интервю за работа. Тъй като подаването чрез сайта е доста рисковано, се захванах с търсенето на познати, работещи в Google. Изборът падна на , тъй като той беше единственият, когото познавах директно (не личнo). Той се съгласи да предаде моето резюме, и скоро получих писмо от рекрутера, което предлагаше да резервирам час в календара му за първия разговор. След няколко дни се проведе обаждане. Опитахме се да комуникираме чрез Hangouts, но качеството беше ужасно, затова преминахме на телефон. Първоначално бързо обсъдихме стандартни въпроси как, защо и за какво, а след това преминахме към техническия скрининг. Той включваше десетина въпроса в духа на „каква е сложността на вмъкване в hash map“, „какви балансирани дървета знаете“. Не е сложно, ако имате основни знания по тези теми. Скринингът премина добре и след резултатите решихме да организираме първото интервю след седмица.
Интервюто също беше през Hangouts. Първоначално говорихме около 5 минути за мен, след което преминахме към задача. Задачата беше относно графи. Аз бързо разбрах какво трябва да направя, но избрах грешен алгоритъм. Когато започнах да пиша кода, осъзнах това и преминах на друг вариант, който и завърших. Интервюерът зададе няколко въпроса относно сложността на алгоритъма и попита, дали може да бъде по-бързо. В един момент забавях и не успях. На това време свърши и ние се разделихме. След около 10 минути ми просветна, че вместо алгоритъма на Дейкстра, който използвах, в конкретната задача можеше да се използва търсене в ширина, и това щеше да бъде по-бързо. След известно време рекрутерът се обади и каза, че интервюто като цяло е преминало добре и трябва да организираме още едно. Уговорихме се за още след седмица.
Този път нещата не вървяха добре. Докато първият път интервюиращият беше приятелски настроен и общителен, този път беше някак мрачен. Не успях веднага да разбера задачата, въпреки че идеите, които представих, в принципе можеха да доведат до решение. В крайна сметка, след няколко подсказки от интервюиращия, достигнах до решението. Този път отново се оказа търсене в ширина, само че от няколко точки. Написах решенията навреме, но забравих за граничните случаи. След известно време се обади рекрутър и съобщи, че този път интервюиращият е останал недоволен, тъй като по негово мнение ми бяха нужни твърде много подсказки (3 или 4) и постоянно променях кода по време на писането. По резултатите от двете интервюта беше взето решение да не продължавам, а да отложа следващото интервю за година, ако имам такова желание. С това и се сбогувахме.
От тази история извлякох няколко урока:
- Теорията е добра, но трябва бързо да се ориентираш в нея.
- Теорията без практика не помага. Трябва да решаваш задачи и да достигнеш автоматизъм в писането на код.
- Много зависи от интервюиращия. И с това не може да се направи нищо.
Подготовка за втори опит
След като обмислих ситуацията, взех решение да опитам отново след година. И леко преработих целта. Ако преди основната цел беше обучението, а интервюто в Google като далечна морковка, то сега преминаването на интервюто стана цел, а обучението – средство.
И така, беше разработен нов план, в който влизаха следните пунктове:
- Да продължа да изучавам теорията чрез четене на книги и статии.
- Да реша алгоритмични задачи в количество от 500-1000 броя.
- Да продължа да изучавам теорията чрез гледане на видеа.
- Да продължа да изучавам теорията чрез курсове.
- Да изследвам опита на други хора по време на интервюта в Google.
Планът беше изпълнен от мен за година. По-долу ще опиша какво точно правех по всеки от пунктовете.
Книги и статии
Броят на прочетените статии дори не мога да си спомня, четях ги както на руски, така и на английски. Най-полезният сайт може би беше Тук е събрано описание на голямо количество интересни алгоритми с примери на код.
Прочетох книгите 5: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Те могат да се разделят на 2 категории. Първата категория включва книгите на Седжвик и Корман. Това е теория. Останалите са подготовка за интервюта. Седжвик в книгата си разказва приблизително същото, което и в своите курсове. Просто в писмен вид. Няма особен смисъл да се чете внимателно, ако сте преминали курса, но си струва да се погледне в случай на всичко. Ако не сте гледали курса, има смисъл да прочетете. Корман ми се стори прекалено досаден. Искрено казано, с трудност го осилих. Извлякох единствено , да, и няколко рядко използвани структури от данни (Fibonacci heap, van Emde Boas tree, radix heap).
Книгата за подготовка за интервю е хубаво да се прочете поне една. Всички са изградени по един и същ принцип. Описват процеса на интервю в големи технологични компании, дават основни неща от Computer Science, задачи по тези основни неща, решения на задачите и анализ на решенията. От трите споменати, бих препоръчал Cracking the Coding Interview като основна, а останалите по желание.
Алгоритмични задачи
Това вероятно беше най-интересната част от подготовката. Може, разбира се, да се седне и да се решават задачи. За това има много различни сайтове. Аз основно използвах три: , и . На CodeChef задачите са разделени по сложност, но не по теми. На Hackerrank и по сложност, и по теми.
Но както веднага установих, има и по-интересен начин. И това са състезанията (programming challenges или programming contests). Всички три сайта ги предлагат. Вярно, с LeetCode има проблем — неудобна времева зона. Затова не участвах на този сайт. Hackerrank и CodeChef предлагат достатъчно голямо количество различни състезания, с продължителност от 1 час до 10 дни. Различните формати имат различни правила, но това е тема, по която може да се говори дълго. Основната същност, защо състезанията са полезни, е, че внасят състезателен (и отново тавтология) елемент в процеса на обучение.
Общо участвам в 37 състезания на Hackerrank. От тях 32 бяха оценявани, а 5 или спонсорирани (в едно от тях дори спечелих 25$) или за удоволствие. В оценяваните състезания 10 пъти бях в топ 4%, 11 пъти в топ 12% и 5 пъти в топ 25%. Най-добрите ми резултати бяха 27/1459 в 3-часово и 22/9721 в седмично.
Преминах на CodeChef, когато състезанията на Hackerrank започнаха да се провеждат по-рядко. Общо успях да участвам в 5 състезания. Най-добрият ми резултат беше 426/5019 в десетдневно състезание.
Общо, в състезанията и просто така реших малко над 1000 задачи, което се вписваше в плана. В момента, за съжаление, нямам свободно време за продължаване на състезателната дейност, както и цел, под която може да се посочи несвободното време. Но беше забавно. Препоръчвам на заинтересованите да намерят съмишленици. В двойка или група е много по-интересно. Аз се занимавах с това с приятел, затова може би и ми се получи толкова добре.
Гледане на видео
След като прочетох книгата на Скиена, принципно се заинтересувах от това, с което се занимава. Както Седжвик, той е професор в университет. В тази връзка в мрежата могат да се намерят видеозаписите на неговите курсове. Реших да гледам курса . Няма да кажа, че много ми хареса. Първо, качеството на видеото не е много добро. На второ място, не пробвах да реша сам задачите, които се разискват в курса. Така че ангажираността не беше много висока.
Също така, в процеса на решаване на задачите, опитвайки се да намеря правилния алгоритъм, попаднах на видео на Тушар Рой. Той е работил в Amazon, а сега работи в Apple. Как по-късно разбрах, той има , в който публикува анализи на различни алгоритми. Към момента на написването на статията каналът съдържа 103 видеа. И трябва да се каже, че анализът в негово изпълнение е направен много прилично. Опитах се да гледам и други автори, но нещо не ми допадна. Така че този канал определено мога да препоръчам за гледане.
Изучаване на курсове
Тук особено не се занимавах с нищо. Гледах видеа от Android Developer Nanodegree на Google и преминах курс от ИТМО . Nanodegree е съвсем приличен, въпреки че естествено не научих нищо ново оттам. Курсът от ИТМО в теорията е малко сгъстен, но задачите бяха интересни. Не бих препоръчал да започвате от него, но принципно времето, прекарано там, не беше напразно.
Да изуча опита на другите
Разбира се, много хора се опитаха да попаднат в Google. Някои успяха, други не. Някои написаха статии за това. От интересните неща, мога да отбележа и . В първия случай човекът подготви списък с това, което трябва да научи, за да стане Software Engineer и да попадне в Google. В крайна сметка той попадна в Amazon, но това вече не е толкова важно. Вторият наръчник е написан от инженера на Google, Лариса Агаркова (). Освен този документ, можете също да прочетете .
Има смисъл да се прочетат отзивите за интервюта в Glassdoor. Те са повече или по-малко сходни, но може да се извлече някаква полезна информация.
Няма да давам линкове към други малки статии, самостоятелно ще можете да ги намерите в Google.
Второ преброяване
И ето, изминава една година. Беше доста интензивна по отношение на обучението. Но към новата есен се отправях с много по-дълбоки теоретични знания и отработени практически умения. До края на определения ми срок за подготовка оставаха още няколко седмици, когато изведнъж получих имейл от рекрутера на Google, в който той ми зададе въпроса, дали все още желая да работя в Google и не бих ли се отказал да поговоря с него. Разбира се, че не се отказах. Уговорихме се да се чуем след седмица. Също така ми поискаха актуализирано резюме, към което добавих кратко описание на това, което направих през годината на работа и в принцип.
След разговора за живота решихме, че след седмица ще има интервю в Hangouts, всичко както миналата година. Седмицата премина, дойде време за интервюто, но интервюиращият не се появи. Изминаха 10 минути, вече започнах да се притеснявам, когато изведнъж някой влезе в чата. Както по-късно стана ясно, моят интервюиращ по някаква причина не успя да се появи и му намериха бърза замяна. Човекът не беше много подготвен нито по отношение на настройките на компютъра, нито по отношение на провеждането на интервюто. Но след това всичко мина добре. Задачката реших бързо, описах къде могат да има подводни камъни, как могат да бъдат избегнати. Обсъдихме няколко различни варианта на задачата, сложността на алгоритъма. После още 5 минути разговаряхме, инженерът разказа впечатленията си от работата в Мюнхен (в Цюрих явно не намериха спешна замяна), и на това се разделихме.
В същия ден се свърза с мен рекрутър и съобщи, че интервюто е минало отлично и те са готови да ме поканят на интервю в офиса. На следващия ден се свързахме чрез Hangouts и обсъдихме подробностите. Понеже ми трябваше виза, решихме да насрочим интервюто за след месец.
Докато подготвях документите, паралелно обсъждах с рекрутъра предстоящото интервю. Стандартното интервю в Google се състои от 4 алгоритмични задачи и едно System Design. Но, тъй като кандидатствах за позиция като Android разработчик, ми казаха, че част от интервюто ще е със специфични за Android въпроси. Какви точно и в какво ще е спецификата, не успях да изкопча от рекрутъра. Насколкото разбрах, това е било въведено относително напоследък и той самият не беше много наясно. Също така, бях записан на две тренировъчни сесии: как да премина алгоритмично интервю и как да премина System Design интервю. Сесиите бяха със средна полезност. И там никой не успя да ми разкаже какво точно питат Android разработчиците. Затова моята подготовка през този месец се състоя в следното:
- Закупуване на маркерна дъска и написване на 2-3 десетки от най-популярните алгоритми на нея по памет. По 3-5 всеки ден. В крайна сметка всеки от тях беше написан няколко пъти.
- Освежаване на различна информация за Android, която не използвам всеки ден.
- Гледане на няколко видеа за Big Scale и всичко останало.
Както вече споменах, паралелно подготвях документите за пътуването. Първо поискаха данни, за да направят поканително писмо. След това дълго се опитвах да разбера кой на Кипър прави визи за Швейцария, тъй като швейцарското посолство не се занимава с това. Разбрах, че това е работа на австрийското консулство. Позвъних и се записах за среща. Там изискваха куп документи, но нищо особено интересно. Снимка, паспорт, разрешение за пребиваване, куп разни удостоверения и, разбира се, поканително писмо. Междувременно писмото все не идваше. В крайна сметка отидох с обикновен разпечатан документ и това се оказа напълно прието. Самото писмо дойде още след 3 дни, като кипърският FedEx не успя да намери адреса ми и се наложи да отида да го взема сам. По същото време взех от същия FedEx и пратка, която те също не успяха да ми доставят, тъй като не намериха адреса, и която там лежеше от юни (5 месеца, Карл). Тъй като не знаех за нея, естествено и не предполагаше, че я имат. Визата получих навреме, след което ми резервираха хотел и предложиха опции за полет. Опциите коригирах, за да е по-удобно. Прями полети вече нямаше, в крайна сметка летях там през Атина, а обратно през Виена.
След като всичките формалности за пътуването бяха уредени, минаха още няколко дни и аз всъщност излетях за Цюрих. Пристигнах без приключения. От летището до града пътувах с влак – бързо и удобно. Малко се загубих в града, но открих хотела и се настаних. Тъй като хотелът беше резервиран без храна, вечерях наблизо и легнах да спя, тъй като полетът беше сутрешен и вече ми се спеше. На следващия ден закусих в хотела (срещу допълнително заплащане) и се отправих към офиса на Google. В Цюрих Google има няколко офиса. Моето интервю не беше в централната сграда. И всъщност офисът изглеждаше доста обикновено, така че не ми се удаде да видя всички екстри на „нормалния“ офис на Google. Регистрирах се при администратора и седнах да чакам. След известно време излезе рекрутер и ми разказа плана за деня, след което ме заведе в стая, където трябваше да се проведат интервютата. Собственно по плана бяха предвидени 3 интервюта, обяд и още 2 интервюта.
Интервю номер едно
Първото интервю беше точно за Android. И изобщо не беше свързано с алгоритми. Изненада, обаче. Е, да, така е по-удобно. Помолиха ме да направя определен UI компонент. Първо обсъдихме какво и как. Предложих решение на RxJava, описах защо именно това и защо. Каза, че е добре, но да направим с помощта на Android фреймворка. И заедно да напишем кода на дъската. И не просто компонента, а цялата Activity, използваща този компонент. Такова нещо не бях очаквал. Едно е да пишеш на дъската алгоритъм от 30-50 реда, а съвсем друго е да правиш Android код, дори и със съкращения и коментари като „ами, това няма да го пиша, защото е очевидно“. Резултатът беше някаква мешаница на 3 дъски. Тоест, задачата я реших, но изглеждаше зле.
Интервю номер две
Този път интервюто беше за алгоритми. А интервюиращите бяха двама. Единят беше интервюиращият, а вторият - млад падуан (shadow interviewer). Трябваше да измислим структура от данни с определени свойства. Първо, както обикновено, обсъдихме проблема. Поставях различни въпроси, интервюиращият отговаряше. След известно време помолиха да напиша няколко метода на измислената структура на дъската. Този път се справих до известна степен, макар и с няколко малки грешки, които коригирах с подсказка от интервюиращия.
Интервю номер три
Този път системен дизайн, който изведнъж се оказа също Android. Трябваше да разработя приложение с определен функционал. Обсъдихме изискванията към приложението, сървъра, протокола за комуникация. След това започнах да описвам какви компоненти или библиотеки бих използвал при изграждането на приложението. А при споменаването на Job Scheduler възникна известно затруднение. Същността е, че никога не съм го използвал на практика, тъй като в момента на неговото излизане точно се бях пренасял на поддръжка на приложения, където нямаше никакви задачи за него. При разработката на следващите приложения беше същото. Тоест, теоретично знам какво представлява, кога и как се използва, но нямам опит в употребата му. Изглежда, че това не се понрави на интервюиращия. След това помолиха да напиша код. Да, при разработката на приложението веднага трябва да пишеш код. Отново Android код на дъската. Резултатът отново беше грозен.
Обяд
Трябваше да дойде още един човек, но не се появи. И на Google понякога се случват пропуски. В крайна сметка на обяд отидох с предишния интервюиращ, нейния колега, а по-късно се присъедини следващият интервюиращ. Обядът беше напълно приемлив. Отново, тъй като не беше главният офис в Цюрих, столовата изглеждаше достатъчно обикновена, но много приятна.
Интервю номер четири
Накрая алгоритми в чиста форма. Първото задание реших доста бързо и веднага ефективно, но пропуснах един граничен случай, но след подсказката на интервюиращия (той даде именно този граничен случай) намерих проблема и го поправих. Разбира се, трябваше да пиша кода на дъската. След това беше дадена подобна задача, но по-сложна. За нея намерих няколко неоптимални решения и почти намерих оптималното, не ми стигнаха 5-10 минути, за да завърша мисълта. И за нея вече не успях да напиша кода.
Интервю номер пет
Отново интервю за Android. Интересно, защо учех алгоритми през цялата година?
Първо имаше няколко основни въпроса. След това интервюиращият написа код на дъската и попита да намеря проблемите в него. Намерих, обясних, поправих. Обсъдихме. А после започнаха няколко неочаквани въпроси в духа на „какво прави метод Y в клас X“, „какво има в метода Y“, „какво прави клас Z“. Нещата, на които отговорих, но след това казах, че в работата през последно време не съм се сблъсквал с това и естествено не помня, кой, какво и как прави в детайли. След това интервюиращият попита какво правя в момента. И въпросите продължиха на тази тема. Тук вече отговорих много по-добре.
След края на последното интервю ми взеха пропуска, пожелаха ми късмет и ме изпратиха. Малко разходих из града, вечерях и отидох в хотела, където легнах да спя, тъй като полетът отново беше рано сутринта. На следващия ден успешно стигнах до Кипър. По искане на recruiter написах обратна връзка за интервюто и попълних формуляр в специална услуга за възстановяване на разходите. От всички разходи Google директно покрива само билетите. Хотел, храна и транспорт се покриват от кандидата. След това попълваме формуляра, прикрепяме разписките и изпращаме в специализирана фирма. Те обработват това и доста бързо превеждат парите по сметка.
Обработването на резултатите от интервютата отне една седмица и половина. След което ми съобщиха, че съм бил "малко под нивото". Тоест, не съм се представил достатъчно добре. По-конкретно, 2 интервюта минаха добре, 2 не толкова, а дизайна на системата беше много слаб. Е, ако поне 3 бяха минали добре, можеше да се боря, но така без шансове. Предложиха ми да опитам отново след година.
Поначалото, разбира се, се разстроих, защото подготвих много усилия, и към момента на интервюто вече обмислях да напусна Кипър. Работата в Google и прехвърлянето в Швейцария ми се струваха чудесен вариант.
Заключение
И тук достигаме до заключителната част на статията. Да, два пъти не успях да премина интервюто в Google. Това е тъжно. Вероятно би било интересно да работя там. Но можем да погледнем на нещата и от друга страна.
- През последната година и половина научих огромно количество неща, свързани с разработката на софтуер.
- Изключително много се забавлявах, участвайки в състезания по програмиране.
- Отидох за няколко дни в Цюрих. Кога пак ще отида там?
- Получих интересен опит от интервю в една от най-големите IT компании в света.
Така че всичко, което се случи през тези година и половина, може просто да се нарече обучение или тренировка. И резултатите от това обучение дадоха своите плодове. Мисълта ми да напусна Кипър узря (по някои семейни причини), успешно преминах няколко интервюта в друга известна компания и след 8 месеца се премestих. Но това е съвсем друга история. Все пак мисля, че все още трябва да благодаря на Google за тези година и половина, които работих върху себе си, и за 2-те интересни дни в Цюрих.
Какво мога да кажа накрая. Ако работите в IT, подгответе се за интервю в Google (Amazon, Microsoft, Apple и т.н.). Може би един ден ще успеете да влезете там. Дори ако не искате, повярвайте, от такава подготовка няма да ви е зле. В момента, в който осъзнаете, че можете (дори и само при успешни обстоятелства) да преминете интервю в една от тези компании, пред вас ще се отворят много повече възможности, отколкото преди началото на подготовката ви. А всичко, което ви трябва по пътя, е цел, упоритост и време. Желая ви успехи 🙂
Източник: habr.com
