जावास्क्रिप्ट साक्षात्कार कैसे पास करें: शीर्ष प्रश्न
जावास्क्रिप्ट डेवलपर (विशेष रूप से Node.js पर ध्यान केंद्रित) के पद के लिए साक्षात्कार केवल सिंटैक्स की जाँच नहीं है। नियोक्ता एसिंक्रोनसिटी, स्कोप और Event Loop के काम करने की गहरी समझ देखना चाहते हैं। इस लेख में, हमने उन शीर्ष प्रश्नों को एकत्र किया है जो वास्तव में साक्षात्कारों में पूछे जाते हैं, कोड उदाहरणों और स्पष्टीकरणों के साथ।
1. क्लोजर (Closures) — कार्यात्मक JS का आधार
प्रश्न: "क्लोजर क्या है और यह Node.js में कैसे काम करता है?"
क्लोजर एक फ़ंक्शन है जो अपने लेक्सिकल एनवायरनमेंट को "याद" रखता है, भले ही बाहरी फ़ंक्शन ने अपना निष्पादन पूरा कर लिया हो। यह जावास्क्रिप्ट में डेटा एनकैप्सुलेशन के लिए एक महत्वपूर्ण तंत्र है।
function createCounter() { let count = 0; return function() { count++; return count; };}
const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2यह क्यों पूछा जाता है: क्लोजर Node.js में मॉड्यूल, फ़ंक्शन फ़ैक्टरी और इवेंट हैंडलर के आधार पर हैं। क्लोजर की समझ के बिना एसिंक्रोनस कॉलबैक के साथ काम करना असंभव है।
2. Event Loop और एसिंक्रोनसिटी (Async/Await, Promises)
प्रश्न: "समझाइए कि Event Loop कैसे काम करता है। यह कोड क्या आउटपुट देगा?"
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');उत्तर: 1, 4, 3, 2। पहले सिंक्रोनस कोड, फिर माइक्रोटास्क (Promise.then), फिर मैक्रोटास्क (setTimeout)।
Event Loop एक तंत्र है जो Node.js को सिंगल-थ्रेडेड होने के बावजूद नॉन-ब्लॉकिंग ऑपरेशन करने की अनुमति देता है। इसमें कई चरण होते हैं:
- टाइमर — setTimeout/setInterval कॉलबैक निष्पादित करते हैं
- I/O कॉलबैक — पूर्ण इनपुट-आउटपुट संचालन का प्रसंस्करण
- Poll (पोल) — नई I/O घटनाएँ प्राप्त करना
- Check — setImmediate() का निष्पादन
- Close callbacks — कनेक्शन बंद करना
सुझाव: साक्षात्कार में process.nextTick() और setImmediate() के बीच अंतर की समझ दिखाएँ। nextTick Event Loop के अगले चरण से पहले निष्पादित होता है, जबकि setImmediate Check चरण में निष्पादित होता है।
3. कॉल कॉन्टेक्स्ट (this) और एरो फ़ंक्शन
प्रश्न: "विभिन्न स्थितियों में this किसके बराबर होता है? कॉन्टेक्स्ट कैसे बदलें?"
this का मान इस बात से निर्धारित होता है कि फ़ंक्शन को कैसे कॉल किया गया है, न कि इसे कहाँ घोषित किया गया है। Node.js (सख्त मोड) में एक सामान्य फ़ंक्शन में this undefined होगा, जबकि ब्राउज़र में यह window होगा।
const obj = { name: 'Node.js', regularFunc: function() { console.log(this.name); }, arrowFunc: () => { console.log(this.name); }};
obj.regularFunc(); // 'Node.js'obj.arrowFunc(); // undefined (this बाहरी कॉन्टेक्स्ट से लिया गया है)कॉन्टेक्स्ट कैसे प्रबंधित करें:
call(thisArg, arg1, arg2)— निर्दिष्ट this और तर्कों के साथ फ़ंक्शन को कॉल करता हैapply(thisArg, [args])— समान, लेकिन तर्क एक सरणी के रूप में पास किए जाते हैंbind(thisArg)— बाउंड this के साथ एक नया फ़ंक्शन बनाता है- एरो फ़ंक्शन — उनका अपना this नहीं होता, वे लेक्सिकल कॉन्टेक्स्ट का उपयोग करते हैं
4. प्रोटोटाइप और इनहेरिटेंस (Prototype Chain)
प्रश्न: "जावास्क्रिप्ट में प्रोटोटाइपल इनहेरिटेंस कैसे काम करता है? क्लासेस से क्या अंतर है?"
जावास्क्रिप्ट प्रोटोटाइपल इनहेरिटेंस का उपयोग करता है: प्रत्येक ऑब्जेक्ट में एक आंतरिक संदर्भ [[Prototype]] होता है (जो __proto__ या Object.getPrototypeOf() के माध्यम से सुलभ है)।
function Animal(name) { this.name = name;}
Animal