Mülakat soruları · Kitap 01
Programlamanın Temelleri mülakat soruları
62 sayfadan 243 soru, her birinin kısa bir cevabıyla. Önce kendi cevabınızı söyleyin, sonra soruyu açıp kontrol edin.
s. 1 · 4 soru
Algoritma
1
Algoritma nedir?
Algoritma, bir listeyi sıralamak ya da en kısa yolu bulmak gibi bir sorunu çözmek veya bir işi tamamlamak için izlenen, sonlu ve adım adım yönergeler bütünüdür.
2
Algoritma ile program arasındaki fark nedir?
Algoritma, bir sorunu çözmek için izlenen soyut adım dizisidir. Program ise bu algoritmanın, genellikle başka birçok algoritmayla birlikte, bir bilgisayarın çalıştırabilmesi için belirli bir programlama dilinde yazılmış somut uygulamasıdır.
3
Big O gösterimi nedir?
Big O gösterimi, girdi boyutu büyüdükçe bir algoritmanın çalışma süresinin ya da bellek kullanımının nasıl arttığını anlatır. Örneğin O(n), işin girdiyle doğru orantılı büyüdüğü anlamına gelir; O(1) ise girdi ne kadar büyük olursa olsun işin aynı kaldığını gösterir.
4
Yazılımcı olmak için algoritma bilmem gerekir mi?
Her algoritmayı ezberlemeniz gerekmez; ancak arama ve sıralama gibi yaygın olanları anlamak ve verimliliği değerlendirmeyi bilmek daha hızlı kod yazmanıza yardımcı olur. Algoritma soruları teknik mülakatlarda da sık karşınıza çıkar.
s. 2 · 4 soru
Async/Await
1
Async/await nedir?
Async/await, asenkron kodu sıradan adım adım kod gibi okunur biçimde yazmayı sağlayan, her await'te bir promise ya da görev bitene dek duran sözdizimidir.
2
await ana iş parçacığını (main thread) bloke eder mi?
Hayır.
awaityalnızca içinde bulunduğu async fonksiyonu duraklatır; tarayıcının kullanıcı arayüzü dahil programın geri kalanı çalışmaya devam eder. Fonksiyon, beklenen promise sonuçlandığında kaldığı yerden sürer.3
await'i async fonksiyonun dışında kullanabilir miyim?
Modern JavaScript'te ES modüllerinde doğrudan üst düzey (top-level)
awaitkullanabilirsiniz. Klasik betiklerde ve CommonJS dosyalarındaawaitbirasyncfonksiyonun içinde olmalıdır.4
async/await ile promise'lar arasındaki fark nedir?
Async/await, promise'ların üzerine kurulu bir sözdizimidir; onların yerine geçmez. Aynı promise tabanlı mantığı daha doğrusal ve okunaklı bir biçimde yazmanızı sağlar.
s. 3 · 3 soru
Base64
1
Base64 nedir?
Base64, resim ya da anahtar gibi her tür ikili veriyi yalnızca 64 güvenli metin karakteriyle yazar; böylece veri metin için yapılmış sistemlerden geçebilir.
2
Base64 bir şifreleme mi?
Hayır. Base64 yalnızca byte'ların nasıl yazıldığını değiştirir ve herkes onu bir anahtar olmadan geri çevirebilir. Veriyi gizli tutmak için şifreleyin; Base64 yalnızca sonucu metin olarak taşımanın bir yoludur.
3
Base64 neden bazen = ya da == ile bitiyor?
Base64 üçer byte'lık gruplarla çalışır. Son grupta yalnızca bir ya da iki byte kaldığında, çıktının uzunluğu dördün katı olsun diye sonuna
==ya da=eklenir. JWT'ler gibi bazı biçimler bu dolguyu kullanmaz.
s. 4 · 4 soru
Big O gösterimi
1
Big O gösterimi nedir?
Big O gösterimi, girdi büyüdükçe bir algoritmanın çalışma süresinin ya da bellek kullanımının nasıl arttığını, kesin hız yerine büyüme oranıyla anlatır.
2
O(n) ne anlama gelir?
O(n), yani doğrusal zaman, işin girdi boyutuyla doğru orantılı büyüdüğü anlamına gelir. Bir O(n) fonksiyonu 1.000 öğe için 1 milisaniye sürüyorsa, 10.000 öğe için kabaca 10 milisaniye sürer.
3
Zaman karmaşıklığı ile alan karmaşıklığı arasındaki fark nedir?
Zaman karmaşıklığı, bir algoritmanın attığı adım sayısının girdiyle nasıl büyüdüğünü; alan karmaşıklığı ise ne kadar ek belleğe ihtiyaç duyduğunu anlatır. İkisi de genellikle Big O gösterimiyle ifade edilir ve birini iyileştirmek çoğu zaman diğerinin pahasına olur.
4
O(log n), O(n)'den hızlı mıdır?
Evet, büyük girdilerde. O(log n) iş çok yavaş büyür; girdiyi iki katına çıkarmak yalnızca yaklaşık bir adım ekler, dolayısıyla ikili arama bir milyar sıralı değer arasında bir öğeyi yaklaşık 30 karşılaştırmayla bulabilir.
s. 5 · 4 soru
Bileşim
1
Programlamada bileşim (composition) nedir?
Bileşim, bir nesneyi tuttuğu ve işi devrettiği başka nesnelerden kurar; bir üst sınıftan kalıtım almak yerine “sahiptir” (has-a) ilişkisini modeller.
2
“Kalıtım yerine bileşim” ne anlama gelir?
Bir tasarım kılavuzudur: bir davranışı yeniden kullanmak için, o davranışa sahip bir sınıfı genişletmek yerine onu sağlayan bir nesneyi tutmayı tercih edin. Kalıtım yasak değildir; gerçek “-dir” ilişkileri için saklanır.
3
Bileşim ile kümelenme (aggregation) arasındaki fark nedir?
İkisi de “sahiptir” ilişkisidir. UML'de bileşim, bütünün parçalarına sahip olduğu ve parçaların onunla birlikte yok edildiği anlamına gelir, tıpkı bir ev ve odaları gibi; kümelenme ise bir takım ve oyuncuları gibi parçaların kendi başlarına da var olabildiği anlamına gelir. Günlük kodda bileşim sözcüğü genellikle ikisini de kapsar.
4
Bileşim test yazmayı nasıl kolaylaştırır?
Parçalar genellikle dışarıdan, çoğu zaman yapıcı metot üzerinden gelir; böylece bir test, sınıfın kendisini değiştirmeden, örneğin gerçek veritabanı yerine bellek içi bir veritabanı gibi bir stub ya da fake verebilir.
s. 6 · 4 soru
Callback
1
Callback nedir?
Callback, başka bir fonksiyona argüman olarak verilen ve o fonksiyonun bir iş bittiğinde ya da bir olay gerçekleştiğinde sonradan çağırdığı fonksiyondur.
2
Callback ile promise arasındaki fark nedir?
Callback, iş bittiğinde çağrılsın diye verdiğiniz bir fonksiyondur. Promise ise o işin gelecekteki sonucunu temsil eden bir nesnedir;
.then()ile zincirleyebilir ya daawaitile bekleyebilirsiniz. Promise'lar, iç içe callback'lere göre sıralamayı ve hata yönetimini çok daha basit hâle getirir.3
Callback hell nedir?
Callback hell, birçok asenkron callback'in birbirinin içine yerleştirilerek okunması, hata ayıklaması ve hataların yönetilmesi zor bir piramit biçimi oluşturduğu koddur. Genellikle promise'lara ya da async/await'e geçilerek çözülür.
4
Callback'ler her zaman asenkron mudur?
Hayır.
map,filterveforEachgibi dizi metotlarına verilen callback'ler senkron çalışır, yani çağrı sırasında hemen yürütülür. Yalnızca zamanlayıcılara, olaylara veya girdi/çıktı işlemlerine bağlı callback'ler asenkron çalışır.
s. 7 · 4 soru
Closure
1
Closure nedir?
Closure, oluşturulduğu kapsamdaki değişkenleri hatırlayan bir fonksiyondur; dıştaki fonksiyon sona erdikten sonra bile bu değişkenleri kullanabilir.
2
Closure'lar neden yararlıdır?
Closure'lar, bir fonksiyonun global değişken kullanmadan çağrılar arasında özel durum tutmasını sağlar. Sayaçlar, memoization (sonuçları önbelleğe alma) ve hangi veriye ait olduğunu hatırlayan olay işleyicileri gibi kalıpların temelidir.
3
Closure ile callback arasındaki fark nedir?
Callback, daha sonra çağrılabilsin diye başka bir fonksiyona verdiğiniz fonksiyondur. Closure ise oluşturulduğu yerdeki değişkenleri hatırlayan fonksiyondur; callback çoğu zaman bir closure'dır, ancak terimler farklı şeyleri anlatır.
4
Closure'lar bellek sızıntısına yol açabilir mi?
Hiç kaldırılmayan bir olay dinleyicisi gibi uzun ömürlü bir closure, artık gerekmeyen büyük nesnelere referans tutmaya devam ediyorsa açabilir. Kullanılmayan dinleyicileri kaldırmak ve gereksiz yakalanan verilerden kaçınmak bunu önler.
s. 8 · 3 soru
Constructor
1
Constructor (yapıcı metot) nedir?
Constructor, bir sınıftan yeni bir nesne oluşturulduğunda çalışan ve nesnenin başlangıç değerlerini ayarlayarak onu kullanıma hazırlayan özel bir metottur.
2
Constructor ile metot arasındaki fark nedir?
Metot zaten var olan bir nesne üzerinde, gerektiği kadar çağrılır. Constructor ise nesne oluşturulurken bir kez çalışır ve tek işi onu kurmaktır. Kendine ait bir değer döndürmez, çünkü sonuç yeni nesnenin kendisidir.
3
Constructor private olabilir mi?
Evet; Java, C# ve TypeScript gibi dillerde olabilir. Private bir constructor, başka kodun doğrudan
newçağırmasını engeller. Böylece bir sınıf, çağıranları bir fabrika metoduna yönlendirebilir ya da singleton deseninde olduğu gibi yalnızca tek bir örneğe izin verebilir.