Python डेवलपर इंटरव्यू सवाल

किसी release के बाद धीमी हुई Python सर्विस को आप कैसे profile करेंगे?

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

छोटा जवाब

कोड छूने से पहले यह संकरा करें कि समय जा कहां रहा है। release का diff देखें, tracing या timing metrics से धीमा endpoint ढूंढें, फिर उस path को cProfile या py-spy से profile करें, जो चलती हुई process को बिना restart किए sample कर सकता है। cumulative time देखकर जिम्मेदार कॉल ढूंढें, एक परिकल्पना बनाएं, एक चीज बदलें, और दोबारा मापें।

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

परफॉर्मेंस के सवाल मापने वालों को अंदाजा लगाने वालों से अलग करते हैं। इंटरव्यूअर एक तरीका देख रहा है: दोहराएं, मापें, अलग करें, एक चर बदलें, पुष्टि करें। वे टूल की सहजता भी चाहते हैं, खास तौर पर ऐसा sampling profiler जो चलती हुई प्रोडक्शन process से जुड़ सके, और यह समझ कि Python की ज्यादातर सुस्ती इंटरप्रेटर की नहीं, डेटाबेस या नेटवर्क के काम की निकलती है।

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

  • तय करें कि क्या बदला और समय कहां जा रहा है।
  • बताएं कि आप कौन सा profiler जोड़ेंगे और क्यों।
  • सिर्फ self time नहीं, cumulative time पढ़ें।
  • एक चीज बदलें और फर्क मापें।

उदाहरण जवाब

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

पहला सवाल यही है कि असल में बदला क्या, क्योंकि एक release मुझे संदिग्धों की छोटी सूची दे देता है। फिर मुझे राय नहीं, आंकड़े चाहिए, तो tracing spans या हर endpoint की timing बताती है कि कौन सा route बिगड़ा और समय डेटाबेस में जा रहा है, किसी upstream कॉल में, या खुद process में। अगर process में है तो py-spy पहली पसंद है क्योंकि वह चलते हुए container से जुड़कर बिना restart के sample करता है, तो मैं किसी बनावटी नहीं, असली प्रोडक्शन workload को profile कर सकता हूं। flame graph आम तौर पर बात साफ कर देता है। लोकल पर दोहराने लायक मामले के लिए मैं cProfile लेता हूं और cumulative time से सॉर्ट करता हूं, क्योंकि self time उस caller को छिपा देता है जो असल में जिम्मेदार है। एक चेतावनी: profiling खुद timing बदल देती है, इसलिए मैं उसके निरपेक्ष आंकड़ों पर कभी भरोसा नहीं करता, सिर्फ सापेक्ष आकार पर। फिर मैं ठीक एक चीज बदलकर दोबारा मापता हूं। पिछली बार दोषी एक नया serializer था जो हर row पर deep copy कर रहा था, और उस copy को हटाने से endpoint चार सौ मिलीसेकंड से नब्बे पर लौट आया।

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

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

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

  • py-spy, cProfile से कैसे अलग है?
  • समय की जगह मेमोरी profile कैसे करेंगे?
  • अगर regression सिर्फ लोड में दिखे तो क्या करेंगे?

Python डेवलपर के और सवाल

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

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

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

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

GhostPilot पाएं