MÜLAKAT SORULARINA ÖRNEKLER

Günümüzde büyük şirketler dediğimizde ve dünya çapında düşündüğümüzde aklımıza gelen ilk isimler genelde Apple, Google, Microsoft gibi teknoloji devleri olur, hatta yazılımcılar arasında bu üç şirkete “üç büyükler” şeklinde isim takanlar da vardır. Bu şirketlerde göze çarpan ana unsurlar; yola çıktıkları fikirlerin diğer şirketlerden farklı ve sağlam bir bakış açısına sahip olması, başlangıçlarından zirveye çıkmalarına kadar geçen zamanın çok az olması ve sonrasında devasa şirketlere dönüşseler bile yenilikçi yapılarını koruyarak büyümelerine devam etmeleri olarak sayılabilir. Tabi ki bu devamlılığı sağlarken yola devam edecekleri çalışanlarını seçmek ve onları canlı tutmak çok büyük önem arz etmektedir. Bu yazının devamında bu şirketlerin çalışanlarını seçerken yaptıkları mülakatlarda sorulan sorulara birkaç örnek vermeye çalışacağım.

Birkaç ay öncesine kadar Google’da çalışan ve üniversitemiz kadrosuna bu dönem katılan Yrd. Doç. Dr. Çağdaş Evren Gerede, bu dönem verdiği yazılım mühendisliği dersinin başlarında kendisinin yaptığı iş alım mülakatlarında sorduğu sorulardan birini bizimle paylaştı. Soru şöyle:

Üniversitemizde birinci sınıfta Java yazılım dersi almış herkesin az çok bildiği ve kullandığı, Java’da hazır olarak kullanıcılara sunulan “substring()” fonksiyonunun içi nasıl yazılmış olabilir, kodunu yazarak gösteriniz. Bu soruyu düşündüğümüz zaman çözümü gayet optimal bir şekilde yapılmış olan bir problem sorulmuş ve istenildiği zaman internetteki Java dokümanlarından bu koda çok kolay bir şekilde ulaşılabilir. Yani bu bir yazılım mühendisi için çok göz önünde bir şey fakat içini açıp bakan veya hakkında düşünen çok azdır. Tabi ki çözüm önceden bilinmeden de yapılabilir, zaten sorunun sorulmasının amacı da genel itibariyle budur.



Yine aynı öğretim görevlimizin dersinden alıntı yaparak kendisinin Microsoft’a mülakat için gittiği zamanlarda kendisine sorulan sorulardan birinden bahsedeceğim. Sorulan soru bir kod yazma sorusu değil. Soru şu, mülakata katılan kişiye bir kalem verilmekte ve bu kalemi test edin denilmekte. Bu soruyu düşündüğümüz zaman herkesin günlük hayatta çok sıklıkla kullandığı bir materyali test etmeniz istenmekte, peki ya istenilen cevap ne? Genellikle verilen cevaplar, “yazmaya başlarım yazıyorsa iyidir”, “uzun süre yazarım hala mürekkebi bitmediyse iyidir” gibi oluyormuş fakat tabi ki istenilen bu değil. Öncelikle mülakata giren kişinin bu kalemin hangi amaçla kullanılacağı sorusunu sorması ve sonrasında bu kalemin kimlere hitap edeceğini düşünerek, testi daha özel ve başarılı hale getirmesi bekleniyor. Mesela bu kalemi bir üniversite öğrencisi kullanacaksa başka, bir çocuk kullanacaksa bambaşka özellikler için test edilmesi gerekir. Bu sizden beklenen ilk adım ve sonrasında gelen cevaba göre durumu doğru analiz edip teste devam etmeniz de çok önemli.

Piyasada bu konu hakkında birçok kitap var, ayrıca internette de bol bol kaynak bulunabilir. Son olarak bu sorulardan birinden bahsedeceğim. Soru şu: “100 katlı bir binada çalışıyorsunuz ve size iki adet aynı yumurta veriliyor. Bir yumurtanın en yüksek hangi kattan aşağı bıraktığınızda kırılmayacağını belirlemeniz gerekiyor. Sorunun cevabını bulmaya çalışırken iki yumurtayı da kırmanıza izin veriliyor. Sorunun cevabını bulmak için binadan kaç sefer yumurta atmanız gerekir?”* Bu sorunun cevabı kitapta yaklaşık 8 sayfada detaylıca anlatılmış. Cevabı özetleyecek olursak bizden asıl istenilen doğru katı belirlemek için gereken azami sayıdaki deney sayısını olabildiğince küçük tutmak. Mesela bir yumurtayı birinci kattan başlayarak yüzüncü kata kadar aşağı atarız ve hangi katta kırılırsa bir alt katı bizim için yumurtanın atıldığında kırılmayacağı en yüksek kattır. Bu bize çözümü verir fakat azami deneme sayısı 100’dür, bu yavaş bir algoritmadır ve ikinci yumurtayı kullanma şansımız varken kullanmamışızdır. Bunlar dikkate alınarak farklı algoritmalar üretilebilir. Azami deney sayısı 14 olan bir algoritma vardır fakat açıklaması uzun olacağı için burada sonlandırıyorum. Algoritmayı merak edenler cevabı kitapta sayfa 159’da bulabilirler.

Sonuç olarak mülakatlarda sorulan sorular genel itibariyle bir yazılımcının önceden kullandığı yollar, günlük hayatta kullandığı materyallerden gayet basit ifadelerle açıklanmış algoritma sorularına kadar değişiklik gösterebilir. Dikkat etmemiz gereken nokta, problemi çözmek kadar probleme yaklaşımımızın da gayet basit olması gerektiğidir. Basit bir düşünceyle yola çıkarak ve problemi olabildiğince daha özele indirgeyerek çözüme başlamalıyız. Unutmayalım ki bu sorular insanların işe girmelerini engellemek için değil onların düşünce sistemlerini test etmek içindir. Mülakatı yapanların istedikleri sonuçlara bakarak aslında bu işte başarılı olmanın bu sonuçları verebilecek bir kişi gibi kendimizi geliştirmeye çalışmak ile alakalı olduğunu anlamak bu yolda bize yardımcı olacaktır.

*Google’da Çalışacak Kadar Akıllı Mısınız? , 2012 , William Poundstone(Çeviri: Can Evren Topaktaş)

Tarih : 19.02.2016