yoklateknik mülakat

Backend Nodejs Modules Streams Mülakat Soruları

75 doğrulanmış Backend Nodejs Modules Streams mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Nodejs Modules StreamsZorluk 1
// math.js
module.exports = function add(a, b) {
  return a + b;
};

// main.js
const add = require('./math');
console.log(add(2, 3));

main.js çalıştığında ne yazdırılır?
  • a5
  • b23
  • cundefined
  • dTypeError: add is not a function
Açıklama:module.exports, add fonksiyonunun kendisine eşitlenmiştir; bu yüzden require('./math') doğrudan bu fonksiyonu döndürür. add(2, 3) çağrısı 2 + 3 işlemini yapar ve sonuç 5 olur.
Nodejs Modules StreamsZorluk 2
// counter.js
let count = 0;
module.exports = {
  increment() {
    count++;
    return count;
  }
};

// main.js
const counterA = require('./counter');
const counterB = require('./counter');
console.log(counterA.increment());
console.log(counterB.increment());

Bu kod ne yazdırır?
  • a1, sonra 1
  • b0, sonra 1
  • cundefined, sonra undefined
  • d1, sonra 2
Açıklama:Node modülleri, çözümlenmiş dosya yoluna göre önbelleğe alır; bu yüzden counterA ve counterB, require('./counter')'ın döndürdüğü aynı nesneye işaret eder. Paylaşılan count değişkeni çağrılar arasında kalıcıdır, bu yüzden ilk increment() çağrısı 1, ikincisi 2 döner.
Nodejs Modules StreamsZorluk 2
const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('greet', () => console.log('A'));
emitter.emit('greet');
console.log('B');

Sırasıyla ne yazdırılır?
  • aB, sonra A
  • bA, sonra B
  • cSadece B
  • dSadece A
Açıklama:emit(), kayıtlı tüm listener'ları geri dönmeden önce senkron olarak çağırır. Bu yüzden 'A' yazan listener çalışıp biter, ardından emit() bir sonraki satıra döner ve 'B' yazdırılır.
Nodejs Modules StreamsZorluk 2
const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('tick', () => console.log('first'));
emitter.on('tick', () => console.log('second'));
emitter.emit('tick');

Ne yazdırılır?
  • asecond, sonra first
  • bsadece second, çünkü son eklenen listener öncekilerin yerini alır
  • cfirst, sonra second
  • dsıra garanti değildir ve her çalıştırmada değişebilir
Açıklama:EventEmitter, aynı event için listener'ları .on() ile kaydedildikleri sırayla çağırır. İkinci bir listener eklemek birincinin yerini almaz.
Nodejs Modules StreamsZorluk 2
Node.js stream'lerinde, bir Readable stream'e 'data' event listener'ı eklendiği anda ne olur?
  • aStream flowing mode'a geçer ve chunk'ları otomatik olarak yaymaya başlar.
  • bStream, .resume() açıkça çağrılana kadar kalıcı olarak duraklar.
  • c.pipe() de çağrılmadıkça hiçbir şey değişmez.
  • dStream, herhangi bir veri yaymadan önce kaynağın tamamını belleğe okur.
Açıklama:'data' listener'ı eklemek, bir Readable stream'i flowing mode'a geçirmenin yollarından biridir; bu modda chunk'lar .read() manuel çağrılmadan, hazır oldukları anda listener'lara iletilir.
Nodejs Modules StreamsZorluk 1
const { Writable } = require('stream');

const writable = new Writable({
  write(chunk, encoding, callback) {
    console.log(chunk.toString());
    callback();
  }
});

writable.write('hello');
writable.end();

Ne yazdırılır?
  • aundefined
  • b[object Object]
  • chello
  • dHiçbir şey — write() bir string değil, Buffer gerektirir
Açıklama:Özel write() implementasyonu, chunk'ı .toString() ile string'e çevirip yazdırır. Writable stream'ler varsayılan olarak string chunk'ları kabul eder ve içeride Buffer'a çevirir, bu yüzden 'hello' yazdırılır.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla