JavaScript साक्षात्कार कैसे पास करें: शीर्ष प्रश्न
JavaScript डेवलपर पद के लिए साक्षात्कार केवल सिंटैक्स की जांच नहीं है, बल्कि भाषा कैसे काम करती है, इसकी गहरी समझ भी है। यह विशेष रूप से Node.js पर लागू होता है, जहां अतुल्यकालिकता (asynchrony) और त्रुटि प्रबंधन (error handling) सबसे आगे आते हैं। इस लेख में, हमने शीर्ष 10 प्रश्नों का विश्लेषण किया है जो अक्सर Junior और Middle डेवलपर्स के लिए साक्षात्कार में पूछे जाते हैं। प्रत्येक प्रश्न के साथ एक कोड उदाहरण और स्पष्टीकरण दिया गया है।
1. क्लोजर (closure) क्या है और इसका उपयोग कहाँ किया जाता है?
क्लोजर एक फंक्शन है जो अपने लेक्सिकल स्कोप (lexical scope) को "याद" रखता है, भले ही बाहरी फंक्शन ने अपना निष्पादन पूरा कर लिया हो। यह JavaScript की प्रमुख अवधारणाओं में से एक है।
उदाहरण:
function createCounter() { let count = 0; return function() { count++; return count; };}
const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2इसका उपयोग कहाँ किया जाता है? मॉड्यूल्स, फंक्शन फैक्ट्रियों, मेमोइज़ेशन (memoization), इवेंट हैंडलर्स और लूप्स में क्लोजर के साथ काम करते समय (उदाहरण के लिए, setTimeout में)।
2. Node.js में Event Loop कैसे काम करता है?
Event Loop एक तंत्र है जो Node.js को सिंगल-थ्रेडेड होने के बावजूद नॉन-ब्लॉकिंग ऑपरेशन करने की अनुमति देता है। इसमें कई चरण होते हैं: timers, poll, check और close callbacks।
माइक्रोटास्क (microtask) के साथ उदाहरण:
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
// आउटपुट: 1, 4, 3, 2ऐसा क्यों? माइक्रोटास्क (Promise) वर्तमान स्टैक के तुरंत बाद और Event Loop के अगले चरण से पहले निष्पादित होते हैं।
3. == और === के बीच अंतर
ऑपरेटर == टाइप कोएरशन (type coercion) के साथ मानों की तुलना करता है, जबकि === बिना कोएरशन के (सख्त समानता) तुलना करता है।
console.log(5 == '5'); // true (स्ट्रिंग का संख्या में रूपांतरण)console.log(5 === '5'); // false (अलग-अलग प्रकार)console.log(null == undefined); // trueconsole.log(null === undefined); // falseसाक्षात्कार में अक्सर पूछा जाता है कि [] == false true क्यों देता है (प्रिमिटिव के साथ अमूर्त तुलना के कारण)।
4. प्रोटोटाइपल इनहेरिटेंस (prototypal inheritance) क्या है?
JavaScript में, ऑब्जेक्ट प्रोटोटाइप चेन के माध्यम से अन्य ऑब्जेक्ट्स से गुण प्राप्त कर सकते हैं। प्रत्येक ऑब्जेक्ट में एक आंतरिक गुण [[Prototype]] होता है, जिसे __proto__ या Object.getPrototypeOf() के माध्यम से एक्सेस किया जा सकता है।
उदाहरण:
const animal = { eats: true };const rabbit = { jumps: true };
rabbit.__proto__ = animal;
console.log(rabbit.eats); // true (विरासत में मिला)console.log(rabbit.jumps); // trueआधुनिक तरीका Object.create() या क्लासेस (प्रोटोटाइप पर सिंटैक्टिक शुगर) का उपयोग करना है।
5. JavaScript में this कैसे काम करता है?
this का मान फंक्शन के कॉल कॉन्टेक्स्ट द्वारा निर्धारित किया जाता है। मुख्य नियम:
- ग्लोबल कॉन्टेक्स्ट में (ब्राउज़र में) —
window, Node.js में —global। - ऑब्जेक्ट की विधि (method) में — स्वयं ऑब्जेक्ट।
- एरो फंक्शन में — लेक्सिकल
this(बाहरी फंक्शन से)। call/apply/bindके माध्यम से कॉल करने पर — स्पष्ट रूप से पास किया गया कॉन्टेक्स्ट।
उदाहरण:
const obj = { name: 'Alice', greet: function() { console.log(this.name); }};
obj.greet(); // Alice
const greet = obj.greet;greet(); // undefined (कॉन्टेक्स्ट का नुकसान)
const boundGreet = obj.greet.bind({ name: 'Bob' });boundGreet(); // Bob