जावास्क्रिप्ट साक्षात्कार की तैयारी कैसे करें: पूर्ण गाइड
\n\nजावास्क्रिप्ट साक्षात्कार स्कूल की परीक्षा नहीं है, जहाँ आपको केवल उत्तर याद करने होते हैं। यह एक बातचीत है, जिसमें न केवल आपके सिंटैक्स ज्ञान की जाँच की जाती है, बल्कि सोचने की क्षमता, भाषा के तंत्र को समझने और वास्तविक समस्याओं को हल करने की क्षमता भी देखी जाती है। यदि आपको लगता है कि आप क्लोजर में कमज़ोर हैं, this में भ्रमित होते हैं, और event loop से डरते हैं - तो चिंता न करें। हमने एक संरचित मार्गदर्शिका तैयार की है जो आपको जावास्क्रिप्ट साक्षात्कार में आत्मविश्वास से पास होने में मदद करेगी।
JS साक्षात्कार की तैयारी करना इतना कठिन क्यों है?
\n\nजावास्क्रिप्ट एक आत्मा वाली भाषा है (और कभी-कभी आश्चर्यों के साथ)। एक ही फ़ंक्शन संदर्भ के आधार पर अलग-अलग व्यवहार कर सकता है। इसलिए जावास्क्रिप्ट साक्षात्कार में आपसे केवल यह नहीं पूछा जाता कि "कोड क्या आउटपुट देगा" - आपसे यह समझाने के लिए कहा जाता है कि क्यों। और यहीं पर कई लोग असफल हो जाते हैं। लेकिन हम आपको इन छिपी समस्याओं को पकड़ना सिखाएंगे।
\n\n1. मूल बातें जो आपको कंठस्थ होनी चाहिए
\n\nडेटा प्रकार और टाइप कन्वर्जन
\n\nआधार से शुरू करते हैं। जावास्क्रिप्ट में 7 प्रिमिटिव प्रकार हैं: string, number, boolean, null, undefined, symbol, bigint - और एक जटिल: object। लेकिन चाल यह है कि typeof null "object" लौटाता है - यह एक ऐतिहासिक गलती है जिसे आपको जानना चाहिए।
जावास्क्रिप्ट साक्षात्कार में अक्सर अंतर्निहित टाइप कन्वर्जन के बारे में पूछा जाता है। उदाहरण के लिए:
\n\nconsole.log([] + []); // ""\nconsole.log([] + {}); // "[object Object]"\nconsole.log({} + []); // 0 (ब्राउज़र कंसोल में)\n\n\nऐसा क्यों? क्योंकि ऑपरेटर + ऑपरेंड को प्रिमिटिव में बदलने का प्रयास करता है, toString() या valueOf() को कॉल करके। याद रखें: खाली ऐरे खाली स्ट्रिंग में बदल जाता है, और ऑब्जेक्ट स्ट्रिंग "[object Object]" में बदल जाता है।
क्लोजर और लेक्सिकल एनवायरनमेंट
\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साक्षात्कार में आपसे ऐसा फ़ंक्शन लिखने या यह समझाने के लिए कहा जा सकता है कि var के साथ लूप में क्लासिक समस्या क्यों होती है:
for (var i = 0; i < 5; i++) {\n setTimeout(() => console.log(i), 1000);\n}\n// आउटपुट: 5, 5, 5, 5, 5\n\nसमाधान - let का उपयोग करें या क्लोजर में लपेटें। यह समझाना सुनिश्चित करें कि var का स्कोप फंक्शनल होता है, ब्लॉक स्कोप नहीं।
2. "This" - हर JS डेवलपर का दर्द और खुशी
\n\nthis के बारे में प्रश्न - यह एक क्लासिक विषय है। नियम सरल है: this का मान इस बात से निर्धारित होता है कि फ़ंक्शन को कैसे कॉल किया गया है, न कि यह कहाँ घोषित किया गया है।
- \n
- ग्लोबल कॉन्टेक्स्ट में (ब्राउज़र में)
thiswindowहै। \n - ऑब्जेक्ट की मेथड में - वह ऑब्जेक्ट ही। \n
- कंस्ट्रक्टर फ़ंक्शन में - नया इंस्टेंस। \n
- एरो फ़ंक्शन में -
thisबाहरी लेक्सिकल एनवायरनमेंट से आता है। \n
साक्षात्कार के लिए उदाहरण:
\n\nconst obj = {\n name: "JS",\n getName: function() {\n return this.name;\n }\n};\n\nconst fn = obj.getName;\nconsole.log(fn()); // undefined (कॉन्टेक्स्ट खो गया)\n\nइसे कैसे ठीक करें? bind, call, apply या एरो फ़ंक्शन का उपयोग करें।
3. Event Loop और एसिंक्रोनसिटी - सितारों के लिए विषय
\n\nevent loop की समझ के बिना आप मध्यम स्तर का जावास्क्रिप्ट साक्षात्कार पास नहीं कर पाएंगे। अनुक्रम याद रखें: पहले सभी सिंक्रोनस कोड निष्पादित होते हैं (स्ट