Как да кацате софтуерния инженер предлага за 43 дни, докато работите на работа на пълен работен ден

Факти

Преди около година получих оферти като софтуерен инженер от Google, LinkedIn, Amazon, Uber ... Повечето оферти идваха с промоция, а повишаването на основната заплата беше до 40%. В крайна сметка избрах Uber от всички тези компании (не тази с най-високо заплащане, но бях дълбоко приведена в съответствие с потенциала на тази компания хаха). Тъй като днес отбелязвам първата годишнина от работата с Uber и тъй като приятелите ми около мен непрекъснато искат съвети с интервюта, реших да обмисля процеса на интервю преди година и се опитах да включа самата същност, която намерих полезна по време на подготовката.

Защо да стартираме?

Много ценя както за кариерата си, така и за града, в който живея. Работих за екипа на Microsoft Office и живеех в Белвю до момента, в който започнах да търся работа и двата фактора допринесоха еднакво за решението ми за работа. Бих искал да работя върху софтуерно инженерство, свързано с уеб, и да живея в оживен град, пълен с млади професионалисти, които могат да работят усилено и да купонясват. Тъй като нито една от предпочитанията не беше изпълнена от предишната ми работа и град, реших да продължа напред.

Преглед на плана

IMO, Интервюто в стила на Силиконовата долина за софтуерните инженери е отделна система за оценка, която е много по-различна от оценката на нечии резултати в работата. Въпреки че много от компаниите се опитват да модифицират процеса на интервю, така че сигналът, излъчен от интервютата, да отразява възможностите на кандидатите да вършат максимално реална работа, той все още е далеч от перфектен. В самото начало на този процес на подготовка, целта ми е кристално ясна: разглеждам процеса на интервю като стандартизиран тест и го ноктирам.

Възползвал се / оцелял от дългото излагане на образователната система в Китай, подготовката на стандартизиран тест за мен винаги е била от по-лесната страна на спектъра: имам нужда от времеви график с висока интензивност и ще отделя време само за неща, които ще бъдете въздействащи към интервюто. Има безброй публикации в интернет, които казват на хората да четат учебници от колежа отново, а за мен това е излишно. Просто не е необходимо да знаете историята на Knapsack, за да задействате интервюто, всичко, което трябва да направите е да сте запознати с това как да използвате динамично програмиране за решаване на проблемите. Не казвам, че задължително има „пряк път“ за подготовка за интервю, но трябва да има поне този „ясен път“, по който разумните кандидати трябва взаимно да се съгласяват.

Финализирана времева линия: 1 ден за актуализиране на моята автобиография, 2 дни за изпращане / препращане / работа в мрежа / (всеки процес, помагащ за получаване на интервюто), и 20 дни за подготовка преди първото интервю и накрая още 20 дни за интервю / продължаване на подготовката.

Вземете интервюта

Списък на фирмите за получаване на интервюто

По-горе е списъкът на фирмите, който съставих в Evernote. Тъй като ценя града, в който живея толкова много, категоризирах компаниите в 3 клъстера: NYC, LA и SF bay area (не оценявам останалата част от залива толкова много, че тези компании станаха второ ниво за мен. I мразя дълго пътуване.).

За всяка от изброените по-горе компании, аз се погрижих да се свържа с тези компании от 3 различни гледни точки: онлайн портал, препоръки на приятели и кандидати за подбор на персонал, които могат да бъдат намерени от LinkedIn. Един малък съвет е, че опитайте да дадете приоритет на насочването на приятели към онлайн портала, тъй като за някои компании препоръките стават недостъпни, след като подадете онлайн заявление.

Направих всички горепосочени процеси за всички горепосочени компании през уикенда и от EOD следващия понеделник имах насрочени над 10 интервюта.

Алгоритъм и структура на данните

Кандидатите обикновено се плашат от интервю за алгоритъм и структура на данните, но аз лично смятам, че това всъщност е една от по-лесните теми, след като имате систематичен подход. По време на подготовката се съсредоточих върху две перспективи: решаване на проблеми и обяснение на решаването на проблема.

Използвах онлайн платформа за кодиране, наречена Leetcode.com, за да подготвя решаването на проблемите си и съм доволна от резултата. Изготвянето на интервюта от Software Engineer чрез практикуване на Leetcode.com не е нищо ново, но мисля, че се разграничих по моя подход „по-малко е повече“: фокусирах се само върху първите 150 проблема, несортирани. Има доста хора в интернет, които казват, че трябва да сортирате по трудност и да започнете с по-лесните, а за мен това е глупост: не се подготвяте да се забавлявате или да увеличавате самочувствието си и трябва да опитате да разсъждавате върху реалния сценарий за интервю, тъй като възможно най-обективно.

Първите 150 проблема са страхотни. Те почти обхващат всички необходими теми в интервюто на Software Engineer: от общи теми като String, Array, Binary Tree, Dynamic Programming, Bit Manipulation, до не толкова често срещаните теми като Segment Tree, Trie, Topological Sort.

Теми, обхванати в Leetcode.com

Време всеки опит за програмиране. Налагането на строг график е критично важно за влизане в ритъм на интервю. Отделих 30 минути за всеки проблем за първата си итерация на 150. По време на първата си итерация на проблемите наистина се опитах усилено да реша всеки един от тях. Ако не реших един проблем за 30 минути, няма да се обадя на трудно спиране, докато не успея да го разбера след още 30 минути. За второто си повторение обаче поставих ограничението във времето да бъде 15 минути на всеки проблем, имайки предположението, че вече имам консолидирани подходи в паметта си.

Обясняването на решаването на проблеми играе друга голяма роля. Смятах, че това естествено ще стане моят недостатък, защото английският не е първият ми език. Въпреки това, владеенето на английски език не е определящият фактор за технологичното интервю. Вярно е, че става въпрос за „говори правилния език“, но „правилният език“ всъщност е съвкупност от правилните терминологии, което се превръща в контекст на английски език. Така че правилните терминологии и правилният процес на предаване на идеята са най-важните аспекти, към които трябва да се стремим.

Geeksforgeeks.com е най-далеч уебсайтът, от който най-много се възползвах, за да се подготвя за обяснение на мисловния си процес. Това е технологичен блог, брифинг за всеки алгоритъм на клас и класически примерни проблеми. Техническият блог идеално пасва на темпото на интервю: и двамата се опитват да предадат кристално ясна идея по време ефективен и кратък начин. За всеки отделен проблем с програмирането в рамките на 150 се уверих да разсъждавам върху кой алгоритъм стои зад проблема. След това подробно ще прочета статията на Geeksforgeeks.com за алгоритъма, както и за примерните проблеми и техните решения.

В процеса на четене на Geeksforgeeks разбрах, че колко много ми липсва в процеса на технологично интервю като нов град. Бързото решение на всеки проблем прави кандидата да изглежда интелигентен, но „говори езика“ / обяснявайки решаването на проблема по правилния начин кара интервюиращите да искат да работят с кандидата. Обикновено последният играе още по-важна роля и точно това ми се случи при един кръг интервюта с Google, в които не получих напълно правилния отговор, но моята комуникация спечели положителни отзиви.

Дизайн на системата

Дизайнът на системата тежи много повече за наемите в индустрията, отколкото за NCG. Без опита в проектирането на уеб система в голям мащаб по време на предишната си работа, се почувствах непознат.

За щастие, курсовете за системен дизайн в hiredintech.com ми помогнаха по най-големия начин. Той обхваща основни концепции, разработени върху основните места в уеб системата и най-важното: как да определите количествено много части от вашия дизайн, така че да изглежда, че говорите от дългогодишен опит.

Практикуването на проектиране на системи може да бъде трудно, тъй като по природа е въпрос от отворен тип и е трудно да се намери универсален / стандартизиран процес за решаване на проблеми. И така, какво да правим, когато не може да се намери един универсален подход? Ние категоризираме проблемите на дизайна на системата и след това се разделяме и завладяваме.

Процесът на категоризиране е доста лесен. Категоризирах се по тесните места, с които са се сблъскали някои популярни продукти, и обобщих примери за това как тези продукти преодоляват тези тесни места. По-долу е част от списъка на уеб приложенията, в който задълбочих.

Джъстин Тв

SalesForce

Instagram

Flickr

Както можете да видите, голяма част от статиите отгоре са от highscalability.com. Копайте дълбоко в този уебсайт.

край

Поглеждайки назад, това бяха 43 макар и дни. Подготвих се за около 5 часа в делничен ден и приблизително 15 часа в почивните дни. Разделих всички компании на две партиди: първата партида е Google, Amazon, LinkedIn, Uber и т.н., а втората партида е Facebook, Bloomberg, Airbnb, Spotify и др. Реших да продължа само с насрочването на първата партида, която да започне с. Идеята е, че ако подготовката ми тотално не се получи, все пак ще имам време да коригирам стратегията си и да се снимам за втората партида, което е също толкова добър набор от компании IMO.

За щастие всички стратегии и усилия се изплатиха. 30 дни в подготовката вече почувствах, че получавам същността на интервюто в стила на Силиконовата долина. По-важното е, че усетих, че вече имам достатъчно дълбоко разбиране на системата за интервю, за да оценя обективно представянето на интервюто. Очакването ми след интервюто винаги е било в съответствие с резултата, което наистина беше добро чувство.

В крайна сметка това, че сте добър интервюиран, не гарантира постигане на върхови постижения в реални проекти. За късмет е, че имаме систематичен начин да играем в тази развиваща се система за интервю, но също така трябва да бъде ясно на всеки кандидат, че дългосрочното натрупване на знания и страстта за цялата индустрия ще извървят дълъг път. Все още съм на път да стана добър софтуерен инженер и тази част ще отнеме някои истински усилия.

Надявам се тази статия да помогне. Чувствайте се свободни да обсъждате, критикувате и споделяте.

My LinkedIn. Facebook. Нека се свържем.

-Siyi