फ्रंटएंड डेवलपर इंटरव्यू सवाल

मुझे बताइए कि click handler चलने और स्क्रीन पर अगला frame दिखने के बीच ब्राउज़र असल में क्या करता है।

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

छोटा जवाब

click handler एक अकेले task की तरह पूरा चलता है। उसने जितने भी microtasks कतार में डाले, resolved promise callbacks समेत, वे सब अगले नंबर पर निपटते हैं, उससे पहले और कुछ नहीं होता। उसके बाद ही, अगर frame का समय हुआ है, ब्राउज़र requestAnimationFrame callbacks चलाता है और style, layout, paint तथा composite से गुज़रता है। कोई लंबा task या microtasks की न खत्म होने वाली कड़ी उस frame को टाल देती है, और यूज़र उस देरी को jank की तरह महसूस करता है।

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

फ्रंटएंड की लगभग सारी परफॉर्मेंस का काम इसी पर टिका है कि frame को रोकता क्या है। इंटरव्यूअर सुनना चाहता है कि scripting, style, layout और paint एक ही main thread साझा करते हैं, कि microtasks ब्राउज़र को वापस मौका देने का तरीका नहीं हैं, और कि requestAnimationFrame उस काम के लिए है जो paint से पहले होना ही चाहिए। इससे यह भी पता चलता है कि आप responsiveness की शिकायत डिबग कर सकते हैं या बस setTimeout बिखेरते रहेंगे जब तक लक्षण जगह न बदल ले।

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

  • तीनों चरण क्रम से बताएं: task, microtask का निपटारा, rendering का मौका।
  • बताएं कि microtasks renderer को भूखा रखते हैं जबकि timeout मौका देता है।
  • बताएं कि requestAnimationFrame style और layout के मुकाबले कहां बैठता है।
  • इसे किसी मेट्रिक से जोड़ें, जैसे interaction latency।

उदाहरण जवाब

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

handler खुद main thread पर एक task है, तो वह शुरू से आखिर तक बिना किसी रुकावट के चलता है। लौटते ही ब्राउज़र microtask queue निपटाता है, तो कोई भी await का continuation या promise then callback वहीं चल जाता है, और अगर वे और microtasks कतार में डालते रहें तो ब्राउज़र को paint करने का मौका कभी नहीं मिलता। वह queue खाली होने पर, और तभी अगर सच में frame का समय हुआ है, ब्राउज़र requestAnimationFrame callbacks चलाता है, style दोबारा निकालता है, layout करता है, paint और composite करता है। इसीलिए मैं लंबे tasks को असली दुश्मन मानता हूं। एक dashboard पर जिस पर मैंने काम किया, filter बदलने पर handler में लगभग चालीस हज़ार rows की synchronous sort होती थी, और click करीब दो सौ मिलीसेकंड तक मरा हुआ लगता था। इसे तोड़कर handler को सिर्फ input अपडेट करने देना, फिर महंगे हिस्से से पहले scheduler.yield से मौका देना, इससे frame का बजट बचा रहा और कुल काम बिल्कुल उतना ही होने के बावजूद interaction तुरंत जवाब देने लगा।

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

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

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

  • पहले से resolved promise का await करने पर ब्राउज़र को paint का मौका क्यों नहीं मिलता?
  • timeout की जगह requestAnimationFrame कब इस्तेमाल करेंगे?
  • नतीजा बदले बिना किसी लंबे task को कैसे तोड़ेंगे?

फ्रंटएंड डेवलपर के और सवाल

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

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

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

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

GhostPilot पाएं