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?

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?

  • 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 requireve module.exportsbağı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?

👉Node.js’de hata ayıklama nasıl yapılır?

 

👉package.json nedir?

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

👉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’de DNS modülünün kullanımı nasıldır?

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