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

प्रोडक्ट चाहता है कि पचास हज़ार rows की table sorting और inline editing के साथ दिखे। आप इसे कैसे बनाएंगे?

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

छोटा जवाब

पचास हज़ार rows को DOM में मत डालिए। virtualize कीजिए ताकि सिर्फ दिखने वाली खिड़की और थोड़ा overscan render हो, row की ऊंचाई अंदाज़े लायक रखिए या नापिए, और sorting तथा filtering को render से निकालकर memoized derived डेटा या सर्वर पर ले जाइए। डेटा को खुद paginate या stream कीजिए, edit हो रही row की state local रखिए ताकि हर keystroke पूरी table दोबारा render न करे, और throttled CPU पर जांचिए।

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

यह जांचता है कि आप समझते हैं कि लागत असल में कहां है: DOM nodes की गिनती, layout, और हर keystroke पर पूरी list का दोबारा render होना। इंटरव्यूअर देखना चाहता है कि आप डेटा की समस्या को rendering की समस्या से अलग करते हैं और एक्सेसिबिलिटी तथा keyboard के बर्ताव पर सोचते हैं, जिन्हें भोली virtualization तोड़ देती है। सीधे किसी maintained library पर जाना ठीक जवाब है, बशर्ते आप समझा सकें कि वह आपके लिए क्या करती है।

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

  • कहें कि बंदिश DOM nodes की गिनती है और virtualize करें।
  • डेटा की चिंता को rendering की चिंता से अलग करें।
  • edit की state local रखें ताकि टाइप करने पर सब कुछ दोबारा render न हो।
  • virtualization से बनने वाले एक्सेसिबिलिटी और search के ट्रेड-ऑफ बताएं।

उदाहरण जवाब

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

पहली बात मैं यह कहता हूं कि पचास हज़ार rows एक साथ DOM में कभी नहीं होनी चाहिए, क्योंकि layout और memory nodes की गिनती के साथ बढ़ते हैं, चाहे मेरा framework कितना ही तेज़ हो। तो मैं virtualize करता हूं: viewport की rows और थोड़ा overscan render करो, उन्हें कुल ऊंचाई वाले spacer के अंदर absolutely position करो, और scroll के साथ उन्हें दोबारा इस्तेमाल करो। फिर मैं डेटा को अलग समस्या मानता हूं। हर keystroke पर पचास हज़ार records की sorting और filtering main thread रोक देगी, तो या तो सर्वर वह करे और मैं एक पेज मांगूं, या मैं derived array को memoize करूं ताकि वह तभी दोबारा बने जब sort key सच में बदले। inline editing के लिए मैं draft value उसी row की अपनी state में रखता हूं और commit पर ही ऊपर उठाता हूं, वरना हर अक्षर पर पूरी table दोबारा render होती है। जो हिस्से लोग भूल जाते हैं वे हैं एक्सेसिबिलिटी और पेज में खोज: screen readers और ब्राउज़र की search सिर्फ render हुई rows देखती हैं, तो मैं row की गिनती वाले attributes साफ साफ सेट करता हूं और ब्राउज़र वाली पर भरोसा करने की जगह एक असली search box देता हूं।

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

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

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

  • अलग अलग ऊंचाई वाली rows को कैसे संभालते हैं?
  • virtualized table में keyboard navigation का क्या टूटता है?
  • sorting को सर्वर पर कब धकेलेंगे?

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

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

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

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

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

GhostPilot पाएं