प्रतिनिधि इंटरव्यू विषय

सामान्य इंटरव्यू: आप लॉसी रियल-टाइम स्टेट के लिए WebTransport डेटाग्राम का उपयोग कैसे करेंगे?

सामान्यमध्यम
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

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

प्रॉम्प्ट और संदर्भ

एप्लिकेशन उच्च-आवृत्ति वाले कर्सर, पोज़, या ड्रैग-पूर्वावलोकन अपडेट भेजता है जहाँ हर ऐतिहासिक अपडेट की तुलना में नवीनतम स्थिति अधिक मायने रखती है। WebTransport datagrams का उपयोग करने का तरीका बताएं, जिसमें अनऑर्डर्ड हानि, आकार बजट, बैकप्रेशर, पुनः कनेक्ट और असमर्थित ब्राउज़र शामिल हैं। केवल WebSocket की तुलना HTTP/3 से न करें।

इंटरव्यूअर क्या मूल्यांकन करता है

  • यह जानना कि डेटाग्राम डिलीवरी या ऑर्डर की गारंटी नहीं देते हैं और महत्वपूर्ण तथ्यों को नहीं ले जा सकते हैं।
  • संदेश संस्करण, समाप्ति, डिस्कार्ड नियम और ट्रैफ़िक बजट डिज़ाइन करना।
  • डेटाग्राम को विश्वसनीय स्ट्रीम से अलग करना और कतारों, कंजेशन और पुनः कनेक्ट को संभालना।
  • HTTPS, क्षमता पहचान, फ़ॉलबैक और ऑब्जर्वेबिलिटी प्रदान करना।

पूछे जाने वाले स्पष्टीकरण प्रश्न

  1. कौन से संदेश पुनर्निर्माण योग्य क्षणिक स्थिति (transient state) हैं, और किन्हें विश्वसनीय क्रमित दृढ़ता की आवश्यकता है?
  2. कौन सा डेटाग्राम आकार, अपडेट दर, लक्षित विलंबता (latency) और हानि दर स्वीकार्य है?
  3. क्या कोई क्लाइंट स्नैपशॉट से पुनर्प्राप्त कर सकता है, और पुनः कनेक्ट होने पर आधिकारिक स्थिति कहाँ से प्राप्त होती है?
  4. क्या ब्राउज़र और नेटवर्क WebTransport, HTTPS और HTTP/3 का समर्थन करते हैं? फ़ॉलबैक क्या है?

30-सेकंड उत्तर ढांचा

मैं डेटाग्राम को छोड़े जाने योग्य वर्तमान स्थिति के लिए आरक्षित रखूंगा और संचालन, अनुमतियाँ और अंतिम परिणाम एक विश्वसनीय स्ट्रीम या सर्वर स्टोर पर रखूंगा। प्रत्येक स्थिति अपडेट में एक अनुक्रम, टाइमस्टैम्प और ऑब्जेक्ट संस्करण होगा; रिसीवर केवल नए संस्करण लागू करते हैं और पुराने डेटा को छोड़ देते हैं। प्रेषक हमेशा बफ़र करने के बजाय आकार, दर और कतार की लंबाई को सीमित करते हैं। एक कनेक्शन एक विश्वसनीय स्नैपशॉट के साथ शुरू होता है, पुनः कनेक्ट होने पर फिर से आधिकारिक स्थिति प्राप्त की जाती है, और क्षमता विफलता होने पर मौजूदा विश्वसनीय चैनल पर फ़ॉलबैक किया जाता है।

चरण-दर-चरण गहन विश्लेषण

1. विश्वसनीयता सीमा निर्धारित करें

कर्सर और पूर्वावलोकन पुनर्निर्माण योग्य हैं और डेटाग्राम के अनुकूल हैं। दस्तावेज़ संचालन, अनुमति परिवर्तन और कमिट परिणामों के लिए एक विश्वसनीय क्रमित पथ की आवश्यकता होती है। एक ही कनेक्शन साझा करने से दोनों ट्रांसपोर्ट सेमेंटिक्स विनिमेय नहीं हो जाते हैं।

2. डिस्कार्ड करने योग्य संदेश डिज़ाइन करें

प्रत्येक ऑब्जेक्ट में एक मोनोटोनिक अनुक्रम, निर्माण समय और सत्र संस्करण संलग्न करें। केवल नए संस्करण स्वीकार करें; ताजगी विंडो से बाहर, हटाए गए ऑब्जेक्ट्स के लिए, या वर्तमान संस्करण से पीछे के संदेशों को छोड़ दें। एक डेटाग्राम में ऐसा कोई अनूठा तथ्य नहीं होना चाहिए जिसे स्नैपशॉट पुनर्स्थापित न कर सके।

3. बजट और पुनर्प्राप्ति को नियंत्रित करें

संदेश का आकार, भेजने की दर और कतार की लंबाई सीमित करें; जब कतार अपनी सीमा के करीब हो, तो प्रत्येक ऑब्जेक्ट के लिए नवीनतम स्थिति को संयोजित (coalesce) करें। पुनः कनेक्ट होने के बाद, नए डेटाग्राम लागू करने से पहले विश्वसनीय स्ट्रीम पर एक स्नैपशॉट प्राप्त करें ताकि पुरानी क्षणिक स्थिति इसे अधिलेखित न कर सके।

4. संगतता और ऑब्जर्वेबिलिटी

केवल एक सुरक्षित संदर्भ में कनेक्शन स्थापित करें और ब्राउज़र क्षमता का पता लगाएं। डिस्कार्ड दर, कतार की लंबाई, भेजने की विफलता, पुनः कनेक्ट और स्नैपशॉट-मरम्मत समय रिकॉर्ड करें। जब WebTransport अनुपलब्ध हो, तो समान स्थिति-संस्करण प्रोटोकॉल को बनाए रखते हुए WebSocket या पोलिंग पर फ़ॉलबैक करें।

मॉडल उत्तर

मैं संदेशों को पुनर्निर्माण योग्य क्षणिक स्थिति या गैर-लॉसी तथ्यों के रूप में वर्गीकृत करूँगा: कर्सर और ड्रैग पूर्वावलोकन डेटाग्राम का उपयोग करते हैं, जबकि दस्तावेज़ संचालन, अनुमतियाँ और कमिट परिणाम एक विश्वसनीय स्ट्रीम का उपयोग करते हैं। प्रत्येक डेटाग्राम में एक ऑब्जेक्ट संस्करण, अनुक्रम और टाइमस्टैम्प होता है; रिसीवर नए संस्करणों को स्वीकार करते हैं और पुराने संस्करणों को छोड़ देते हैं, जबकि प्रेषक आकार, दर और कतार को सीमित करते हैं और अपडेट को संयोजित करते हैं। कनेक्ट या पुनः कनेक्ट होने पर, डेटाग्राम फिर से शुरू होने से पहले एक विश्वसनीय स्नैपशॉट अधिकार स्थापित करता है। HTTPS, क्षमता पहचान, WebSocket या पोलिंग फ़ॉलबैक, और हानि, कतारों, पुनः कनेक्ट और मरम्मत समय के लिए मेट्रिक्स डिज़ाइन को पूरा करते हैं।

सामान्य गलतियाँ

  • डेटाग्राम को एक विश्वसनीय क्रमित कतार के रूप में मानना।
  • अनुमतियाँ, भुगतान, या गैर-पुनर्निर्माण योग्य तथ्यों को डेटाग्राम के रूप में भेजना।
  • संस्करणों और ताजगी को छोड़ देना, जिससे पुरानी स्थिति को नई स्थिति को अधिलेखित करने की अनुमति मिल जाए।
  • कंजेशन के तहत भेजने की कतार को बिना सीमा के बढ़ने देना।
  • आधिकारिक स्नैपशॉट प्राप्त किए बिना पुनः कनेक्ट होने के बाद पुरानी स्थिति को फिर से शुरू करना।
  • HTTPS, ब्राउज़र पहचान और फ़ॉलबैक की उपेक्षा करना।

अनुवर्ती प्रश्न और उत्तर

जब हानि बढ़ जाती है तो आप क्या करते हैं?

स्थिति विंडो को छोटा करें, भेजने की दर कम करें, और प्रत्येक ऑब्जेक्ट के लिए अपडेट को संयोजित करें; महत्वपूर्ण तथ्यों को विश्वसनीय स्ट्रीम पर रखें। यदि स्थिति को स्नैपशॉट से दोबारा नहीं बनाया जा सकता है तो डेटाग्राम पर पुनर्विचार करें।

आप आउट-ऑफ़-ऑर्डर अधिलेखन को कैसे रोकते हैं?

ऑब्जेक्ट संस्करणों या मोनोटोनिक अनुक्रमों की तुलना करें और केवल बड़े मान स्वीकार करें। पुनः कनेक्ट होने पर सत्र युग (epoch) को आगे बढ़ाएं और पुराने सत्रों के संदेशों को अस्वीकार करें।

एक विश्वसनीय स्ट्रीम क्यों बनाए रखें?

डेटाग्राम आगमन या ऑर्डरिंग की गारंटी नहीं देते हैं और "नया मान पुराने मान को बदल देता है" स्थिति के लिए उपयुक्त होते हैं। लॉग, स्नैपशॉट, अनुमतियों और अंतिम पुष्टिकरणों के लिए विश्वसनीय ट्रांसपोर्ट और दृढ़ता की आवश्यकता होती है।

सार्वजनिक स्रोत

संबंधित प्रश्न