Преди седмица разказахме за , където в коментарите ни посочиха важността на стажовете и практическото опит. С това не може да се не съгласиш, тъй като теоретичните знания е необходимо да се затвърдят с практика. С тази публикация откриваме серия от статии за летни стажове на студенти: как младежите попадат там, какво правят и защо е хубаво.
В първата статия ще разкажа как успешно да преминете всички етапи на интервютиране и да получите стаж в Google.
Няколко думи за себе си
Аз съм студент в първи курс на магистратурата в Питерския кампус на Вишката, завърших бакалавърска степен в Академичния университет по машинно обучение. По време на обучението си в бакалавриата активно се занимавах със спортно програмиране и участвах в различни хакатони. За последните може да прочетете , и .
За стажа
Първо искам да разкажа малко за това как изглежда стажът в Google от вътре.
Всеки стажант, който идва в Google, се свързва с определен екип. Това може да бъде екип, който се занимава с разработката на вътрешната инфраструктура, за която човек в извън компанията не е чул, или с продукт, който използват милиони хора по целия свят. Такива продукти могат да бъдат познатите YouTube, Google Docs и други. Тъй като разработването на тези проекти е дело на десетки или дори стотици разработчици, вие ще попаднете в екип, който се специализира в някоя по-тясна част от него. Например, през лятото на 2018 година работих над Google Docs, добавяйки нова функционалност за работа с таблици.
Тъй като в компанията вие сте стажант, имате мениджър, наречен хост. Това е обикновен фултайм служител, който сам се занимава с разработка на продукти. Ако нещо не знаете, не можете да решите или сте се сблъскали с някакви проблеми, трябва да се обръщате към него. Обикновено се назначават седмични срещи един на един, където може да обсъдите текущата ситуация по проекта или да си поговорите за нещо, което не е свързано с работата. Освен това, хостът е един от тези хора, които ще оценяват работата, която сте свършили по време на стажа. Оценката ще бъде извършена и от втори, допълнителен рецензент. И разбира се, те искат да имате успех.
В Google ще ви научат, но не е сигурно, че ще получите добрия навик да пишете диздок (design document) преди да започнете каквото и да е. За тези, които не знаят, диздок е документ, в който се обяснява същността на съществуващия проблем, както и детайлно техническо описание на решението му. Диздок може да се пише както за цял продукт, така и за конкретна нова функционалност. Четейки такава документация, можете да разберете с каква цел е бил замислен продуктът и как е бил реализиран. Често в коментарите можете да видите диалози между инженери, обсъждащи различни методи за реализация на част от проекта. Това дава добро разбиране за причините зад всяко взето решение.
Особеността на стажировката е, че ще имате възможност да използвате чудесни вътрешни инструменти за разработка, от които Google разполага в изобилие. След като работих с тях и разговарях с много хора, които преди са работили в Amazon, Nvidia и други широко известни технологични компании, мога да заключа, че тези инструменти имат голям шанс да се окажат най-добрите, които някога ще срещнете в живота си. Например, инструментът Google Code Search позволява не само да преглеждате цялата кодова база и историята на промените на всеки ред код, но също така предлага навигация по кода, към която сме свикнали в съвременните среди за разработка, като Intellij Idea. И за това ви е необходим само браузър! Свързаният с тази особеност недостатък е, че извън Google ще ви липсват тези инструменти.
Що се отнася до бонусите, компанията разполага с невероятни офиси, предлага добра храна, фитнес зала, добро здравно осигуряване и други преимущества. Просто ще оставя тук няколко снимки от офис в Ню Йорк:



Как да получите оферта?
Преглед
Сега идва времето да поговорим за нещо по-сериозно: как да попаднете на стажировка?
Тук става дума не само за Google, а за общия случай. Ще напиша по-долу за особеностите на процеса на подбор на стажантите в Google.
Процесът на интервюиране в компанията вероятно ще изглежда по следния начин:
- Заявка за стажировка
- Конкурс на Hackerrank/TripleByte Quiz
- Скринингово интервю
- Първо техническо интервю
- Второ техническо интервю
- Онсайт интервю
Заявка за стажировка
Очевидно е, че всичко започва с вашето желание да станете стажант. За целта трябва да го изразите, попълвайки формуляр на сайта на компанията. Ако имате (или вашите приятели) познати, които работят там, можете да опитате да се свържете през тях. Този вариант е предпочитан, тъй като ви помага да се отличите от огромния поток на останалите студенти. Ако такъв вариант няма, кандидатствайте самостоятелно.
Опитайте се да не се разстройвате много, когато получавате имейли с съдържание от вида "вие сте страхотни, но избрахме други кандидати". И тук имам съвет за вас:

Конкурс на Hackerrank/TripleByte Quiz
Ако вашето резюме е харесало на рекрутера – след 1-2 седмици ще получите имейл със следващото задание. Най-вероятно ще ви предложат да преминете през конкурс на Hackerrank, където трябва да решавате алгоритмични задачи в зададеното време, или TripleByte Quiz, където ще трябва да отговаряте на различни въпроси, свързани с алгоритми, разработка на софтуер и архитектура на ниско ниво системи. Тази стъпка е първоначален фильтър в процеса на подбор на кандидати.
Скринингово интервю
Ако успешно преминете изпита, следва скрининг интервю, на което ще се говори с рекрутера за вашите интереси и проектите, които компанията предлага на стажантите. Ако проявите интерес и предишният ви опит отговаря на очакванията на компанията, ще получите зелена светлина. От моя опит това е най-непредсказуемият момент в целия процес, който много зависи от рекрутера.
Ако сте преминали успешно тези три изпита, основната доза случайност вече е зад вас. Остават техническите интервюта, които вече зависят повече от вас, така че можете да повлияете на изхода им. И това е добре!
Технически интервюта
Следват техническите интервюта, които обикновено се провеждат по Skype или Hangouts. Но понякога се срещат и по-екзотични услуги, изискващи инсталиране на допълнителен софтуер. Затова се уверете предварително, че всичко работи на вашия компютър.
Форматът на техническите интервюта зависи значително от позицията, за която кандидатствате. Если става въпрос за позицията стажант по софтуерно инженерство, вероятно ще ви предложат няколко алгоритмични задачи, които трябва да разрешите в някой онлайн редактор на код, например, . Може също така да ви зададат въпрос за обектно-ориентираното проектиране, за да видят колко добре разбирате проектантските аспекти на софтуерното инженерство. Например, могат да ви помолят да проектирате прост онлайн магазин. Истината е, че до сега не съм срещал такава задача, по която наистина може да се прецени този умение. В края на интервюто вероятно ще ви предоставят възможност да зададете въпроси. Настоятелно ви препоръчвам да подходите сериозно към това, тъй като чрез въпросите можете да покажете интереса си към проекта и да демонстрирате компетентността си по темата. Аз обикновено предварително подготвям списък с потенциални въпроси:
- Как е организирана работата по проекта?
- Каква трудна задача ви се е налагало да решавате през последно време?
- Какъв е приносът на разработчика към крайния продукт?
- Защо решихте да работите в тази компания?
Не винаги ще ви интервюира човек, с когото ще работите в бъдеще. Следователно последните въпроси могат да предоставят представа за това, какво се случва в компанията като цяло. За мен, например, е важно да имам влияние върху крайния продукт.
В случай на успешно преминаване на първото интервю, ще ви предложат второ. То ще се отличава от първото по интервюиращия и, съответно, по задачите. Форматът вероятно ще остане същият. След преминаване на второто интервю, може да предложат и трето.
Онсайт интервю
Ако до този момент не сте получили отказ, ви чака интервю на място, когато кандидатът е поканен на събеседване в офиса на компанията. Обикновено то се състои от няколко технически интервюта и едно поведенческо. По време на поведенческото интервю вие разговаряте с мениджъра за вашите проекти, за решенията, които сте вземали в различни ситуации, и подобни теми. Тоест интервюиращият се опитва да разбере по-добре вашата личност и по-добре да разбере вашия опит. Някои компании, провеждащи по 3-4 технически събеседвания, вместо интервю на място предлагат да преминете само едно поведенческо дистанционно.
Сега остава само да изчакате отговора на рекрутера. Ако всичко е минало гладко, ще получите писмо с дългоочакваното предложение. Ако предложение няма — не се разочаровайте. Компаниите систематично отказват на добри кандидати. Опитайте отново да кандидатствате за стаж през следващата година.
Кодинг интервю
Така, почакайте… Все още не сме преминали никакви интервюта. Просто сме научили как изглежда целият процес и сега ни предстой да се подготвим добре за събеседванията, за да не изпуснем шанса да прекараме лятото приятно и полезно.
Съществуват ресурси като , и , който вече споменах. На тези платформи можете да намерите голямо количество алгоритмични задачи, а също и да изпратете решенията им за автоматична проверка. Всичко това е страхотно, но по-скоро ми напомня на стрелба по врабчета с оръдие. Много от задачите на тези ресурси са предназначени за дълго време за решаване, изискват познания по напреднали алгоритми и структури от данни, докато задачите на събеседванията обикновено не са толкова сложни и са съобразени с 5-20 минути. Затова в нашия случай много по-подходящ е ресурс като , който e създаден като инструмент за подготовка за технически интервюта. Ако решите 100-200 задачи с различна сложност, вероятността да нямате проблеми по време на интервюто е много голяма. Сред достойните ресурси има и , на който можете да изберете продължителността на сесията, например, 60 минути, и системата ще ви подбере набор от задачи, за решаването на които в средно време отнема не повече от час.
Още много хора съветват да прочетете книгата „». Аз четох само избрани части от нея. Но е важно да се отбележи, че в училище решавах много алгоритмични задачи. За тези, които нямат такъв опит, все пак е добре да разгледат книгата.
Също така, ако сте имали малко технически интервюта в чуждестранни компании, препоръчително е да направите няколко пробни. Колкото повече, толкова по-добре. Това ще ви помогне да се чувствате по-уверени по време на интервюто и да намалите нервността. Пробните интервюта могат да бъдат организирани на .
Поведенчески интервюта
Както споменах, по време на поведенческото интервю интервюиращият се опитва да научи повече за вашия опит и да разбере характера ви. Какво, ако сте отличен разработчик, но не можете да работите в екип? Страхувам се, че много хора няма да го одобрят. Например, може да ви зададат въпроса: "В какво е вашата слабост?" Освен въпросите от такъв род, ще бъдете помолени да разкажете за проектите, в които сте играли ключова роля, за проблемите, с които сте се сблъсквали, и решенията, които сте намерили. Имайте предвид, че в началото на техническите интервюта също могат да ви попитат за това. Как да се подготвите за такива интервюта е добре описано в една от главите на "Cracking the Coding Interview".
Сега, когато е ясно как изглежда процесът на подбор на стажанти в общия случай и как да се подготвим за интервюта, е време да поговорим за това как работи това в случая с Google.
Списък с налични стажове може да се намери . Ако планирате да отидете на лятна стажировка, е добре да започнете да се кандидатствате още през септември.
Интервюта
Тук процесът изглежда малко необичайно. Ще имате скринингово интервю и две технически. Ако се представите добре, ще преминете в етапа на търсене на проект. Ще трябва да попълните доста дълга анкета, в която ще посочите всичките си настоящи умения, а също така ще изразите предпочитания за темата на проекта и местоположението, където искате да преминете стаж.
Много е важно да попълните тази анкета старателно и внимателно! Потенциалните хостове, които търсят хора за проекта, преглеждат наличните стажанти и провеждат разговори с кандидатите, които са им харесали. Те могат да филтрират студентите по местоположение, ключови думи, отметки в анкетата и да подреждат по оценките от интервютата.
По време на разговора интервюиращият разказва за проекта, по който ще работите, и също така се интересува от опита на кандидата. Тук имате страхотна възможност да разберете как ще изглежда наистина работният процес, тъй като разговаряте с човека, който ще бъде вашият хост. След интервюто изпращате имейл на рекрутера с вашите впечатления от проекта. Ако проектът ви е харесал, а на интервюиращия вие сте му харесали, ви очаква оферта. В противен случай, ще чакате следващи обаждания, които могат да бъдат 2-3-4, или може да не получавате изобщо. Трябва да уточните, че дори ако сте преминали добре интервютата, но в етапа на търсене на проект никоя от екипите не ви е избрала (може дори никой да не е разговарял с вас), то, за съжаление, ще останете без оферта.
Америка или Европа?
Освен всичко, трябва да решите къде ще се проведе стажировката ви. Аз имах избор между САЩ и . И тук е важно да знаете някои особености. Например, има усещане, че в САЩ е по-трудно да се влезе. Първо, ви предстои да преминете допълнителен конкурс с продължителност 90 минути, където ще трябва да решавате алгоритмични задачи, а също така и друг 15-минутен въпросник, който се опитва да разкрие вашия характер. Второ, според моя опит и опита на моите приятели, на етапа на търсене на екип, интересът към вас е по-малък. Например, през 2017 година имах само едно интервю, след което екипът избра друг кандидат и не получих оферта. Докато при момчетата, кандидатствали за Европа, имаше по 4-5 проекта. През 2018 година ми намериха екип през януари, което е доста късно. Момчетата работеха в Ню Йорк, проектът им ми хареса, и аз се съгласих.
Както виждате, в САЩ всичко е малко по-сложно. Но аз исках да отида там повече, отколкото в Европа. Освен това в САЩ плащат повече.

Какво да правите след това?
В края на стажировката имате две опции:
- Да получите стажировка за следващата година.
- Да преминеш през две технически интервюта, за да получиш работа на пълен работен ден.
Тези две опции са налични при условие, че успешно си завършил текущия си проект. Ако тази стажантска позиция не е първата ти, дори могат да ти предложат работа на пълен работен ден без интервюта.
Следователно възниква следната ситуация, която може да се опише с една картинка:

Тъй като това беше моята първа стажантска позиция, реших да премина през две технически интервюта, за да получа работа на пълен работен ден. След резултатите от тях ми предложиха оферта и започнаха да търсят екип, но аз отказах тази възможност, тъй като реших да завърша магистратурата си. Google едва ли ще изчезне за 2-3 години.
Заключение
Приятели, надявам се, че обясних ясно и разбираемо как изглежда пътят от студент до стажант (и после обратно…), и този материал ще намери своя читател, на когото ще бъде полезен. Както виждате, всичко не е толкова сложно, колкото може да изглежда, нужно е единствено да отхвърлите мързела си, страховете си и да започнете да пробвате!
P.S. Имам и в телеграм, където можете да надникнете.
Източник: habr.com
