JavaScript veri yapıları ve algoritmalar için iyi mi?
Evet, özellikle frontend ya da full-stack rollere yöneliyorsan; orada mülakata gireceğin dil zaten bu. Erkenden öğrenmeye değer üç tuhaflığı var: yerleşik bir heap ya da kuyruk yok, sort() bir karşılaştırıcı vermedikçe string olarak karşılaştırır ve her sayı 64 bitlik bir kayan noktalı sayıdır, bu yüzden 2^53'ün üzerindeki tam sayılar BigInt gerektirir.
JavaScript'te yerleşik bir heap ya da öncelik kuyruğu var mı?
Hayır. Array, Map, Set ve bunların weak türevleri var, o kadar. Bir mülakatta ya yaklaşık otuz satırlık küçük bir ikili heap yazarsın ya da bir tane kullanacağını söyleyip maliyetlerini belirtirsin; her iki durumda da daha önce bir tane yazmış olman gerekir. Bu yolun ikinci adımı tam da bunu yaptığın yer.
[10, 9, 1].sort() neden [1, 10, 9] döndürür?
Çünkü bir karşılaştırıcı olmadan Array.prototype.sort elemanları string'e çevirir ve UTF-16 sırasına göre karşılaştırır; '10' da '9''dan önce gelir. Sayıları nums.sort((a, b) => a - b) ile sırala. Bu, JavaScript'te sıralama kodu yazmaya başlayanların çoğunun karşılaştığı ilk hatadır.
Frontend mülakatlarında veri yapıları ve algoritmalar sorulur mu?
Birçok büyük şirkette evet: genellikle arayüz ve sistem tasarımı turlarının yanında, JavaScript ile dizi, hash map, ağaç ve graf dolaşma üzerine bir ya da iki tur. Küçük şirketler daha çok pratik görevlere ağırlık verir. Her iki durumda da bir Map aramasının sabit zaman aldığını, iki liste üzerinde iç içe bir döngünün ise almadığını bilmek, çalışan bir cevabı hızlı bir cevaptan ayıran şeydir.
Bu yoldaki hangi kurslar JavaScript 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. JavaScript'te aynı bitsel operatörler, artı >>> var, ama bunları 32 bitlik tam sayılara uygular; bir hileyi aktarırken bunu akılda tutmakta fayda var.
Bu yola başlamadan önce JavaScript bilmem gerekiyor mu?
En azından fonksiyonlar, diziler, nesneler ve sınıflar. Bunlar sana yeniyse, Coddy'nin JavaScript kursu önce bunları ücretsiz olarak anlatır ve bu yol onun bittiği yerden devam eder.