Amazon Mülakat Tecrübem.
Merhaba arkadaşlar bu konuya geçmiş mülakat tecrübelerimi yazıyorum ve bu sefer sizlere Amazon mülakat tecrübemi aktarmak istiyorum.
Daha önce iki adet daha mülakat tecrübesi yazısı yazmıştım. Onları da okumak isterseniz eğer;
Microsoft için -> https://yesilkartforum.com/forum/post/257355
Bir başka küçük amerikan şirketi için -> https://yesilkartforum.com/forum/post/247584
Neyse gelelim Amazona. Başvuru için özel bir şey yapmadım. Amazonun websitesine girip kendime uygun gördüğüm bir kaç ilana başvuru yaptım. Bundan sonra yapmanız gereken şey beklemek. Başvurudan itibaren 3 hafta sonra bir mail aldım. Beni Online Assessment'a davet ettiler.
Online Assessment aşaması;
Online assessment aslında tarayıcıdan çözdüğünüz bir test. Size bir link gönderiyorlar. test içerisinde 2 yada 3 tane soru oluyor. Bunu çözmeniz lazım. Bu aşama aslında bir ön eleme aşaması. Çünkü amazon gibi devasa şirketler her gün belki de yüzbinlerce başvuru alıyor ve bu işe bir insan kaynağı ayırmadan önce adayları bir ön elemeye tabi tutuyorlar. Aynı süreci Microsoft mülakatımda da yaşamıştım.
Test içinde 2 yada 3 tane soru var. Değişiyor bu rakamlar. Ve süre sınırınız var. Soruları 90 dakika içinde çözmeniz lazım. Ayrıca yazdığınız kod test ediliyor. Yani yazdığınız kodun compile edilebilmesi lazım. Her soru için yaklaşık 25 test var. Bunları göremiyorsunuz. O yüzden eğer bazı testleri geçemiyorsa bunu koda bakıp nerede hata yaptım diye kendi kendinize düşünmeniz lazım. Bunun nedeni adayın edge case denilen nadir hataları düşünüp düşünmediğine bakılıyor.
Ben buna hazırlıklı olduğum için 30 dakikada iki soruyu da çözdüm ve bütün testler geçti.
Telefon Mülakatı Aşaması (Phone Screen Interview)
Online testi bitirdikten bir gün sonra diğer aşamaya geçtiğime dair bir mail aldım. Bu mailde benden telefon mülakatı aşaması için en az 5 adet tarih belirlememi istiyordu. Kendime uygun 5 tarih seçip beklemeye başladım. Bundan yaklaşık 4 gün sonra telefon mülakatı tarihinin kesinleştiğine dair mail aldım. Ve bu aşamaya da hazırlanmaya başladım. Genel olarak Algoritma ve Veri Yapılarına baktım.
Bu arada telefon mülakatı dediğime bakmayın. Telefon ile girmiyorsunuz. Zoom gibi bir video konferans uygulamasıyla giriyorsunuz mülakata.
Mülakat günü geldi ve mülakat da başladı. Karşı taraf iyi birisiydi. Yaklaşık 14 yıllık tecrübesi olan senior bir geliştiriciydi. Kendimizi tanıtarak başladık. Daha sonra bana sorular sormaya başladı. Geçmiş tecrübelerimle alakalı. Günlük olarak çalışırken işte hangi veri yapılarını kullandığımı sordu. Verdiğim cevaptan sonra bu veri yapılarını kendin yazacak olsan nasıl yazarsın gibi sorular sordu. Ben de cevapladım. Daha sonra bu işlemlerin time complexity sürelerini sordu ve Big O'ya göre cevapladım. Hatta bir süreyi yanlış hesaplamışım. Bana peki şöyle olsa nasıl olur gibisinden bir soru sorunca yaptığım hatayı anladım ve doğrusunu söyledim.
Bu teknik sorulardan sonra basit bir algoritma sorusu sordu bana. Soruyu recursive method kullanarak cevapladım. Daha sonra bu işlemin memory üzerindeki etkilerini falan konuştuk. Bu soru Online Assessment aşamasındakine benzer bir soruydu.
En son olarak behavioral denilen aşamaya geçtik. İşyerinde hiç zorlukla karşılaştın mı eğer karşılaştıysan nasıl davrandın gibisinden. Tecrübeniz varsa cevaplıyorsunuz. Yoksa eğer bu soruyu geçmek istiyorum deyip pass hakkınızı kullanabilirsiniz. Mülakatı yapan kişi böyle dedi bana. Ama ben hiç pass geçmedim zaten 2 soru soruldu. Daha sonra 1 saat dolunca birbirimize iyi günler dileyip ayrıldık.
Final Mülakat (Onsite Interview)
Telefon mülakatından 5 gün sonra recruiter beni telefonla aradı ve bu aşamayı da geçtiğimi söyledi. Sonra da final mülakat hakkında konuştuk. Bana nasıl hazırlanacağımı hangi konulardan sorular geleceğini falan anlattı. Gayet yardımsever geçti bu konuşma. Size de tavsiyem Recruiter ile iyi geçinin ve dedikleri dinleyin. Çünkü Recruiter olarak çalışanlar şirkete kattığı adam başına komisyon alır ve sizin işe girmenizi sizden daha çok isterler.
Final mülakat için de tarih belirlendi. Ben telefon mülakatından 1 bir buçuk ay sonrasına tarih verdim hazırlanmak adına.
Final mülakat 4 aşamadan oluşuyor. 1 saatlik 4 tane mülakata giriyorsunuz ardı ardına. Bunların durumu değişebiliyor. Bazı kişilerin bütün aşamaları teknik oluyor bazılarının olmuyor. Benim mülakatımda 3 aşama teknik 1 aşama behavioral yani davranışsal aşamaydı.
3 teknik aşama var dedik peki ne sordular? Bunlardan ikisi System design denilen aşamaydı.
System design iki çeşit.
Birisi High Level Design denilen, sistem içinde hangi komponentleri kullanırdın? Kaç tane servisin olurdu? Database olarak ne seçerdin? Database'e kaydedilen objelerin şeması nasıl olurdu gibi Bu High Level Design sorularında genellikle kod yazmanız beklenmez. Şunu şöyle yapardım bunu böyle yapardım dersiniz ve size neden diye sorulduğunda bunu savunursunuz. Buna örnek olabilecek bir soru şu olabilir mesela;
"Eğer Youtube gibi bir video sitesi tasarlayacak olsan nasıl tasarlardın?"
Bir diğer önemli konu şu yaptığınız design seçimlerinin scalable olması lazım? O yüzden mesela vertical scaling, Horizontal Scaling gibi metodolojileri bilmeniz lazım. Yada database nasıl scale edilir. Bunlar soruluyor. Sharding yada replication olabilir mesela. Örnek veriyorum.
İkinci çeşit System design konusu ise Low Level Design. Bunda artık kod yazmanız gerek. Size bir sorun veriliyor. Elimizde bu var ve biz bunu yapmak istiyoruz diyor. Bu kısımda OOP kullanıp extensible bir kod yazmanız lazım. Extensible derken kastım şu; Diğer takımlar bu kodu kendine göre düzenlesin ama senin kodun da bu değişikliklerden etkilenmeden çalışmaya devam etsin. Burada artık OOP kullanmazı lazım. Inheritence Polymorhism gibi OOP metodolojilerini kullanacaksınız.
Benim mülakatın iki aşaması bu system design kısmından geldi. Birisi High level diğer de low level design sorusuydu. Ben buna hazırlandığım için kolay geçti benim için. Ve yine bu kısımda da davranışsal sorular sormaya devam ettiler.
Diğer teknik aşama başka bir algoritma sorusuydu. Bu soruyu ben Depth First Search kullanarak çözdüm. Daha sonra bunun time ve memory complexity değerlerini konuştuk. Recursive method kullandığım için memory complexity şu olur falan dedim. Mülakatı yapan kişi bana bunu recursive kullanmadan çözebilir miyiz diye sordu. Ben de Depth First Search yerine Breadth First Search kullanabiliriz deyince onu da kod olarak yazmamı istedi. Bu çözümün de yine time ve memory complexity değerlerini ayrıca tartıştık. Yine bu aşamada da davranışsal sorular geldi.
Teknik olmayan aşamaya bir Manager girdi. Hiç teknik sormadı. 1 saat boyunca bana davranışsal sorular sordu. Örneğin hiç X zorluğunu yaşadın mı? Hiç yöneticin ile ters düştün mü? Hiç insiyatif aldın mı vs. Sanırım en yorucu aşama buydu. Sorular bitmek bilmedi bir türlü. Ama hepsini de nasıl olduysa cevaplamayı başardım. Bir daha yapabilir miyim emin değilim hehehe.
Sonuç
5 gün sonra recruiter bana mail attı konuşabilir miyiz diye ve videolu görüşme yaptık. Mülakatı geçtiğimi ve Amazonun bana iş teklif etmek istediğini söylediler. Bu kısımda hmm teşekkür ederim dedim sakince durdum ama içim kıpır kıpırdı. Bana işte maaş olsun, yan haklar olsun, vize konusu olsun genel bir bilgi verdi. Daha sonra bana şartların iyi olup olmadığını sordu. Ben kabul ettim ve 1 saat sonra Official Offer Letter geldi mailime ve kabul ettim. Şu an Vize işlemlerime başladık.
Mülakat tavsiyesi olarak şunu verebilirim. Güzel iletişim kurun. Güzel iletişimden kastım ingilizcenizin mükemmel olması değil tabiki. Karşınızdaki sizi anladığı sürece emin olun aksanınız falan hiç önemli değil. Güzel iletişimden kastım şu. Yaptığınız işi anlık olarak karşı tarafa aktarmak. Siz mükemmel kod yazarsınız ama karşınızdaki neden yaptığınızı anlamaz o zaman boşa gider emeğiniz. Ayrıca iletişimi erkenden sağlarsanız ve çözümde yanlış yoldaysanız sizi erkenden uyarabilir ve doğru yola vaktinizi harcamadan girersiniz. Mülakat sadece teknik değil. Karşınızdaki kişi sizin iletişim becerinize, verilen önerileri anlayıp anlamadığınıza, anladıysanız kafanızın dikine gidip gitmediğinize de bakıyor. Eğer siz kafanızın dikine giderseniz mülakatı yapan kişi size olumsuz yanıt verir. Niye? Çünkü kimse dik kafalı biriyle çalışmak istemez. O yüzden sağlıklı bir iletişim bence çok önemli.
Diğer vereceğim tavsiye de güler yüzlü olmanız. Ben mesela mülakat girişlerinde hep merhaba nasılsın hayat nasıl gidiyor tarzı sorular sordum buzları eritmek ve arayı yumuşatmak adına. Bunu siz de yapabilirsiniz.
Teknik aşamalar için vereceğim tavsiye Algoritmalar, Veri Yapıları ve System Design çalışmanız.
Bunlar için YouTube'da bolca kaynak mevcut. Youtube'a bakabilirsiniz.