जावास्क्रिप्ट साक्षात्कार कैसे पास करें: शीर्ष प्रश्न A से Z तक
\n\nजावास्क्रिप्ट डेवलपर पद के लिए साक्षात्कार केवल सिंटैक्स की जाँच नहीं है। नियोक्ता भाषा की गहरी समझ, इसकी विशेषताओं और एसिंक्रोनसिटी के साथ काम करने की क्षमता देखना चाहते हैं। इस लेख में, हम प्रमुख विषयों पर चर्चा करेंगे जो आपको आत्मविश्वास से साक्षात्कार पास करने में मदद करेंगे। हम वास्तविक कोड उदाहरणों के साथ बुनियादी अवधारणाओं से लेकर Node.js के उन्नत विषयों तक के प्रश्नों को कवर करेंगे।
\n\n1. मूल बातें: डेटा प्रकार, hoisting और स्कोप
\n\nआइए मूल बातों से शुरू करें। जावास्क्रिप्ट एक डायनामिक टाइपिंग वाली भाषा है। var, let और const को समझना अनिवार्य न्यूनतम आवश्यकता है।
प्रश्न: var, let और const में क्या अंतर है?
- \n
varका फंक्शन-लेवल स्कोप होता है और यहundefinedमान के साथ होइस्ट (hoisting) होता है। \n letऔरconstका ब्लॉक-लेवल स्कोप होता है और ये घोषणा से पहले इनिशियलाइज़ नहीं होते (Temporal Dead Zone)। \n constपुनः असाइनमेंट को प्रतिबंधित करता है, लेकिन ऑब्जेक्ट को अपरिवर्तनीय नहीं बनाता। \n
Hoisting का उदाहरण:
\nconsole.log(a); // undefined (hoisting)\nvar a = 5;\n\nconsole.log(b); // ReferenceError: Cannot access 'b' before initialization\nlet b = 10;\n\nप्रश्न: 'होइस्टिंग' (hoisting) क्या है?
\nयह एक तंत्र है जिसमें वेरिएबल और फंक्शन की घोषणाएं कोड निष्पादित होने से पहले अपने स्कोप की शुरुआत में स्थानांतरित हो जाती हैं। function के माध्यम से घोषित फंक्शन पूरी तरह से होइस्ट होते हैं, जबकि वेरिएबल केवल घोषणा होइस्ट होती है, इनिशियलाइज़ेशन नहीं।
2. क्लोजर और कॉन्टेक्स्ट (this)
\n\nक्लोजर जावास्क्रिप्ट की सबसे मजबूत विशेषताओं में से एक हैं। वे फंक्शन को उस लेक्सिकल एनवायरनमेंट को याद रखने की अनुमति देते हैं जिसमें वे बनाए गए थे।
\n\nप्रश्न: क्लोजर क्या है? एक उदाहरण दें।
\nक्लोजर एक फंक्शन और उसके लेक्सिकल एनवायरनमेंट का संयोजन है। दूसरे शब्दों में, आंतरिक फंक्शन के पास बाहरी फंक्शन के वेरिएबल्स तक पहुंच होती है, भले ही बाहरी फंक्शन ने अपना काम पूरा कर लिया हो।
\n\nfunction createCounter() {\n let count = 0;\n return function() {\n count++;\n return count;\n };\n}\n\nconst counter = createCounter();\nconsole.log(counter()); // 1\nconsole.log(counter()); // 2\n\nप्रश्न: जावास्क्रिप्ट में this कैसे काम करता है?
this का मान इस बात से निर्धारित होता है कि फंक्शन को कैसे कॉल किया गया है, न कि इसे कहाँ घोषित किया गया है। मुख्य नियम:
- \n
- ग्लोबल कॉन्टेक्स्ट में (ब्राउज़र में) —
window, Node.js में —global। \n - ऑब्जेक्ट की विधि में — स्वयं ऑब्जेक्ट। \n
newके माध्यम से कॉल किए गए फंक्शन में — नया इंस्टेंस। \n call,apply,bindका उपयोग करते समय — पास किया गया ऑब्जेक्ट। \n - एरो फंक्शन में —
thisबाहरी लेक्सिकल कॉन्टेक्स्ट से लिया जाता है। \n
const obj = {\n name: 'Alice',\n greet() {\n console.log(this.name);\n }\n};\n\nconst greet = obj.greet;\ngreet(); // undefined (कॉन्टेक्स्ट का नुकसान)\n\nconst boundGreet = obj.greet.bind(obj);\nboundGreet(); // Alice\n\n3. एसिंक्रोनसिटी: Event Loop, प्रॉमिस और async/await
\n\nजावास्क्रिप्ट एक सिंगल-थ्रेडेड भाषा है, लेकिन यह Event Loop की बदौलत एसिंक्रोनस ऑपरेशन को कुशलतापूर्वक संभालती है। यह साक्षात्कारों में सबसे लोकप्रिय विषयों में से एक है।
\n\nप्रश्न: Event Loop क्या है और यह कैसे काम करता है?
\nEvent Loop एक अनंत लूप है जो कॉल स्टैक (Call Stack) और टास्क क्यू (Task Queue / Microtask Queue) पर नज़र रखता है। यदि स्टैक खाली है, तो यह माइक्रोटास्क क्यू (Promise, MutationObserver) या मैक्रोटास्क क्यू (setTimeout, I/O) से पहला कार्य लेता है।
\n\nप्रश्न: माइक्रोटास्क और मैक्रोटास्क में क्या अंतर है?
\n- \n
- माइक्रोटास्क: Promise.then/catch/finally,