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 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

ve

- 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.
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.



– 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.

– 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.

– 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çerir.

– Bu işlev, DNS çözümlemesi yapılırken kullanılacak IP adresini ve sunucu bağlantı noktasını ayarlar.

DNS sorgusu sürerken yöntemidir.
Hemen ücretsiz üye ol, Node.js pozisyonları için şirketlerden teklif almaya başla.
Kriterlerine uygun pozisyonlarla eşleşmeye hazır misin? Hemen ücretsiz profilini oluştur.