कुछ भी बदलने से पहले profile कीजिए: टाइप करने का एक दौर record कीजिए और देखिए कि वक्त filter की गणना में जा रहा है, rows render करने में, या layout और paint में। आम हल, फायदे के क्रम में, हैं virtualize करना ताकि सिर्फ दिखने वाली rows render हों, छंटी हुई value को useDeferredValue या किसी transition से टालना, row वाले component को memoize करना, और input की state को list से अलग रखना।
इंटरव्यूअर यह क्यों पूछते हैं
यह performance का सवाल है जिसका एक साफ गलत जवाब है, यानी अंदाजा लगाकर हर जगह useMemo छिड़क देना। इंटरव्यूअर पहले नापने वाला तरीका देखना चाहते हैं, profiler के नतीजे की सही समझ, और यह जानकारी कि इस पैमाने पर कौन सा लीवर सच में मायने रखता है। वे यह भी सुनना चाहते हैं कि आप दो अलग समस्याएं अलग करें, चिपचिपा लगता input और बहुत देर लगाकर render होती list।
अपना जवाब कैसे स्ट्रक्चर करें
- कहें कि आप पहले नापते हैं और जिस औजार से नापते हैं उसका नाम लें।
- समस्या बांटें: input का धीमा एहसास बनाम list का धीमा render।
- हल असर के क्रम में दें, virtualization पर खत्म करते हुए।
- उसी माप से हल की पुष्टि करने का जिक्र करें।
उदाहरण जवाब
मैं code छूने से पहले इसे React Profiler और browser के performance panel में record करूंगा, क्योंकि तीन अलग वजहें एक जैसी महसूस होती हैं। अगर commit बहुत बड़ा है, तो वजह rows हैं। अगर scripting का वक्त मेरे filter function में है, तो वजह data है। अगर layout बार बार बन रहा है, तो कोई हर row पर DOM नाप रहा है। कुछ हजार rows के साथ दस में नौ बार वजह सीधे यह होती है कि वे सब render हो रही हैं, तो virtualization बड़ी जीत है, सिर्फ दिखने वाली खिड़की और थोड़ा सा overscan render करना। उसके ऊपर मैं दोनों updates अलग करता हूं: input जरूरी रहता है ताकि टाइप करना तुरंत लगे, और छंटा हुआ नतीजा किसी transition या useDeferredValue से गुजरता है ताकि अगला keystroke आते ही React बासी काम छोड़ सके। row वाले component को memoize करना list के virtualize हो जाने के बाद मदद करता है, उससे पहले कम। मैंने यह एक customer list पर किया जो करीब चार हजार rows पर इस्तेमाल लायक नहीं लगती थी, और virtualization तथा टाली गई value ने बातचीत को करीब चार सौ milliseconds से सोलह के नीचे ला दिया।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- आप overscan की कौन सी value चुनेंगे और क्यों?
- virtualization accessibility और browser के page में find पर क्या असर डालेगा?
- क्या आप filtering server पर ले जाएंगे, और किस मोड़ पर?
React डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें