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

किसी endpoint का idempotent होना क्या मतलब रखता है, और आप एक create endpoint को idempotent कैसे बनाएंगे?

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

छोटा जवाब

idempotent endpoint एक ही इनपुट पर एक बार बुलाने और पांच बार बुलाने, दोनों में वही नतीजा देता है। GET, PUT और DELETE स्वाभाविक रूप से idempotent हैं; POST नहीं है। create endpoint को idempotent बनाने के लिए client से एक अनोखी idempotency key भिजवाइए, उस key को बनाए गए resource के साथ उसी transaction में स्टोर कीजिए, और हर दोहराव पर वही पुराना नतीजा लौटाइए।

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

retries हर जगह हैं: clients retry करते हैं, load balancers retry करते हैं, queues दोबारा भेजती हैं। इंटरव्यूअर जानना चाहता है कि आप at least once delivery मानकर डिजाइन करते हैं या यह मान लेते हैं कि हर request ठीक एक बार आएगी। वे idempotency key वाला pattern सुनना चाहते हैं, यह बारीकी कि key और write एक साथ commit होने चाहिए, और यह समझ कि जब दो एक जैसी requests एक ही पल में आ जाएं तो race बनती है।

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

  • idempotency को दोहराई गई calls के हिसाब से परिभाषित कीजिए, सिर्फ read only calls के नहीं।
  • समझाइए कि POST को मदद क्यों चाहिए और PUT को क्यों नहीं।
  • idempotency key का पूरा फ्लो शुरू से आखिर तक बताइए।
  • unique constraint के साथ एक साथ आए duplicate वाला केस भी कवर कीजिए।

उदाहरण जवाब

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

idempotent का मतलब है कि दो बार कॉल करने पर सिस्टम उसी हाल में रहता है जिस हाल में एक बार कॉल करने पर होता। PUT idempotent है क्योंकि आप आखिरी state बता रहे हैं; POST आम तौर पर नहीं है, क्योंकि हर कॉल का मतलब है एक और बनाओ। create endpoint के लिए मैं client से एक key बनवाता हूं, आम तौर पर UUID, और उसे header में भिजवाता हूं। सर्वर की तरफ मैं उस key को unique constraint वाली table में रखता हूं, और उसे resource के साथ उसी transaction में लिखता हूं, क्योंकि अगर ये दोनों commit अलग हो सकते हैं तो पूरी व्यवस्था सिर्फ सजावट है। अगर वही key दोबारा आती है, तो मैं उसे ढूंढकर पुराना response पुराने status के साथ लौटा देता हूं। जो हिस्सा लोग छोड़ देते हैं वह है एक साथ आने वाला केस, जहां दो retries एक ही मिलीसेकंड में आ जाती हैं। unique index उसे संभाल लेता है: दूसरा insert फेल होता है, मैं उस violation को पकड़ता हूं और error देने के बजाय जीतने वाली row पढ़ लेता हूं। मैंने यह एक payments endpoint के लिए बनाया था, जब एक network झटके के दौरान हमने किसी से दो बार चार्ज ले लिया था।

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

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

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

  • idempotency keys को आप कितने समय तक रखेंगे?
  • दोबारा भेजी गई request पर आप कौन सा status code लौटाते हैं?
  • अगर retry में key वही हो लेकिन body अलग हो तो क्या होगा?

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

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

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

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

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

GhostPilot पाएं