process एक अलग थलग execution unit है जिसका अपना virtual address space होता है; thread process के अंदर scheduling की एक इकाई है जो वही address space अपने साथियों के साथ बांटती है। threads बनाना सस्ता है और वे सीधे डेटा साझा कर सकते हैं, और ठीक इसीलिए उन्हें locks चाहिए। processes महंगे पड़ते हैं और उन्हें साफ साफ interprocess communication चाहिए, लेकिन एक में crash या मेमोरी बग दूसरे को खराब नहीं कर सकता।
इंटरव्यूअर यह क्यों पूछते हैं
concurrency की हर बातचीत की नींव यही है, और इंटरव्यूअर इससे देखते हैं कि आपका mental model कितना गहरा है। उन्हें memory isolation वाली बात चाहिए, लागत का फर्क चाहिए, और उसका नतीजा भी: shared memory यानी shared mutable state यानी synchronization। अगर आप इसे इससे जोड़ दें कि आपका runtime असल में काम कैसे schedule करता है तो और अच्छा, क्योंकि वही तय करता है कि threads से आपको कुछ फायदा होगा भी या नहीं।
अपना जवाब कैसे स्ट्रक्चर करें
- address space पर टिकिए: अलग थलग बनाम साझा।
- बनाने की लागत और context switch की लागत की तुलना कीजिए।
- synchronization और crash isolation पर इसका नतीजा निकालिए।
- इसे इससे जोड़िए कि आपकी भाषा का runtime काम कैसे schedule करता है।
उदाहरण जवाब
जो फर्क मायने रखता है वह मेमोरी का है। हर process को अपना address space मिलता है, तो एक का crash होना या किसी pointer पर उल्टा सीधा लिख देना बाकियों को नहीं गिराता, लेकिन वे आपस में सिर्फ pipes, sockets या जान बूझकर बनाए गए shared memory segment से बात कर सकते हैं। threads एक ही process के अंदर रहते हैं और heap साझा करते हैं, तो उनके बीच डेटा भेजना बस एक pointer है, जो तेज है और ठीक इसीलिए आपको locks चाहिए। बनाने की लागत भी इसी लाइन पर चलती है: thread बनाना सस्ता है, process fork करना नहीं। व्यवहार में मैं अपनी रणनीति runtime से तय करने देता हूं। Python में CPU bound काम कई processes पर जाता है, क्योंकि global interpreter lock threads को समानांतर में bytecode चलाने नहीं देता, जबकि IO bound काम threads या async पर ठीक चलता है। Go या Java में मैं पहले threads या goroutines की तरफ जाऊंगा। इसे उल्टा कर देने से ही ऐसा होता है कि आठ worker threads एक ही interpreter के पीछे कतार में खड़े रहते हैं और आपको समझ नहीं आता कि मशीन खाली क्यों बैठी है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- context switch के दौरान असल में होता क्या है?
- आप threads की जगह पूरी तरह async IO कब चुनेंगे?
- thread pool आपकी बताई लागत से कैसे बचता है?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें