2010-05-17 15 views
20

मैं हाल ही में बहुत से .NET प्रोग्रामर का साक्षात्कार कर रहा हूं और मैंने उनसे मुलाकात नहीं की है जो जानता है कि आईडीस्पोज़ेबल क्या है या इसका क्या उपयोग किया जाता है। क्या यह सचमुच अनुचित है कि 4-6 साल के अनुभव वाले व्यक्ति को यह पता चल जाए?साक्षात्कार प्रश्न: क्या समझने में मुश्किल है?

+2

संबंधित, लेकिन थोड़ा अलग नोट पर, अक्सर मुझे उम्मीदवार के लिए "निपटान पैटर्न" का वर्णन करने के लिए साक्षात्कार में पूछा जाता है। जबकि मुझे पता है और निपटान पैटर्न का उपयोग किया है, मुझे पता है कि यह एक डेवलपर की गुणवत्ता या गहराई का उपयोगी संकेतक नहीं है। आंशिक रूप से क्योंकि यह ऐसा कुछ है जिसे आप केवल * कार्यान्वित कर रहे हैं * आईडीस्पोजेबल (बनाम * * इसका उपयोग करके - पन इरादा), और आंशिक रूप से क्योंकि यह किसी भी तरह का एक अच्छा पैटर्न नहीं है। – hemp

उत्तर

32

नहीं, क्षमा करें। अगर उन्हें IDisposable नहीं पता है, तो वे .NET में ऑब्जेक्ट जीवनकाल को नहीं समझते हैं, इसलिए यह मानना ​​सुरक्षित है कि उन्हें पता नहीं है कि GC काम करता है। किसी ऐसे व्यक्ति के लिए जो 4-6 साल का अनुभव दावा करता है, वह या तो "ड्रैग-एंड-ड्रॉप" डेवलपर या झूठा है। किसी भी तरह से, कोई किराया नहीं।

+12

ठीक है, उसके पास पहले साल का अनुभव 4-6 बार हो सकता है :) – kemiller2002

+3

@ केविन: आपने सिर पर नाखून मारा। काम करने वाले (लेकिन बुरी तरह लिखित) सॉफ़्टवेयर लिखने के बारे में जानने की आवश्यकता के मुकाबले बहुत से प्रोग्रामर कई वर्षों तक सीखते हैं। –

+1

-1, यह उत्तर सिर्फ यह मानता है कि डेवलपर को IDISposable नहीं पता है, वह – RollRoll

8

मुझे ऐसा नहीं लगता। यदि आप समझ में नहीं आ रहे हैं कि IDISposable क्या है, तो using कथन का उपयोग कब करें, आप उचित तरीके से कैसे समझ सकते हैं?

मेरा अनुमान है कि बहुत से लोग कथन का उपयोग करने में कुछ कोड डालना चाहते हैं, लेकिन यह नहीं जानते कि क्यों डरावना है।

+4

कार्गो पंथ प्रोग्रामिंग हर जगह होता है। हमें आश्चर्य नहीं होना चाहिए कि यह .NET के साथ भी होता है। – Oded

+1

ओह मुझे गलत मत समझो, मैं इससे आश्चर्यचकित नहीं हूं। जब आप कोड देखते हैं तो आपको थोड़ा परेशान होता है और खुद से पूछना पड़ता है "क्या उन्हें वास्तव में ऐसा करने का मतलब था, या ऐसा किया गया था, क्योंकि उन्हें यह नहीं पता था?" – kemiller2002

+0

@ ओडेड, मुझे एलओएल करना पड़ा - बहुत से लोग नहीं जानते कि एक कार्गो पंथ क्या है ... – code4life

2

मुझे आश्चर्य है कि IDisposable का ज्ञान बहुत कम है। जब भी आपके पास कोई संसाधन हो जो बंद होना चाहिए, और आप उपयोग कथन का उपयोग नहीं करते हैं, तो आपको IDISposable का उपयोग करना होगा।

+4

दरअसल, आपको उस वर्ग का उपयोग करना होगा जो * लागू * आईडीस्पोज़ेबल है। और चूंकि मैंने कभी भी देखा है या इस्तेमाल किया है कि अधिकांश डिस्पोजेबल अपने अंतिम रूप में खुद को निपटाता है, इसे निपटाना भूलना संभव है() इसे, कभी नोटिस नहीं, और कोई समस्या नहीं है। – cHao

2

आज नौकरी साक्षात्कार के बाद मेरी इच्छा है कि मुझे ऐसा प्रश्न पूछा गया हो! सभी प्रोग्रामर को IDisposable के बारे में पता होना चाहिए। using कथन के कारण यह समझने के लिए तर्कसंगत रूप से सबसे महत्वपूर्ण इंटरफ़ेस है।

मुझे यह असंभव लगता है कि 4-6 साल के अनुभव वाले प्रोग्रामर को इसके बारे में पता नहीं है।

7

मैं उम्मीदवारों को उस स्तर के अनुभव के साथ पहचानने के लिए उम्मीद कर सकता हूं। हालांकि, यह एक जटिल विषय है, यदि आप सभी विवरणों में खोदना चाहते हैं। Joe Duffy wrote a rather elaborate post on the subject some years ago। मैं उम्मीद नहीं करता कि सभी डेवलपर्स उस पोस्ट में सभी गॉरी विवरणों को कवर करने में सक्षम होंगे।

+0

मैं सिर्फ बुनियादी समझ के बारे में बात कर रहा हूं, मैं इस बात से सहमत हूं कि आपको साक्षात्कार संदर्भ में डफी के पद के बारे में बात करने में सक्षम नहीं होना चाहिए। –

1

हां, यह अनुचित है। कॉलेज युग स्तर + 3 से 5 साल (हमेशा पसंदीदा उम्मीदवार) के कुछ प्रोग्रामर ने कभी भी "अप्रबंधित संसाधन" जैसा दिखने के लिए शुद्ध Win32 कोड लिखा है। यह आमतौर पर कभी भी अपने कॉलेज के वर्षों में नहीं आता है, जावा आजकल शिक्षण भाषा है, एक ऐसी भाषा जिसमें समान पैटर्न नहीं है।

बड़ी संख्या में .NET प्रोग्रामर हैं जिन्होंने वर्षों के लिए .NET कोड लिखा है और के बिना उत्पादन कोड भेज दिया है कुछ भी निपटाना। मैं अन्य साक्षात्कार के सवालों की सिफारिश करता हूं:

  • जावा को IDISposable पैटर्न की आवश्यकता क्यों नहीं है?
  • .NET प्रोग्रामर कभी भी कुछ निपटाने के साथ क्यों नहीं निकलते हैं?

रोटे प्रोग्रामिंग की बजाय अंतर्दृष्टि के लिए परीक्षण। दूसरे साक्षात्कार के लिए शायद अधिक उपयुक्त?

+2

मैं एक डेवलपर प्रदान करूंगा जिसका प्राथमिक अनुभव अन्य भाषाओं से आता है, वह पहचानने योग्य नहीं हो सकता है, लेकिन इसका मतलब यह भी है कि वे ** ** (अभी तक) एक सक्षम .NET डेवलपर नहीं हैं। भर्ती मानदंड के रूप में इस्तेमाल किया जाना चाहिए या नहीं, एक पूरी तरह से अलग विषय है। कोई भी जो .NET के अनुभव के "वर्षों" का दावा करने का दावा करता है, जो कचरा संग्रह की मूल बातें नहीं समझता है, खासकर जब .NET नौकरियों के लिए आवेदन करते हैं, तो .NET की सतह की बहुत समझ है। इसलिए, वे या तो अपने अनुभव को अतिरंजित कर रहे हैं, या संभवतः गुणवत्ता डेवलपर जोनाथन की तलाश नहीं है। – hemp

+0

मैं ऐसे अभ्यर्थियों को किराए पर लेता हूं जिनके पास वास्तविक जीवन समस्या का अनुवाद एल्गोरिदम में अनुवाद करने के लिए सहज घोड़े की भावना है। बुकी ज्ञान कभी भी एक समस्या नहीं है, आसानी से कोड समीक्षा द्वारा कवर किया जाता है। घोड़े की भावना और अनुभव कमजोर जुड़े हुए हैं। –

+1

एक .NET प्रोग्रामर जिसने कभी निपटान नहीं किया है वह एक प्रोग्रामर भी होगा जिसने कभी डेटाबेस या फ़ाइल एक्सेस का सामना नहीं किया है। वे दोनों एक निश्चित नो-किराया हैं जहां मैं काम करता हूं। –

13

यह किसी IDisposable को समझने के लिए उम्मीद करना अनुचित नहीं है, लेकिन मैं यह भी देखा है कि यहाँ स्टैक ओवरफ़्लो पर, IDisposable -themed सवालों के घटित होने की उनकी आवृत्ति के मामले में केवल Linq सवाल से पीछे नहीं हैं। यह स्पष्ट रूप से स्पष्ट है कि बहुत कम प्रोग्रामर वास्तव में इसके बारे में सबकुछ समझते हैं, और मैं ईमानदारी से यह सुनिश्चित नहीं करता कि क्यों; यह नहीं हो सकता है कि वे सभी अयोग्य हैं, मुझे लगता है कि यह सिर्फ इतना है कि इस पर बहुत कम शिक्षा है।

हम में से जो लोग डेल्फी या C++ से आया था और अतीत में मैनुअल संसाधन प्रबंधन करने के लिए पड़ा है के लिए, यह blindingly स्पष्ट है, लेकिन लोग हैं, जो जावा या पायथन या यहाँ तक कि VB में सीखा है, इतना नहीं के लिए। और यदि आप किसी ऑब्जेक्ट को Dispose भूल जाते हैं तो आपको कभी भी कंपाइलर चेतावनी नहीं मिलेगी; यदि आप .NET प्रोग्रामिंग के रूप में आत्म-सिखाए जाते हैं, तो आप वास्तव में एक समस्या के बिना वर्षों तक आसानी से जा सकते हैं।

कि मन में साथ

तो, मैं तुरंत नहीं किसी एक साक्षात्कार में विफल हो जाएगा अगर वे अर्थ और IDisposable का समुचित उपयोग समझ में नहीं आया, लेकिन मैं इसे एक लाल झंडा है, तो कई अन्य चीजों की तरह विचार करेगा । यह लगभग उतना ही बुरा नहीं है (उदाहरण के लिए) एक पेड़ की संरचना को पार करने या FizzBuzz लिखने में असमर्थ होने के बारे में नहीं जानते।

मुझे लगता है कि यह पूछने के लिए एक अच्छा सवाल है, और अगर किसी ने इससे पहले कभी नहीं सुना था, तो शायद मैं एक बहुत ही त्वरित स्पष्टीकरण देता हूं और फिर एक अनुवर्ती प्रश्न पूछता हूं: ".NET कचरा कलेक्टर केवल प्रबंधित कर सकता है मेमोरीIDisposable आपको अन्य प्रकार के संसाधनों को स्पष्ट रूप से मुक्त करने देता है। क्या आप इस श्रेणी में आने वाले किसी भी संसाधन के बारे में सोच सकते हैं? " यदि वे का उत्तर नहीं दे सकते हैं तो प्रश्न या तो फिर मुझे चिंता होगी, क्योंकि यह न केवल .NET Framework में एक विशिष्ट इंटरफ़ेस का अज्ञानता बल्कि सामान्य रूप से संसाधन प्रबंधन का संकेत देगा। यहां तक ​​कि यदि आपको स्कूल में जावा सिखाया गया था, तो आपको यह समझना चाहिए कि आपको खोलने वाली फ़ाइलों और कनेक्शन को बंद करने की आवश्यकता है।

एक और लाल झंडा, शायद एक बड़ा भी, अगर कोई कहता है कि आपको को using ब्लॉक में डालने की आवश्यकता है लेकिन यह समझा नहीं सकता है कि नियम (यानी फैक्ट्री विधियों) के किसी अपवाद को क्यों सूचीबद्ध या सूचीबद्ध किया गया है। यह मेरे लिए बदतर है क्योंकि यह कार्गो-पंथ प्रोग्रामिंग प्रवृत्तियों का संकेत हो सकता है।

तो सवाल पूछते रहें, लेकिन शायद आपके जवाबों को गुस्सा करें। साक्षात्कार तुरंत समाप्त न करें अगर कोई इसका जवाब नहीं दे सकता है। इस बात पर विचार करें कि एक .NET प्रोग्रामर वास्तव में में है जो इसे लिखने के लिए सीखने के लिए (बग्गी) सॉफ़्टवेयर लिखने के लिए है।

संबंधित मुद्दे