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

javascript mülakat soruları öne çıkan görsel

JavaScript mülakat soruları serimize hız kesmeden devam ediyoruz. Bu seri aşamalı bir şekilde ilerlediğinden birinci bölümden başlamanızı tavsiye ederim. JavaScript mülakat soruları birinci bölüme buradan ulaşabilirsiniz. Eğer part-1’i tamamladıysanız part-2’ye buradan ulaşabilirsiniz. En son 20. soruda kalmıştık. Şimdi 21. sorudan devam edelim.

Soru 21

let value = "1071";
value = -value;

console.log(value);
console.log(typeof value);

Burada value değişkeni 1071 olarak belirlenmiş ancak dikkat edelim ki iki tırnak içine alınmış. Önceki bölümlerde bu yapıyı görmüştük. JavaScript’te eğer bir sayı (number) iki tırnak içinde kullanılıyorsa otomatik olarak metin(string) değere dönüşüyordu. Bu yüzden value string bir değerdir. Ancak hemen altta value değişkeninin değerini – operatörüyle negatife çevirdik. JavaScript’te – operatörü (Matematiksel operatörler) string olan bir ifadeyi sayıya çevirir. Bu yüzden konsolda -1071 ve number çıktısını görürüz.

“1071” değeri yerine doğrudan string bir ifade olsaydı, mesela “elma” gibi, bu durumda değişkeni -elma değerine çevirmeye çalışacaktık ki bu ileride de göreceğizmiz NaN (Not a number) çıktısını bize verecekti. Yani string ifadeye sayısal değer atamaya çalışacaktık.


Soru 22

let counter = 300;
let num;

if (counter < 125) {
num = 25;
} else {
num = 50;
};

console.log(num);

counter değişkenimizin değeri 300. num değişkenimize herhangi bir değer atamadık. (Yani şu anda undefined) Koşullu ifademize baktığımızda counter değişkenimizin 125’ten küçük olması durumunda num değişkenimizin değeri 25 olarak belirleniyor, aksi durumda ise 50 olarak belirleniyor. counter değişkenimizin değeri 300 olduğundan ve 300 de 125’ten küçük olamayacağından num değişkenimizin değeri 50 olarak belirlenir ve konsola yazdırılır.


Soru 23

let counter = 300;
let message = "Armut";

if (counter > 125) {
if (message) {
console.log("Armut favori meyvemdir.")
}
};

Burada iç içe geçmiş if’li yapının bir örneğini görüyoruz. Eğer counter değişkenimizin değeri 125’ten büyükse içteki if’li ifadeye geçiş yapacağız ve ardından içteki if’li ifadeyi kontrol edeceğiz. counter değişkenimizin değeri 300 olduğundan ilk if’li ifadenin koşulu sağlanmış olur. Bu sefer içteki if’li ifadeyi kontrol edelim. Eğer message değişkeni true ise bu durumda konsola “Armut favori meyvemdir.” yazısını yazdıracağım. Daha önceki bölümlerde string ifadenin varsayılan olarak true değere sahip olduğunu öğrenmiştik. (truthy/falsy değerler. İleride daha detaylı değineceğiz.) Bu yüzden içteki if’li ifade de sağlanır ve konsola “Armut favori meyvemdir.” yazdırılır.

Peki ilk if’li ifadenin koşulu sağlanmasaydı ne olurdu? Fark ettiyseniz burada else kullanmadık. Yani koşul sağlanmazsa ne olacağını belirlemedik. Bu yüzden eğer ilk if’li ifade sağlanmamış olsaydı bu durumda konsolda boş bir çıktı görecektik.


Soru 24

let num1 = 50;

if(num1 < 50) {
num1 = 25
};

console.log(num1);

num1’in değeri 50. Koşullu ifadede num1 yerine 50 değerini yerleştirdiğimizde 50 < 50 eşitsizliği ortaya çıkar. Bu durumda koşullu ifadenin içindeki değer hiç değerlendirmeye alınmaz ve num1 olduğu gibi kalır. Bu yüzden konsolda 50 değerini görürüz.


Soru 25

let num1 = 100;

let num2 = num1++;

console.log(num1);
console.log(num2);

Daha önceki bölümlerde buna benzer bir yapı vardı hatırlarsanız. Burada num2 önce num1’e eşitleniyor, ardından ise num1’in değeri 1 artırılıyor. Yani num2 100 olurken, num1 ise 101 oluyor. Konsolda sırasıyla num1 ve num2’yi yazdırmak istediğimizden sırasıyla çıktı olarak 101 ve 100 değerlerini görürüz.


Soru 26

let myValue = 1071 + "8";

console.log(myValue);
console.log(typeof myValue);

myValue’nun değeri number olan 1071 ile string olan 8’in, + operatörüyle birleştirilmesinden oluşuyor. Daha önce benzer bir yapısını gördüğümüz bu ifade number ile stringi birleştirir ve nihai değeri string olarak belirler. Bu durumda 1071 ile 8 birleşir ve nihayetinde 10718 stringini elde ederiz. Konsolda önce myValue değerini yazdırıyoruz ki bu 10718 olur. Sonra da bunun tipini (type) konsolda yazdırırız. Bu da string olur.


Soru 27

let num1 = 50 + "100";
let num2 = 50 + +"100";
let num3 = 50 + -"100" + 100;
let num4 = "100" - "100" + "100"
let num5 = "Num1" - "Num2"

console.log(`${num1}, ${num2}, ${num3}, ${num4}, ${num5}`);

Önceki bölümlerde gördüğümüz soruların bir karması niteliğinde bu soru. Önce num1’den başlayalım. num1’in değeri sayı olan 50 ile string olan 100’ün birleşmesinden oluşuyor. Bu durumda num1’in değeri 50100 stringi olur.

Ardından num2’yi inceleyelim. string olan 100’ün önünde matematiksel operatör olan + var. JavaScript’te matematiksel operatörler string olan bir ifadeyi number’a çevirir. Bu yüzden string olan 100, sayı olan 100’e dönüşür ve ardından 50 ile toplanır. Nihayetinde num2’nin değeri 150 olur.

num3’te de benzer bir yapı var. string olan 100’ün önünde – operatörü var. Bu yüzden bu string değer negatif sayıya dönüşür. 50 + (-100) + 100 işleminin sonucu da 50 olarak karşımıza çıkar.

num4’te yer alan tüm değerler string. Matematikte + ve – operatörleri aynı işlem önceliğine sahip olduğu için ve parantez kullanılmadığı için soldan başlayarak işlemlerimizi gerçekleştiririz. (JavaScript’te özel bir durum yoksa işlemler soldan sağa doğru gerçekleştirilir.) Burada string olan iki tane 100’ün farkını alıyoruz. JavaScript’te string formatında olan iki sayının farkını aldığımızda JavaScript bunları otomatik olarak number formatına çevirir. Bu yüzden ilk işlemimizin sonucu 0. Ardından 0 ile string olan 100 + operatörüyle birleştirildi. Böylelikle 0100 stringini elde ettik.

JavaScript’te tür dönüşümleri burada da gördüğünüz üzere biraz karmaşık. + operatörü duruma göre birleştirme yaparken – operatörü string dahi olsa değerlerin doğrudan farkını alıyor. Ancak zaman geçtikçe JavaScript’in bu garip kurallarına alışıyoruz. 😁

Şimdi num5 değişkenine bakalım. num5 değişkeni Num1 ve Num2 adında iki string değer alıyor. Buradaki Num1 ve Num2, üstteki değişkenlerin isimlerine benzediği için kafa karıştırıcı olabilir. Tamamen tuzak amaçlı yerleştirilmiş. JavaScript mülakat soruları bazen karşımıza burada olduğu gibi tuzaklı bir şekilde çıkabiliyor. 😀Buna hazırlıklı olmalıyız. Tuzağı fark ettiğimize göre devam edelim. JavaScript’te iki string değeri toplamaya çalıştığımızda NaN (Not a number) çıktısını elde ediyorduk. Burada da NaN çıktısını görürüz.

Sonuç olarak konsolda sırasıyla 50100, 150, 50, 0100, NaN çıktılarını görürüz.


Soru 28

console.log(true && "false");
console.log(typeof (true && "false"));

İlk defa doğrudan ve/veya operatörleriyle ilgili bir soru görüyoruz burada. İlk ifadede true ile “false” ve operatörüyle karşılaştırılmış. &&(ve operatörü) operatörünün çalışma mantığı iki değerin karşılaştırılmasından ibarettir. && operatörü iki değeri karşılaştırarak tüm değerlerin true olup olmamasını kontrol eder. Eğer her iki değer de truthy ise en sonuncu truthy değer döner. Eğer falsy değer varsa ilk bulduğu falsy değeri döndürür. İlk ifadede truthy bir değer olan true ile yine truthy olan “false” karşılaştırılmış. “false” neden truthy diye soracak olursanız daha önce de gördüğümüz üzere iki tırnak içine alınmış ifadeler string değerine sahip olur. false yazısı sizi aldatmasın. Bu direkt string bir ifadeye dönüşür. String ifadeler ise varsayılan olarak truthy değere sahiptir. Burada iki truthy değer karşılaştırıldığından en sonuncu truthy değer yani false stringi konsolda döner.

İkinci kısımda parantez içindeki işlemin türünün ne olduğunu konsola yazdırıyoruz. “false” çıktısı bir string olduğundan konsolda string çıktısını görürüz.


Soru 29

let num = 5;
let val = true;

if (num > 8 || val === true) {
console.log("Şekip");
}

console.log(num > 8 || val === true);

Bu sefer karşımıza || (veya) operatörü çıkıyor. Önce koşullu ifadenin içindeki num (5) > 8 eşitliğine bakarız. Buradan false çıktısı gelir. (Falsy değer) İkinci ifadede ise val === true eşitliğini görüyoruz. JavaScript’te === operatörü karşılaştırdığı iki ögenin hem değerine hem türüne bakar. Eğer iki ögenin hem değeri hem de türü birbirine eşitse true çıktısını verir. Bu durumda val değişkeninin değeri true idi. Eşitliğin karşı tarafındaki değer de true. Yani hem değer olarak hem de tür olarak bu iki öge birbirine eşit. Bu yüzden buradan truthy değer çıkar. Nihayetinde false || true karşılaştırmasını yaparız.

|| operatörü karşılaştırdığı ögelerin herhangi birinin true olup olmadığını kontrol eder. Eğer herhangi bir ifade true ise, ilk true değerini bulduğunda işlemi durdurur ve bu değeri döndürür. Eğer tüm ifadeler false ise, son ifadenin değerini döndürür. false || true karşılaştırmasını yaptığımızdan ve ilk true değer döneceğinden bu koşullu ifade sağlanacaktır ve konsolda önce Şekip çıktısını göreceğiz. Hemen alt tarafta konsola koşullu bir ifade yazdırdık. Zaten parantez içindeki ifade koşullu ifade ile aynı. Burada da benzer şekilde true çıktısını alırız. Sonuç olarak konsolda önce Şekip ardından da true çıktısını görürüz.


Soru 30

console.log(true && false || true);

Soldan sağa doğru ilerleyerek karşılaştırmalarımızı yaparız. İlk olarak true && false karşılaştırmasına bakalım. Burada && operatörü olduğu için false çıktısını alırız çünkü && operatörü ile yapılan karşılaştırmalarda eğer false varsa false değeri döner. Ardından false || true karşılaştırmasını yaparız. || operatörü bulduğu ilk true değerini döndürür. Bu yüzden buradan da true değeri döner. Sonuç olarak konsolda true değerini görürüz.


JavaScript mülakat soruları part-3’ün sonuna geldik. Fark ettiyseniz gittikçe zorlaşıyor ama sorun değil. Adım adım ilerleyip hiçbir noktayı atlamamaya çalışarak JavaScript mülakat sorularına aşina olacağız. Part-4’te görüşmek üzere.

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

  1. Geri bildirim: JavaScript Mülakat Soruları - Temelden İleri Seviyeye - Part 4

  2. Geri bildirim: JavaScript Mülakat Soruları - Temelden İleri Seviyeye : Part 5

  3. Geri bildirim: JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 6

Yorum bırakın

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

Scroll to Top