Leetcode Hazırlanma Rehberi

abd
4 min readMar 21, 2024

--

Selamlar,

Bu dönem Bilgisayar mühendisliğinden mezun olacağım. Bundan dolayı staj-iş başvuruları yaptığım bir evreye girdim. Benimle aynı durumda olanlar bilir ki eğer şirketlerden bir geri dönüş aldıysanız (şu anda zor bir ihtimal) size teknik bir test yolluyorlar.

Teknik testler; algoritmik problem çözme, veri yapıları ve programlama kavramları ile ilgili oluyor ve belirli bir süre içinde bu problemleri çözmenizi istiyorlar.

Türkiye’deki firmalarda daha çok Hackerrank üzerinden mülakata giriyorsunuz gözlemlediğim kadarıyla. Fakat Global’de Leetcode’un daha yaygın olduğunu düşünüyorum. O yüzden ben LeetCode üzerinden ilerliyorum. Zaten ikisi arasında da çok bir fark yok.

Öncelikle şunu belirteyim. Ben henüz bir işe girmedim. Mülakatları parçaladığımı ve çok iyi olduğumu iddia etmiyorum. Bu yazıyı yazma amacım bu alanda bir çok okuma yapmam ve bir çok profesyonel kişiyle bu konu hakkında görüşmelerim sonucunda elde ettiğim bilgileri sizlerle paylaşmak istemem. Böylece benimle aynı durumda olan kişilere de yardımcı olabilmeyi ve bir yol haritası sunmayı hedefliyorum. Hazırsanız başlayalım:

Leetcode üzerinde çok fazla soru var. Tüm soruları çözmeniz mümkün değil. Zaten mülakata giren kişinin de size tüm sorular arasından sorabilmesi mümkün değil. Bunun için mülakata hazırlanan ve mülakata giren kişiler tarafından bazı listeler oluşturulmuş: Leetcode Blind 75, Leetcode Blind 150 gibi. Bu listeler kişilerin mülakatlar en sık rastladığı problemleri veya benzer problemleri içeriyor. (Leetcode premium ile şirket özelinde en sık gelen problemlere de erişebilirsiniz.)Bir şirketle mülakata girmeden önce en azından Leetcode Blind 75'i çözmeniz size çok şey katacaktır.

Soru sayısını azalttık. Peki direkt başlayacak mıyız? İsterseniz başlayabilirsiniz fakat burada başka bir faydalı kaynaktan daha bahsetmek istiyorum: NeetCode.

NeedCode yukarıda bahsettiğim listeleri Data Structures bazında ayırıp, alakalı problemleri zorluklarına göre sıralayarak size bir roadmap sunuyor. Ayrıca kendisi tam bir Leetcode canavarı olduğu için roadmaptaki soruların hepsinin çözümü kendi youtube kanalında mevcut.

Öncelikle şunu belirteyim eğer benim gibi problem çözmeye yeni başladıysanız soruları ilk bakışta anlamamanız veya çözememeniz çok normal. Leetcode problemlerini çözmek matematik problemleri çözmeye benziyor. Soru çözdükçe sorular arasındaki benzerlikleri yakalıyorsunuz ve bir sonraki soruyu çözmeniz daha kolay oluyor. Neetcode’un roadmapi aslında tam olarak bunu yapıyor. Problemleri konu olarak ayırıp zorluklara göre sıralıyor. Yani siz Array başlığında “Easy” bir problem çözdüğünüz zaman Array konusundaki “Medium” problemleri çözmeniz daha olası çünkü birbiri ile ilişkili problemler. Mesela “Two Sum” problemi ile ilk karşılaştığımda direkt brute force kullanarak çözmeye çalışmıştım. Çünkü derste Hashmap’in ne olduğunu görsem bile nerede kullanacağım konusunda fikrim yoktu. Fakat “Two Sum” problemininin çözümü inceleyip anladığımda “Contains Duplicate” problemini çözüme bakmadan çözebildim. Çünkü ikisinin de ortak çözümünde Hashmap vardı. Eğer problem çözmeye başlamadan önce veriyapıları bilgilerinizi tazelerseniz işiniz daha rahat olacaktır.

Şimdi elimizde hazır bir roadmap de var. Çözümler de var. Nasıl ilerleyeceğiz?

Okuduğum yazılar ve görüştüğüm profesyonellerden çıkardığım sonuç doğrultusunda ben şöyle bir yol izliyorum:

1-) Problemi bir kağıda yazın.

2-) 1 veya 2 gün kağıt üzerinde problemi çözmeye çalışın. Aklınıza gelen her şeyi yazabilirsiniz.

3-) Eğer kendiniz uğraştıktan sonra aklınıza bir çözüm gelmiyorsa, NeetCode’un çözümünü izleyin.

4-) NeetCode’un çözümünü (kodu değil mantığını) kağıda yazın ve anlamaya çalışın.

5-) Eğer çözümü anladığınızı düşünüyorsanız kodu kendiniz yazmaya çalışın. Eğer anladıysanız kodu yazabiliyor olmanız lazım :)

6-) Çözümü submit ettik. İşimiz bitmedi. Sizden daha iyi oranda yapılan çözümleri inceleyin. Leetcode üzerinde bunlara erişebiliyorsunuz. Onlar ne düşünmüş onları anlamaya çalışın. O çözümleri de not edin.

7-) Bir problemi çözüp rafa kaldırmıyoruz. Zaman geçtikçe dönüp problemi tekrar ediyoruz. Zaten hakkını vererek öğrendiysek aynı problemi yeniden çözmek 5 dakikanızı alıyor.

Ben bir problem üzerinde en fazla 3 gün kalıyorum. Günde 1 saat ayırıyorum. Siz de süreyi kendinize göre ayarlayabilirsiniz. Fakat ne kadar çok soru çözerseniz o kadar iyi tabii ki.

Ben tüm bu adımları Notion üzerinde oluşturduğum bir tabloda takip ediyorum:

Siz de buna benzer bir tablo yaparak kendinizi takip edebilirsiniz. Notlarınızı ve çözümlerinizi böylece arşivlemiş olursunuz. Ayrıca yukarıda bahsettiğim problemi tekrar çöze eylemini de kolaylaştırmış oluyor.

Türkiye’de giriş seviyesindeki mülakatlarda çok denk gelmesem de Globalde genellikle algoritmik mülakattan sonra da bir de System Design Interview’e katılıyorsunuz. Bu alanda pek araştırma yapmadım. Çünkü Türkiye’de giriş seviyesi pozisyonlarda bu alanda soru gelmiyor. Bundan dolayı ileride ihtiyacım olacağı zaman hazırlanmayı düşünüyorum. Bu alanda da kendinizi hazırlamak isterseniz şu harika kaynağı buraya bırakıyorum: https://github.com/donnemartin/system-design-primer

Daha fazlası ve kaynaklar:

https://eksisozluk.com/leetcode--3832391?a=search&author=mc yakisikli

https://leetcode.com/discuss/general-discussion/665604/Important-and-Useful-links-from-all-over-the-Leetcode

https://leetcode.com/discuss/general-discussion/665604/Important-and-Useful-links-from-all-over-the-Leetcode

--

--