JavaScript इंटरव्यू कैसे पास करें: एडवांस्ड लेवल

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

JavaScript इंटरव्यू कैसे पास करें: एडवांस्ड लेवल के टॉप सवाल

\n\n

Senior JavaScript डेवलपर या Node.js इंजीनियर की नौकरी का इंटरव्यू सिर्फ सिंटैक्स की जांच नहीं है। इंटरव्यूअर यह देखना चाहते हैं कि आप भाषा को गहराई से समझते हैं: Event Loop कैसे काम करता है, this का असली कॉन्टेक्स्ट क्या है, और एसिंक्रोनस कोड में "हेलिश" नेस्टिंग से कैसे बचें। इस लेख में हम उन सबसे आम और मुश्किल सवालों को समझेंगे जो एडवांस्ड लेवल पर पूछे जाते हैं। तैयार रहें - सिर्फ जवाब याद न करें, बल्कि मैकेनिज्म को समझें।

\n\n

1. Event Loop, कॉल स्टैक और माइक्रोटास्क (Microtasks vs Macrotasks)

\n\n

Node.js इंटरव्यू में यह सबसे लोकप्रिय टॉपिक है। सवाल होता है: "यह कोड क्या आउटपुट देगा और किस क्रम में?"

\n\n
console.log('1');\n\nsetTimeout(() => console.log('2'), 0);\n\nPromise.resolve().then(() => console.log('3'));\n\nprocess.nextTick(() => console.log('4'));\n\nconsole.log('5');
\n\n

सही उत्तर: 1, 5, 4, 3, 2.

\n\n

व्याख्या:

\n
    \n
  • सिंक्रोनस कोड (1, 5) सबसे पहले चलता है।
  • \n
  • process.nextTick() — यह सबसे हाई प्रायोरिटी वाली माइक्रोटास्क है। यह मौजूदा ऑपरेशन के तुरंत बाद, लेकिन किसी भी अन्य माइक्रोटास्क (Promise) और मैक्रोटास्क (setTimeout) से पहले चलती है।
  • \n
  • Promise.then() — यह भी माइक्रोटास्क है, लेकिन इसकी प्रायोरिटी nextTick से कम है।
  • \n
  • setTimeout(cb, 0) — यह मैक्रोटास्क है। यह तभी चलता है जब कॉल स्टैक और सभी माइक्रोटास्क (सभी nextTick और Promise) पूरी तरह खाली हो जाएं।
  • \n
\n\n

सही जवाब कैसे दें: समझाएं कि Node.js में Event Loop के फेज़ होते हैं। माइक्रोटास्क (process.nextTick और Promise) फेज़ के बीच प्रोसेस होते हैं। मैक्रोटास्क (setTimeout, setInterval, I/O) फेज़ के अंदर चलते हैं। nextTick एक नॉन-स्टैंडर्ड लेकिन बहुत ज़रूरी क्यू है, जिसे रिकर्सिवली इस्तेमाल करने पर Event Loop ब्लॉक हो सकता है।

\n\n

2. this का कॉन्टेक्स्ट और उसका "खो जाना"

\n\n

सवाल: "JavaScript में this कैसे काम करता है? एक उदाहरण दें जहां this खो जाता है, और इसे कैसे ठीक करें?"

\n\n

एडवांस्ड लेवल का मतलब है कि आप 4 नियम जानते हैं:

\n
    \n
  1. नई बाइंडिंग (new binding) — जब फंक्शन को new के साथ कॉल किया जाता है, this नए बने ऑब्जेक्ट को पॉइंट करता है।
  2. \n
  3. एक्सप्लिसिट बाइंडिंग — call, apply, bind।
  4. \n
  5. इम्प्लिसिट बाइंडिंग — जब फंक्शन को ऑब्जेक्ट के मेथड के रूप में कॉल किया जाता है (obj.method())।
  6. \n
  7. डिफ़ॉल्ट बाइंडिंग — ग्लोबल ऑब्जेक्ट (Node.js में global, ब्राउज़र में window) या स्ट्रिक्ट मोड में undefined।
  8. \n
\n\n

कॉन्टेक्स्ट खोने का उदाहरण:

\n
const user = {\n  name: 'Alice',\n  greet() {\n    console.log(`Hello, ${this.name}`);\n  }\n};\n\nconst greetFn = user.greet;\ngreetFn(); // Hello, undefined
\n\n

क्यों? हमने मेथड को एक वेरिएबल में असाइन कर दिया। अब greetFn() बिना ऑब्जेक्ट (user) के कॉन्टेक्स्ट के कॉल हो रहा है। this ग्लोबल ऑब्जेक्ट (या strict mode में undefined) से बाइंड हो जाता है।

\n\n

कैसे ठीक करें:

\n
    \n
  • bind का उपयोग करें: const greetFn = user.greet.bind(user);
  • \n
  • एरो फंक्शन का उपयोग करें (इसका अपना this नहीं होता, यह बाहरी लेक्सिकल एनवायरनमेंट से लेता है)।
  • \n
  • call/apply से कॉल करें: greetFn.call(user)।
  • \n
\n\n

बोनस सवाल: "अगर user.greet को setTimeout में पास कर दें तो क्या होगा?" — वही कॉन्टेक्स्ट खोने का इफेक्ट। इसे bind या कॉलबैक में एरो फंक्शन से ठीक करें।

\n\n

3. क्लोजर्स

ब्लॉग

पुस्तक अनुशंसाएँ