
Node.Js Mülakat Soruları
Node.js, JavaScript'in sunucu tarafında çalışmasına olanak tanıyan, hızlı ve ölçeklenebilir uygulamalar geliştirmek için kullanılan açık kaynaklı bir çalışma ortamıdır. Mülakatlarda, Node.js'in temel kavramları, mimarisi ve uygulama geliştirme süreçleri hakkında sorularla karşılaşabilirsiniz.
1. Node.js Nedir ve Neden Kullanılır?
Node.js nedir ve hangi durumlarda tercih edilir?
Node.js, Chrome'un V8 JavaScript motoru üzerine inşa edilmiş, olay güdümlü, asenkron ve non-blocking I/O modelini kullanan bir çalışma ortamıdır. Sunucu tarafında JavaScript kullanarak hızlı ve ölçeklenebilir ağ uygulamaları geliştirmeyi sağlar. Özellikle aşağıdaki durumlarda tercih edilir:
- Gerçek Zamanlı Uygulamalar: Sohbet uygulamaları, canlı bildirim sistemleri gibi.
- API Hizmetleri: RESTful ve GraphQL API'leri oluşturmak için idealdir.
- Tek Sayfa Uygulamaları (SPA): Dinamik ve hızlı yüklenen web uygulamaları geliştirmek için kullanılır.
İpucu: Node.js'in non-blocking yapısı, yüksek trafikli uygulamalarda performans avantajı sağlar. Ancak, CPU yoğun işlemlerde dikkatli kullanılmalıdır.
2. Node.js'in Tek İş Parçacıklı (Single-Threaded) Yapısı ve Eşzamanlılık
Node.js tek iş parçacıklı bir yapıya sahipken, eşzamanlı işlemleri nasıl yönetir?
Node.js, tek bir iş parçacığı kullanarak çalışır, ancak asenkron ve non-blocking I/O işlemleri sayesinde eşzamanlılığı etkin bir şekilde yönetir. Bu yapı, olay döngüsü (event loop) ve iş parçacığı havuzu (thread pool) ile desteklenir. I/O işlemleri, dosya okuma/yazma, ağ istekleri gibi zaman alıcı işlemler iş parçacığı havuzuna devredilirken, ana iş parçacığı diğer işlemleri engellemeden çalışmaya devam eder.
İpucu: Node.js'in bu yapısı, yüksek performanslı ve ölçeklenebilir uygulamalar geliştirmeye olanak tanır. Ancak, CPU yoğun işlemler için iş parçacığı havuzunun etkin kullanımı önemlidir.
3. Event Loop (Olay Döngüsü) Nedir?
Node.js'te event loop nedir ve nasıl çalışır?
Event loop, Node.js'in asenkron işlemleri yönetmesini sağlayan mekanizmadır. Gelen tüm olayları ve işlemleri sıraya alarak, non-blocking bir şekilde çalıştırır. Bu sayede, I/O işlemleri beklerken ana iş parçacığı diğer görevleri yerine getirebilir.
Kod Örneği:
console.log('Başlangıç');
setTimeout(() => {
console.log('Zaman aşımı');
}, 0);console.log('Bitiş');
Çıktı:
Başlangıç
Bitiş
Zaman aşımı
İpucu: Yukarıdaki örnekte, setTimeout fonksiyonu sıfır milisaniye gecikmeyle çağrılsa da, event loop nedeniyle en son çalıştırılır. Bu, Node.js'in asenkron yapısını anlamak için önemli bir örnektir.
4. Non-Blocking I/O ve Blocking I/O Arasındaki Fark
Non-blocking I/O ve blocking I/O arasındaki fark nedir?
- Blocking I/O: İşlem tamamlanana kadar diğer işlemler bekletilir. Bu, senkron bir yaklaşımdır.
- Non-Blocking I/O: İşlem başlatılır ve tamamlanması beklenmeden diğer işlemlere devam edilir. İşlem tamamlandığında bir geri çağırma (callback) fonksiyonu tetiklenir. Bu, asenkron bir yaklaşımdır.
Kod Örneği:
- Blocking I/O:
const fs = require('fs');
const data = fs.readFileSync('/dosya/yolu.txt', 'utf8');
console.log(data);
console.log('Dosya okuma tamamlandı.');
- Non-Blocking I/O:
const fs = require('fs');
fs.readFile('/dosya/yolu.txt', 'utf8', (err, data) => {if (err) throw err;
console.log(data);
});console.log('Dosya okuma başlatıldı.');
İpucu: Non-blocking I/O kullanarak, yüksek performanslı ve ölçeklenebilir uygulamalar geliştirebilirsiniz. Ancak, hata yönetimi ve geri çağırma fonksiyonlarının doğru kullanımı önemlidir.
5. Callback, Promise ve Async/Await Kavramları
Node.js'te callback, promise ve async/await kavramlarını açıklayınız.
- Callback: Asenkron işlemlerin tamamlanmasının ardından çağrılan fonksiyonlardır. Ancak, iç içe geçmiş callback'ler "callback hell" olarak adlandırılan okunması zor kod yapısına neden olabilir.
- Promise: Asenkron işlemlerin sonucunu temsil eden bir nesnedir. then ve catch metodlarıyla zincirleme işlemler yapılabilir.
- Async/Await: Promise tabanlı asenkron işlemleri daha okunabilir ve senkron görünümlü bir şekilde yazmamızı sağlar.
Kod Örneği:
- Callback:
function islem(callback) {
setTimeout(() => {
console.log('İşlem tamamlandı.');
callback();
}, 1000);
}islem(() => {
console.log('Diğer işlemler.');
});
- Promise:
function islem() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('İşlem tamamlandı.');
resolve();
}, 1000);
});
}islem().then(() => {
console.log('Diğer işlemler.');
});
- Async/Await:
function islem() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('İşlem tamamlandı.');
resolve();
}, 1000);
});
}
async function calistir() {
await islem();
console.log('Diğer
::contentReference[oaicite:0]{index=0}işlemler.'); }
calistir();
İpucu: Async/await yapısı, özellikle karmaşık işlemlerde kod okunabilirliğini ciddi şekilde artırır. Ancak, try/catch blokları ile hata yönetimi mutlaka sağlanmalıdır.
6. Express.js Nedir? Node.js ile Farkı Nedir?
Express.js nedir? Node.js’ten farkı nedir?
Express.js, Node.js üzerine kurulmuş minimalist bir web framework’tür. Node.js’in HTTP modülünü daha kullanıcı dostu bir hale getirir. Özellikle route işlemleri, middleware yönetimi ve RESTful API geliştirmede büyük kolaylık sağlar.
Kod Örneği – Basit Express Sunucusu:
const express = require('express');
const app = express();app.get('/', (req, res) => {
res.send('Merhaba Dünya!');
});app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
İpucu: Express.js, backend projelerde temel yapı taşlarından biridir. Middleware'leri doğru kullanmak performans ve güvenlik için kritik öneme sahiptir.
7. Middleware Nedir ve Nasıl Kullanılır?
Middleware nedir? Express.js'te nasıl kullanılır?
Middleware, gelen istek ile yanıt arasındaki aşamalarda çalışan fonksiyonlardır. Örneğin kullanıcı doğrulama, loglama, hata yakalama işlemleri middleware’ler ile yapılır.
Kod Örneği – Basit Loglama Middleware’i:
app.use((req, res, next) => {
console.log(`İstek zamanı: ${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
});
İpucu: app.use() fonksiyonu ile tüm route’larda çalışan global middleware tanımlanabilir. Hata yönetimi için özel error-handling middleware'leri de tanımlanmalıdır.
8. Veritabanı Entegrasyonu – MongoDB Örneği
Node.js ile MongoDB bağlantısı nasıl yapılır?
MongoDB için genellikle mongoose ODM (Object Data Modeling) kütüphanesi kullanılır. Bu, veri modeli oluşturmayı ve CRUD işlemlerini oldukça kolaylaştırır.
Kod Örneği – MongoDB Bağlantısı:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/deneme', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const KullaniciSchema = new mongoose.Schema({
ad: String,
email: String
});const Kullanici = mongoose.model('Kullanici', KullaniciSchema);
const yeniKullanici = new Kullanici({ ad: 'Ali', email: 'ali@example.com' });
yeniKullanici.save();
İpucu: Üretim ortamlarında bağlantı hatalarını yakalamak için .catch() veya try/catch blokları kullanılmalıdır.
9. Microservices (Mikroservis) Mimarisi ve Node.js
Node.js ile mikroservis mimarisi nasıl kurulur?
Mikroservis mimarisi, uygulamanın küçük ve bağımsız servisler halinde geliştirilmesini sağlar. Her servis farklı bir Node.js uygulaması olabilir.
Temel Bileşenler:
- REST/gRPC API’ler
- Message Queue (Kafka, RabbitMQ)
- Docker ve Kubernetes ile container yönetimi
- API Gateway (Kong, Express Gateway)
İpucu: Her mikroservis kendi veritabanına sahip olmalı ve loosely coupled olmalıdır. Node.js, hafif yapısı ile mikroservis mimarileri için idealdir.
10. Node.js Performans Optimizasyonu
Node.js performansı nasıl artırılır?
- Caching: Redis gibi bellek içi önbellek sistemleri kullanılabilir.
- Cluster Modülü: Çok çekirdekli işlemcilerde paralel işlem yapılmasını sağlar.
- Asenkron Programlama: Bloklamayan yapıların tercih edilmesi.
- Yavaş sorguların tespiti ve optimizasyonu.
Kod Örneği – Cluster:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('Merhaba Dünya!');
}).listen(8000);
}
İpucu: PM2 gibi process manager’lar, Node.js uygulamalarını production ortamlarında yönetmek için kullanılır. Otomatik yeniden başlatma, loglama ve yük dengeleme gibi faydalar sağlar.
11. Node.js’te Hata Yönetimi
Node.js'te hata yönetimi nasıl yapılır?
- Sync işlemlerde: try/catch
- Async işlemlerde: try/catch + async/await veya .catch()
- Global hatalar için: process.on('uncaughtException'), process.on('unhandledRejection')
Kod Örneği – Express Error Middleware:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Bir şeyler yanlış gitti!');
});
Node.js mülakatlarında başarılı olmanın yolu, teknik bilgiye hakimiyet kadar, gerçek dünya problemlerine çözüm üretebilme yeteneğine de bağlıdır. Bu yazıda; node.js mülakat soruları, node.js express mülakat soruları, node.js event loop mülakat soruları, node.js database integration mülakat soruları, node.js microservices mülakat soruları gibi birçok alt başlıkta kapsamlı bilgi sunuldu.
Techcareer.net’in Node.js geliştirici mülakat rehberleri, örnek soruları ve canlı eğitimleri ile teknik becerilerini geliştirebilir, gerçek projelerle kendini test edebilirsin.
Ayrıca, Slack topluluğumuza katılarak deneyimli Node.js geliştiricileriyle ağ kurabilir, yeni iş fırsatlarına daha hızlı ulaşabilirsin!
Hemen Techcareer.net platformuna kayıt ol ve kariyer yolculuğunda bir adım öne geç!
Ücretsiz eğitimlerimiz seni bekliyor.
Her biri alanında uzman eğitmenler tarafından hazırlanmış eğitimlerimizden sana uygun olanı keşfedip, hemen eğitime başlayabilirsin. Süre kısıtlaması olmayan eğitimlerimizi, hiç bir ücret ödemeden hemen keşfetmeye başla.



