deadlock के लिए चार शर्तें एक साथ चाहिए: mutual exclusion, hold and wait, कोई preemption नहीं, और circular wait। इनमें से कोई एक तोड़ दीजिए और वह हो ही नहीं सकता। व्यवहार में circular wait इस तरह टूटता है कि locks हमेशा एक ही तय क्रम में लिए जाएं, और साथ में lock timeouts रखिए ताकि अटका हुआ transaction लटकने के बजाय जल्दी फेल हो जाए। transactions छोटे रखना और rows को एक ही क्रम में छूना ही आपको ज्यादातर रास्ता तय करा देता है।
इंटरव्यूअर यह क्यों पूछते हैं
यह जांचता है कि आप थ्योरी जानते हैं और उसे ऐसे नियम में बदल सकते हैं जिसे टीम सच में निभा सके। इंटरव्यूअर circular wait वाली समझ और ordering वाला फिक्स चाहते हैं, साथ में यह पहचान कि deadlock डेटाबेस में आम हैं, सिर्फ threaded कोड में नहीं। lock timeouts, backoff के साथ retry, और यह बात कि डेटाबेस खुद एक शिकार चुनकर उसे abort कर देता है, प्रोडक्शन का तजुर्बा दिखाती है।
अपना जवाब कैसे स्ट्रक्चर करें
- वे चार शर्तें गिनाइए जिनका एक साथ होना जरूरी है।
- उनमें से वह चुनिए जिसे व्यवहार में तोड़ा जा सकता है: circular wait।
- lock का एक तय क्रम ठोस उदाहरण के साथ बताइए।
- सुरक्षा जाल के तौर पर timeouts और retries जोड़िए।
उदाहरण जवाब
deadlock के लिए चार चीजें एक साथ चाहिए, और जिस पर मेरा असल में काबू है वह circular wait है। तो मैं यह नियम लागू करता हूं कि हर code path locks एक ही क्रम में ले। अगर कोई transfer दो accounts को छूता है, तो मैं account id से sort करके पहले छोटे वाले पर lock लेता हूं, और फिर इससे फर्क नहीं पड़ता कि पैसा किस दिशा में जा रहा है, कोई cycle बन ही नहीं सकता। दूसरा हथियार समय है। मैं transactions छोटे रखता हूं, इसलिए किसी payment provider को नेटवर्क कॉल करते वक्त मैं row lock पकड़े नहीं रहता, जो सौ मिलीसेकंड के transaction को पांच सेकंड का बनाने का जाना पहचाना तरीका है। फिर मैं lock timeout सेट करता हूं और jitter के साथ retry करता हूं, क्योंकि देर सबेर डेटाबेस cycle पकड़ेगा, एक शिकार चुनेगा और उसे abort कर देगा, और मैं चाहूंगा कि वह रास्ता संभाला जाए, 500 बनकर बाहर न आए। Postgres में deadlock के लॉग दोनों statements का नाम बता देते हैं, और जिन दो मौकों पर मैंने उन्हें इस्तेमाल किया, दोनों बार फिक्स ordering ही था।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- डेटाबेस deadlock का पता कैसे लगाता है?
- livelock क्या है और वह इससे कैसे अलग है?
- क्या optimistic locking इस समस्या को पूरी तरह टाल देती?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें