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

आपको ऐसी सर्विस मिली है जिसमें कोई टेस्ट नहीं है और आपको उसका core logic बदलना है। आप इसे कैसे संभालेंगे?

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

छोटा जवाब

बदलने से पहले मौजूदा व्यवहार को बांध दीजिए। किसी स्थिर सीमा पर characterization tests लिखिए, असली inputs देकर वही assert कीजिए जो कोड आज करता है, बग समेत, ताकि आपके पास बदलाव पकड़ने वाला जाल हो। फिर उन टेस्ट को हरा रखते हुए छोटे छोटे कदमों में refactor कीजिए, और जिस लॉजिक को छूना है उसे टेस्ट होने लायक चीज में निकाल लीजिए। जब वह जोड़ बन जाए तभी व्यवहार बदलिए, और हर बदलाव के साथ अपना टेस्ट आए।

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

ज्यादातर इंजीनियरिंग उस कोड पर होती है जो आपने नहीं लिखा, और इससे पता चलता है कि आप सीधे घुस जाते हैं या पहले सुरक्षा बनाते हैं। इंटरव्यूअर characterization tests सुनते हैं, स्थिर सीमा पर टेस्ट करने की बात सुनते हैं, न कि उस implementation का unit test जिसे आप मिटाने वाले हैं, और refactoring को व्यवहार के बदलाव से अलग रखने की बात, ताकि कुछ टूटे तो तुरंत पता चले कि दोनों में से किसने तोड़ा।

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

  • बिना जाल के बिना टेस्ट वाले लॉजिक को छूने से साफ मना कीजिए।
  • पहले API की सीमा पर characterization tests लिखिए।
  • refactoring को व्यवहार के बदलाव से अलग रखिए।
  • जांच के लिए असली प्रोडक्शन डेटा इस्तेमाल कीजिए।

उदाहरण जवाब

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

जिस लॉजिक की मैं जांच नहीं कर सकता उसे मैं बदलता नहीं, तो पहला कदम जाल है। मैं सबसे ऊंची स्थिर सीमा पर characterization tests लिखता हूं, आम तौर पर HTTP handler या किसी service entry point पर, और वही assert करता हूं जो कोड अभी कर रहा है, उन चीजों समेत जिन पर मुझे बग का शक है। मकसद correctness नहीं, बदलाव पकड़ना है। अगर मेरे पास प्रोडक्शन का एक्सेस है तो मैं कुछ सौ असली request और response जोड़े पकड़ लेता हूं, क्योंकि हाथ से बनाए गए inputs अजीब मामलों को छोड़ देते हैं और तोड़ते वही अजीब मामले हैं। फिर मैं टेस्ट पूरे रास्ते हरे रखते हुए छोटे कदमों में refactor करता हूं, और जिस लॉजिक को सच में छूना है उसे ऐसे फंक्शन में खींच लाता हूं जिसे मैं सीधे बुला सकूं। तभी मैं व्यवहार बदलता हूं, और हर बदलाव के साथ एक असली टेस्ट आता है और यह फैसला भी कि पुराना व्यवहार जानबूझकर था या नहीं। एक पुरानी pricing सर्विस में मैंने ठीक यही किया और पकड़े गए ट्रैफिक ने दो rounding रास्ते उजागर कर दिए जो आपस में मेल नहीं खाते थे, जिनके बारे में किसी को पता ही नहीं था। ऐसी चीजें जाल के साथ मिलती हैं और उसके बिना खत्म हो जाती हैं।

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

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

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

  • जिस बग पर अब कस्टमर निर्भर हो चुके हैं उसे आप कैसे संभालेंगे?
  • क्या आप पुराना और नया रास्ता साथ साथ चलाएंगे?
  • refactor का दायरा फूलने से आप कैसे रोकेंगे?

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

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

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

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

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

GhostPilot पाएं