yoklateknik mülakat

Frontend Javascript Language Mülakat Soruları

75 doğrulanmış Frontend Javascript Language mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Javascript LanguageZorluk 1
JavaScript'te let ile const arasındaki temel fark nedir?
  • aconst ile tanımlanan bir binding'e ilk atamadan sonra yeniden atama yapılamaz
  • bconst değişkene yalnızca onu tanımlayan fonksiyonun içinden erişilebilir
  • clet değişkeni hoisting'e uğramaz, const uğrar
  • dconst ayrıca bir obje veya array'in içeriğinin değişmesini de engeller
Açıklama:const, binding'in kendisine yeniden atama yapmayı yasaklar; let yeniden atamaya izin verir. İkisi de block-scoped'tır, bu yüzden (b) yanlıştır. const işaret ettiği değeri dondurmaz — bir const objenin property'leri hâlâ değiştirilebilir; bu yüzden (d) çok yaygın bir yanılgıdır.
Javascript LanguageZorluk 2
console.log(a);
console.log(b);
var a = 1;
let b = 2;

Bu kod çalıştığında ne olur?
  • aÖnce undefined, sonra undefined basar
  • bÖnce 1, sonra 2 basar
  • cundefined basar, sonra b satırında ReferenceError fırlatır
  • dDaha ilk satırda ReferenceError fırlatır
Açıklama:var a hoist edilir ve undefined ile ilklenir; bu yüzden atamadan önce a okumak undefined basar. let b de hoist edilir ama tanımına kadar temporal dead zone'da kalır; erken okunması ReferenceError fırlatır. a önce basılıp başarılı olduğundan hata ilk satırda değildir (d).
Javascript LanguageZorluk 2
function makeCounter() {
  let count = 0;
  return function () {
    count += 1;
    return count;
  };
}
const next = makeCounter();
console.log(next(), next(), next());

Bu kod ne basar?
  • a1 1 1, çünkü count her çağrıda 0'a sıfırlanır
  • b1 2 3, çünkü iç fonksiyon aynı count'u görmeye devam eder
  • c0 1 2, çünkü count artırılmadan önce döndürülür
  • dHata fırlatır, çünkü count iç fonksiyonun içinde tanımlı değil
Açıklama:makeCounter, count'u closure ile kapatan bir iç fonksiyon döndürür; bu değişken sıfırlanmak yerine çağrılar arasında yaşar, bu yüzden üç çağrı 1, 2, 3 verir. Artırma return'den önce olur, yani hiç 0 basılmaz (c); closure tam da bu yüzden count'u içeride görünür kılar (d).
Javascript LanguageZorluk 2
Normal (arrow olmayan) bir fonksiyon obj.method() şeklinde çağrıldığında this neye işaret eder?
  • aFonksiyonun nasıl çağrıldığından bağımsız olarak global objeye
  • bFonksiyon objesinin kendisine
  • cFonksiyona ilk argüman olarak ne geçildiyse ona
  • dMetodun üzerinde çağrıldığı objeye — burada obj'ye
Açıklama:Normal fonksiyonda this, çağrı yerine (call site) göre belirlenir; metot olarak çağrılınca this, noktadan önceki objeye bağlanır. Aynı fonksiyon düz (metot olmadan) çağrılırsa this, global objeye ya da strict mode'da undefined'a düşer — (a) yalnızca bu bağsız durumda doğrudur.
Javascript LanguageZorluk 2
console.log(0 == '');
console.log(0 == '0');
console.log('' == '0');

Bu kod sırasıyla ne basar?
  • atrue, true, true
  • btrue, true, false
  • cfalse, false, false
  • dtrue, false, false
Açıklama:== ile bir sayı bir string'le karşılaştırılırken iki taraf da sayıya coerce edilir: 0 == ''0 == 0 (true), 0 == '0'0 == 0 (true). Ama '' == '0' iki string'i doğrudan, coercion olmadan karşılaştırır; sonuç false. === kullanılsaydı tipler farklı olduğu için üçü de false olurdu.
Javascript LanguageZorluk 2
Neden birçok JavaScript stil rehberi == yerine === kullanmayı önerir?
  • a=== daha hızlıdır çünkü sağdaki operandı hiç okumak zorunda kalmaz
  • b== artık deprecated'dir ve dilden kaldırılacaktır
  • c=== type coercion yapmadan karşılaştırır, sonuçlar daha öngörülebilir olur
  • d=== objeleri içeriklerine göre karşılaştırabilir, == karşılaştıramaz
Açıklama:==, yanlış anlaşılması kolay coercion kurallarını uygular (örneğin 0 == '' true'dur); === ise hem tip hem değerin eşleşmesini ister ve sürprizleri önler. == deprecated değildir (b) ve hiçbiri objeleri içeriğe göre karşılaştırmaz — ikisi de referans karşılaştırır (d).

2925 soruluk Frontend bankasında kendini sına.

Mülakata başla