Cracking the Coding Interview’dan Notlar: Bölüm 3 — Mülakat Hazırlığı ve Davranışsal Sorular

Büşra Demirci
7 min readApr 15, 2019

--

Önceki bölüm: Bölüm 2— Özgeçmiş

Mülakata Hazırlanma Çizelgesi

Özgeçmişinizin her bir projesini veya bileşenini inceleyin ve bunlardan ayrıntılı olarak bahsedebileceğinizden emin olun. Şöyle bir çizelge doldurmak size yardımcı olabilir:

Yatay kolonlarda özgeçmişinizin tüm önemli yönlerini içeren projeleri, işleri veya etkinlikleri listelemelisiniz. Dikey kolonlarda ise sorulabilecek soruları yazmalısınız.

Bu tabloya mülakattan önce çalışın. Her öyküyü birkaç anahtar kelimeye indirgemek, tabloya çalışmanızı ve sonrasında hatırlamanızı kolaylaştırabilir. Bu tabloyu dikkat dağıtıcı olmayacak şekilde mülakatınız sırasında önünüze de koyabilirsiniz.

Ayrıntılı olarak konuşabileceğiniz bir kaç projeniz olduğundan emin olun. Teknik bileşenleri derinlemesine tartışabiliyor olmalısınız. Bunların merkezi rol oynadığınız projeler olmasına özen gösterin.

Teknik Projelerinizin Detaylarına Hakim Olun

Hazırlığınızın bir parçası olarak, iki veya üç teknik projeye odaklanmalısınız. İdeal olarak aşağıdaki ölçütlere uyan projeler seçin:

  • Zorlayıcı kısımları olan bir proje (çok şey öğrenmenin ötesinde)
  • Merkezi bir rol oynadığınız bir proje (ideal olarak zorlayıcı bileşenler üzerinde)
  • Teknik derinlikte konuşabileceğiniz bir proje

Bu projeler ve tüm projelerinizin zorlukları, hataları, teknik kararları, teknolojilerin seçimi, bu seçimlerle neler kazanıp/kaybettiğiniz ve farklı şekilde yapıyor olabileceğiniz şeyler hakkında konuşabiliyor olmalısınız. Ayrıca, “Uygulamayı nasıl ölçeklendirdiniz?” gibi gelebilecek sorulara da hazırlıklı olmuş olursunuz.

Davranışsal Sorular

Davranışsal sorular kişiliğinizi tanımak, özgeçmişinizi daha derinden anlamak ve sizi daha kolay mülakat havasına sokabilmek içindir:

Zayıflığınız Nedir?

Zayıf yönleriniz sorulduğunda gerçek bir zayıflık örneği verin. “Benim en büyük zayıflığım, çok çalışıyor olmamdır” gibi yanıtlar, görüşmeciye, kibirli olduğunuzu veya hatalarınızı kabul etmeyeceğinizi anlatır.

İyi bir cevap, gerçek meşru bir zayıflığı ifade etmeli ancak üstesinden gelmek için nasıl çabaladığınızı da vurgulamalıdır. Örneğin:

Bazen detaylara çok dikkat etmem. Bu, işleri çabucak halletmeme izin verdiği için dikkatsiz hatalar yapıyorum demek oluyor. Bu nedenle, çoğunlukla başkasından benim işimi bir kez daha kontrol etmesini rica ederim.

Mülakatı Yapanlara Siz Neler Sormalısınız?

Çoğu görüşmeci size, onlara soru sorma şansı verir. Sorularınızın kalitesi, bilinç altında veya bilinçli olarak kararlarında bir etken olacaktır.

Şu üç genel soru türünü düşünebilirsiniz:

Şirkete dair sorular: Bunlar, cevaplarını gerçekten bilmek istediğiniz sorulardır. Bu sorular, şirkette günlük yaşamın nasıl olduğuna dair iyi fikirler verecektir. İşte birçok aday için değerli birkaç soru fikri:

  1. Testçilerin geliştiricilere oranı nedir?
  2. Etkileşim nasıldır?
  3. Ekipte proje planlaması nasıl gerçekleşir?
  4. Sizi bu şirkete ne getirdi?
  5. Sizi şimdiye kadar en zorlayan şey ne oldu?

Bilgilendirici sorular: Bu sorular, bilginizi veya teknoloji anlayışınızı gösterir. Bu tür soruların sorulabilmesi şirket hakkında derinlemesine araştırma gerektirecektir:

  1. X teknolojisini kullandığınızı fark ettim. Sorun Y’yi nasıl ele alıyorsunuz?
  2. Ürün neden Y protokolü üzerinden X protokolünü kullanmayı seçti? A, B, C gibi avantajları olduğunu biliyorum, ancak birçok şirket D problemi nedeniyle onu kullanmamayı tercih ediyor.

Tutkunuzu gösteren sorular: Bu sorular, teknoloji tutkunuzu göstermek için tasarlanmıştır. Öğrenmeye ilgi duyduğunuzu ve şirkete güçlü katkılarda bulunacağınızı gösterir:

  1. Ölçeklenebilirlikle (scalability) çok ilgileniyorum ve bu konuda daha fazla bilgi sahibi olmak istiyorum. Bu konuda hakkında şirkette hangi fırsatlar var?
  2. X teknolojisine aşina değilim, ancak ilginç bir çözüm gibi geliyor. Bana nasıl çalıştığını biraz daha anlatır mısınız?

Davranışsal Sorulara Yanıt Vermek

Davranışsal sorular, görüşmecinizin sizi daha iyi anlamasını sağlar. Sorulara cevap verirken aşağıdaki önerileri hatırlayın:

Belirtici (Spesifik) olun, kibirli değil: Spesifik olmak ve sadece gerçekleri anlatmak, mülakatı yapan kişinin yorum getirebilmesine izin vermektir. Örneğin, “Bütün zor kısımları ben yaptım” diyerek değil de, bu “zor kısımları” (challenging parts) tanımlayarak anlatmalısınız.

Detayların sınırı: Bir aday bir problem hakkında fazlaca ve alakasız konuşuyorsa, o konuda pek de iyi olmayan mülakat görevlisi için bunu anlamak zordur.

Detaylara ışık tutun ve kilit noktaları belirtin. Mümkünse, tercüme etmeyi ya da en azından etkisini açıklamayı deneyin. Görüşmeciye her zaman daha detaylı inceleme fırsatı sunmalısınız.

En yaygın kullanıcı davranışını inceleyerek ve Rabin-Karp algoritmasını uygulayarak, kullanıcı durumlarının % 90'ında aramayı 0(n)‘den 0(logn)’e kadar azaltmak için yeni bir algoritma tasarladım. İsterseniz daha fazla ayrıntı verebilirim.

Bu, görüşmecinizin isterse daha fazla ayrıntı talep etmesine izin verirken, kilit noktaları da göstermenizi sağlar.

Takımınıza değil, kendinize odaklanın: Mülakatlar temelde bireysel değerlendirmelerdir. Ne yazık ki, dinlediğimiz birçok aday (özellikle liderlik rolleri için olanlar) cümlelerinde özne olarak “ben” yerine “biz” veya “takım” kullanırlar. Görüşmeyi yapan kişi mülakattan adayın fiili etkisi hakkında çok az fikir sahibi olarak ayrılır ve sonunda adayın çok az şey yaptığı sonucuna varabilir.

Yanıtlarınıza dikkat edin. “Ben” yerine ne kadar çok “biz” kullandığınıza bakın. Her sorunun sizin rolünüzle ilgili olduğunu ve onun hakkında konuştuğunuzu unutmayın.

Yapısal yanıtlar verin: Davranışsal bir soruya vereceğiniz yanıtları yapılandırmak için düşünülmesi gereken iki yaygın yol vardır: “nugget first” ve “S.A.R (Situation, Action, Result)”. Bu teknikler ayrı ayrı veya birlikte kullanılabilir.

“Nugget First” demek, cevabınızın ne hakkında olacağını kısaca anlatacak olan bir “nugget” (küçük ama değerli olan şey) ile başlamak demektir. Örneğin:

  • Görüşmeci: Bana bir grup insanı büyük bir değişiklik yapmaya ikna etmek zorunda kaldığınız bir zaman hakkında bilgi verin.
  • Aday: Tabii, izin verirseniz size, okulumu lisans öğrencilerinin kendi derslerini öğretmelerine izin vermeye ikna ettiğim zamanı anlatayım. Başlangıçta, okulumuzun bir kuralı vardı…

Bu teknik, görüşmecinizin dikkatini çeker ve hikayenizin ne olacağını çok net ortaya koyar. Aynı zamanda iletişiminize daha fazla odaklanmanıza yardımcı olur, çünkü cevabınızın özünde ne olacağını kendinize açıkladınız.

“S.A.R.” (Situation, Action, Result (Durum, Eylem, Sonuç)) yaklaşımı ise, durumu özetlemeye başladığınızın ve ardından aldığınız eylemleri açıkladığınız anlamına gelir ve son olarak sonucu açıklar.

Örnek soru: Bana takım arkadaşınla yaşadığın zorlayıcı bir etkileşimini anlat.

Durum: İşletim sistemleri projemde üç kişilik bir proje grubumuz vardı. İkisi harika iş çıkarıyorken, üçüncü ekip üyesi fazla katkıda bulunmadı. Toplantılar sırasında sessiz kalıyor, e-posta görüşmelerine nadiren katılıyor ve kendi tarafını tamamlamak için çabalıyordu. Bu, bize daha fazla iş çıkardığı için değil aynı zamanda ona güvenip güvenemeyeceğimizi de bilmediğimiz için bir problemdi.

Eylem: Onu bir kalemde silmek istemedim, bu yüzden durumu çözmeye çalıştım. Üç şey yaptım.

İlki, neden böyle davrandığını anlamak istedim. Tembellik miydi? Başka bir şeyle mi meşguldü? Onunla konuşmaya başladım ve nasıl gittiğine ve neler hissettiğine dair açık uçlu sorular sordum. İlginç bir şekilde, durduk yere, en çok zaman alacak işlerden biri olan yazma işlemini üstlenmek istediğini söyledi. Bu bana tembellik olmadığını gösterdi. Durum aslında kod yazacak kadar iyi hissetmiyor gibi olduğunu gösteriyordu.

İkincisi, sebebi anladığıma göre, batırmaktan korkmaması gerektiğini açıklığa kavuşturmaya çalıştım. Ona yaptığım daha büyük hatalardan bazılarını anlattım ve projenin bir çok parçasını bilmediğimi söyledim.

Üçüncü ve son olarak, bana projenin bazı bileşenlerini ortaya çıkarabilmem için yardım etmesini istedim. Birlikte oturduk ve büyük komponentlerden biri için eskisinden çok daha ayrıntılı bir tasarım hazırladık. Bütün parçaları gördükten sonra, projenin tahmin ettiği kadar korkunç olmadığını gördü.

Sonuç: Kendine güveni arttıkça, önce küçük kodlama çalışmalarını ve sonrasında en büyük bölümünü almayı teklif etti. Tüm çalışmalarını zamanında tamamladı ve tartışmalara daha fazla katkıda bulundu. Gelecekteki bir projede onunla çalışmaktan mutluyduk.

Durum ve sonuç az ve öz olmalı. Görüştüğünüz kişinin genellikle olanları anlamak için pek fazla detaya ihtiyacı yoktur ve aslında bu detaylar kafalarını karıştırılabilir.

S.A.R. yaklaşımını net durumlar, eylemler ve sonuçlar ile kullandığınızda; görüşmeci nasıl bir etki yarattığınızı ve neyin neden önemli olduğunu kolayca tespit edebilecektir.

Neredeyse çoğu durumda, “eylem” kısmı hikayenin en önemli kısmıdır. Maalesef çoğu kişi “durum” hakkında konuşur, ancak “eylem” kısmının sadece üzerinden geçerler.

Bunun yerine, eylemin içine dalın. Mümkünse, eylemi birden fazla parçaya bölün. Örneğin: “Üç şey yaptım, ilki…”, bu yeterli derinliği teşvik edecektir.

Söylediklerinizi analiz edin: Yukarıdaki hikayede, aday hangi kişilik özelliklerini sergiledi?

  • Girişim / Liderlik: Aday durumu liderlik ederek çözmeye çalıştı.
  • Empati: Aday, kişiye neler olduğunu anlamaya çalıştı. Aday ayrıca, takım arkadaşının güvensizliğini neyin çözeceğini bilerek empati gösterdi.
  • Merhamet: Takım arkadaşı takıma zarar vermesine rağmen, aday takım arkadaşına kızmadı. Empati onu merhamete götürdü.
  • Alçak gönüllülük: Aday kendi kusurlarını itiraf edebildi (sadece takım arkadaşına değil, aynı zamanda görüşmeciye de).
  • Ekip çalışması / Yardımseverlik: Aday, projeyi yönetilebilir parçalara ayırmak için takım arkadaşıyla birlikte çalıştı.

Hikayelerinizi bu perspektiften düşünmelisiniz. Yaptığınız eylemleri ve nasıl tepki verdiğinizi analiz edin. Tepkileriniz hangi kişilik özelliklerinizi gösteriyor?

Çoğu durumda cevap “hiçbiri”dir. Açıkçası “Ben empati sahibi olduğum için X yaptım” demek istemezsiniz; ancak bir adım öteye gidebilirsiniz. Örneğin:

  • Müşteriyi arayıp, neler olduğunu anlattım.

yerine

  • Müşteriyi kendim aradım, çünkü direkt olarak benden duymanın onu memnun edeceğini biliyordum. (Empati ve Cesaret)

Kişilik özelliklerinizi hala açıklayamıyorsanız, tamamıyla yeni bir hikaye hazırlamanız gerekebilir.

Bana kendinizden bahsedin: Birçok mülakat görevlisi mülakatı bu soru ile ya da özgeçmişinizden sorular sorarak başlatır. Bu aslında bir adımdır. Bu görüşmecinin sizden aldığı ilk izlenim olacaktır.

Birçok insanın işine yarayan yapı kronolojiktir. Mevcut görevinizi ve iş dışında ilgilendiğiniz hobilerinizi anlatırsınız.

  1. Mevcut rol (yalnızca başlık): Son beş yıldır Android ekibini yönettiğim Microworks’te yazılım mühendisiyim.
  2. Üniversite: Bilgisayar bilimleri üzerine eğitim aldım. Berkeley’den mezun oldum ve bir kaç yazımı girişimlerde (startups) çalışarak geçirdim; kendi işimi kurmaya çalıştığım biri de dahil olmak üzere.
  3. Üniversite sonrası: Üniversiteden sonra, büyük bir şirkette çalışmak istedim, bu yüzden geliştirici olarak Amazon’da başladım. Harika bir deneyim oldu. Büyük sistem tasarımı konusunda bir sürü şey öğrendim ve AWS’nin gerçekten önemli bir bölümünün piyasaya sürülmesinde rol aldım. Bu bana daha girişimci bir ortamda olmak istediğimi gösterdi.
  4. Mevcut rol (detaylar): Amazon’daki eski yöneticilerimden biri, beni onun girişimlerinden birisi için işe aldı; ki bu da beni Microworks’a getirdi. Burada hızlı büyümeyle beraber oldukça iyi ölçeklendirilmiş bir sitemin mimarisi üzerinde çalışma fırsatı buldum. Sonrasında ise Android ekibinde liderlik etme fırsatı buldum. Üç kişilik bir ekibi yönettim, ancak öncelikli rolüm teknik liderlikti.
  5. İş dışında: Bazı hackathonlara katıldım — ki çoğunlukla daha derinlemesine öğrenmenin bir yolu olarak iOS geliştirme yaptım. Ayrıca Android geliştirme ile alakalı forumlarda aktifim, moderatör olarak.
  6. Şimdi: Yeni bir şey arıyorum ve şirketiniz gözüme çarptı. Ben her zaman kullanıcıya yakın olmayı sevdim ve gerçekten çok daha küçük bir ortama geri dönmek istiyorum.

Bu yapı, adayların yaklaşık %95'inde işe yarıyor. Daha deneyimli bir aday için, bir kısmını yoğunlaştırabilirsiniz. Bundan on yıl sonra, adayın ilk yorumları şöyle olabilir: “Berkeley’deki CS derecemden sonra, Amazon’da birkaç yıl geçirdim ve daha sonra Android geliştirme ekibini yönettiğim bir girişime katıldım.”

Hobiler: Hobilerinizi dikkatlice düşünün. Hobileriniz kayak yapmak veya köpeğinizle oynamak gibi genel aktiviteler ise, muhtemelen es geçebilirsiniz.

Bazen ise, hobiler kullanışlı olabilir:

  • Hobiniz son derece az rastlanır bir şeydir, örneğin fire breathing (ateş soluma). Üzerine biraz konuşma yapabilir ve mülakata daha samimi bir notla başlayabilirsiniz.
  • Hobiniz tekniktir. Sadece gerçek beceri seviyenizi arttırmakla kalmaz aynı zamanda teknoloji tutkunuzu da gösterir.
  • Hobiniz olumlu bir kişilik özelliğini sergiler: Evinizi tek başınıza tekrardan tasarlamanız. Yeni şeyler öğrenen ve riskler alan biri olduğunuz gösterir.

Hobilerden bahsetmek nadiren zarar verir, bu yüzden şüpheniz olduğunda bile hobilerinizden bahsedebilirsiniz.

Yukarıdaki yapıda, aday tecrübesi ile ilgili bazı önemli noktaları rahatça belirtmiş oldu:

  • Microworks’a özellikle eski müdürü tarafından seçildiğini belirtti, ki bu Amazon’da başarılı olduğunu gösterir.
  • Ayrıca, küçük bir çevrede olmak istediğinden bahsetti; ki bu da, kültürün uygunluğunu gösterir. (Başvurduğu şirketin bir girişim olduğunu varsayarak).
  • AWS’nin önemli bir bölümününün çıkarılmasında görev almak ve ölçeklenebilir bir sistemi tasarlamak gibi başarılı geçmişlerinden bahsetti.
  • Hobilerine değindi; ikisi de öğrenme isteğini gösteriyor.

Sonraki bölüm: Bölüm 4— Big O

<:-)

--

--