ज्यादा वॉल्यूम वाले I/O के लिए asyncio, जहां आप एक ही थ्रेड में हजारों कनकरेंट इंतजार चाहते हैं; ऐसे I/O काम के लिए threads जहां सिर्फ blocking लाइब्रेरी उपलब्ध हैं; और CPU bound काम के लिए processes, जिसे असली कोर चाहिए। फैसला दो सवालों पर टिकता है: काम इंतजार करता है या कैलकुलेट करता है, और आपकी लाइब्रेरी async इंटरफेस देती है या नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
कनकरेंसी के फैसलों में जूनियर इंजीनियर हफ्ते गंवा देते हैं। इंटरव्यूअर पसंद नहीं, फैसला लेने का एक नियम सुनना चाहता है, साथ में हर मॉडल की कीमत की समझ: process की मेमोरी और serialization का खर्च, थ्रेड सेफ्टी और context switching, और यह कि एक लापरवाह blocking call पूरे event loop को रोक देती है। यह बताना कि ये आपस में मिलते भी हैं, जैसे asyncio के अंदर एक thread pool executor, व्यावहारिक अनुभव दिखाता है।
अपना जवाब कैसे स्ट्रक्चर करें
- पहले काम को इंतजार बनाम कैलकुलेशन में बांटें।
- हर हिस्से को एक कनकरेंसी मॉडल से जोड़ें।
- हर चुनाव की एक कीमत बताएं।
- अपने काम से एक ठोस उदाहरण दें।
उदाहरण जवाब
मेरा पहला सवाल हमेशा यही होता है कि काम इंतजार करता है या कैलकुलेट करता है, क्योंकि उसी जवाब से टूल तय होता है। नेटवर्क या डिस्क पर इंतजार का मतलब asyncio, बशर्ते client लाइब्रेरी सपोर्ट करती हों, क्योंकि एक event loop खुशी खुशी एक कोर पर दस हजार खुले सॉकेट संभाल लेता है और हर task की मेमोरी बहुत कम है। अगर सिर्फ blocking driver मिले तो मैं thread pool लेता हूं, क्योंकि सॉकेट रीड में खड़ा थ्रेड लॉक छोड़ देता है और लगभग कुछ भी खर्च नहीं करता। कैलकुलेशन का मतलब processes, या ऐसी native लाइब्रेरी जो खुद लॉक छोड़ती हो। जिस सर्विस पर मैंने काम किया, वहां एक ही request path में दोनों थे: एक async handler जो gather से छह इंटरनल APIs में फैलता था, और एक run_in_executor call जो एक पुरानी blocking SDK को लपेटती थी जिसे हम बदल नहीं सकते थे। इंटरव्यू में यह मेल बताने लायक है क्योंकि असली सिस्टम ज्यादातर मिले जुले होते हैं। जिस गलती पर मेरी नजर रहती है वह है किसी coroutine के अंदर भारी pandas transform डाल देना, क्योंकि तब लूप उसके चलने तक बाकी सब कुछ परोसना बंद कर देता है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- thread pool को स्केल करने पर सबसे पहले क्या टूटता है?
- processes के बीच स्टेट कैसे शेयर करते हैं?
- इस तस्वीर में task group कहां फिट होता है?
Python डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें