सॉफ्टवेयर इंजीनियर इंटरव्यू सवाल

आप क्या cache करना है यह कैसे तय करते हैं, और invalidation कैसे संभालते हैं?

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

छोटा जवाब

वह डेटा cache कीजिए जो बदलने से कहीं ज्यादा बार पढ़ा जाता है और जिसे बनाना महंगा है। invalidation के लिए, जो चीज थोड़ी पुरानी चल सकती है उस पर छोटा time to live रखिए, और जो नहीं चल सकती उस पर write के वक्त साफ साफ invalidation कीजिए। cache की key में वह सब कुछ डालिए जिससे नतीजा बदलता है, tenant और permissions समेत, और cache को हटाने लायक चीज मानिए: cache खाली होने पर भी सिस्टम सही चलना चाहिए।

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

correctness के बग और आउटेज दोनों caching से ही आते हैं, तो इंटरव्यूअर Redis commands की जानकारी नहीं, आपकी समझ टटोल रहा है। वे चुनाव के पैमाने के तौर पर read to write अनुपात चाहते हैं, invalidation की साफ रणनीति चाहते हैं, यह जागरूकता कि cache keys यूजर्स के बीच डेटा लीक कर सकती हैं, और वह अनुशासन कि cache एक optimization है जिसके बिना भी सिस्टम जिंदा रहना चाहिए।

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

  • पैमाना बताइए: ज्यादा पढ़ा जाने वाला, महंगा, और थोड़ा पुराना चल जाने वाला।
  • छोटे time to live और write पर invalidation के बीच चुनाव कीजिए।
  • यूजर्स के बीच डेटा लीक करने वाली cache keys पर चेतावनी दीजिए।
  • साफ कहिए कि ठंडे cache के साथ भी सिस्टम चलना चाहिए।

उदाहरण जवाब

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

मैं तीन गुण देखता हूं: लिखे जाने से कहीं ज्यादा पढ़ा जाना, बनाने में महंगा होना, और थोड़ा पुराना होने पर भी चल जाना। अगर आखिरी शर्त पूरी नहीं होती, जैसे account balance में, तो मैं उसे धीमा और सही रखना पसंद करूंगा। invalidation में मेरा डिफॉल्ट छोटा time to live है, क्योंकि वह खुद अपना इलाज कर लेता है; अगर किसी बग की वजह से मुझसे एक invalidation छूट जाए, तो समस्या हमेशा के लिए टिकने के बजाय साठ सेकंड में साफ हो जाती है। जहां पुरानापन सच में मंजूर नहीं है, वहां मैं write वाले उसी code path में invalidate करता हूं और अतिरिक्त coupling स्वीकार कर लेता हूं। जिस चीज पर मैं सबसे ज्यादा सावधान रहता हूं वह key है। जिससे भी नतीजा बदलता है वह उसमें जाता है, खासकर tenant या user id, क्योंकि caching का सबसे बुरा बग जो मैंने देखा है वह यह था कि CDN पर ऐसा response cache हो गया जिसमें personalized header था, और एक कस्टमर को कुछ देर दूसरे कस्टमर का नाम दिख गया। और मैं हमेशा cache खाली करके टेस्ट करता हूं, क्योंकि अगर सिस्टम ठंडे cache पर गिर जाता है, तो वह cache नहीं, dependency है।

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

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

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

  • किसी hot key के expire होने पर आप stampede कैसे रोकेंगे?
  • cache आप कहां रखेंगे: प्रोसेस के अंदर, Redis में या CDN पर?
  • आप कैसे नापेंगे कि cache सच में मदद कर रहा है?

सॉफ्टवेयर इंजीनियर के और सवाल

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

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

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

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

GhostPilot पाएं