Bir yazılım mühendisliği işine girmeye çalışırken muhtemelen davranışsal ve sistem tasarımı da dahil olmak üzere çeşitli görüşmelerden geçmek zorunda kalacaksınız. Ancak günün sonunda her şey tek bir şeye bağlı: kodlama becerileriniz. Kodlamadaki yeterliliğiniz, bu pozisyona mükemmel şekilde uygun olup olmadığınızı belirleyecek temel faktördür.
Deneyim seviyeniz ne olursa olsun (ister deneyimli bir geliştirici olun, ister üniversiteden yeni mezun olun), bir kodlama görüşmesine katılmak zor olabilir, ancak ısrar ve sıkı çalışma karşılığını verir. Bir yıllık hazırlık sürecinin ardından Facebook'tan teklif alan biri olarak bunu ilk elden biliyorum. Bu makalede, bu yolda öğrendiğim bazı ipuçlarını ve stratejileri sizinle paylaşmak istiyorum.
Hadi dalalım.
Bir yazılım mühendisi olarak günlük çalışmalarınızda algoritmaları ve verileri fazla kullanmıyor olabilirsiniz. Yine de bunlar bilmeniz gereken temel bilgilerdir. Peki bunlarda nasıl iyi olunur? Algoritmalar ve veri yapılarını öğrenmek zorlayıcı olabilir ancak bu, roket bilimi veya gizli sanat değildir. Asıl mesele, bunları öğrenmek için gereken zamanın miktarıdır, bu nedenle planlama ve pratik çok önemlidir.
Kaslarınızı geliştirmek gibi kodlama becerilerinizi geliştirmeyi düşünün. Sadece birkaç haftalık yoğun egzersizle tamamen parçalanıp şekillenmeyi bekleyemezsiniz. Benzer şekilde, birkaç gün içinde algoritmalarda uzmanlaşamayacaksınız. Önemli olan, istediğiniz sonuçları elde etmek için uzun bir süre boyunca tutarlı ve istikrarlı bir çaba göstermektir.
2019 yılında kodlama röportajlarına hazırlanmaya başladığımda İkili Arama gibi en temel algoritmaların nasıl yazılacağı konusunda bile hiçbir fikrim yoktu. Google ile ilk yerinde röportajımı yapmak yaklaşık altı ay boyunca tutarlı bir şekilde pratik yapmam gerekti. Nasıl gitti? Başarısız oldum.
Ama vazgeçtim mi? Hayır. Facebook'tan (artık Meta olarak bildiğimiz) bir teklif alana kadar bir yıl daha pratik yapmaya devam ettim. Sonuç olarak, bu becerileri öğrenmek zaman ve çaba gerektirir, ancak getirisi hayatınızı değiştirebilir!
Kodlama problemleri üzerinde çalışmaya ilk başladığınızda, kendinizi biraz bunalmış hissetmeniz tamamen normaldir. Hatta kendinizi şöyle düşünürken yakalayabilirsiniz: "Benim sorunum ne? Neden en basit sorunu bile çözemiyorum?" Bu öğrenme sürecinin doğal bir parçasıdır. Zamanla daha iyi olacaksınız.
Bunalmışlık duygusuyla başa çıkmak için yararlı ve zaman içinde test edilmiş bir strateji, büyük bir görevi yönetilebilir parçalara bölmek ve ulaşılabilir hedefler belirlemektir.
Her gün 1-2 Kolay veya Orta düzey problemle başlamanızı ve her birine yaklaşık 15-30 dakika ayırmanızı öneririm. Bu, problem çözme becerilerinizi yavaş yavaş geliştirmenize ve bunalmaktan kaçınmanıza yardımcı olacaktır. Kendinize daha fazla güvenmeye başladığınızda, günde 3-4 sorunla uğraşarak yoğunluğu artırabilirsiniz.
Tutarlı uygulamayla nelerin mümkün olabileceğine dair size bir fikir vermek için, Büyük Teknoloji şirketinden ilk teklifimi almadan önce bir yıl boyunca kişisel olarak yaklaşık 200 problemi (%50 Orta, %40 Kolay, %10 Zor) çözdüm. Herkesin kendi hızında öğrendiğini unutmayın; bu nedenle sizin için en uygun uygulama miktarını belirlediğinizden emin olun. Önemli olan odaklanmak ve buna devam etmektir.
Kodlama pratiği yapmak ve röportaj becerilerinizi geliştirmek için mükemmel kaynaklar bulmak istiyorsanız değerlendirebileceğiniz birkaç seçenek vardır. En iyilerinden bazıları Leetcode , Hackerrank ve Codeforces'tur; bu platformlar kodlama becerilerinizi geliştirmenize yardımcı olabilecek çeşitli zorlu sorunlar sunar.
Ancak daha fazla yapıya veya rehberliğe ihtiyacınız varsa Interviews.school gibi kaynaklar veya Algoexpert.io gibi ücretli kurslar da vardır. Bunlar özellikle yeni başlıyorsanız veya nereden başlayacağınızdan emin değilseniz yararlı olabilir.
Mülakat hazırlığı yolculuğum sırasında bu kaynakların tümünü kullandım ve kalitelerine kefil olabilirim.
Teknik becerilerinizi ve problem çözme yeteneğinizi sonuna kadar sergileyebilmeniz için kullanacağınız dile sağlam bir hakimiyete sahip olmanız önemlidir. Genellikle algoritmik kodlamanız için dili seçersiniz, ancak bazen görüşmecinin belirli dil gereksinimleri olabilir. Bunu önceden kontrol ettiğinizden emin olun.
Ana diliniz olmasa bile, kendinizi en rahat hissettiğiniz dili kullanın. Ortak veri yapılarını, kısayollarını ve bellek yönetimini bildiğinizden emin olun. Her ne kadar günlük olarak PHP ile çalışsam da röportajları kodlamak için tercihim Python'dur. Python'un kolay sözdizimi çözümleri hızlı bir şekilde prototiplememe yardımcı oluyor ve $ işaretleri, parantez veya noktalı virgül gibi şeyler hakkında endişelenmeme gerek kalmıyor.
Programlama dilinizdeki becerilerinizi geliştirmek için, dilin temellerini öğrenmeye, kodlama pratiği yapmaya ve diğer programcıların çözümlerini incelemeye zaman ayırın. Leetcode'a göz atmanızı öneririm; Yorumlar ve Tartışmalar bölümünde öğrenebileceğiniz harika örnekler ve teknikler bulabilirsiniz.
Önce soru sormadan bir sorunu çözmek için acele etmeyin. Bu, görüşmeciler için tehlike işareti olabilecek yaygın bir hatadır. Sorunu doğru anladığınızdan emin olsanız bile birkaç açıklayıcı soru sorun.
Kodlama sorunları kasıtlı olarak belirsizdir ve görüşmeyi yapanlar gerekli tüm ayrıntıları önceden vermezler.
Bunun yerine, görüşmeyi yapan kişi sizden ayrıntıları netleştirmenizi bekler; bu nedenle, sizin ve görüşmecinin aynı fikirde olduğunuzdan kesinlikle emin olmak için birkaç soru sorun.
Ayrıca bu şekilde uç durumları tanımlayıp netleştirebileceksiniz. Örneğin, girdinin formatı, ilgili veri türleri veya problemin herhangi bir kısıtlaması olup olmadığı hakkında sorular sormak isteyebilirsiniz. Belirli ayrıntıları bilmek size zaman kazandırabilir ve elinizdeki göreve odaklanmanıza olanak tanır.
Bir röportajda bir problemi çözerken kodlamaya başlamak için acele etmeyin. Öncelikle çözümünüz hakkında konuşmak için bir dakikanızı ayırın. Bu, sorunu netleştirmenize ve konuya dalmadan önce sağlam bir planınızın olduğundan emin olmanıza yardımcı olacaktır. Bu konuyu konuşmak aynı zamanda size zaman kazandırabilir ve gereksiz hatalar yapmanızı engelleyebilir.
Ben de neredeyse bu tuzağa düşüyordum. Bir röportajda benden dize öneki eşleştirmeyi uygulamam istendi. Hemen aklıma Trie'yi içeren oldukça karmaşık bir çözüm geldi. Ancak fikrimi yüksek sesle açıklamaya başladığımda, röportajı yapan kişi beni durdurdu ve iki diziyi yinelemeyi içeren daha basit bir yol istedi.
Eğer hemen kodlamaya başlasaydım, görüşmecinin bile sormadığı aşırı karmaşık bir çözümle zaman kaybedecektim.
Çözümü konuştuktan ve görüşmeyi yapan kişi bundan memnun kaldıktan sonra ancak o zaman onu uygulamaya başlayabilirsiniz.
Kodlama görüşmesi sırasında görüşmeci, çözüme gerçekten ulaşıp ulaşmadığınızla pek ilgilenmez.
Sorun çözme sürecine nasıl yaklaştığınızı görmek istiyorlar.
Düşüncelerinizi açıkladığınızdan ve ilerledikçe gerekçelerinizi açıkladığınızdan emin olun.
Görüşmecinin sizin tarafınızda olduğunu ve başarılı olmanıza yardımcı olmak için orada olduğunu unutmayın. Mülakatı, sizin ve görüşmeyi yapan kişinin bir çözüm bulmak için birlikte çalıştığınız bir ekip çalışması olarak düşünün. Ancak konuşmanın çoğunu siz yapmalısınız (zamanın yaklaşık %70-80'inde). Görüşmeci ara sıra geri bildirimde bulunabilir veya sizi düzeltebilir. Açık fikirli olun ve görüşmecinin geri bildirimlerini kendi avantajınıza kullanarak öğrenmeye istekli olun.
Görüşme boyunca dost canlısı ve duyarlı olun. Odaklanmak için biraz zamana ihtiyacınız varsa görüşmeciye bildirin. Düşüncelerinizi toplamak için kısa bir ara verin, ancak çok uzun sürmesine izin vermeyin.
Bitirdikten sonra kodunuzu titizlikle test etmeyi unutmayın. Test yapmak, gözden kaçırmış olabileceğiniz hataları veya sorunları yakalamanıza yardımcı olması açısından önemlidir.
Kodunuzun beklenen çıktıyı ürettiğinden emin olmak için görüşmeci tarafından sağlanan örnek girdileri kullanın. Giriş sınırları, giriş formatı veya türü, boş, boş veya negatif değerler ve çok küçük veya çok büyük girişler dahil olmak üzere uç durumları test etmeyi düşünün.
Test ederken kodunuzu satır satır gözden geçirin ve değişkenlerin ve ifadelerin değerlerini kontrol edin. Bu şekilde, sadece koda bir göz atarak tespit edilmesi zor olan hataları yakalayabilirsiniz.
Her şeyi test ettikten sonra bir adım geriye gidin ve kodunuzu nasıl daha iyi hale getirebileceğinizi düşünün. Belki sorunu çözmenin daha etkili bir yolu vardır veya kodun okunmasını ve anlaşılmasını kolaylaştırabilirsiniz.
Kodlama görüşmeleri zorlu bir iştir ancak kapsamlı hazırlık ve pratikle başarı şansınızı büyük ölçüde artırabilirsiniz.
Temel çıkarımları özetleyelim:
Sakin olun ve görüşmeye işbirliğine dayalı bir sorun çözme süreci olarak yaklaşın.
Gelecekteki kodlama röportajlarınızda iyi şanslar!
Ana görsel, HackerNoon'un Stable DiffusionAI Image Generator özelliği kullanılarak "facebook'ta bir kodlama röportajı" istemi aracılığıyla oluşturuldu.