बैकएंड डेवलपर इंटरव्यू सवाल

एक लोकप्रिय cache key expire होती है और सैकड़ों requests एक साथ डेटाबेस पर टूट पड़ती हैं। आप इसे कैसे रोकेंगे?

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

छोटा जवाब

stampede को single flight से रोकें: जो पहली request miss करे वह एक छोटा lock लेकर दोबारा हिसाब लगाती है, बाकी थोड़ी देर इंतज़ार करती हैं या पुरानी value दे देती हैं। इसके साथ stale while revalidate रखें, ताकि expire हो चुकी entry तब भी दी जाती रहे जब पीछे refresh चल रहा हो, और time to live values में jitter डालें ताकि एक साथ बनी keys एक साथ expire न हों। जिन keys के hot होने का पता है, उन्हें expiry से पहले ही सक्रिय होकर refresh करें।

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

caching के सवाल उन लोगों को अलग करते हैं जिन्होंने cache सिर्फ जोड़ा है और जिन्होंने उसे चलाया है। इंटरव्यूअर वह खास नाकामी चाहते हैं, expiry पर thundering herd, और उसके मानक उपाय। इससे invalidation, staleness कितनी सही जाएगी, और cache खुद ही बैठ जाए तो क्या होगा, ये कठिन चर्चाएं भी खुलती हैं, और वहीं कम क्षमता वाला डेटाबेस आमतौर पर ढेर हो जाता है।

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

  • तंत्र का नाम लें: एक hot key पर बहुत सारे एक साथ के misses।
  • single flight lock बताएं और यह भी कि इंतज़ार करने वाले क्या करते हैं।
  • stale while revalidate और jitter वाली expiry जोड़ें।
  • ठंडे cache की स्थिति और capacity planning का ज़िक्र करें।

उदाहरण जवाब

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

पैटर्न एक thundering herd है: एक hot key expire होती है और उसी पल हर समानांतर request miss कर जाती है, तो सब वही महंगी query चला देती हैं। असली फिक्स single flight है, जहां पहला miss उस key पर एक छोटी उम्र वाला lock लेकर काम करता है, और बाकी सब या तो नतीजे का इंतज़ार करते हैं या पल भर के लिए पुरानी value पा जाते हैं। इसके साथ मैं soft expiry रखता हूं: value के अंदर एक logical refresh time रखता हूं और असली time to live लंबा रखता हूं, ताकि refresh time पार कर चुकी entry तब भी परोसी जाती रहे जब एक worker पीछे उसे दोबारा बना रहा हो। यूज़र को वह latency दिखती ही नहीं। फिर jitter, क्योंकि अगर कोई deploy एक हज़ार keys को उसी पांच मिनट वाले time to live से गर्म कर दे तो वे साथ expire होंगी और मुझे पूरे cache पर एक साथ stampede मिलेगा। इसके बाद जो बड़ा सवाल आता है वह यह कि cache पूरी तरह खाली हो जाए तो क्या होगा, किसी restart या failover के बाद। मैं चाहता हूं कि डेटाबेस उसे झेल जाए, इसलिए मैं कम से कम एक बार cache बंद करके load test करता हूं।

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

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

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

  • बहुत सारे instances के आर पार single flight lock आप सुरक्षित तरीके से कैसे लागू करेंगे?
  • जब नीचे का डेटा बदल जाए तो cached value को आप कैसे invalidate करते हैं?
  • अगर cache cluster पूरी तरह बैठ जाए तो आपकी service का क्या होगा?

बैकएंड डेवलपर के और सवाल

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

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

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

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

GhostPilot पाएं