server state वह डेटा है जिसके मालिक आप नहीं: वह किसी डेटाबेस में रहता है, आते ही बासी हो सकता है, और उसे caching, revalidation, retries तथा deduplication चाहिए। client state वह डेटा है जिसके मालिक आप हैं, जैसे कौन सा tab खुला है या form में क्या टाइप हुआ है, और वह synchronous तथा हमेशा सही होता है। दोनों को अलग तरह से लीजिए: server state के लिए query cache, client state के लिए component की local state या कोई छोटा store।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर जानना चाहता है कि आप अब भी API के responses किसी global store में ठूंसकर हाथ से loading flags लिखेंगे या नहीं। इन दोनों को अलग करना ही आधुनिक data libraries के पीछे की समझ है, और इससे पता चलता है कि आपके कोड में कितनी बेवजह जटिलता है। इससे cache invalidation, optimistic updates और यह सवाल भी खुलता है कि जब दो components को एक ही डेटा चाहिए तो क्या होता है।
अपना जवाब कैसे स्ट्रक्चर करें
- दोनों श्रेणियों को ownership के हिसाब से परिभाषित करें।
- गिनाएं कि server state को क्या चाहिए जो client state को नहीं।
- हर एक के लिए आप कौन सा टूल इस्तेमाल करते हैं और क्यों, बताएं।
- इसे गलत करने का एक लक्षण बताएं।
उदाहरण जवाब
server state किसी ऐसी चीज़ की cached नकल है जो मेरे काबू में नहीं। वह asynchronously आती है, बासी हो सकती है, दो components एक साथ उसे चाह सकते हैं, और उसे revalidation, retries तथा deduplication चाहिए। client state मेरी है: खुला accordion, form में पड़ा draft, apply करने से पहले चुना गया filter। वह synchronous है और कभी बासी नहीं होती। जब से मैंने इन्हें अलग समस्याएं मानना शुरू किया, बहुत सारा कोड गायब हो गया। server का डेटा अपने parameters से keyed query cache में जाता है, जो loading और error की हालतें संभालता है, एक जैसी requests को जोड़ देता है और focus पर दोबारा लाता है। client state तब तक component की local state रहती है जब तक एक से ज़्यादा component को उसकी ज़रूरत न पड़े, और तभी वह किसी छोटे साझा store में जाती है। इसे गलत करने का लक्षण बहुत पहचाना हुआ है: entities से भरा global store, हर स्क्रीन पर हाथ से लिखे loading booleans, और ऐसा bug जिसमें दो components एक ही user को लाते हैं और उसके बारे में असहमत हो जाते हैं। मैंने वह ऐप संभाला है और उसे दोबारा वैसे नहीं बनाऊंगा।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- जिस optimistic update को सर्वर ठुकरा दे, उसे कैसे संभालते हैं?
- किसी mutation के बाद आपकी invalidation की रणनीति क्या है?
- client state को सच में global होने की ज़रूरत कब पड़ती है?
फ्रंटएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें