Soru Bankası

100 soru · 8 konu

JS

JS Temelleri

19 soru
#1q-js-1JS Temelleri
let x = 10;
let y = "5";
console.log(x + y);

Seçenekler

A)15
B)"105"✓ Doğru
C)NaN
D)Hata verir

Açıklama

Number + String işleminde JavaScript otomatik olarak sayıyı string'e çevirir. 10 + "5" = "105" (string birleştirme).
#2q-js-2JS Temelleri
console.log(typeof null);

Seçenekler

A)"null"
B)"undefined"
C)"object"✓ Doğru
D)"boolean"

Açıklama

typeof null "object" döner. Bu JavaScript'in bilinen bir hatasıdır (bug), dilden kaldırılamaz çünkü eski kodları bozar.
#3q-js-3JS Temelleri
const arr = [1, 2, 3];
arr.push(4);
console.log(arr.length);

Seçenekler

A)3
B)4✓ Doğru
C)Hata verir (const)
D)undefined

Açıklama

const ile tanımlanan dizi/objenin içeriği değiştirilebilir, sadece yeniden atama yapılamaz. push(4) sonrası uzunluk 4 olur.
#4q-js-4JS Temelleri
let a = "5" - 3;
console.log(a);

Seçenekler

A)"53"
B)2✓ Doğru
C)NaN
D)Hata verir

Açıklama

Çıkarma operatörü (-) string'i otomatik olarak sayıya çevirir. "5" - 3 = 2.
#5q-js-5JS Temelleri
const topla = (a, b) => a + b;
console.log(topla(3));

Seçenekler

A)3
B)NaN✓ Doğru
C)undefined
D)Hata verir

Açıklama

b parametresi verilmediği için undefined olur. 3 + undefined = NaN.
#6q-arr-1JS Temelleri
const ogrenci = {
  ad: "Ali",
  not: 85
};
console.log(ogrenci["ad"]);

Seçenekler

A)"Ali"✓ Doğru
B)undefined
C)Hata verir
D)"ad"

Açıklama

Köşeli parantez (bracket notation) ile obje özelliğine erişilir. ogrenci["ad"] = "Ali".
#7q-arr-2JS Temelleri
const dizi = [10, 20, 30];
console.log(dizi[3]);

Seçenekler

A)30
B)undefined✓ Doğru
C)null
D)Hata verir

Açıklama

Dizi index'i 0'dan başlar. dizi[0]=10, dizi[1]=20, dizi[2]=30. dizi[3] mevcut değil → undefined.
#8q-arr-3JS Temelleri
const matris = [[1,2],[3,4],[5,6]];
console.log(matris[1][0]);

Seçenekler

A)1
B)2
C)3✓ Doğru
D)4

Açıklama

matris[1] = [3,4]. matris[1][0] = 3. İlk index satırı, ikinci index elemanı seçer.
#9q-js-6JS Temelleri
let isim = "JavaScript";
console.log(isim.toUpperCase());

Seçenekler

A)"javascript"
B)"JavaScript"
C)"JAVASCRIPT"✓ Doğru
D)Hata verir

Açıklama

toUpperCase() tüm karakterleri büyük harfe çevirir. "JavaScript" → "JAVASCRIPT".
#10q-js-7JS Temelleri
let metin = "Merhaba Dünya";
console.log(metin.includes("Dünya"));

Seçenekler

A)true✓ Doğru
B)false
C)"Dünya"
D)undefined

Açıklama

includes() metodu string içinde aranılan ifadeyi bulursa true döner. "Dünya" metin içinde var.
#11q-js-8JS Temelleri
console.log(parseInt("42px"));

Seçenekler

A)NaN
B)42✓ Doğru
C)"42px"
D)Hata verir

Açıklama

parseInt() string'in başından itibaren sayı okur, sayı olmayan kısmı yok sayar. "42px" → 42.
#12q-js-9JS Temelleri
console.log(0.1 + 0.2 === 0.3);

Seçenekler

A)true
B)false✓ Doğru
C)0.3
D)NaN

Açıklama

JavaScript'te ondalıklı sayılar (floating point) tam hassasiyetle saklanamaz. 0.1 + 0.2 = 0.30000000000000004, bu yüzden === 0.3 false döner.
#13q-js-10JS Temelleri
const selamla = (isim = "Dünya") => "Merhaba, " + isim;
console.log(selamla());

Seçenekler

A)"Merhaba, undefined"
B)"Merhaba, Dünya"✓ Doğru
C)Hata verir
D)"Merhaba, "

Açıklama

Varsayılan parametre değeri kullanılır. isim verilmediğinde "Dünya" olur → "Merhaba, Dünya".
#14q-js-11JS Temelleri
let x = "Merhaba";
console.log(x[0]);

Seçenekler

A)"Merhaba"
B)"M"✓ Doğru
C)0
D)undefined

Açıklama

String'ler dizi gibi index ile erişilebilir. x[0] ilk karakteri döner: "M".
#15q-js-12JS Temelleri
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj).length);

Seçenekler

A)3✓ Doğru
B)6
C)undefined
D)Hata verir

Açıklama

Object.keys() objenin anahtarlarını dizi olarak döner: ["a", "b", "c"]. length = 3.
#16q-js-13JS Temelleri
console.log(Boolean(""));
console.log(Boolean("0"));

Seçenekler

A)false false
B)true true
C)false true✓ Doğru
D)true false

Açıklama

Boş string "" falsy → false. "0" ise boş olmayan string, truthy → true.
#17q-js-14JS Temelleri
let dizi = [1, 2, 3, 4, 5];
dizi.splice(1, 2);
console.log(dizi);

Seçenekler

A)[1, 2, 3, 4, 5]
B)[1, 4, 5]✓ Doğru
C)[2, 3]
D)[1, 2, 3]

Açıklama

splice(1, 2) index 1'den başlayarak 2 eleman siler. [1, 2, 3, 4, 5] → 2 ve 3 silinir → [1, 4, 5].
#18q-js-15JS Temelleri
let a = [1, 2, 3];
let b = a;
b.push(4);
console.log(a.length);

Seçenekler

A)3
B)4✓ Doğru
C)undefined
D)Hata verir

Açıklama

Diziler referans tiplidir. b = a dediğimizde aynı diziyi paylaşırlar. b'ye push yapınca a da değişir. length = 4.
#19q-js-16JS Temelleri
const kisi = { ad: "Ali", yas: 25 };
const { ad, yas } = kisi;
console.log(ad, yas);

Seçenekler

A)"Ali" 25✓ Doğru
B)undefined undefined
C)Hata verir
D){ad: "Ali", yas: 25}

Açıklama

Destructuring ile objenin özellikleri aynı isimli değişkenlere atanır. ad = "Ali", yas = 25.
>>

Döngüler

9 soru
#1q-loop-1Döngüler
for (let i = 0; i < 5; i++) {
  if (i === 3) break;
}
console.log("Bitti");

Seçenekler

A)0 1 2 Bitti
B)0 1 2 3 Bitti
C)"Bitti"✓ Doğru
D)Hata verir

Açıklama

Döngü içinde console.log yok, sadece döngü sonrası "Bitti" yazdırılır. break i=3'te döngüyü kırar ama çıktıyı etkilemez.
#2q-loop-2Döngüler
let toplam = 0;
for (let i = 1; i <= 3; i++) {
  toplam += i;
}
console.log(toplam);

Seçenekler

A)3
B)5
C)6✓ Doğru
D)10

Açıklama

1 + 2 + 3 = 6. Döngü i=1,2,3 için çalışır.
#3q-loop-3Döngüler
const arr = ["a", "b", "c"];
for (let i = arr.length - 1; i >= 0; i--) {
  console.log(arr[i]);
}

Seçenekler

A)"a" "b" "c"
B)"c" "b" "a"✓ Doğru
C)"c"
D)Hata verir

Açıklama

Döngü sondan başa (i=2,1,0) gider. arr[2]='c', arr[1]='b', arr[0]='a' sırasıyla yazdırılır.
#4q-loop-4Döngüler
let sonuc = "";
for (let i = 0; i < 3; i++) {
  sonuc += i;
}
console.log(sonuc);

Seçenekler

A)3
B)6
C)"012"✓ Doğru
D)"123"

Açıklama

sonuc bir string olduğundan += ile birleştirme yapılır. "" + 0 + 1 + 2 = "012".
#5q-loop-5Döngüler
const arr = [10, 20, 30];
arr.forEach((val, i) => {
  if (i === 1) return;
  console.log(val);
});

Seçenekler

A)10 20 30
B)10 30✓ Doğru
C)10
D)20 30

Açıklama

forEach içinde return sadece o iterasyonu atlar (break gibi değil). i=1'de return ile 20 atlanır, 10 ve 30 yazdırılır.
#6q-loop-6Döngüler
let i = 5;
while (i > 0) {
  i -= 2;
}
console.log(i);

Seçenekler

A)0
B)1
C)-1✓ Doğru
D)Sonsuz döngü

Açıklama

i: 5 → 3 → 1 → -1. i=-1 olunca i > 0 false olur ve döngü biter. Sonuç: -1.
#7q-loop-7Döngüler
const meyveler = ["elma", "armut", "çilek"];
for (const meyve of meyveler) {
  if (meyve === "armut") continue;
  console.log(meyve);
}

Seçenekler

A)"elma" "armut" "çilek"
B)"elma" "çilek"✓ Doğru
C)"armut"
D)"elma"

Açıklama

continue "armut" iterasyonunu atlar, diğerleri yazdırılır: "elma" ve "çilek".
#8q-loop-8Döngüler
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
  console.log(key);
}

Seçenekler

A)1 2 3
B)"a" "b" "c"✓ Doğru
C)"a:1" "b:2" "c:3"
D)Hata verir

Açıklama

for...in döngüsü objenin anahtarlarını (key) döner: "a", "b", "c". Değerlere obj[key] ile erişilir.
#9q-loop-9Döngüler
let sayac = 0;
do {
  sayac++;
} while (sayac > 10);
console.log(sayac);

Seçenekler

A)0
B)1✓ Doğru
C)10
D)11

Açıklama

do...while döngüsü koşul kontrol edilmeden önce en az 1 kez çalışır. sayac 0→1 olur, 1 > 10 false → döngü biter. Sonuç: 1.
?:

If/Else & Ternary

6 soru
#1q-cond-1If/Else & Ternary
let x = 0;
if (x) {
  console.log("truthy");
} else {
  console.log("falsy");
}

Seçenekler

A)"truthy"
B)"falsy"✓ Doğru
C)0
D)undefined

Açıklama

0 falsy bir değerdir. if(0) false olarak değerlendirilir, bu yüzden else bloğu çalışır.
#2q-cond-2If/Else & Ternary
let yas = 18;
let sonuc = yas >= 18 ? "Ehliyet alabilir" : "Alamaz";
console.log(sonuc);

Seçenekler

A)"Ehliyet alabilir"✓ Doğru
B)"Alamaz"
C)true
D)18

Açıklama

yas >= 18 true olduğu için ternary operatörün ilk kısmı ("Ehliyet alabilir") döner.
#3q-cond-3If/Else & Ternary
let x = "5";
switch (x) {
  case 5:
    console.log("sayı");
    break;
  case "5":
    console.log("string");
    break;
  default:
    console.log("bilinmiyor");
}

Seçenekler

A)"sayı"
B)"string"✓ Doğru
C)"bilinmiyor"
D)Hata verir

Açıklama

switch strict comparison (===) kullanır. "5" === 5 false, "5" === "5" true olduğu için "string" yazdırılır.
#4q-cond-4If/Else & Ternary
let not = 75;
let harf;
if (not >= 90) harf = "AA";
else if (not >= 80) harf = "BA";
else if (not >= 70) harf = "BB";
else harf = "CC";
console.log(harf);

Seçenekler

A)"AA"
B)"BA"
C)"BB"✓ Doğru
D)"CC"

Açıklama

75 >= 90 false, 75 >= 80 false, 75 >= 70 true → harf = "BB".
#5q-cond-5If/Else & Ternary
console.log(null == undefined);
console.log(null === undefined);

Seçenekler

A)true true
B)false false
C)true false✓ Doğru
D)false true

Açıklama

== (loose equality) ile null ve undefined eşittir → true. === (strict equality) ile tip farklı olduğundan → false.
#6q-cond-6If/Else & Ternary
let x = 10;
let y = x > 5 ? x > 8 ? "büyük" : "orta" : "küçük";
console.log(y);

Seçenekler

A)"küçük"
B)"orta"
C)"büyük"✓ Doğru
D)Hata verir

Açıklama

İç içe ternary: x > 5 true → x > 8 true → "büyük".
fn

Filter & Map

8 soru
#1q-fm-1Filter & Map
const sayilar = [1, 2, 3, 4, 5];
const sonuc = sayilar.filter(x => x > 3);
console.log(sonuc);

Seçenekler

A)[4, 5]✓ Doğru
B)[1, 2, 3]
C)[3, 4, 5]
D)5

Açıklama

filter() koşulu sağlayan elemanları döner. x > 3 koşulunu sağlayanlar: 4 ve 5.
#2q-fm-2Filter & Map
const isimler = ["Ali", "Ay", "Mehmet"];
const sonuc = isimler.map(x => x.length);
console.log(sonuc);

Seçenekler

A)[3, 2, 6]✓ Doğru
B)["Ali", "Ay", "Mehmet"]
C)[3]
D)6

Açıklama

map() her elemanı dönüştürür. Her ismin length'i alınır: Ali=3, Ay=2, Mehmet=6.
#3q-fm-3Filter & Map
const sayilar = [1, 2, 3, 4];
const sonuc = sayilar
  .filter(x => x % 2 === 0)
  .map(x => x * 10);
console.log(sonuc);

Seçenekler

A)[10, 20, 30, 40]
B)[20, 40]✓ Doğru
C)[2, 4]
D)[10, 30]

Açıklama

Önce filter: çift sayılar [2, 4]. Sonra map: her biri 10 ile çarpılır → [20, 40].
#4q-fm-4Filter & Map
const sayilar = [1, 2, 3];
const sonuc = sayilar.map(x => x * x);
console.log(sonuc);

Seçenekler

A)[1, 4, 9]✓ Doğru
B)[2, 4, 6]
C)[1, 2, 3]
D)9

Açıklama

map() her elemanın karesini alır: 1*1=1, 2*2=4, 3*3=9 → [1, 4, 9].
#5q-fm-5Filter & Map
const kelimeler = ["Ali", "Veli", "Can", "Ece"];
const sonuc = kelimeler.filter(k => k.length === 3);
console.log(sonuc);

Seçenekler

A)["Ali", "Can", "Ece"]✓ Doğru
B)["Veli"]
C)["Ali", "Veli", "Can", "Ece"]
D)["Can", "Ece"]

Açıklama

filter() 3 harfli olanları seçer: "Ali"(3), "Veli"(4-hayır), "Can"(3), "Ece"(3) → ["Ali", "Can", "Ece"].
#6q-fm-6Filter & Map
const arr = [5, 10, 15, 20];
const sonuc = arr.filter(x => x >= 10).map(x => x / 5);
console.log(sonuc);

Seçenekler

A)[2, 3, 4]✓ Doğru
B)[1, 2, 3, 4]
C)[10, 15, 20]
D)[2, 3]

Açıklama

filter: x >= 10 → [10, 15, 20]. map: her biri 5'e bölünür → [2, 3, 4].
#7q-fm-7Filter & Map
const arr = [1, 2, 3, 4, 5];
const sonuc = arr.map(x => x * 2).filter(x => x > 6);
console.log(sonuc);

Seçenekler

A)[8, 10]✓ Doğru
B)[7, 8, 9, 10]
C)[4, 5]
D)[2, 4, 6, 8, 10]

Açıklama

Önce map: [2, 4, 6, 8, 10]. Sonra filter x > 6: [8, 10].
#8q-fm-8Filter & Map
const sayilar = [3, 7, 2, 9, 1];
const enBuyuk = Math.max(...sayilar);
console.log(enBuyuk);

Seçenekler

A)1
B)3
C)9✓ Doğru
D)22

Açıklama

Spread (...) ile dizi elemanları Math.max'a tek tek parametre olarak verilir. En büyük değer: 9.
#

DOM Seçimi

7 soru
#1q-dom-1DOM Seçimi
// HTML: <p id="mesaj">Merhaba</p>

const el = document.getElementById("mesaj");
el.textContent = "Selam";
console.log(el.textContent);

Seçenekler

A)"Merhaba"
B)"Selam"✓ Doğru
C)null
D)undefined

Açıklama

textContent ile içerik "Selam" olarak değiştirildi, sonra bu yeni değer okundu.
#2q-dom-2DOM Seçimi
// HTML: <div class="kutu">A</div>
//       <div class="kutu">B</div>

const kutular = document.querySelectorAll(".kutu");
console.log(kutular.length);

Seçenekler

A)0
B)1
C)2✓ Doğru
D)undefined

Açıklama

querySelectorAll ".kutu" sınıfına sahip tüm elemanları seçer. 2 adet div var, length = 2.
#3q-dom-3DOM Seçimi
// HTML: <input id="isim" value="Ali">

const el = document.getElementById("isim");
el.value = "Veli";
console.log(el.value);

Seçenekler

A)"Ali"
B)"Veli"✓ Doğru
C)null
D)undefined

Açıklama

Input'un value'su "Veli" olarak değiştirildi, sonra bu yeni değer okundu.
#4q-dom-4DOM Seçimi
// HTML: <ul id="liste">
//         <li>A</li>
//         <li>B</li>
//         <li>C</li>
//       </ul>

const liste = document.getElementById("liste");
console.log(liste.children.length);

Seçenekler

A)0
B)1
C)3✓ Doğru
D)undefined

Açıklama

children özelliği doğrudan alt elemanları döner. 3 adet <li> var → length = 3.
#5q-dom-5DOM Seçimi
// HTML: <p id="metin">Eski Metin</p>

const el = document.getElementById("metin");
el.innerHTML = "<strong>Yeni</strong> Metin";
console.log(el.textContent);

Seçenekler

A)"<strong>Yeni</strong> Metin"
B)"Yeni Metin"✓ Doğru
C)"Eski Metin"
D)undefined

Açıklama

innerHTML HTML etiketlerini yorumlar. textContent ise sadece metin içeriğini döner (etiketler olmadan): "Yeni Metin".
#6q-dom-6DOM Seçimi
// HTML: <button id="btn">Tıkla</button>

const btn = document.getElementById("btn");
btn.onclick = () => { console.log("A"); };
btn.onclick = () => { console.log("B"); };
// butona tıklandığında ne yazdırılır?

Seçenekler

A)"A"
B)"B"✓ Doğru
C)"A" sonra "B"
D)Hiçbiri

Açıklama

onclick özelliği tek bir fonksiyon tutar. İkinci atama birincinin üzerine yazar. Sadece "B" yazdırılır.
#7q-dom-7DOM Seçimi
// HTML: <div id="kutu" style="color: red;">Merhaba</div>

const el = document.getElementById("kutu");
el.style.color = "blue";
console.log(el.style.color);

Seçenekler

A)"red"
B)"blue"✓ Doğru
C)""
D)undefined

Açıklama

el.style.color ile inline stil "blue" olarak değiştirildi, sonra bu yeni değer okundu.
< >

HTML

6 soru
#1q-html-1HTML
<!-- Hangisi sırasız (unordered) liste oluşturur? -->

A) <ol><li>Eleman</li></ol>
B) <ul><li>Eleman</li></ul>
C) <dl><li>Eleman</li></dl>
D) <list><item>Eleman</item></list>

Seçenekler

A)A - ol
B)B - ul✓ Doğru
C)C - dl
D)D - list

Açıklama

<ul> (unordered list) sırasız liste oluşturur. <ol> sıralı listedir. <dl> tanım listesidir. <list> geçerli bir HTML etiketi değildir.
#2q-html-2HTML
<a href="https://google.com" target="_blank">
  Tıkla
</a>

<!-- target="_blank" ne yapar? -->

Seçenekler

A)Linki devre dışı bırakır
B)Yeni sekmede açar✓ Doğru
C)Aynı sekmede açar
D)Sayfayı yeniler

Açıklama

target="_blank" linki yeni bir sekmede/pencerede açar. Varsayılan (_self) aynı sekmede açar.
#3q-html-3HTML
<table>
  <thead>
    <tr>
      <th>Ad</th>
      <th>Not</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ali</td>
      <td>85</td>
    </tr>
  </tbody>
</table>

<!-- <th> ile <td> arasındaki fark nedir? -->

Seçenekler

A)Fark yoktur
B)th başlık, td veri hücresi✓ Doğru
C)th veri, td başlık
D)th sadece thead içinde kullanılır

Açıklama

<th> (table header) başlık hücresidir, kalın ve ortalı görünür. <td> (table data) normal veri hücresidir.
#4q-html-4HTML
<form>
  <input type="email" id="mail" placeholder="E-posta">
  <select id="sehir">
    <option value="">Seçiniz</option>
    <option value="ist">İstanbul</option>
    <option value="ank">Ankara</option>
  </select>
  <button type="submit">Gönder</button>
</form>

<!-- input type="email" ne sağlar? -->

Seçenekler

A)Sadece görsel fark
B)E-posta formatı doğrulama✓ Doğru
C)Otomatik e-posta gönderir
D)Şifre gibi gizler

Açıklama

type="email" tarayıcının yerleşik e-posta format doğrulamasını etkinleştirir. @ işareti olmadan form gönderilemez.
#5q-html-5HTML
<!-- Hangisi semantik HTML etiketi DEĞİLDİR? -->

A) <header>
B) <nav>
C) <div>
D) <article>

Seçenekler

A)header
B)nav
C)div✓ Doğru
D)article

Açıklama

<div> genel amaçlı bir container'dır, semantik anlam taşımaz. <header>, <nav>, <article> ise içeriğin anlamını belirten semantik etiketlerdir.
#6q-html-6HTML
<a href="#bolum2">Bölüm 2'ye Git</a>

<!-- ... sayfa içeriği ... -->

<div id="bolum2">
  <h2>Bölüm 2</h2>
</div>

<!-- Bu link ne yapar? -->

Seçenekler

A)Yeni sayfaya gider
B)Sayfada bolum2 id'li elemana atlar✓ Doğru
C)Hata verir
D)Hiçbir şey yapmaz

Açıklama

href="#bolum2" sayfa içi çapa (anchor) bağlantısıdır. Sayfadaki id="bolum2" olan elemana kaydırır.
{ }

CSS

7 soru
#1q-css-1CSS
/* Hangisinin önceliği (specificity) en yüksektir? */

p { color: red; }
.metin { color: blue; }
#baslik { color: green; }

Seçenekler

A)p (element)
B).metin (class)
C)#baslik (id)✓ Doğru
D)Hepsi eşit

Açıklama

CSS specificity sıralaması: element (0,0,1) < class (0,1,0) < id (1,0,0). #baslik en yüksek önceliğe sahiptir.
#2q-css-2CSS
.kutu {
  width: 200px;
  padding: 20px;
  border: 5px solid black;
  box-sizing: content-box;
}

/* Kutunun toplam genişliği kaç px? */

Seçenekler

A)200px
B)240px
C)245px
D)250px✓ Doğru

Açıklama

content-box'ta width sadece içerik alanıdır. Toplam = 200 + (20*2 padding) + (5*2 border) = 250px.
#3q-css-3CSS
.kutu {
  width: 200px;
  padding: 20px;
  border: 5px solid black;
  box-sizing: border-box;
}

/* Kutunun toplam genişliği kaç px? */

Seçenekler

A)200px✓ Doğru
B)240px
C)250px
D)150px

Açıklama

border-box'ta width toplam genişliktir (padding ve border dahil). Toplam her zaman 200px kalır. İçerik alanı = 200 - 40 - 10 = 150px.
#4q-css-4CSS
.container {
  display: flex;
  justify-content: space-between;
}

/* justify-content: space-between ne yapar? */

Seçenekler

A)Elemanları ortalar
B)Elemanlar arası eşit boşluk, kenarlar yapışık✓ Doğru
C)Elemanlar arası ve kenarlarda eşit boşluk
D)Elemanları sola yaslar

Açıklama

space-between: ilk eleman sola, son eleman sağa yapışır, aradaki boşluk eşit dağılır. space-evenly ise kenarlarda da eşit boşluk bırakır.
#5q-css-5CSS
.btn {
  background: blue;
  transition: all 0.3s ease;
}
.btn:hover {
  background: red;
  transform: scale(1.1);
}

/* transition ne yapar? */

Seçenekler

A)Anında değiştirir
B)0.3 saniyede yumuşak geçiş yapar✓ Doğru
C)Animasyonu tekrarlar
D)Sadece rengi değiştirir

Açıklama

transition özellik değişikliklerini belirtilen sürede yumuşak geçişle uygular. 0.3s ease ile renk ve boyut değişimi akıcı olur.
#6q-css-6CSS
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* Bu düzende elemanlar nasıl sıralanır? */

Seçenekler

A)Yatay, sola yaslı
B)Yatay, ortalı
C)Dikey, sola yaslı
D)Dikey, ortalı✓ Doğru

Açıklama

flex-direction: column elemanları dikey sıralar. align-items: center ise çapraz eksende (yatayda) ortalar.
#7q-css-7CSS
.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #ccc;
  border-top: 4px solid orange;
  border-radius: 50%;
  animation: don 1s linear infinite;
}

@keyframes don {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* "infinite" ne anlama gelir? */

Seçenekler

A)1 kez döner
B)Sürekli döner✓ Doğru
C)Çok hızlı döner
D)Tersten döner

Açıklama

infinite animasyonun sonsuz tekrarlanacağını belirtir. linear ise sabit hızda dönmesini sağlar.
N

Next.js

38 soru
#1q-next-1Next.js
// Next.js nedir?

Seçenekler

A)JavaScript'in yeni bir sürümü
B)React üzerine kurulmuş bir web framework'ü✓ Doğru
C)Bir veritabanı yönetim sistemi
D)Sadece mobil uygulama geliştirme aracı

Açıklama

Next.js, React üzerine kurulmuş bir web framework'üdür. Yönlendirme (routing), sunucu tarafı render ve dosya bazlı yapı gibi özellikleri hazır olarak sunar.
#2q-next-2Next.js
// app/iletisim/page.tsx

export default function Iletisim() {
  return <h1>İletişim</h1>;
}

// Bu sayfaya hangi URL'den erişilir?

Seçenekler

A)/
B)/iletisim✓ Doğru
C)/page
D)/app/iletisim

Açıklama

Next.js dosya bazlı yönlendirme kullanır. app/iletisim/page.tsx dosyası /iletisim URL'ine karşılık gelir.
#3q-next-4Next.js
"use client";

import { useState } from "react";

export default function Sayac() {
  const [sayi, setSayi] = useState(0);
  return <h1>{sayi}</h1>;
}

// "use client" ne işe yarar?

Seçenekler

A)Bileşeni gizler
B)Bileşeni tarayıcı (client) tarafında çalıştırır; useState, onClick gibi etkileşimler kullanılabilir✓ Doğru
C)Bileşeni sadece sunucuda çalıştırır
D)CSS dosyası yükler

Açıklama

Next.js'te bileşenler varsayılan olarak sunucuda çalışır. useState, useEffect, onClick gibi tarayıcı özelliklerini kullanmak için dosyanın en üstüne "use client" yönergesi eklenir.
#4q-next-5Next.js
import Link from "next/link";

export default function Menu() {
  return (
    <>
      <Link href="/hakkimda">Hakkımda (Link)</Link>
      <a href="/hakkimda">Hakkımda (a)</a>
    </>
  );
}

// <Link> ile <a> arasındaki temel fark nedir?

Seçenekler

A)Hiçbir fark yoktur, ikisi de aynıdır
B)<Link> sayfayı tamamen yeniden yüklemeden önceden belleğe alarak client-side geçiş yapar ve <a> ise sayfayı tamamen yeniden yükler✓ Doğru
C)<Link> sadece dış sitelere gider
D)<a> her zaman daha hızlıdır

Açıklama

Next.js'in <Link> bileşeni sayfayı tamamen yenilemeden (client-side) geçiş yapar ve görünür haldeki hedef sayfaları arka planda önceden hazırlar. <a> ise sayfayı baştan yükler ve state'i sıfırlar.
#5q-next-props-1Next.js
function Selam(props) {
  return <h1>Merhaba {props.isim}</h1>;
}

// Kullanım:
<Selam isim="Ali" />

// Ekrana ne yazar?

Seçenekler

A)"Merhaba props.isim"
B)"Merhaba {isim}"
C)"Merhaba Ali"✓ Doğru
D)Hata verir

Açıklama

props bileşene dışarıdan veri geçirmek için kullanılır. JSX içinde {props.isim} ifadesi "Ali" değerini ekrana basar.
#6q-next-state-1Next.js
"use client";
import { useState } from "react";

export default function Sayac() {
  const [sayi, setSayi] = useState(0);
  return (
    <button onClick={() => setSayi(sayi + 1)}>
      {sayi}
    </button>
  );
}

// useState ne işe yarar?

Seçenekler

A)CSS state'ini yönetir
B)Bileşene state (durum) ekler; değer değiştiğinde yeniden render tetiklenir✓ Doğru
C)Sunucudan veri çeker
D)Sayfayı tamamen yeniler

Açıklama

useState bir React hook'udur. Bileşene state ekler ve [değer, güncelleyici] döner. Güncelleyici çağrıldığında bileşen yeniden render olur.
#7q-next-state-2Next.js
const [sayi, setSayi] = useState(5);

// useState(5) ifadesindeki 5 nedir?

Seçenekler

A)Maksimum değer
B)Başlangıç (initial) değeri✓ Doğru
C)State'in tipi
D)Render sayısı

Açıklama

useState'e verilen argüman state'in başlangıç değeridir. İlk render'da sayi = 5 olur.
#8q-next-state-3Next.js
"use client";
import { useState } from "react";

export default function Form() {
  const [ad, setAd] = useState("");
  return (
    <>
      <input
        value={ad}
        onChange={(e) => setAd(e.target.value)}
      />
      <p>Merhaba {ad}</p>
    </>
  );
}

// Input'a "Ali" yazılırsa ne olur?

Seçenekler

A)Hiçbir şey değişmez
B)Ekranda "Merhaba Ali" yazar✓ Doğru
C)Hata verir
D)Ekranda "Merhaba " yazar

Açıklama

onChange her tuş vuruşunda setAd ile state'i günceller. ad = "Ali" olunca bileşen yeniden render edilir ve "Merhaba Ali" görünür.
#9q-next-effect-1Next.js
"use client";
import { useEffect } from "react";

export default function Sayfa() {
  useEffect(() => {
    console.log("Çalıştı");
  }, []);

  return <h1>Merhaba</h1>;
}

// Boş bağımlılık dizisi [] ne anlama gelir?

Seçenekler

A)Effect hiç çalışmaz
B)Effect her render'da çalışır
C)Effect sadece bileşen ilk yüklendiğinde 1 kez çalışır✓ Doğru
D)Effect sonsuz döner

Açıklama

useEffect'in ikinci parametresi bağımlılık dizisidir. Boş dizi [] verildiğinde effect yalnızca ilk render'da (mount) bir kez çalışır.
#10q-next-effect-3Next.js
// useEffect ne için kullanılır?

Seçenekler

A)Sadece CSS yazmak için
B)Yan etkileri (veri çekme, abonelik, zamanlayıcı vb.) yönetmek için✓ Doğru
C)Sadece state tanımlamak için
D)HTML elementi oluşturmak için

Açıklama

useEffect, bileşen render edildikten sonra yan etkileri (API çağrısı, zamanlayıcı, abonelik gibi) çalıştırmak için kullanılır.
#11q-next-map-1Next.js
export default function Liste() {
  const meyveler = ["elma", "armut", "çilek"];
  return (
    <ul>
      {meyveler.map((m) => (
        <li key={m}>{m}</li>
      ))}
    </ul>
  );
}

// Ekrana kaç <li> elemanı yazılır?

Seçenekler

A)1
B)2
C)3✓ Doğru
D)0

Açıklama

map() dizinin her elemanı için bir <li> üretir. 3 elemanlı dizi → 3 adet <li>.
#12q-next-map-2Next.js
const isimler = ["Ali", "Veli"];
return (
  <ul>
    {isimler.map((i) => (
      <li>{i}</li>
    ))}
  </ul>
);

// Bu kodda eksik olan nedir?

Seçenekler

A)return ifadesi eksik
B)Her <li> elemanına benzersiz bir key prop'u verilmeli✓ Doğru
C)map yerine forEach kullanılmalı
D)Hiçbir eksiklik yok

Açıklama

JSX içinde map ile liste oluştururken her elemana benzersiz bir key prop'u verilmelidir. React, listeyi verimli güncelleyebilmek için bu key'i kullanır. Örn: <li key={i}>{i}</li>.
#13q-next-g-2Next.js
// Bir Counter (Sayaç) uygulamasında sayının değerini her
// tıklamada 1 artırmak için buton üzerinde hangi olay (event)
// tetiklenmelidir?

Seçenekler

A)onKeyUp
B)onChange
C)onClick✓ Doğru
D)onSubmit

Açıklama

Buton gibi elementlere fare ile tıklandığında gerçekleşecek eylemleri yönetmek için onClick olayı kullanılır. onKeyUp klavye, onChange ise form girdileri içindir.
#14q-next-g-5Next.js
// Next.js (App Router) mimarisinde, dosya bazlı yönlendirme
// sistemine göre bir sayfa oluşturmak için dosya adı ne olmalıdır?

Seçenekler

A)index.js
B)page.js✓ Doğru
C)route.js
D)layout.js

Açıklama

Next.js App Router'da bir klasörün rota olabilmesi için içinde mutlaka page.js dosyası barındırması gerekir. route.js ise API uç noktaları için kullanılır.
#15q-next-g-6Next.js
// Next.js'te veri yüklenirken kullanıcıya otomatik olarak
// bir yükleniyor arayüzü göstermek için App Router içinde hangi
// özel dosya ismi kullanılır?

Seçenekler

A)spinner.js
B)error.js
C)loading.js✓ Doğru
D)fallback.js

Açıklama

Next.js, bir sayfa yüklenirken React Suspense altyapısını kullanarak otomatik olarak loading.js dosyasındaki içeriği ekrana getirir.
#16q-next-g-7Next.js
// Modern tarayıcılarda entegre olarak bulunan ve bir adresten (URL)
// asenkron olarak veri çekmemizi sağlayan fonksiyon hangisidir?

Seçenekler

A)fetch✓ Doğru
B)axios
C)request
D)get

Açıklama

fetch API'si, ağ üzerinden kaynakları almak için tarayıcılarda yerleşik olarak sunulan modern bir JavaScript fonksiyonudur. axios ise harici bir kütüphanedir.
#17q-next-g-8Next.js
// Next.js'te dinamik bir rota (dynamic route) oluşturmak için
// klasör ismi nasıl tanımlanmalıdır?

Seçenekler

A):id
B)[id]✓ Doğru
C){id}
D)(id)

Açıklama

Next.js dosya sisteminde bir klasör adını köşeli parantez içine almak ([id]), o klasörün dinamik bir rota (parametre) olduğunu belirtir.
#18q-next-g-10Next.js
// API'lerden veri alırken veya veri gönderirken en yaygın kullanılan,
// insan tarafından okunabilen hafif veri değişim formatı hangisidir?

Seçenekler

A)XML
B)HTML
C)JSON✓ Doğru
D)TXT

Açıklama

JSON (JavaScript Object Notation), JavaScript nesne yapısına dayanan, günümüzde API veri alışverişlerinde endüstri standardı haline gelmiş hafif bir formattır.
#19q-next-g-12Next.js
// Kullanıcı bir input alanına yazı yazarken klavyeden bir tuşu
// elinden çektiği anı yakalamak için hangi event listener kullanılır?

Seçenekler

A)onKeyDown
B)onKeyPress
C)onKeyUp✓ Doğru
D)onClick

Açıklama

onKeyUp olayı, kullanıcı klavyedeki bir tuşa basıp parmağını tuştan kaldırdığı anda tetiklenir. onKeyDown ise tuşa basıldığı anı yakalar.
#20q-next-g-13Next.js
// React'ta props verileri hakkında aşağıdakilerden hangisi doğrudur?

Seçenekler

A)Alt bileşen (child) tarafından doğrudan değiştirilebilirler.
B)Yalnızca sayılardan oluşmak zorundadırlar.
C)Üst bileşenden alt bileşene akar.✓ Doğru
D)Kullanılabilmesi için mutlaka useEffect içinde tanımlanmalıdır.

Açıklama

Props verileri tek yönlü veri akışına (one-way data binding) uygundur ve alt bileşen için salt okunurdur, doğrudan manipüle edilemezler.
#21q-next-g-15Next.js
// Bir web API'sine istek attıktan sonra gelen JSON yanıtını
// JavaScript nesnesine dönüştürmek için hangi metot asenkron olarak çağrılır?

Seçenekler

A)response.toString()
B)JSON.stringify(response)
C)response.json()✓ Doğru
D)response.parse()

Açıklama

fetch ile gelen yanıt nesnesi (Response) üzerindeki .json() metodu, gelen ham veriyi asenkron olarak ayrıştırıp JavaScript nesnesine dönüştürür.
#22q-next-g-16Next.js
// app/users/[id]/page.js
// URL /users/123 olduğunda params.id değeri ne olur?

Seçenekler

A)[id]
B)undefined
C)123✓ Doğru
D)page

Açıklama

URL'deki /users/ kısmından sonra gelen dinamik değer 123 olduğu için Next.js bunu yakalar ve params.id değerine eşitler.
#23q-next-g-17Next.js
// React'ta bir state güncellendiğinde aşağıdakilerden hangisi gerçekleşir?

Seçenekler

A)Sayfa tamamen yenilenir (F5 atılmış gibi olur).
B)Bileşen yeniden render edilir (re-render).✓ Doğru
C)Bütün props'lar silinir.
D)Uygulama hata vererek durur.

Açıklama

State değişimi React'a o bileşenin arayüzünün güncellenmesi gerektiğini söyler ve DOM'u güncellemek için bileşeni yeniden render (re-render) eder.
#24q-next-g-18Next.js
// Next.js App Router yapısında tüm sayfaların etrafını saran,
// header ve footer gibi ortak bileşenleri bir kez tanımlamamızı
// sağlayan özel dosya hangisidir?

Seçenekler

A)page.js
B)layout.js✓ Doğru
C)loading.js
D)global.css

Açıklama

layout.js, altındaki sayfaların veya alt klasörlerin ortak yerleşim planını ve şablonunu belirlemek için kullanılır, durumunu sayfa geçişlerinde korur.
#25q-next-g-20Next.js
// React'ta "Counter" uygulamasında state doğrudan
// count = count + 1 şeklinde güncellenirse ne olur?

Seçenekler

A)Sayım değeri başarılı bir şekilde artar ve ekranda güncellenir.
B)Değişkenin değeri arka planda değişebilir ama bileşen re-render olmadığı için ekrandaki görüntü değişmez.✓ Doğru
C)Uygulama hemen bilgisayarı kapatır.
D)Props verileri otomatik olarak güncellenir.

Açıklama

State doğrudan mutasyona uğratıldığında React bu değişikliği fark edemez ve arayüzü yeniden render etmez. Bu yüzden her zaman setCount gibi güncelleyici fonksiyonlar kullanılmalıdır.
#26q-next-g-22Next.js
// Aşağıdakilerden hangisi geçerli bir useState başlangıç değeri olamaz?

Seçenekler

A)Bir fonksiyon tanımı
B)Hiçbiri; her türlü geçerli JavaScript veri tipi başlangıç değeri olabilir.✓ Doğru
C)Bir dizi veya nesne
D)null veya undefined

Açıklama

useState; string, sayı, boolean, nesne, dizi, null, undefined veya fonksiyon dahil tüm geçerli JavaScript veri tiplerini başlangıç değeri olarak kabul eder.
#27q-next-g-23Next.js
<button onClick={handleClick()}>Tıkla</button>
// Bu tanımdaki hata nedir?

Seçenekler

A)onClick kelimesi tamamen küçük harflerle yazılmalıdır.
B)Fonksiyon parantezlerle çağrıldığı için buton tıklanmadan, bileşen render edilir edilmez fonksiyon doğrudan çalışır.✓ Doğru
C)Buton elementi React'ta onClick olayını desteklemez.
D)Süslü parantez yerine çift tırnak kullanılmalıdır.

Açıklama

Parantez koymak fonksiyonu hemen yürütür. Doğru kullanım parantez olmadan sadece {handleClick} şeklinde fonksiyonun referansını vermektir.
#28q-next-g-27Next.js
// JSON formatındaki bir veride aşağıdakilerden hangisi
// geçerli bir veri türü olarak kullanılamaz?

Seçenekler

A)undefined✓ Doğru
B)String (Metin)
C)Number (Sayı)
D)Boolean (true/false)

Açıklama

JSON standardında undefined tanımı yoktur. Eksik veya tanımsız değerler için null kullanılır veya anahtar nesneye hiç eklenmez.
#29q-next-g-33Next.js
// React'ta bir input elementindeki metin her değiştiğinde
// bu değişimi yakalayıp state'e aktarmak için hangi event listener
// kullanılır?

Seçenekler

A)onClick
B)onChange✓ Doğru
C)onSubmit
D)onHover

Açıklama

onChange olayı, form elemanlarının (input, select, textarea) değeri kullanıcı tarafından her değiştirildiğinde tetiklenir.
#30q-next-g-35Next.js
useEffect(() => {
  // ...
}, [search]);

// Bu efekt ne zaman çalışır?

Seçenekler

A)Sadece sayfa ilk yüklendiğinde
B)İlk yüklendiğinde VE search değişkeninin değeri her değiştiğinde✓ Doğru
C)Hiçbir zaman çalışmaz.
D)Sadece search değişkeni sıfırlandığında

Açıklama

Bağımlılık dizisine yazılan elemanlar React tarafından izlenir. İlk yüklemeden sonra, bu dizideki herhangi bir eleman güncellendikçe efekt fonksiyonu yeniden yürütülür.
#31q-next-g-37Next.js
// Aşağıdaki kod parçalarından hangisi başarılı bir şekilde
// 1'den başlayan bir sayaç durum (state) yapısı tanımlar?

Seçenekler

A)const count = 1;
B)const [count, setCount] = useState(1);✓ Doğru
C)const [setCount, count] = useState(1);
D)const count = useState(1);

Açıklama

Doğru useState kullanımı dizi parçalama yöntemiyle ilk eleman olarak değişkeni, ikinci eleman olarak güncelleyici fonksiyonu alır. Parantez içi de başlangıç değeridir.
#32q-next-g-39Next.js
// Bir web uygulamasında API (Application Programming Interface)
// temel olarak hangi amaca hizmet eder?

Seçenekler

A)Sayfaların CSS stillerini güzelleştirmek
B)Farklı yazılımların veya istemci ile sunucunun birbiriyle güvenli bir şekilde veri alışverişi yapmasını sağlamak✓ Doğru
C)Kullanıcının bilgisayarındaki dosyaları silmek
D)İnternet hızını artırmak

Açıklama

API'ler uygulamalar arası iletişimi ve veri transfer köprülerini oluşturan, belirli kuralları olan standart yazılım arayüzleridir.
#33q-next-g-41Next.js
// React'ta bir fonksiyonel bileşen (Functional Component)
// temelde ne döndürmek (return) zorundadır?

Seçenekler

A)Hiçbir şey döndürmez.
B)JSX (HTML benzeri arayüz yapısı) veya null✓ Doğru
C)Sadece düz bir text stringi
D)Büyük bir JavaScript nesnesi

Açıklama

React fonksiyonel bileşenleri ekranda ne gösterileceğini belirten JSX ifadeleri döndürür. Eğer arayüzde bir şey çizilmeyecekse açıkça null döndürülmelidir.
#34q-next-g-49Next.js
// Bir JSON verisi stringe çevrildiğinde veya okunurken en dışta
// hangi karakterlerin kullanımı zorunludur?

Seçenekler

A)Köşeli Parantezler [ ] veya Süslü Parantezler { }✓ Doğru
B)Normal Parantezler ( )
C)Açılı Parantezler < >
D)Yıldız işaretleri * *

Açıklama

Geçerli bir JSON dokümanı en dışta ya bir nesneyi (object) temsil eden {} ya da bir listeyi (array) temsil eden [] ile sarmalanmak zorundadır.
#35q-next-ternary-1Next.js
"use client";
import { useState } from "react";

export default function Profil() {
  const [girisYapildi, setGirisYapildi] = useState(false);

  return (
    <div>
      {girisYapildi ? <h1>Hoş geldin!</h1> : <h1>Lütfen giriş yap</h1>}
    </div>
  );
}

// JSX içindeki { ... ? ... : ... } yapısının adı ve görevi nedir?

Seçenekler

A)if/else bloğudur; JSX içinde aynen kullanılabilir.
B)Ternary (üçlü) operatörüdür; koşula göre iki farklı JSX'ten birini render etmek için kullanılır.✓ Doğru
C)switch-case yapısıdır; sadece sayıları karşılaştırır.
D)Spread operatörüdür; iki bileşeni birleştirir.

Açıklama

JSX içine doğrudan if yazılamaz, ifade (expression) yazılır. Ternary operatörü (kosul ? a : b) tek bir ifade olduğu için JSX'in süslü parantezleri içinde kullanılabilir ve koşullu render için en yaygın yöntemdir.
#36q-next-ternary-2Next.js
const yas = 17;
const mesaj = yas >= 18 ? "Reşit" : "Reşit değil";
console.log(mesaj);

// Ekrana ne yazar?

Seçenekler

A)"Reşit"
B)"Reşit değil"✓ Doğru
C)true
D)false

Açıklama

yas >= 18 ifadesi 17 >= 18 olduğundan false döner. Ternary operatörü false durumda iki nokta üst üsteden sonraki değeri ("Reşit değil") seçer.
#37q-next-func-1Next.js
// Aşağıdakilerden hangisi geçerli bir React functional component
// tanımıdır?

Seçenekler

A)function selam() { return <h1>Merhaba</h1>; }
B)function Selam() { return <h1>Merhaba</h1>; }✓ Doğru
C)function Selam() { <h1>Merhaba</h1>; }
D)const Selam = <h1>Merhaba</h1>;

Açıklama

React bileşen isimleri büyük harfle başlamalıdır (PascalCase) — küçük harfle başlayan tag'leri React HTML elementi sanır. Ayrıca bileşen JSX'i return ile döndürmelidir; sadece yazmak yeterli değildir.
#38q-next-func-2Next.js
// Aşağıdaki iki tanım arasındaki fark nedir?

// 1) function Karsila({ isim }) {
//      return <h1>Merhaba {isim}</h1>;
//    }

// 2) const Karsila = ({ isim }) => <h1>Merhaba {isim}</h1>;

Seçenekler

A)İkinci tanım React'ta çalışmaz, sadece birinci geçerlidir.
B)Aralarında işlevsel bir fark yoktur; ikisi de aynı bileşeni tanımlar (function declaration vs. arrow function).✓ Doğru
C)Birinci tanım state tutamaz, ikinci tanım tutar.
D)İkinci tanım otomatik olarak Client Component olur.

Açıklama

React'ta bileşenler hem function declaration (function Karsila() { ... }) hem de arrow function (const Karsila = () => ...) ile yazılabilir. Her ikisi de JSX döndürdüğü sürece aynı şekilde çalışır; sadece yazım stili farkıdır.
Soru Bankası · 100 soru · CodeLab