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

5 करोड़ rows वाली table पर बिना downtime किसी column का नाम कैसे बदलेंगे?

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

छोटा जवाब

expand, migrate, contract। नया column जोड़िए, ऐसा कोड डिप्लॉय कीजिए जो दोनों में लिखे और पढ़े अब भी पुराना, throttled batches में backfill कीजिए, फिर अलग deploy में reads नए column पर पलटिए, और पुराना column तभी गिराइए जब उसका कोई हवाला न बचे। schema का बदलाव और कोड का cutover एक ही release में कभी मत मिलाइए, क्योंकि तब आप साफ rollback की क्षमता गंवा देते हैं।

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

यह जांचता है कि आपने लाइव ट्रैफिक के सामने migrations शिप की हैं या सिर्फ स्थानीय रूप से चलाई हैं। इंटरव्यूअर कई deploys का क्रम चाहता है, बड़ी tables पर locking के बर्ताव की समझ, और rollback की कहानी। जो उम्मीदवार एक ALTER statement से जवाब देते हैं उन्होंने आमतौर पर कभी नहीं देखा कि कोई migration exclusive lock लेकर peak पर प्रोडक्शन डेटाबेस की हर request अटका देती है।

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

  • शुरुआत में ही expand and contract pattern का नाम लें।
  • deploys क्रम से बताएं और हर एक क्या करता है, यह भी।
  • समझाएं कि आप बिना lock लिए या डेटाबेस भरे backfill कैसे करते हैं।
  • हर कदम पर rollback की स्थिति बताएं।

उदाहरण जवाब

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

नाम बदलना असल में एक statement नहीं, छोटे सुरक्षित बदलावों की कतार है। पहला deploy नया column nullable जोड़ता है, जो Postgres में सस्ता है क्योंकि वह table दोबारा नहीं लिखता, और ऐसा कोड भेजता है जो दोनों columns में लिखे पर पढ़े अब भी पुराना। फिर मैं batches में backfill करता हूं, शायद एक बार में पांच हज़ार rows और बीच में छोटा ठहराव, replication lag और lock के इंतज़ार पर नज़र रखते हुए, ताकि मैं कभी लंबा transaction न पकड़ूं। दूसरा deploy reads नए column पर ले जाता है, dual write अब भी चालू रहता है ताकि कुछ गलत हो तो मैं तुरंत पलट सकूं। जब वह कुछ दिन स्थिर रह जाए, तभी तीसरा deploy पुराने column में लिखना बंद करके उसे गिराता है। मैं अलग अलग deploys पर इसलिए अड़ता हूं कि rollback बचा रहे। अगर schema का बदलाव और कोड का बदलाव साथ जाएं, तो कोड पलटने पर डेटाबेस ऐसी शक्ल में रह जाता है जिसे पुराना कोड पढ़ ही नहीं सकता। मैं indexes concurrently बनाता हूं और lock timeout सेट करता हूं ताकि migration किसी लंबी query के पीछे कतार में लगकर writes जमा देने की जगह जल्दी फेल हो जाए।

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

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

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

  • Postgres में इनमें से कौन सा कदम lock लेता है, और कितनी देर?
  • reads पलटने से पहले backfill सही है, यह कैसे जांचेंगे?
  • अगर backfill आधा हो चुका हो तो आपका rollback क्या है?

फुल स्टैक डेवलपर के और सवाल

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

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

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

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

GhostPilot पाएं