JavaScript Programlama Dili Mülakat Soru Rehberi

Can Gül
11/3/2025

JavaScript, web geliştirme dünyasının en temel taşlarından biridir. Tarayıcı üzerinde çalışan dinamik bir programlama dili olan JavaScript, günümüzde yalnızca istemci tarafında değil, Node.js sayesinde sunucu tarafında da yaygın olarak kullanılmaktadır.

Eğer bir JavaScript geliştirici olarak bir mülakata hazırlanıyorsanız, temel ve ileri düzey konulara hâkim olmanız gerekir. ES6+ özellikleri, asenkron programlama, DOM manipülasyonu ve performans optimizasyonları gibi konular mülakatlarda sıklıkla sorulmaktadır.

Bu yazımızda, JavaScript ile ilgili en sık sorulan mülakat sorularını ve detaylı cevaplarını ele alacağız. Hem yeni başlayanlar hem de ileri seviye geliştiriciler için hazırlanmış bu rehber, mülakat süreçlerinde sizi bir adım öne taşıyacaktır.

Şimdi gelin, JavaScript mülakatlarında karşınıza çıkabilecek en yaygın sorulara ve cevaplarına birlikte göz atalım.

1. JavaScript nedir ve nasıl çalışır?

JavaScript, dinamik, nesne tabanlı (object-oriented) ve yüksek seviyeli bir programlama dili olup, en yaygın olarak web geliştirmede kullanılır. HTML ve CSS ile birlikte çalışarak sayfalara interaktif özellikler ekler.

Çalışma mantığı:

2. var, let ve const arasındaki farklar nelerdir?

Özellik

var

let

const

Scope

Function Scope

Block Scope

Block Scope

Hoisting

Hoisted (değeri undefined olur)

Hoisted ama başlatılmadan kullanılamaz

Hoisted ama başlatılmadan kullanılamaz

Değer Değişikliği

Değiştirilebilir

Değiştirilebilir

Değiştirilemez

Re-declaration

Mümkün

Değil

Değil

javascript

CopyEdit

var x = 10;

let y = 20;

const z = 30;

Öneri: let ve const kullanımı daha güvenlidir, var yerine tercih edilmelidir.

3. JavaScript'te veri türleri nelerdir?

JavaScript'te Primitive (ilkel) ve Reference (referans) olmak üzere iki ana veri türü vardır.

Primitive (İlkel) Veri Türleri:

Reference (Referans) Veri Türleri:

4. == ve === operatörleri arasındaki fark nedir?

Operatör

Açıklama

Örnek

==

Değer karşılaştırır, tür dönüşümü yapabilir

5 == "5" → true

===

Hem türü hem de değeri karşılaştırır, tür dönüşümü yapmaz

5 === "5" → false

javascript

CopyEdit

console.log(5 == "5");  // true (type coercion nedeniyle)

console.log(5 === "5"); // false (türler farklı)

5. JavaScript'te Type Coercion (Tür Zorlaması) nedir?

JavaScript'te bir değişkenin türü otomatik olarak başka bir türe çevrilebilir. Buna Type Coercion denir.

console.log("5" - 3); // 2  (String "5", Number'a çevrildi) console.log("5" + 3); // "53" (Number 3, String'e çevrildi)

Tür Dönüşümü Türleri:

6. null ve undefined arasındaki fark nedir?

Terim

Açıklama

null

Bilinçli olarak atanmış "boş" bir değerdir

undefined

Değişken tanımlandı ama değeri atanmamış

javascript

CopyEdit

let a;

console.log(a); // undefined

let b = null;

console.log(b); // null

7. JavaScript'te Hoisting nedir? Örnek verebilir misiniz?

Hoisting, JavaScript'in değişken ve fonksiyon tanımlarını kod çalışmadan önce belleğe almasıdır.

Örnek:

javascript

CopyEdit

console.log(a); // undefined

var a = 5;

JavaScript bunu şu şekilde işler:

javascript

CopyEdit

var a;

console.log(a); // undefined

a = 5;

🔹 let ve const kullanıldığında hoisting olur ama değişkene erişmeden önce hata verir.

8. Closure (Kapsama) nedir ve nasıl kullanılır?

Closure, bir fonksiyonun kendi kapsamı dışındaki değişkenlere erişebilmesini sağlayan mekanizmadır.

Örnek:

function outerFunction(outerValue) {    return function innerFunction(innerValue) {        console.log(`Outer: ${outerValue}, Inner: ${innerValue}`);    };}‍const closureExample = outerFunction("Merhaba");closureExample("Dünya"); // Outer: Merhaba, Inner: Dünya

Bu yapı veri gizliliği (data privacy) sağlamak için kullanılır.

9. Event Bubbling ve Event Capturing nedir?

Bu terimler DOM olaylarının nasıl yayıldığını açıklar.

Tür

Açıklama

Bubbling (Kabarcıklanma)

Olay, en içteki elemandan başlayıp yukarı doğru yayılır. (Varsayılan)

Capturing (Yakalama)

Olay, en dıştaki elemandan başlar ve içe doğru ilerler.

Örnek:

javascript

CopyEdit

document.getElementById("child").addEventListener("click", function() {

    console.log("Child clicked!");

}, true); // true → Capturing mode

10. JavaScript'te Callback Function nedir ve neden kullanılır?

Callback function, başka bir fonksiyona parametre olarak verilen ve belirli bir olaydan sonra çağrılan fonksiyondur.

Örnek:

javascript

CopyEdit

function greet(name, callback) {

    console.log("Merhaba " + name);

    callback();

}

function goodbye() {

    console.log("Görüşürüz!");

}

greet("Ali", goodbye);

🔹 Neden kullanılır?

11. Promise ve async/await yapıları arasındaki fark nedir?

Promise ve async/await, JavaScript’te asenkron işlemleri yönetmek için kullanılan yapılardır.

Promise Yapısı

Bir işlemin sonucunu gelecekte döndüreceğini vaat eden bir nesnedir.

javascript

CopyEdit

function fetchData() {

    return new Promise((resolve, reject) => {

        setTimeout(() => {

            resolve("Veri yüklendi!");

        }, 2000);

    });

}

fetchData().then(data => console.log(data)).catch(error => console.log(error));

Async/Await Yapısı

ES8 ile gelen async/await, Promise'lerin daha okunaklı kullanılmasını sağlar.

javascript

CopyEdit

async function fetchData() {

    try {

        let data = await new Promise((resolve) => setTimeout(() => resolve("Veri yüklendi!"), 2000));

        console.log(data);

    } catch (error) {

        console.log(error);

    }

}

fetchData();

Farklar

Özellik

Promise

Async/Await

Okunabilirlik

Karmaşıklaşabilir (then, catch kullanımı)

Daha sade ve okunaklı

Hata Yönetimi

catch() ile yapılır

try/catch ile daha kontrol edilebilir

Kullanım Alanı

Zincirleme işlemler için iyi

Daha az kod ile aynı işlemi yapabilir

12. JavaScript'te this anahtar kelimesi nasıl çalışır?

this, JavaScript’te çağrıldığı bağlama (context) göre değişiklik gösteren özel bir değişkendir.

this Kullanım Senaryoları

Kullanım Türü

Açıklama

Global Scope

Tarayıcıda this, window nesnesini referans eder.

Object İçinde

Nesne içinde kullanıldığında, o nesneyi gösterir.

Function İçinde

this, window'a bağlıdır (strict mode dışındaysa).

Arrow Function İçinde

Arrow function'lar this'i kendi bağlamından almaz, üst bağlamı referans eder.

javascript

CopyEdit

const obj = {

    name: "Ali",

    sayHello: function() {

        console.log(this.name); // "Ali"

    }

};

obj.sayHello();

13. Arrow Function ve Normal Fonksiyon Arasındaki Farklar

Özellik

Normal Fonksiyon

Arrow Function

this Bağlamı

Dinamik, çağrıldığı yere göre değişir

this üst bağlamdan alır

arguments Nesnesi

Mevcuttur

Bulunmaz

Kullanım Alanı

Genel kullanım

Callbacks, kısa fonksiyonlar

javascript

CopyEdit

// Normal fonksiyon

function normalFunc() {

    console.log(this); // Çağrıldığı bağlama bağlıdır

}

// Arrow fonksiyon

const arrowFunc = () => {

    console.log(this); // Üst kapsamın `this`'ini kullanır

};

14. JavaScript'te Prototype Kavramı Nedir ve Nasıl Çalışır?

Prototype, JavaScript'in nesne tabanlı miras yapısını sağlayan mekanizmadır.

javascript

CopyEdit

function Person(name) {

    this.name = name;

}

Person.prototype.sayHello = function() {

    console.log("Merhaba, " + this.name);

};

const ali = new Person("Ali");

ali.sayHello(); // "Merhaba, Ali"

15. map() ve forEach() Fonksiyonlarının Farkları

Özellik

map()

forEach()

Geri dönüş değeri

Yeni bir dizi döner

undefined döner

Orijinal diziyi değiştirir mi?

Hayır

Hayır

Zincirleme (chaining) destekler mi?

Evet

Hayır

javascript

CopyEdit

let numbers = [1, 2, 3, 4];

let squared = numbers.map(num => num * num); // [1, 4, 9, 16]

numbers.forEach(num => console.log(num)); // Sadece ekrana yazdırır

16. Spread ve Rest Operatörleri Nasıl Kullanılır?

Operatör

Açıklama

Spread (...)

Bir diziyi veya nesneyi açarak yayar

Rest (...)

Fonksiyonlara sınırsız parametre almak için kullanılır

javascript

CopyEdit

// Spread

let arr = [1, 2, 3];

let newArr = [...arr, 4, 5]; // [1, 2, 3, 4, 5]

// Rest

function sum(...numbers) {

    return numbers.reduce((acc, num) => acc + num, 0);

}

console.log(sum(1, 2, 3)); // 6

17. setTimeout() ve setInterval() Farkları

Fonksiyon

Açıklama

setTimeout()

Belirtilen süre sonunda bir defa çalışır

setInterval()

Belirtilen aralıklarla sürekli çalışır

javascript

CopyEdit

setTimeout(() => console.log("Bu bir kere çalışır"), 2000);

setInterval(() => console.log("Bu her 2 saniyede çalışır"), 2000);

18. debounce ve throttle Nedir, Nasıl Kullanılır?

Teknik

Açıklama

Debounce

Belirli bir süre boyunca fonksiyon çağrılmazsa çalışır (ör: arama kutusu)

Throttle

Fonksiyon belirli aralıklarla çalışır (ör: scroll event)

javascript

CopyEdit

// Debounce

function debounce(func, delay) {

    let timer;

    return function(...args) {

        clearTimeout(timer);

        timer = setTimeout(() => func(...args), delay);

    };

}

19. Event Delegation Nedir ve Nasıl Çalışır?

Event delegation, olayları dinlemek için ebeveyn bir öğeye olay bağlayarak performansı artırma tekniğidir.

javascript

CopyEdit

document.getElementById("parent").addEventListener("click", function(event) {

    if (event.target.classList.contains("child")) {

        console.log("Tıklanan eleman:", event.target.innerText);

    }

});

20. localStorage, sessionStorage ve cookies Arasındaki Farklar

Depolama Türü

Kalıcılık

Kapasite

Sunucuya Gönderilir mi?

localStorage

Kalıcı (manuel silinene kadar)

5MB

Hayır

sessionStorage

Sayfa kapatılınca silinir

5MB

Hayır

cookies

Süre sonuna kadar saklanır

4KB

Evet

javascript

CopyEdit

localStorage.setItem("key", "value");

console.log(localStorage.getItem("key")); // "value"

JavaScript, web geliştirme dünyasında kritik bir rol oynayan güçlü bir programlama dilidir. Hem istemci tarafında hem de sunucu tarafında kullanılabilmesi, onu modern yazılım geliştirme süreçlerinde vazgeçilmez hale getirmiştir.

Bu yazımızda, JavaScript mülakatlarında sıkça karşılaşabileceğiniz önemli soruları ve bu sorulara verilebilecek en iyi cevapları detaylı bir şekilde inceledik. Temel veri yapıları, asenkron programlama, fonksiyonel farklılıklar, DOM manipülasyonu ve depolama mekanizmaları gibi konular, iyi bir JavaScript geliştiricisinin mutlaka hakim olması gereken alanlardır.

Eğer bir JavaScript mülakatına hazırlanıyorsanız:
✔ Temel ve ileri düzey JavaScript konularını öğrenin.
✔ Kod pratiği yaparak öğrendiklerinizi pekiştirin.
✔ Gerçek dünya projeleri üzerinde çalışarak deneyim kazanın.

Bu bilgiler sayesinde hem teknik bilginizi güçlendirebilir hem de JavaScript mülakatlarında rakiplerinizden bir adım önde olabilirsiniz.

Katılımcılarımıza Tavsiyelerimiz
Daha Fazla