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

आपको production में मौजूद बीस करोड़ rows पर एक नया column भरना है। आप इसे कैसे चलाएंगे?

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

छोटा जवाब

कभी एक ही update statement से नहीं। column को nullable और बिना default rewrite के जोड़ें, फिर primary key के क्रम में छोटे बैचों में backfill करें, हर बैच को commit करते हुए, बीच में थोड़ी नींद और replication lag की जांच के साथ। प्रगति दर्ज करके job को resumable बनाएं, उसे कम ट्रैफ़िक के समय चलाएं, और एप्लिकेशन से नई तथा अपडेट होने वाली rows में नया column लिखवाएं ताकि backfill को सिर्फ इतिहास पकड़ना पड़े।

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

यह डेटा के काम के भेस में एक ऑपरेशनल सवाल है, और इसमें गलती करना बहुत आसान है। एक विशाल update locks पकड़ सकता है, write ahead log फुला सकता है, replication lag उड़ा सकता है और साइट गिरा सकता है। इंटरव्यूअर batching, किसी जीवंत संकेत पर आधारित throttling, resumability, और वह double write रणनीति चाहते हैं जिससे switch सुरक्षित रहे। यह भी दिखता है कि आप verification का कदम सोचते हैं या नहीं।

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

  • समझाएं कि एक बड़ा update खतरनाक क्यों है: locks, bloat, replication lag।
  • बैच वाली, resumable job और उसका throttle संकेत बताएं।
  • एप्लिकेशन से आगे के लिए नई value लिखवाएं।
  • verification और नए column से पढ़ने पर cutover तय करें।

उदाहरण जवाब

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

बीस करोड़ rows छूने वाला एक update locks पकड़ता है, बेहिसाब write ahead log बनाता है, और replicas को इतना पीछे धकेल देता है कि reads बासी डेटा देने लगती हैं, तो कुछ crash न होने पर भी साइट को नुकसान होता है। इसके बजाय मैं column को nullable जोड़ता हूं, जो आजकल के Postgres पर सस्ता है क्योंकि इससे टेबल दोबारा नहीं लिखी जाती, और पहले वह एप्लिकेशन बदलाव deploy करता हूं जो हर insert तथा update पर उसे भर देता है। इसका मतलब है कि backfill को सिर्फ इतिहास संभालना है, और इतिहास हिलता नहीं। फिर job primary key पर कुछ हज़ार के बैचों में चलती है, हर बैच commit करती है, आखिरी पूरा हुआ id दर्ज करती है ताकि restart के बाद वहीं से चले, और replication lag या डेटाबेस लोड हद पार करते ही रुक जाती है। मैं इसे जितनी तेज़ हो सके उतनी तेज़ नहीं, बल्कि rate limit के साथ चलाता हूं। खत्म होने पर मैं counts और नमूना जांच से पक्का करता हूं कि कुछ null नहीं बचा, फिर एक flag के पीछे reads को नए column पर मोड़ता हूं, और उसके बाद ही not null constraint जोड़ता हूं, अलग से validate करके ताकि लंबा lock न लगे।

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

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

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

  • लंबे lock के बिना not null constraint आप कैसे जोड़ेंगे?
  • आप किस संकेत पर throttle करते हैं, और किस हद पर?
  • backfill सिर्फ पूरा हुआ नहीं बल्कि सही भी था, यह आप कैसे जांचेंगे?

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

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

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

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

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

GhostPilot पाएं