Tam gün işləyərkən 43 gün ərzində proqram mühəndisi sövdələşmələri necə aparılır

Faktlar

Təxminən bir il əvvəl Google, LinkedIn, Amazon, Uber-dən bir proqram mühəndisi kimi təkliflər aldım ... Təkliflərin çoxu promosyon xarakterli idi və baza maaş artımı% 40 idi. Nəticədə bu şirkətlərin hamısından Uberi seçdim (ən yüksək əmək haqqı alan şirkət yox, amma bu şirkətin potensialı ilə çox bağlı idim, haha). Bu gün Uber ilə ilk ildönümüm olduğundan və ətrafımdakı dostlarım davamlı olaraq məsləhət istədikləri üçün bir il əvvəl müsahibə prosesi barədə düşünməyə və hazırlıq işində faydalı tapdığım əsasları daxil etməyə çalışdım.

Niyə başlamaq

Həm karyeramı, həm də yaşadığım şəhəri həqiqətən qiymətləndirirəm. İlk iş axtarmağa başlayanda Microsoft Office komandasında çalışdım və Bellevue-də yaşadım. Hər iki amil də iş axtarmaq qərarımda bərabər dərəcədə kömək etdi. Veblə əlaqəli proqram hazırlanması üzərində işləmək və həm çox, həm də əylənə bilən gənc mütəxəssislərlə dolu canlı bir şəhərdə yaşamaq istəyirəm. Əvvəlki işimdən və şəhərimdən verilən üstünlüklərdən heç biri yerinə yetirilmədiyi üçün davam etməyə qərar verdim.

Plana ümumi baxış

Proqram mühəndisləri üçün Silikon Vadisi tərzində aparılan bir müsahibə olan IMO, işdə öz performansını qiymətləndirməkdən çox fərqli olan ayrı bir qiymətləndirmə sistemidir. Bir çox şirkət anket prosesini anketlər tərəfindən verilən siqnalın müraciət edənlərin mümkün qədər çox real iş görmə qabiliyyətini əks etdirməsi üçün dəyişdirməyə çalışsalar da, mükəmməllikdən uzaqdır. Bu hazırlıq prosesinin əvvəlində məqsədim aydındır: müsahibə prosesinə standartlaşdırılmış bir sınaq kimi baxmaq və onu bağlamaq.

Çin təhsil sisteminin uzun müddət məruz qalmasından faydalanmaq / xilas olmaq, standartlaşdırılmış bir test hazırlamaq mənim üçün həmişə asan bir iş olmuşdur: yüksək intensivlikli bir zaman çizelgesine ehtiyacım var və yalnız qarşıda duranlara vaxt ayıracağam.Müahibələrə təsirli olun. İnsanlar kollec dərsliklərini oxumağı öyrənməyə davam etdikləri bir çox onlayn yazı var və bu mənim üçün artıqdır. Müsahibə yaratmaq üçün yalnız Knapsack-in tarixini bilmək lazım deyil. Bilməlisiniz ki, problemləri həll etmək üçün dinamik proqramlaşdırmadan necə istifadə etməkdir. Müsahibələrə hazırlaşmaq üçün mütləq bir "qısayol" olduğunu demirəm, amma ən azından ağlabatan namizədlərin razılaşacağı bu "aydın yol" olmalıdır.

Qurtarılmış cədvəl: CV-nı yeniləmək üçün 1 gün, göndərmə / istinad / şəbəkə qurma üçün 2 gün (müsahibəni almağa kömək edən hər hansı bir proses) və ilk müsahibədən əvvəl hazırlıq üçün 20 gün və nəhayət görüş üçün 20 gün / əlavə hazırlıq.

Müsahibələr alın

Müsahibə üçün şirkətlərin siyahısı

Yuxarıda Evernote-da tərtib etdiyim şirkətlərin siyahısı verilmişdir. Yaşadığım şəhəri həqiqətən qiymətləndirdiyim üçün şirkətləri üç qrupa ayırdım: NYC, LA və SF Bay Area (Körfəzin qalan hissəsinə o qədər də dəyər vermirəm, bu şirkətlər mənim üçün ikinci sinifdir) Uzun iş yerlərindən nifrət edirəm.).

Yuxarıda sadalanan şirkətlərin hər biri üçün bu şirkətlərə üç fərqli baxımdan müraciət etdim: onlayn portal, dostlarınızın göndərişləri və LinkedIn vasitəsilə əldə edilə bilənlər. Bir az məsləhət budur ki, onlayn ərizə təqdim etdikdən sonra bəzi şirkətlər üçün tövsiyələr artıq olmayacağına görə dostlarınızın tövsiyələrini onlayn portal üzərində üstün tutmağa çalışın.

Yuxarıda göstərilən proseslərin hamısını yuxarıdakı bütün şirkətlər üçün bir həftə sonu etdim və bu gələn bazar ertəsi günü EOD-da 10-dan çox müsahibə aldım.

Alqoritm və məlumat quruluşu

Namizədlər ümumiyyətlə alqoritmlər və məlumat strukturları ilə danışıqlardan qorxurlar, amma şəxsən düşünürəm ki, sistematik olduqdan sonra bu daha asan mövzulardan biridir. Hazırlıq mərhələsində iki perspektivə diqqət ayırdım: problemin həlli və problemin necə həll ediləcəyinin izahı.

Problemimin həllinə hazırlaşmaq üçün Leetcode.com adlı onlayn kodlaşdırma platformasından istifadə etdim və nəticədən məmnunam. Leetcode.com saytında təcrübə edərək proqram mühəndisi ilə reportajların hazırlanması yeni bir şey deyil, amma daha az yanaşma ilə fərqləndiyimi düşünürəm: yalnız ilk 150 problemə diqqət ayırdım. Çətinliklərə görə sıralayıb daha asan olanlardan başlamaq lazım olduğunu söyləyənlər çox azdır və mənə görə bu cəfəngiyatdır: özünüzü əyləndirməyə və ya özünüzə olan inamı artırmağa hazırlaşmırsınız və keçməyə çalışmalısınız. Real danışıq ssenarisini mümkün qədər obyektiv şəkildə əks etdirin.

İlk 150 problem əladır. Bir proqram mühəndisi müsahibəsində tələb olunan bütün mövzuları əhatə edir: String, Array, Binary Tree, Dynamic Programming, Bit Manipulation kimi ümumi mövzulardan Segment Tree, Trie, Topological Sort kimi ümumi olmayan mövzulara qədər.

Leetcode.com-da əhatə olunan mövzular

Hər bir proqramlaşdırma cəhdinin vaxtı. Müsahibə ritminə girmək üçün ciddi vaxt təyin etmək vacibdir. İlk 150 təkrarımda hər problem üçün 30 dəqiqə vaxt verdim. Problemlərin ilk təkrarında həqiqətən hər problemi həll etmək üçün çox çalışdım. Bir problemi 30 dəqiqə ərzində həll etməmişəmsə, 30 dəqiqədən sonra başa düşə bilməyincə çox dayanacağam. Ancaq ikinci təkrarlamam üçün düşüncəmdə yanaşmaların olduğunu düşünərək hər bir problem üçün vaxt məhdudiyyətini 15 dəqiqəyə təyin etdim.

Problem həllinin izahı başqa vacib rol oynayır. Əvvəllər düşünürdüm ki, əlbəttə mənim çatışmazlığım olacaq, çünki ingilis dili mənim ana dilim deyil. İngilis dilində sərbəst danışmaq texniki bir görüşmədə həlledici bir amil deyil. Doğrudur, söhbət “doğru dildə danışmaqdan” gedir, amma “doğru dil” əslində İngilis dili kontekstinə daxil olan doğru terminologiyanın toplusudur. Bu səbəbdən, doğru terminologiya və fikri düzgün çatdırmaq prosesi çalışmaq üçün ən vacib cəhətlərdir.

Geeksforgeeks.com düşüncə prosesi izahıma hazırlaşarkən mənə ən çox fayda verən veb saytdır. Hər sinif alqoritmi və klassik nümunə problemləri haqqında bir texnoloji blog brifinqidir. Tech-Blog müsahibə tempinə tamamilə uyğundur: Hər ikisi də kristal kimi bir fikri vaxta və dəqiq bir şəkildə çatdırmağa çalışırlar. 150-də olan hər bir proqramlaşdırma problemi üçün problemin arxasındakı alqoritm haqqında düşündüm. Sonra Geeksforgeeks.com alqoritmi, nümunə problemləri və onların həlləri barədə məqaləsini hərtərəfli oxuyacağam.

Geeksforgeeks-i oxuduqca yeni bir məzun olaraq texnoloji görüşmə müddətini nə qədər darıxdığımı başa düşdüm. Hər hansı bir problemə sürətli həll yolu namizədin ağıllı görünməsinə baxmayaraq "dildə danışın" / Problemi düzgün şəkildə izah edirsinizsə, reportajçılar namizədlə işləmək istəyirlər. Ümumiyyətlə, sonuncusu daha da vacib bir rol oynayır və düzgün cavab ala bilmədiyim, ancaq ünsiyyətim müsbət rəyləri qazandığı bir sıra Google müsahibələrində mənimlə tam olaraq belə oldu.

Sistem dizaynı

Sistem dizaynı NCG ilə müqayisədə sənaye üçün daha çox ağırlığa sahibdir. Əvvəlki işim zamanı geniş miqyasda veb sistemlər dizayn etmə təcrübəm olmadan özümü itki hiss etdim.

Xoşbəxtlikdən hiredintech.com saytından sistem dizayn kursları mənə ən çox kömək etdi. Veb sistemindəki əsas problemlərə toxunan əsas anlayışları və ən əsası, illərin təcrübəsindən bəhs etdiyiniz kimi dizaynınızın neçə hissəsini kəmiyyətlə təyin etmək olardı.

Sistem dizaynını tətbiq etmək çətin ola bilər, çünki mahiyyətcə açıq bir sualdır və problemin həlli üçün universal / standart bir proses tapmaq çətindir. Bəs universal bir yanaşma tapılmazsa nə etməliyik? Sistem dizayn problemlərini kateqoriyalara ayırırıq və paylaşırıq və fəth edirik.

Təsnifləşdirmə prosesi olduqca sadədir. Bəzi populyar məhsulların üzləşdiyi darboğaza görə kateqoriyalara ayırdım və bu məhsulların bu çatışmazlıqları necə aşdığına dair nümunələri ümumiləşdirdim. Aşağıda veb tətbiq siyahısının bir hissəsidir.

Justin Tv

Haciz

Instagram

Flickr

Gördüyünüz kimi, məqalələrin çoxu highscalability.com saytındandır. Bu veb saytın dərinliyini araşdırın.

Son

Geriyə baxanda 43 gün idi. Bir həftə içində təxminən 5 saat, bir həftə sonu təxminən 15 saat hazırlaşdım. Şirkətlərin hamısını iki qrupa ayırdım: birinci qrup Google, Amazon, LinkedIn, Uber və s., İkinci qrup isə Facebook, Bloomberg, Airbnb, Spotify və s. Yalnız birinci qrupu planlaşdırmağı qərara aldım ilə başlayın. Fikir budur ki, hazırlığım tam işlənməyibsə, strategiyamı düzəltməyə və IMO şirkətlərinin eyni dərəcədə yaxşı bir qrupu olan ikinci partiyaya çəkilməyə hələ vaxtım var.

Xoşbəxtlikdən bütün strategiyalar və səylər nəticə verdi. 30 günlük hazırlıqda artıq Silikon Vadisi tərzindəki reportajın mahiyyətini başa düşdüyümü hiss etdim. Hər şeydən əvvəl, mən müsahibə sistemini artıq o qədər yaxşı başa düşdüyümü hiss edirdim ki, müsahibə fəaliyyətimi obyektiv qiymətləndirə bilərdim. Müsahibədən sonra gözləntilərim həmişə nəticəyə uyğun gəlirdi, bu da həqiqətən yaxşı bir hiss idi.

Nəticədə yaxşı bir müsahibə olmaq, real layihələrdə ən yaxşı performansı təmin etmir. Bu inkişaf etməkdə olan müsahibə sistemini sistemli şəkildə oynaya biləcəyimiz üçün şanslıyıq, lakin eyni zamanda hər bir namizəd üçün uzunmüddətli bilik qurmağın və bütün sahəyə olan bir ehtirasın uzun bir yol qət edəcəyi aydın olmalıdır. Hələ də yaxşı bir proqram mühəndisi olmaq yolundayam və bu hissə bir az real səy göstərəcəkdir.

Ümid edirəm bu məqalə kömək edir. Müzakirə etmək, tənqid etmək və paylaşmaqdan çəkinməyin.

Mənim LinkedIn. Facebook. Bağlanaq.

-Siyi