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

जो कोड डेटाबेस और किसी external API से बात करता है, उसे आप कैसे टेस्ट करते हैं?

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

छोटा जवाब

data layer को mock करने की जगह container में चल रहे असली डेटाबेस पर टेस्ट करें, क्योंकि ज़्यादातर बग queries, migrations और transactions में होते हैं जिन्हें कोई mock कह ही नहीं सकता। external APIs के लिए transport की सीमा पर mock करें, रिकॉर्ड की गई या stub की गई HTTP responses से, ताकि आपका अपना client कोड चले, और drift पकड़ने के लिए असली service पर कुछ contract tests रखें। हर टेस्ट को per test transactions या ताज़ा schemas से अलग रखें।

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

इंटरव्यूअर जानना चाहते हैं कि आपके टेस्ट सच में कोई regression पकड़ेंगे या नहीं। repository layer को mock करने से ऐसी suites बनती हैं जो पास होती रहती हैं जबकि production टूट जाता है, इसलिए वे असली डेटाबेस टेस्टिंग, सीमा स्तर के HTTP stubs और तीसरे पक्ष के बदलने पर उसे पकड़ने की योजना सुन रहे हैं। रफ्तार और अलगाव भी मायने रखते हैं, क्योंकि धीमी या डगमगाती suite को लोग छोड़ ही देते हैं, चाहे वह कितनी भी पूरी क्यों न हो।

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

  • सिद्धांत बताएं: mock प्रोसेस की सीमा पर करें, अपने ही कोड के भीतर नहीं।
  • container में असली डेटाबेस इस्तेमाल करें और टेस्ट्स के बीच अलगाव समझाएं।
  • तीसरे पक्ष के APIs को stub किए transport और contract जांच से संभालें।
  • रफ्तार और डगमगाहट पर बात करें ताकि लोग suite चलाते रहें।

उदाहरण जवाब

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

मेरा नियम है कि mock अपनी प्रोसेस के किनारे पर करूं, उसके अंदर नहीं। इसलिए डेटाबेस असली होता है, production वाले ही engine और version के साथ container में चलता है, और run की शुरुआत में migrations लागू होती हैं, जिसका मतलब है कि migration खुद भी हर बार टेस्ट हो जाती है। हर टेस्ट ऐसे ट्रांजैक्शन में चलता है जो roll back कर दिया जाता है, या जब commit करना ज़रूरी हो तो उसे अपना schema मिलता है, ताकि टेस्ट अलग रहें और समानांतर चल सकें। repository को mock करने से मुझे हरे टेस्ट मिलते जो कुछ साबित नहीं करते, क्योंकि असल में जो बग मैं भेजता हूं वे queries, constraints और transaction की सीमाओं में होते हैं। किसी external API के लिए मैं HTTP layer पर रिकॉर्ड की गई responses से stub करता हूं, ताकि मेरा client, मेरी retry logic और मेरी parsing सब असल में चलें; बस network पर नहीं जाता। रिकॉर्डिंग पुरानी पड़ जाती है, इसलिए मैं उनके sandbox पर एक छोटी contract suite भी समय समय पर चलाता हूं, हर pull request पर नहीं, ताकि किसी बदलाव की खबर मुझे रात तीन बजे के alert से नहीं बल्कि एक नाकाम job से मिले।

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

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

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

  • असली डेटाबेस आ जाने के बाद suite को आप तेज़ कैसे रखते हैं?
  • उस API से timeout जैसी नाकामी को आप कैसे टेस्ट करेंगे?
  • जो टेस्ट समय या क्रम पर निर्भर हों, उनका आप क्या करते हैं?

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

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

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

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

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

GhostPilot पाएं