Çok sık sorulan mülakat sorularından bir derleme yaptım. Çoğunlukla temel düzeyde sorular var. Şirketlerin sorduğu sorulara aşağıdan ulaşabilirsiniz.

Birçok farklı konuda size yardımcı olacak kaynaklar toplamaya çalışıyorum diğer yazılarıma da bakabilirsiniz.

JavaScript’in temel veri tipleri nelerdir ve aralarındaki farklar nedir?

  • String, Number, Boolean, Undefined, Null ve Object.
  • Farkları:
    • Primitive tipler (String, Number, Boolean, Undefined, Null) değerleri doğrudan değer atamalarıdır ve bellekte sabit boyutta tutulurlar. Object ise referans tiplerindendir ve bellekte bir yer işaretçisi tutar.
    • Primitive tiplerde bir değişkenin değeri değiştirildiğinde, kopyalanan değer değişmez. Referans tiplerinde ise, bir değişkenin değeri başka bir değişkene atanırsa, bellekteki aynı nesneye referans edilir.

Closure (Kapanış) Kavramı Nedir Açıklayınız

JavaScript’te “closure” veya “kapanış” kavramı oldukça önemlidir. Bir fonksiyonun dış kapsamındaki değişkenlere erişebilmesini ve bu değişkenlerin değerlerini hatırlayabilmesini sağlar. Bu, fonksiyonun bir başka fonksiyonun içinde tanımlanması durumunda gerçekleşir.

Kısaca, bir closure, bir fonksiyonun, tanımlandığı kapsamın dışındaki değişkenlere erişebilmesi ve bu değişkenlerin durumunu hatırlayabilmesidir.

Bir closure’ı anlamak için bir örnek verelim:

function sayHello(name) {
var message = "Merhaba, " + name + "!";
return function() {
console.log(message);
};
}

var greetJohn = sayHello("John");
var greetEmily = sayHello("Emily");

greetJohn(); // "Merhaba, John!"
greetEmily(); // "Merhaba, Emily!"

Burada, sayHello fonksiyonu, bir isim alır ve bu isimle bir selam mesajı oluşturur. Daha sonra, bu mesajı yazdırmak için bir fonksiyon döndürür. greetJohn ve greetEmily değişkenleri, sayHello fonksiyonuna farklı isimlerle çağrılarak oluşturulmuş closure’lardır. Bu closure’lar, çağrıldıklarında sayHello fonksiyonunun içindeki message değişkenine erişebilirler ve o anki isme göre selam mesajını yazdırırlar.

Şirketlerin Mülakat Soruları ve Cevapları

Buradaki soruların dışında şirketlerin sorduğu ve yazılım bilginizi geliştirecek bir çalışma hazırladım. İçeriğinde hem teknik hem de algoritma (kodlama) mülakat soruları bulunuyor. Aynı zamanda İnsan Kaynakları ekibinden mülakat ipuçları yer alıyor. Bu tarz sorulara aşina olmanız işe girme olasılığınızı inanılmaz derecede arttıracaktır. Aşağıdaki butondan bu çalışma paketine ulaşabilirsiniz. Kodlama sorularının cevapları da mevcuttur.

Promise nedir ve nasıl kullanılır?

  • Promise, JavaScript’te asenkron işlemleri yönetmek için kullanılan bir nesnedir. Bir asenkron işlem tamamlandığında veya bir hata oluştuğunda geri aramaları (callbacks) kullanarak sonucu işler.
  • Promise’lerin temel amacı, asenkron işlemleri daha okunabilir ve yönetilebilir hale getirmektir. Bir Promise nesnesi, bir işlemi temsil eder ve işlem tamamlandığında (başarılı veya başarısız) sonucu veya hata durumunu alabilir.
  • Promise’ler üç durumu olabilir:
  • Bekleme (pending): İşlem henüz tamamlanmamıştır.
  • İşlem tamamlandı (fulfilled): İşlem başarıyla tamamlandı.
  • Hata (rejected): İşlem hata ile sonuçlandı.

İşte bir Promise nasıl kullanılır:

// Promise oluşturma
let myPromise = new Promise((resolve, reject) => {
// Asenkron bir işlem gerçekleştirir
setTimeout(() => {
let success = true; // Başarılı olup olmadığınızı ayarlayın
if (success) {
resolve("İşlem başarılı!"); // İşlem başarılı ise resolve çağrılır
} else {
reject("İşlem başarısız!"); // İşlem başarısız ise reject çağrılır
}
}, 2000);
});

// Promise kullanma
myPromise.then((message) => {
console.log("Sonuç:", message); // Başarılı durumda
}).catch((error) => {
console.error("Hata:", error); // Hata durumunda
});

Yukarıdaki kodda, new Promise ile bir Promise oluşturulur ve içine bir işlem verilir. Bu işlem sonunda resolve veya reject fonksiyonları çağrılır. then ile başarılı durumu işleriz ve catch ile hata durumunu işleriz.

Promise zinciri kullanarak, ardışık işlemleri düzenleyebilir ve hatayı yönetebiliriz. Bu, kodun daha okunabilir ve yönetilebilir olmasını sağlar.

Bir fetch isteği de bir Promise döndürür. İşte bir fetch isteğini Promise ile kullanarak nasıl yapabileceğimiz:

// Bir API'den veri çekme işlemi
function fetchData() {
return new Promise((resolve, reject) => {
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
return response.json();
})
.then(data => {
resolve(data);
})
.catch(error => {
reject(error);
});
});
}

// Promise kullanarak veri çekme işlemi
fetchData()
.then(data => {
console.log('Veri:', data);
})
.catch(error => {
console.error('Hata:', error);
});

Bu kodda, fetchData fonksiyonu, bir API’den veri çekme işlemini gerçekleştirir. fetch ile yapılan istek başarılıysa, gelen veriyi JSON formatına dönüştürür ve resolve ile döner. Eğer bir hata oluşursa, reject ile hata döner. Daha sonra, bu Promise’i kullanarak veri çekme işlemini yaparız.

Bu şekilde, fetch fonksiyonunu kullanarak asenkron veri çekme işlemini yönetmiş oluruz.

Kategoriler:

Javascript, Rehber,