JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 7

JavaScript mülakat soruları part-7 öne çıkan görseli

JavaScript mülakat soruları serimizin 7. bölümünden merhabalar. Şimdiye dek 60 soruyu geride bıraktık. Başlangıçtan kompleks yapılara doğru yolculuğumuz devam ediyor. Aşağıdaki menüden diğer bölümlere ulaşabilirsiniz.

En son 60. soruda kalmıştık. Şimdi JavaScript mülakat soruları serimize 61. sorudan devam edelim.


SORU 61

function start(activity, a, b) {
return activity(a, b);
};

let secondActivity = (c, d) => c ** d;

console.log(start(secondActivity, 2, 4));

Sonuç odaklı ilerleyerek en alttan başlayalım. Konsola yazdırmak istediğimiz ifade start fonksiyonumuza secondActivity, 5 ve 10 değerlerini yerleştirmemizle oluşacak. Bu durumda start fonksiyonumuzdaki activity fonksiyonu secondActivity’e, a değeri 5’e ve b değeri ise 10’a denk gelecektir. Fonksiyonumuzun içinde döndürülmek istenen ifadenin a ve b parametrelerini almış activity fonksiyonu olduğunu görüyoruz. activity fonksiyonu konsol ifadesindeki secondActivity fonksiyonuyla eşleşeceği için secondActivity fonksiyonu tetiklenecek ve a-b parametreleri (yani 2 ve 4) c ve d yerine geçecektir. Bu durumda 2**4 (2 üzeri 4) işlemini yaparız ki bu da 16 olur. Konsolda 16 çıktısını görürüz.

SORU 62

function func1(val) {
console.log("start: " + val);
val--;
if(val > 6) func1(val)
};

func1(12);

func1 fonksiyonumuz val parametresini almış ve aşağıda func1 fonksiyonumuzu 12 değeriyle çağırdık. Bu durumda val yerine 12 gelecektir. Konsol fonksiyonunuda yerine yerleştirdiğimiz konsolda önce “start: 12” çıktısını görürüz. Ardından val– ifadesiyle val parametremizin değerini 1 azaltırız. Koşullu ifadeye göre azaltma işlemi 6 değerine kadar devam edecektir. En son 6 > 6 eşitsizliğinde duracaktır. Bir önceki yazıda gördüğümüz yinelemeli (recursive) fonksiyonun bir örneğini daha görüyoruz burada. Konsolda sırasıyla aşağıdaki çıktıları görürüz:

start: 12
start: 11
start: 10
start: 9
start: 8
start: 7

SORU 63

function multiplier(a, b) {
a * b
};

console.log(multiplier(3,6));

multiplier fonksiyonumuz aldığı parametleri çarpıyor. Bakın sadece çarpıyor, döndürmüyor. Tuzak bir soru. 😀 a ve b yerine 3 ve 6 yerleştirdiğimizde bunlar çarpılır ve sonuç 18 çıkar ancak bu değer döndürülmez. Bu yüzden konsolda undefined çıktısını görürüz. Eğer çıkan sonucu (Yani 18’i) döndürmek isteseydik return anahtar kelimesini kullanmamız gerekecekti. JavaScript’te return anahtar kelimesi içermeyen fonksiyonlar varsayılan olarak undefined çıktısını verir.

SORU 64

let num = 11;

function phaseShift(v1, v2, clapTrap) {
return clapTrap(v1, v2);
};

console.log(phaseShift(4, 8, num));

Burada phaseShift fonksiyonumuza 4, 8 ve num parametrelerini yerleştirdiğimizde sırasıyla v1 parametresi 4, v2 parametresi 8, ve clapTrap parametresi ise num değerini alacaktır. num parametresini en üst tarafta 11 olarak tanımladık. phaseShift fonksiyonumuzun içine baktığımızda clapTrap parametresi 11 değeriyle çağrılacak ve sonuç olarak 11(4, 8) gibi anlamsız bir fonksiyon döndürülmeye çalışılacaktır. Bu durumda TypeError hatasını alırız.

JavaScript’te fonksiyonlar sayı olarak çağrılamazlar.

SORU 65

let range = 17;

console.log(42 <= range <= 103);

range değişkenimizi konsol fonksiyonumuzda yerine yerleştiririz. Önce 42 <= 17 eşitliğini kontrol ederiz. Buradan false gelir. false veri türünün sayısal karşılığı 0 olduğu için bu karşılaştırmadan 0 sonucunu elde ederiz. Ardından 0 <= 103 eşitliğini kontrol ederiz. Bu eşitlik sağlandığı için true çıktısını elde ederiz. Sonuç olarak konsolda true çıktısını görürüz.

SORU 66

let num = 5;

function lab(a, b) {
let num = a * b;

console.log(`İç fonksiyonun değeri: num = ${num}`);

return num;
};

lab(5, 6);

console.log(`Dış fonksiyonun değeri: ${num}`);

Önce lab fonksiyonumuza bakalım. Fonksiyonumuz 5 ve 6 değerleriyle çağrılıyor. Bu yüzden a yerine 5, b yerine 6 değerleri gelecektir.

let num = a * b ifadesiyle birlikte lab fonksiyonuna ait olan num değişkenimizin değeri 30 olacaktır. Konsolda da “İç fonksiyonun değeri: num = 30” yazdırılacaktır.

Fonksiyonun içindeki son satırda da num değişkeninin değeri döndürülüyor ki bu da 30 olacaktır.

console.log(`Başka bir fonksiyon: ${num}`); ifadesi ise num değişkenini daha önce de gördüğümüz global kapsamdan alır. Yani en üstte tanımladığımız değişken buraya yerleşecektir. Bu durumda konsolda en son “Dış fonksiyonun değeri: 5” stringini görürüz.

SORU 67

Genel olarak fonksiyonların yapısını anladık. Şimdi farklı bir konu olan dizilere (array) geçiş yapalım. Artık soru havuzumuza dizileri de dahil edeceğiz.

let fruits = ["Elma", "Muz", "Erik"];

let tellMeUrIndex = fruits.indexOf("Muz");

console.log(tellMeUrIndex);

Burada fruits adında bir değişken oluşturduk ve değer olarak bir dizi verdik. JavaScript’te diziler köşeli parantezlerle belirlenir. Bu dizinin 3 adet ögesi var. Bunlar “Elma”, “Armut” ve “Muz” ögeleri.

let tellMeUrIndex değişkeni bize fruits dizinin “Muz” ögesinin indeks numarasını söylüyor. (fruits.indexOf ifadesiyle) Dizilerde indeks numaraları 0’dan başlar ve ilerler. Burada “Elma” ögesinin indeks numarası 0, “Muz” ögesinin indeks numarası 1 ve “Erik” ögesinin indeks numarası ise 2. tellMeUrIndex değişkeni “Muz” ögesinin indeks numarasını değer olarak aldığı için konsolda 1 çıktısını görürüz.

SORU 68

let cars = ["Pagani", "Ferrari", "Honda"];

cars.unshift("Bugatti");

console.log(cars);

Bu soruda dizi metodlarından biri olan unshift’i görüyoruz. Birçok dizi metodu var ve bunları karışık bir şekilde JavaScript mülakat soruları serimizde göreceğiz.

unshift dizi metodu kısaca bir ögeyi dizinin en başına ekler. Burada da “Bugatti” ögesini dizimizin en başına ekliyoruz. Böylece konsolda şu çıktıyı görürüz:

["Bugatti", "Pagani", "Ferrari", "Honda"]

unshift metodu dizinin orijinal yapısını değiştirir. Yani kopya bir dizi oluşturmaz. JavaScript’in en iyi uygulamalarında genellikle dizinin orijinal yapısını bozmayan yöntemler tercih edilir. Bunu ileride daha detaylı göreceğiz.

SORU 69

let customerInfo = {
name: "Şekip",
city: "Eskişehir",
};

let arr = [5, [3, 6, 9], customerInfo];

console.log(arr);

İlk defa JavaScript’teki nesneler konusu karşımıza çıktı. Nesneler süslü parantezler içinde gösterilir. Nesnenin her bir ögesi key: “value”(anahtar: “değer”) dediğimiz çiftlerden oluşur. Burada da customerInfo nesnesini oluşturduk ve ilk key: “value” ögesini name: “Şekip”, ikinci key: “value” ögesini ise city: “Eskişehir” olarak belirledik.

arr dizimiz ise 3 ögeden oluşuyor. Bunlar 5, [3, 6, 9] dizisi ve customerInfo nesnesi. Yani aslında arr dizimizin 3 tane ögesi var ve bu ögelerin her biri farklı tipte. Konsola dizimizi yazdırmak istediğimizde şu çıktıları alırız:

(3) [5, Array(3), {…}]

Baştaki 3, çıktı olarak aldığımız dizinin toplamda 3 ögesinin olduğunu ifade eder. Konsoldaki bu çıktıya tıklayarak genişletebiliriz. Bu durumda indeks numaraları, customerInfo nesnesinin elemanlarının tam görünümü gibi detaylara ulaşabiliriz.

SORU 70

let catNames = ["Boncuk", "Mırnav", "Tombi"];

let findIndex = catNames.indexOf("Karabaş");

console.log(findIndex);

Bu yapının bir benzerini önceki sorularda görmüştük ancak bu sefer numarasını bulmak istediğimiz indeks ögesi, catNames dizimizin içinde yok. (“Karabaş” ögesi) Bu yüzden -1 çıktısını alırız. JavaScript’te bulmak istediğimiz öge şayet dizinin içinde yoksa -1 çıktısını alırız.


70 soruyu geride bıraktığımız JavaScript mülakat soruları serimizin bu bölümünün sonuna geldik. Bir sonraki bölümde görüşmek üzere.

1 thoughts on “JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 7”

  1. Geri bildirim: JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 8 - Frontçu Abi

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top