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

ऐसा decorator आप कैसे लिखेंगे जो खुद अपने arguments लेता हो?

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

छोटा जवाब

आप एक तीसरी लेयर जोड़ते हैं। बाहरी फंक्शन decorator के arguments लेती है और असली decorator लौटाती है, जो फंक्शन लेकर एक wrapper लौटाता है जो उसे कॉल करता है। wrapper पर functools.wraps लगाएं ताकि नाम, docstring और signature की जानकारी बची रहे। जैसे एक retry decorator बाहरी लेयर पर attempts की गिनती लेता है और wrapper लूप चलाता है।

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

Decorators परखते हैं कि आप फंक्शन को वैल्यू की तरह बरतने और स्टेट पर closure बनाने में सहज हैं या नहीं। arguments वाला वर्जन मुश्किल इसलिए है कि बोलते हुए तीन लेयर संभालनी पड़ती हैं। इंटरव्यूअर functools.wraps भी सुनना चाहते हैं, क्योंकि उसे भूलने से introspection, help आउटपुट और फंक्शन के नाम पर टिकी हर चीज टूटती है, जो routes या tasks रजिस्टर करने वाले frameworks में असली दिक्कत बनती है।

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

  • तीनों नेस्टेड लेयर क्रम से बताएं।
  • बताएं कि हर लेयर क्या लेती है और क्या लौटाती है।
  • functools.wraps और उसकी अहमियत बताएं।
  • इसे किसी ऐसे decorator से जोड़ें जो आपने सच में लिखा हो।

उदाहरण जवाब

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

तीन लेयर, और मैं उन्हें क्रम से बोलकर कहता हूं ताकि गड़बड़ न हो। सबसे बाहरी फंक्शन configuration लेती है, मान लीजिए retries की संख्या। वह decorator लौटाती है, जो target फंक्शन लेता है। वह wrapper लौटाता है, जो star args और star star kwargs लेकर कॉल के इर्द गिर्द काम करता है और नतीजा लौटाता है। मैं हमेशा wrapper पर functools.wraps लगाता हूं, वरना सजाया हुआ फंक्शन हर जगह खुद को wrapper बताता है, और Flask या Celery खुशी खुशी एक ही नाम से दो routes रजिस्टर करके उलझाने वाले तरीके से फेल हो जाएंगे। सबसे ज्यादा बार मैंने exponential backoff वाला retry लिखा है, कमजोर upstream calls के लिए: तीन कोशिशें, हर बार दोगुना होता इंतजार, और आखिरी पर एक्सेप्शन दोबारा उठाना। एक उपयोगी सुधार यह है कि फंक्शन सीधे भी स्वीकार कर लें, ताकि यह parentheses के साथ और बिना, दोनों तरह चले, हालांकि सच कहूं तो मैं आम तौर पर parentheses जरूरी रखता हूं क्योंकि उस branching logic में साफगोई जितनी जाती है उतनी मिलती नहीं।

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

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

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

  • उस decorator को async फंक्शन पर कैसे चलाएंगे?
  • functools.wraps असल में क्या कॉपी करता है?
  • class आधारित decorator कब बेहतर होगा?

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

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

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

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

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

GhostPilot पाएं