JavaScript mülakat soruları 8. bölümden merhabalar. Şimdiye dek 70 soruyu geride bıraktığımız serimiz devam ediyor. JavaScript’in en temel konularından başlayarak ilerliyoruz. En son dizi metodlarını içeren sorulara kadar gelmiştik. Aşağıdan diğer JavaScript mülakat soruları bölümlerine ulaşabilirsiniz.
- JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 7
- JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 6
- JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 5
- JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 4
- JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 3
- JavaScript Mülakat Soruları: Temel Seviyeden İleri Seviyeye – Part 2
- JavaScript Mülakat Soruları: Temel Seviyeden İleri Seviyeye- Part 1
Şimdi en son kaldığımız yerden devam edelim.
SORU 71
let students = ["Şekip", "Mükremin", "Kamuran"];
students.pop();
console.log(students);
pop() bir dizi metodudur. Yaptığı şey dizinin sonundaki elemanı silmektir. Bu durumda dizimizin sonundaki “Kamuran” ögesi silinecek ve sonuç olarak konsolda [“Şekip”, “Mükremin”] çıktısını göreceğiz. Eğer başındaki ögeyi silmek isteseydik bu durumda shift() metodunu kullanacaktık. pop() ve shift() metodları dizinin orijinal halini değiştirir. Kopya bir dizi oluşturmaz.
SORU 72
let fish = ["Hamsi", "İstavrit", "Mezgit", "Alabalık"];
console.log(fish[2]);
console.log(fish.Hamsi);
console.log(fish[2]); ifadesiyle ikinci indeks numarasına sahip olan ögeyi döndürdük. Bu da “Mezgit” olur çünkü indeks numaraları hatırlayacağımız üzere 0’dan başlıyordu. “Hamsi” 0. “İstavrit” 1. ve “Mezgit” de 2. indeks numarasına sahiptir.
console.log(fish.Hamsi); ifadesi hatalıdır çünkü JavaScript’te dizinin içinde yer alan ögelere indeks numaraları ile erişiriz. Dizi ögelerinin doğrudan ismini yazarak erişmemiz mümkün değildir. Bu yüzden ikinci olarak undefined çıktısını alırız. Eğer “Hamsi” ögesine erişmek isteseydik konsol fonksiyonunun içine fish[0] yazmamız gerekecekti.
SORU 73
let cat = {
name: "Tombi",
age: 3
};
cat.age = 5;
console.log(cat);
cat adlı nesnemizde (Nesneler süslü parantezlerle ifade ediliyordu) name ve age adında iki özelliğimiz var ve bunların değerleri de sırasıyla Tombi ve 3.
cat.age = 5; ifadesi cat nesnesinin age özelliğini 5 değeriyle değiştirir. Bu durumda cat nesnesinin güncel age değeri 5 olacaktır.
Sonuç olarak konsola cat nesnesini yazdırmak istediğimizde {name: “Tombi”, age: “5”} çıktısını alırız. Nesneler tıpkı fonksiyonlar ve diziler gibi referans tipli verilerdir. Yani değerleri değiştirildiğinde işaret ettikleri adresler de değişmiş olur. Bununla ilgili ileride daha detaylı örnekler göreceğiz.
SORU 74
let student = {
name: "Haydar"
};
student["surname"] = "ÇÖMLEKÇİ";
console.log(student);
student nesnemizi oluşturduk. Şu anda sadece name özelliği mevcut ve değeri de Haydar.
student[“surname”] = “ÇÖMLEKÇİ”; ifadesi surname özelliğini ÇÖMLEKÇİ değeriyle birlikte student nesnesine ekler. Alternatif olarak student.surname = “ÇÖMLEKÇİ” de yazabiliriz. Bu da aynı sonucu verecektir.
student nesnesini konsolda yazdırdığımızda {name: ‘Haydar’, surname: ‘ÇÖMLEKÇİ’} çıktısını alırız.
SORU 75
let armor = {
strength: 50,
durability: 30
};
armor[power] = 40;
console.log(armor);
Burada üstteki sorunun bir benzerini görüyoruz ancak yanlış bir kullanım var. armor[power] = 40; ifadesi geçerli bir kullanım değildir. Çünkü bir nesneye yukarıdaki soruda da bahsettiğimiz üzere bir özellik eklemek istiyorsak ya köşeli parantez içinde tırnak kullanırız ya da nokta kullanırız. Dolayısıyla burada bir referans hatası alırız: Uncaught ReferenceError: power is not defined
SORU 76
let numbers = [2, 4, 6, 8, 10];
numbers.shift();
numbers.pop();
console.log(numbers);
Daha önce teker teker gördüğümüz dizi metodları bu sefer aynı soruda yer alıyor. numbers değişkenimiz 5 ögeli bir dizi.
Önce shift() metodu ile dizimizin başındaki elemanı sileriz. Yeni durumda dizimiz [4, 6, 8, 10] olur.
Sonra pop() metodu ile dizimizin sonundaki elemanı sileriz. Yeni durumda ise dizimiz [4, 6, 8] olur. Konsolda da bu ifadeyi görürüz.
Fark ettiyseniz dizimizin orijinal yapısı bu iki metodla ardışık olarak değişime uğradı. Dizi metodlarından bazıları mevcut diziyi değişime uğratırken bazıları ise değişime uğratmaz. Bunlar zamanla karşımıza çıkacak.
SORU 77
let val1 = [];
let val2 = [];
console.log(val1 == val2);
console.log(val1 === val2);
Daha önce sözünü ettiğim referans tipli değerlerin bir örneğini görüyoruz. val1 ve val2 görünüşte aynı değere sahip iki değişken gibi görünse de bunların bellek konumları farklıdır. Bu yüzden ilk ifademiz console.log(val1 == val2); ifadesi ve ikinci ifademiz console.log(val1 === val2); ifadesi false çıktılarını verecektir.
JavaScript’te fonksiyonların, dizilerin ve nesnelerin değerleri farklı bellek konumlarına sahiptir.
SORU 78
let val3 = [];
let val4 = val3
console.log(val3 == val4);
console.log(val3 === val4);
Burada val3 ve val4 değişkenleri, aynı boş dizinin adresini işaret ederler. Bu yüzden, == ve === operatörleri, bu adreslerin eşit olduğunu söylerler. Bu, dizilerin referans tipli olduğunu gösterir. Bu yüzden bir önceki sorunun aksine burada true çıktılarını alırız.
SORU 79
let val5 = [7];
let val6 = [7];
console.log(val5[0] == val6[0]);
console.log(val5[0] === val6[0]);
console.log(val5[0] == val6[0]); ifadesi, val5 ve val6 dizilerinin 0. indeksindeki elemanları karşılaştırır. Bu elemanlar, 7 sayısıdır. Sayılar, değer tipli verilerdir. Bu yüzden, == operatörü, bu değerlerin eşit olduğunu söyler. Bu ifade true döndürür.
console.log(val5[0] === val6[0]); ifadesi, val5 ve val6 dizilerinin 0. indeksindeki elemanları hem değer hem de tip olarak karşılaştırır. Bu elemanlar yine aynı şekilde 7 sayısıdır. Sayılar, değer tipli verilerdir. Bu yüzden, === operatörü, bu değerlerin hem değer hem de tip olarak eşit olduğunu söyler. Bu ifade de true döndürür.
Bir önceki soruda olduğu gibi dizilerin kendilerini karşılaştırsaydık bu durumda false çıktısını alacaktık. Çünkü dizilerin elemanları ile dizilerin kendisinin referans noktaları farklıdır.
SORU 80
const lawyers = ["Sabahattin", "Besim", "Nuri"];
const [x] = lawyers;
console.log(x);
lawyers adlı bir dizimiz var ve bu dizinin üç adet ögesi var.
const [x] = lawyers; ifadesi ile lawyers dizimizin ilk elemanını x adlı bir sabite atarız. Bu JavaScript’teki destructuring assignment yapısının bir örneğidir. Bu durumda lawyers dizisinin ilk elemanı olan Sabahattin konsol çıktımız olacaktır.
JavaScript mülakat soruları serimizin 8. bölümünün sonuna geldik. 9. bölümde görüşmek üzere.