İş Görüşmelerinde En Sık Sorulan Node.js Mülakat Soruları ve Cevapları

Anasayfa Kurumsal Blog İş Görüşmelerinde En Sık Sorulan Node.js Mülakat Soruları ve Cevapları

En sık sorulan Node.js mülakat soruları ve cevapları neler?

Web geliştirme ve bunu çevreleyen konularla ilgilendiyseniz, büyük olasılıkla Node JS’nin JavaScript ve back-end geliştirme konusunun sık sık dile getirildiğini duymuşsunuzdur.

Joyent tarafından 2009 yılında geliştirilmeye başlanmış olan Node.js, JavaScript ile sunucu taraflı projeler geliştirebileceğiniz JavaScript Runtime platformudur. Günümüzde çoğu uygulama, çeşitli servislere istek yapıp gelen sonuçları beklemekle zaman kaybı yaşatırken Node.js asenkron olarak çalışmaktadır.

Node.js’i neden öğrenmek istediğinizi ve ne tür projeler yapmak istediğinizi de düşünmeniz gerekir. Sizi neyin motive ettiğini bulmak, bir sonraki hedefiniz için sizi sıkılmadan hedefinize götürecek bir yol belirlemenize yardımcı olacaktır.

“Node.js öğrenirken nasıl yol izlemeliyim?” sorusuna yanıt arıyorsanız, sizin için hazırladığımız “Node.js Temel Kaynaklar” blog yazısına göz atarak Node.js öğrenebileceğiniz en doğru kaynaklara erişebilirsiniz.

Node.js mülakatına girmeden önce karşılaşabileceğiniz en kritik sorulara göz atın????

En Popüler Node.js Mülakat Soruları ve Cevapları
???? Node.js nedir? Ne için kullanılır?
Joyent tarafından 2009 yılında geliştirilmeye başlanan Node.js, Chrome’un V8 motorunun üzerine oluşturulmuş run-time JavaScript ortamıdır.

Node.js, açık kaynaklı JavaScript motoru olan V8 üzerinde çalışır. V8 engine, JavaScript kodunu makine koduna çevirme özelliği sayesinde geliştirilen projelerin performansının artmasını sağlıyor.

Node.js, I/O ve network işlemlerini non-blocking(asenkron) olarak çalıştırdığı için zaman kullanımı konusunda çok başarılıdır.

Modüler yapısı sayesinde geliştiriciler tarafından hazırlanmış modülleri projenize kolaylıkla dahil edebilmenizi sağlar.
JavaScript ile server side uygulamalar yazabilmenin yanı sıra, real-time web uygulamaları için performans öncelikli şekilde hazılanabilmektedir.

????Event-driven programlama nedir?
Yazılım sektöründe Event Based ve Thread Based olmak üzere iki kavram mevcuttur.

Event Based: Olay tabanlı programlamaya verilen isimdir.
Event based programlamada, yazılımın akışını olaylar belirlemektedir. Önceden tanımlanmış eventler üzerinden herhangi birinin gerçekleşme veya tetiklenme durumu olursa sadece ilgili olaydaki kodlar çalıştırılır. Olayların birbirlerini ilgilendirmemesi VE bloklamaması non bloking olarak nitelendirilir.

Thread Based: Senkron bir şekilde işlevsellik gösteren programlama çeşididir.

Node.js’in kendisine gelen tüm requestleri birbirinden bağımsız bir şekilde devreye alan bir sistemi vardır. Bu sisteme asenkron çalışma denilir, bu noktada Node.js’in event based yapıda bir yaklaşım olduğunu söyleyebiliriz.


????JavaScript motorunun iç yapısı nasıldır?
JavaScript, genel olarak JavaScript motorunun kendisi ve motorun içinde bulunduğu ortam olmak üzere 2 parçadır.

Javascript motorunun içinde şunlar bulunur:

Memory Heap
Call Stack
Event Loop
Callback Queue
Browser, NodeJS, React Native veya Electron olabilen Host ortamı içinde JavaScript motoruna yardımcı fonksiyonlar yer alır:

DOM fonksiyonları
AJAX fonksiyonları
setTimeout vb fonksiyonlar
Memory Heap
Memory heap, tanımlanan veya new ile yaratılan nesnelerin/verilerin saklandığı memory alanıdır.

Call Stack
Call Stack, fonksiyon çağrılarını yönetmek için kullanılan data yapısıdır. LIFO, en son eklenen metod bilgisi ilk önce çıkartılır yapısındadır.

JavaScript single-thread bir yapıdadır, metod çağrılarını sakladığı data yapısı call stack ise sadece bir tanedir. Call Stack içinde eklenen her data ise stack frame olarak adlandırılır.

Event Loop ve Concurrency
Event loop JavaScript kütüphanelerinin kalbidir ve callback, fonksiyon çağrıları, call stack yapılarının arasındaki senkronizasyonu yapar. Temel işi sonsuz döngü şeklinde sürekli olarak callback queue içine aktarılan fonksiyonları uygun zaman geldiğinde call stack içine alarak çalıştırmaktır.

C/C++/Java gibi birden fazla thread açabilmeyi destekleyen ortamlarda yaşanan concurrency sorunu JavaScript tarafında yoktur.

Asenkron Mantığı
Senkron programlama programımızı çok yavaşlatabilir hatta işlem bitene kadar durdurabilir. Bu durumlar için asenkron fonksiyonlar kullanılmalıdır. Kod akışının sırayla işlemediği, işlemlerin birbirini beklemediği, kod akışının işlem durumlarına göre devam ettiği programlamaya asenkron programlama denir.

????Node.js’de REPL nedir?
REPL, Oku-Değerlendir-Yazdır-Döngüsü anlamına gelir. Node.js ile birlikte gelen sanal bir ortamdır. JavaScript kodunuzu Node.js REPL ortamında hızlı bir şekilde test edebilirsiniz.

Read– Kullanıcının girdisini okur, girdiyi JavaScript veri yapısına ayrıştırır ve bellekte depolar.
Eval– Veri yapısını alır ve değerlendirir.
Print– Sonucu yazdırır.
Loop– Kullanıcı ctrl-c tuşlarına iki kez basana kadar yukarıdaki komutu döngüye alır.

????Node.js modül formatları nelerdir?
Programlamada modüller, projeler arasında paylaşılabilen ve yeniden kullanılabilen bağımsız işlevsellik birimleridir. Kendimiz yazmak zorunda olmadığımız işlevselliklerle uygulamalarımızı geliştirmek için kullanabildiğimiz için geliştiriciler olarak hayatımızı kolaylaştırırlar.

JavaScript’in başlangıçta modül kavramına sahip olmaması nedeniyle, zaman içinde çeşitli rekabet biçimleri ortaya çıkmıştır. İşte dikkat etmeniz gereken başlıca şeylerin bir listesi:

Asenkron Modülü Tanımı (AMD), tarayıcılarında kullanılan ve bir kullanır define modülü tanımlamak için bir işlevdir.
CommonJS (CJS) biçiminde kullanılan
require
ve
module.exports
bağımlılıkları ve modüller tanımlamak için kullanılır. Npm ekosistemi bu format üzerine kurulmuştur.
ES Modülü (ESM) biçimi. ES6 (ES2015) itibarıyla JavaScript, yerel bir modül biçimini desteklemektedir.
System.register biçimi ES5 içinde ES6 modüllerini desteklemek üzere tasarlanmıştır.
Evrensel Modülü Tanımı (UMD) formatı, bir modülün birkaç farklı modül yükleyici tarafından içe aktarılması gerektiğinde kullanışlıdır.
????npm nedir?
Npm, 3. parti yazılımları yüklemeyi sağlayan bir araçtır. Npm ile işlem yapmak istediğimiz modülleri yükleyebilir, silebilir, güncelleyebilir ve listeleyebilirsiniz.
Npm’i kullanabilmemiz için NodeJS’in kurulu olması yeterlidir.

????Node.js’de hata ayıklama nasıl yapılır?
Node.js debugger adında bir hata ayıklama aracı içerir. Etkinleştirmek için, Node.js’i değişkenle ve ardından hata ayıklanacak komut dosyasına giden yolla başlatabilirsiniz.
debugger, bir komut dosyasının kaynak koduna eklemeyi ve koddaki o konumda bir kesme noktasını etkinleştirir.

 

????package.json nedir?
Package.json : Proje hakkında bilgileri içeren bir dosyadır.

Package.json dosyasını oluşturmak için ‘npm init’ yapmanız gerekli.
Gelen soruları tek tek cevaplayabilir ya da enter yapıp daha sonra dosyayı açarak yazabilirsiniz.
npm init -y komutu ile tüm sorular otomatik olarak geçecektir. Daha sonra dosyadan değişiklik yapabilirsiniz.. Sonunda bir JSON dosyasına sahip olacaksınız.

????Streams nedir?
Akışlar, bir kaynaktan verileri kolayca okumanıza ve bir hedefe yönlendirmenize olanak tanıyan kanallardır.
Uygulanan yöntemlere bağlı olarak, akışlar okunabilir, yazılabilir veya çift yönlü (hem okunabilir hem de yazılabilir) çalışabilir.

Örneğin, bir dosyadan veri okumak istiyorsak, bunu bir akıştan yapmanın en iyi yolu, veri olayını dinlemek ve bir geri arama eklemektir. Bir veri yığını mevcut olduğunda, okunabilir akış bir veri olayı yayar ve geri aramanız yürütülür. Yandaki örneğe göz atabilirsiniz.


????setImmediate() ve setTimeout() arasındaki fark nedir?
İkisi de oldukça benzerdir, ancak ne zaman arandıklarına bağlı olarak farklı şekillerde davranırlar.

setImmediate(): Mevcut olay döngüsü aşaması tamamlandığında bir komut dosyası yürütmek için tasarlanmıştır.

setTimeout(): ms cinsinden minimum eşik geçtikten sonra çalıştırılacak bir komut dosyasını planlar.

Zamanlayıcıların çalıştırılma sırası, çağrıldıkları bağlama göre değişecektir. Her ikisi de ana modül içinden çağrılırsa, zamanlama işlemin performansına bağlı olacaktır.

????Overloading ve override nedir?
Overloading: Aynı isime sahip birden fazla metod kullanma durumuna overloading denir. Bu durumda, metotları birbirinden ayıran fark, aldıkları parametre olur. Bir metodu overloading yaparken aynı işlemi veya benzer işlemleri de gerçekleştirecek şekilde overloading yapmalısınız.

Override: Bir metodun tekrardan yazılması anlamına gelir. Kalıtım ile aldığımız bir metodu değiştirmek istersek o zaman override etmemiz yani yeniden yazmamız gerekir.

java
????Node.js’de zamanlayıcıların kullanımı nasıldır?
Node.js’deki zamanlayıcılar modülü, belirli bir süre sonra kodu çalıştıran işlevler içerir. require() sayesinde, tarayıcı JavaScript API’sini taklit etmek için tüm yöntemler küresel olarak mevcut olduğundan, zamanlayıcıların içe aktarılmasına gerek yoktur.

Node.js API, şimdiki andan sonraki bir noktada kodun yürütülmesi için çeşitli planlama yöntemleri sağlar. Aşağıdaki işlevler çoğu tarayıcıda mevcut olduklarından tanıdık gelebilir, ancak Node.js aslında bu yöntemlerin kendi uygulamasını sağlar.

Node.js Zamanlayıcıları setTimeout(), setImmediate() ve setInterval olarak sıralayabiliriz.

????Node.js’de DNS modülünün kullanımı nasıldır?
DNS, sistemin ad çözümlemesini ve DNS arama olanaklarını sağlayan modüldür. DNS modülü, eşzamansız bir ağ sarmalayıcısından oluşur.

DNS modülünde en sık kullanılan işlevler şunlardır:

dns.lookup(adress, options, callback)
– dns arama yöntemi, herhangi bir web sitesi adresini ilk parametresi olarak alır ve karşılık gelen ilk IPV4 veya IPV6 kaydını döndürür. Options parametresi bir tam sayı veya nesne olabilir. Hiçbir seçenek sağlanmadıysa, hem IPV4 hem de IPV6 geçerli girişlerdir. Üçüncü parametre, geri arama işlevleridir.
dns.lookupservice(address, port, callback)
– Bu işlev, “www.knowledgehills.com” gibi herhangi bir fiziksel adresi kayıt türleri dizisine dönüştürür. Kayıt türleri ikinci parametre “rrbyte” ile belirtilir. Son olarak üçüncü yöntem geri arama işlevidir.
dns.getServers()
– Bu işlev, şu anda DNS çözümlemesi için yapılandırılmış, rfc5952’ye göre biçimlendirilmiş bir dizi IP adresi dizesi döndürür. Bir dize, özel bir bağlantı noktası kullanılıyorsa bir bağlantı noktası bölümü içeriir.
dns.setServers()
– Bu işlev, DNS çözümlemesi yapılırken kullanılacak IP adresini ve sunucu bağlantı noktasını ayarlar.
dns.setServers()
DNS sorgusu sürerken yöntemidir.
????”Array ve ArrayList” arasındaki fark nedir?
Diziler, bellek üzerinde aynı tipte veri tutabilmemizi sağlar.
ArrayList ise dizilerin eksik yanlarını gidermek için oluşturulmuştur.
ArrayList’in en önemli özelliği, içerisinde farklı değişken türlerini barındırıyor olmasıdır.

Diziler sabit uzunlukta tanımlanırlar. ArrayList’te ise böyle bir koşul yoktur.

Diziler tanımlanırken içerisine dahil edeceğimiz elemanların türünü belirtmemiz gerekir. ArrayList’te böyle bir koşul yoktur.

WhatsApp