
Заглавието на статията звучи като епичен провал, но всъщност не е толкова еднозначно. В общи линии историята завърши доста позитивно, макар и не в Google. Но това вече е тема за друга статия. В тази статия ще разкажа за три неща: как мина подготовката ми, как протекоха интервютата в Google и защо според мен всичко не е толкова еднозначно, колкото може да изглежда.
Как всичко започна
В един студен зимен вечер на Кипър внезапно ми хрумна мисълта, че познанията ми по класическа компютърна наука са доста далеч от средните, и трябва нещо да се направи по въпроса. Ако случайно някой не е чел защо вечерта е кипърска и студена, може да научи за това. . След известни размисли реших първо да премина онлайн курс по алгоритми и структури от данни. Чух за курса на Робърт Седжуик (Robert Sedgewick) в Coursera от един от бившите си колеги. Курсът е разделен на две части ( и ). Ако случайно линковете се променят, винаги може да се потърси по името на автора. В началото на всяка седмица се предават лекции, а през седмицата трябва да се правят упражнения. Първата част на курса обхваща базови структури от данни, основни видове сортировки и сложността на алгоритмите. Втората част е вече по-напреднала, започва с графи и завършва с теми като линейно програмиране и трудност на задачите. След като премислих всичко това, реших, че това е точно това, от което се нуждая. Между другото, любопитният читател може да се запита каква е връзката с Google. И наистина, до този момент 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-средни
— анализ на главни компоненти
— откритие на аномалии
— колаборативно филтриране (система за препоръки)
— стохастичен, мини-пакетен, пакетен градиентен спуск
— онлайн обучение
— картографиране на намаляване
— анализ на таванна стойност
След завършване на курса, разбирането на всички тези теми присъстваше. След 2 години почти всичко естествено беше забравено. Препоръчвам на тези, които не са запознати с машинното обучение и искат да получат добро разбиране на основните неща, за да продължат напред.
Първи опит
Вече беше септември и дойде време да се замисля за интервюта. Тъй като кандидатстването през сайта е доста безполезно, се заех с търсенето на познати, които работят в Google. Изборът падна на , тъй като той беше единственият, когото познавах лично (макар и не на живо). Той се съгласи да предаде моето резюме и скоро получих писмо от рекрутера, в което ме поканва да резервирам час в календара му за първия разговор. След няколко дни се проведе разговор. Опитахме се да комуникираме през Hangouts, но качеството беше ужасно, затова преминахме на телефон. Първо бързо обсъдихме стандартните „как, защо и защо“, а после преминахме на техническия скрининг. Той се състоеше от десетина въпроса в духа на „каква е сложността на вмъкването в hash map“, „какви балансирани дървета знаете“. Не е трудно, ако имате основни познания по тези въпроси. Скринингът мина добре и по резултатите решихме да организираме първото интервю след седмица.
Интервюто също беше през Hangouts. Първо говорихме около 5 минути за мен, след което преминахме към задачата. Задачата беше на графи. Бързо осъзнах какво трябва да направя, но избрах неправилен алгоритъм. Когато започнах да пиша кода, осъзнах това и се пренасочих към друг вариант, който и завърших. Интервюиращият зададе няколко въпроса относно сложността на алгоритъма и попита дали може да бъде по-бързо. Някак си помръкнах и не успях. В това време времето свърши и се разделихме. След около 10 минути ми дойде наум, че вместо алгоритъма на Дейкстра, който използвах, в конкретния случай можеше да се използва BFS, което щеше да е по-бързо. След известно време рекрутерът ми се обади и каза, че интервюто в общи линии е минало добре и трябва да организираме още едно. Се уговорихме за след седмица.
Този път нещата не се развиха добре. Ако за първия път интервюиращият беше дружелюбен и комуникативен, то този път изглеждаше доста мрачен. Не успях веднага да разбера задачата, въпреки че идеите, които предложих, можеха по принцип да доведат до решение. В крайна сметка, след няколко подсказки от интервюиращия, ми дойде решението. И този път отново се оказа, че е търсене в ширина, само че от няколко точки. Написах решенията, успях да се вместя в времето, но забравих за граничните случаи. След известно време се обади рекрутърът и ми съобщи, че този път интервюиращият е останал недоволен, тъй като според него ми бяха нужни твърде много подсказки (3 или 4) и постоянно променях кода по време на писането. В резултат на двете интервюта беше взето решение да не продължавам и да отложа следващото интервю за година, ако имам такова желание. Така се разделихме.
И от тази история извлякох няколко извода:
- Теорията е добра, но трябва бързо да се ориентираш в нея.
- Теорията без практика не помага. Трябва да решаваш задачи и да доведеш писането на код до автоматизъм.
- Много зависи от интервюиращия. И с това не може нищо да се направи.
Подготовка за втори опит
След като обмислих ситуацията, реших да опитам отново след година. И леко коригирах целта. Ако преди основната цел беше учене, а интервюто в Google далечна морковка, то сега преминаването на интервюто стана цел, а ученето - средство.
И така, беше разработен нов план, който включваше следните точки:
- Продължавам да изучавам теорията чрез четене на книги и статии.
- Решавам алгоритмични задачи в количество от 500-1000 броя.
- Продължавам да изучавам теорията чрез гледане на видео.
- Продължавам да изучавам теорията чрез курсове.
- Изучавам опита на други хора по отношение на интервютата в Google.
Планът беше изпълнен от мен за година. По-долу ще опиша какво точно правих по всяка от точките.
Книги и статии
Броят на прочетените статии вече не си спомням, четях ги както на руски, така и на английски. Най-полезният сайт се оказа вероятно Тук е събрано описание на голямо количество интересни алгоритми с примери за код.
Прочетох 5 книги: Algorithms, 4-то издание (Sedgewick, Wayne), Introduction to Algorithms, 3-то издание (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview, 4-то издание (Gayle Laakmann), Programming Interviews Exposed, 2-ро издание (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Те книги могат да бъдат разделени на 2 категории. Първата категория включва книгите на Седжвик и Корман. Това е теория. Останалите са подготовка за интервю. Седжвик в книгата разказва нещо подобно на това, което лекциите му обхващат. Просто в писмен вид. Няма особен смисъл да се чете внимателно, ако човек е преминал курс, но все пак си струва да се прегледа. Ако не сте гледали курса, има смисъл да се прочете. Корман ми се струваше прекалено скучен. Честно казано, осилих го с трудности. Взех само , а също и няколко рядко използвани структури от данни (Fibonacci heap, van Emde Boas tree, radix heap).
Струва си да се прочете поне една книга за подготовка за интервю. Всички те са изградени на сходен принцип. Описват процеса на интервю в големи технологични компании, предлагат основни неща от компютърните науки, задачки на тези основи, решения на задачите и разглеждане на решенията. От трите споменати, вероятно бих препоръчал 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 в тричасово състезание и 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 и дали не бих искал да поговоря с него. Естествено, че не бях против. Уговорихме се да се свържем след седмица. Помолиха ме също за актуализирано CV, към което добавих кратко описание на това, което направих за година на работа и по принцип.
След разговора за живота решихме, че след седмица ще имаме интервю в 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). Трябваше да измислим структура от данни с определени свойства. Първо, както обикновено, обсъдихме проблема. Задавах различни въпроси, интервюиращият отговаряше. След известно време ни помолиха да напишем няколко метода за измислената структура на дъската. Този път успях по-добре, макар че имаше няколко малки грешки, които поправих по насоки на интервюиращия.
Интервю номер три
Този път беше System Design, който изведнъж също се оказа Android. Трябваше да разработим приложение с определен функционал. Обсъдихме изискванията към приложението, към сървъра, към комуникационния протокол. После започнах да описвам какви компоненти или библиотеки бих използвал при изграждането на приложението. А след споменаването на Job Scheduler имаше известен затруднение. Същността е, че никога не съм го използвал на практика, тъй като при появата му точно преминах на поддръжка на приложения, за които нямаше задачи за приложение. При разработването на последващите беше същото. Тоест, теоретично знам какво е, кога и как се прилага, но опит в използването нямам. И на интервюиращия това явно не му хареса много. После ни помолиха да напишем код. Да, при разработването на приложението веднага трябва да пишем код. Отново Android код на дъската. Получи се отново страхотно.
Обяд
Трябвало да дойде още един човек, но той не се появи. И Google допуска грешки. В крайна сметка обядах с предишния интервюиращ, нейн колега, а малко по-късно се присъедини следващият интервюиращ. Обядът беше напълно приемлив. Отново, тъй като не е централният офис в Цюрих, столовата изглеждаше доста обикновено, въпреки че много приятно.
Интервю номер четири
Най-накрая алгоритмите в чист вид. Първата задача реших достатъчно бързо и веднага ефективно, макар и да сбърках с един граничен случай, но по подсказката на интервюиращия (той даде именно този граничен случай) намерих проблема и го коригирах. Естествено, трябваше да пиша кода на дъската. След това ми беше дадена подобна задача, но по-сложна. За нея намерих няколко неоптимални решения и почти открих оптималното, не ми достигнаха 5-10 минути, за да доизкажа идеята. И вече не успях да напиша кода за нея.
Интервю номер пет
Отново интервю за Android. Интересно, защо учих алгоритми през цялата година?
Първо имаше няколко прости въпроса. След това интервюиращият написа на дъската код и ме помоли да намеря проблемите в него. Намерих, обясних, коригирах. Обсъдихме. А след това започнаха няколко неочаквани въпроси в духа на "какво прави метод У в клас Х", "какво има вътре в метод У", "какво прави клас Z". Нещо отговорих, но след това казах, че напоследък не съм работил с това и разбира се не помня детайлите. След това интервюиращият ме разпитваше какво правя сега. И въпросите продължиха в тази насока. Тук вече отговарях много по-добре.
След края на последното интервю ми взеха пропуска, пожелаха ми успех и ме изпратиха. Поразходих се из града, вечерях и отидох в хотела, където заспах, тъй като рейсът отново беше рано на сутринта. На следващия ден успешно стигнах до Кипър. По молба на рекрутера написах обратна връзка за интервюто и попълних формуляр в специална услуга за възстановяване на разходите. От всички разходи Google директно плаща само билетите. Хотел, храна и транспорт се поемат от кандидата. След това попълваме формуляра, приложваме бележките и изпращаме до специална кантора. Те го обработват и сравнително бързо превеждат парите по сметката.
Времето, необходимо за обработка на резултатите от интервютата, беше около седмица и половина. След това ми съобщиха, че съм бил „малко под критерия“. Тоест, малко не достигал. По-конкретно, 2 интервюта минаха добре, 2 не бяха особено успешни, а при System Design беше много зле. Ако поне 3 бяха минали добре, щеше да има шанс, но така без шанс. Предложиха ми да опитам отново след година.
Първоначално, разбира се, бях разочарован, тъй като подготовката ми отне много усилия, и към момента на интервюто вече обмислях да напусна Кипър. Работа в Google и преместване в Швейцария изглеждаха като отличен вариант.
Заключение
И така, стигаме до заключителната част на статията. Да, два пъти не преминах интервюто в Google. Това е тъжно. Вероятно би било интересно да работя там. Но можем да погледнем на ситуацията и от друга страна.
- През една и половина години научих много неща, свързани с разработката на софтуер.
- Получих изключително удоволствие от участието в състезания по програмиране.
- Проблеми на място в Цюрих за няколко дни. Кога отново ще имам възможност да отида там?
- Получих интересен опит от интервю в една от най-големите IT компании в света.
Следователно, всичко, което се случи през тези година и половина, може да се счита просто за обучение или тренировка. Резултатите от това обучение дадоха отговор. Мисълта ми да напусна Кипър узря (по някои семейни причини), успешно преминах няколко интервюта в друга известна компания и след 8 месеца се преместих. Но това е съвсем друга история. Въпреки това, вярвам, че трябва да благодаря на Google както за тези година и половина, в които работих върху себе си, така и за 2-те интересни дни в Цюрих.
Какво мога да кажа в заключение. Ако работите в IT, подгответе се за интервю в Google (Amazon, Microsoft, Apple и т.н.). Може би, един ден ще имате възможността да попаднете там. Дори и да не искате, повярвайте, от тази подготовка няма да ви е зле. В момента, в който осъзнаете, че можете (дори и само при късмет) да преминете интервю в една от тези компании, пред вас ще се открият много повече възможности, отколкото преди да започнете подготовката. А всичко, което ще ви е необходимо по пътя, е цел, упоритост и време. Пожелавам успехи 🙂
Източник: habr.com
