Java veri yapıları ve algoritmalar için iyi mi?
Evet. Python'a göre daha uzun kod gerektirir, ama bu uzunluk öğrenirken işe yarar: tipler her düğümü, referansı ve generic parametreyi açıkça gösterir, standart kütüphanenin koleksiyonları da bu yoldaki yapılarla birebir örtüşür. Neredeyse her online judge ve mülakat için yeterince hızlıdır; birçok üniversite dersinin ve kampüs işe alım sürecinin kullandığı dil de odur.
Hangi Java koleksiyonu hangi veri yapısına karşılık gelir?
ArrayDeque bir stack ya da kuyruktur, LinkedList çift yönlü bir bağlı listedir, HashMap ve HashSet hash tablolarıdır, PriorityQueue ikili bir min-heap'tir, TreeMap ve TreeSet ise kırmızı-siyah ağaçlardır: ikinci adımda kurduğun AVL ağacı gibi dengeli bir ikili arama ağacı. Trie ya da graf sınıfı yok; onları kendin yazarsın.
Java'da Stack mi kullanmalıyım, ArrayDeque mi?
ArrayDeque. Stack, Vector'ı genişleten eski bir sınıftır; bu yüzden her çağrısı senkronizedir ve bir stack'te olmaması gereken liste metotlarını miras alır. Java dokümantasyonu da onun yerine bir Deque önerir. Mülakatçılar bunu fark eder: deyimsel satır Deque<Integer> stack = new ArrayDeque<>(); şeklindedir.
DSA için Java mı, C++ mı?
Hangisiyle mülakata girecek ya da yarışacaksan o. C++, hızı ve STL sayesinde yarışma programlamasında standarttır; Java mülakatlar için aynı derecede iyidir ve çöp toplayıcısı sayesinde algoritmalar henüz yeniyken elle bellek yönetimiyle uğraşmazsın. Fikirler aynı olduğundan sonradan dil değiştirmek yeniden öğrenmek değil, sözdizimini çevirmek demektir.
Bu yoldaki hangi kurslar Java ile anlatılmıyor?
Üç kurs. Dinamik programlama ve Python mülakat serisi Python ile, bit işlemleri ise C++ ile anlatılıyor. Adımlardan sonra listeleniyorlar ve her birinin, onu kendi dilinde açan bir bağlantısı var; ikisi de Java'dan gelen biri için kolayca okunur: bir yineleme bağıntısı her dilde aynıdır, Java'da da C++'ın bitsel operatörleri ve ayrıca işaretsiz kaydırma >>> vardır.
Bu yola başlamadan önce Java bilmem gerekiyor mu?
Sınıflar, metotlar, diziler ve döngülerle rahat olmalısın; generic'ler işe yarar, onları da yolda öğrenirsin. Henüz orada değilsen, Coddy'nin Java kursu seni önce oraya ücretsiz olarak getirir ve bu yol onun bittiği yerden devam eder.