फुल स्टैक डेवलपर इंटरव्यू सवाल

मुझे बताइए कि जब आप किसी click handler के अंदर await करते हैं, तो event loop में असल में क्या होता है।

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

handler तब तक synchronously चलता है जब तक await नहीं आता, फिर वह कंट्रोल ब्राउज़र को लौटा देता है और बाकी function को microtask की तरह schedule कर देता है। जिस promise का इंतज़ार था वह निपटते ही, वह continuation microtask queue में जाता है, जो मौजूदा task के बाद और अगले timer या paint से पहले पूरी तरह खाली होती है। तो await कभी main thread नहीं रोकता; वह function को दो हिस्सों में बांट देता है।

इंटरव्यूअर यह क्यों पूछते हैं

async वही जगह है जहां बहुत से डेवलपरों का मानसिक मॉडल धुंधला होता है। इंटरव्यूअर जानना चाहता है कि आप समझते हैं कि JavaScript single threaded और सहयोगी है, जादुई रूप से समानांतर नहीं, क्योंकि यही समझ आपको ऐसा handler लिखने से रोकती है जो rendering को भूखा रखे या ऐसा loop जो दो सौ requests एक के बाद एक दागे। इससे यह भी अंदाज़ा लगता है कि आप आगे race conditions, cancellation और बासी state पर कितना ठीक तर्क करेंगे।

अपना जवाब कैसे स्ट्रक्चर करें

  • बताएं कि JavaScript एक बार में एक ही call stack चलाता है।
  • बताएं कि await function को कैसे रोकता है और thread लौटाता है।
  • microtask queue को task queue से अलग करें।
  • एक व्यावहारिक नतीजे पर खत्म करें, जैसे loop के अंदर await करना।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

ज़रूर। handler किसी भी दूसरे function की तरह main thread पर शुरू होता है, और पहले await तक सब कुछ synchronously चलता है। await पर function रुक जाता है और अपने caller को एक promise लौटा देता है, तो ब्राउज़र को thread वापस मिल जाता है और वह paint कर सकता है। जिस promise का इंतज़ार था वह resolve होने पर function का बाकी हिस्सा microtask queue में धकेला जाता है, task queue में नहीं। यह इसलिए मायने रखता है कि ब्राउज़र के अगला timer या अगला frame लेने से पहले microtasks पूरी तरह निपटते हैं, तो promise resolutions की लंबी कड़ी तकनीकी रूप से कुछ synchronous न होते हुए भी rendering रोक सकती है। इसका व्यावहारिक रूप मुझे एक dashboard पर काटा। हम करीब 300 rows पर for loop के अंदर await कर रहे थे, तो हर request अपने से पहले वाली का इंतज़ार करती थी और पेज भरने में 12 सेकंड लगते थे। एक छोटी concurrency सीमा के साथ Promise.all पर जाने से यह एक सेकंड से नीचे आ गया। वही कोड, वही thread, बिल्कुल अलग बर्ताव।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • microtasks के मुकाबले requestAnimationFrame callbacks कहां बैठते हैं?
  • component unmount हो जाए तो चल रहे उस काम को कैसे रद्द करेंगे?
  • अगर उनमें से कोई awaited promise reject हो जाए और उसे कोई पकड़े नहीं तो क्या होगा?

फुल स्टैक डेवलपर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं