क्या ये संक्षिप्त / अनुचित साक्षात्कार प्रश्न हैं जावा कॉन्सेप्ट के बारे में? [बन्द है]


12

यहां कुछ प्रश्न दिए गए हैं, जो मैंने हाल ही में साक्षात्कारकर्ताओं से पूछे हैं जो कहते हैं कि वे जावा कंसीडर को जानते हैं:

  1. "मेमोरी विजिबिलिटी" के खतरे को समझाइए - जिस तरह से जेवीएम उन वेरिएबल्स पर कुछ ऑपरेशंस को रीऑर्डर कर सकता है जो एक मॉनिटर द्वारा असुरक्षित नहीं हैं और घोषित volatileनहीं किए गए हैं, जैसे कि एक थ्रेड दूसरे थ्रेड द्वारा किए गए परिवर्तनों को नहीं देख सकता है। आमतौर पर मैं इसे कोड दिखाते हुए पूछता हूं कि यह खतरा कहां मौजूद है (उदाहरण के NoVisibilityलिए Goetz et al द्वारा "Java Concurrency in Practice" से Listing 3.1 में उदाहरण) और पूछना कि क्या गलत है।
  2. बताएं कि volatileघोषित किए गए वास्तविक चर को न केवल प्रभावित करता है volatile, बल्कि चर को बदलने से पहले चर द्वारा किए गए परिवर्तन को भी बदलता है volatile
  3. volatileइसके बजाय आप क्यों इस्तेमाल कर सकते हैं synchronized?
  4. के साथ एक शर्त चर को लागू करें wait()और notifyAll()। समझाएं कि आपको क्यों इस्तेमाल करना चाहिए notifyAll()। बताएं कि क्यों स्थिति चर को एक whileलूप के साथ परीक्षण किया जाना चाहिए ।

मेरा सवाल है - क्या ये उचित हैं या किसी ऐसे व्यक्ति से पूछने के लिए उन्नत हैं जो कहता है कि वे जावा कंसीडर को जानते हैं?

और जब हम इस पर होते हैं, तो क्या आपको लगता है कि जावा कंसर्ट में काम करने वाले किसी व्यक्ति से जावा कचरा संग्रह के बारे में उपरोक्त ज्ञान होना चाहिए?


4
मुझे लगता है कि मैं केवल "कौशल" के बजाय "याद तथ्यों" के मातम में जाने से बचने के बारे में चिंता कर रहा हूँ लगता है।
tylerl

5
ये प्रश्न किसी को एक जावा स्थिति में रखे जाने के लिए पूरी तरह से उचित लगते हैं जिन्हें उच्च स्तर की संगामिति की आवश्यकता होगी।
ऋग्वेद

2
यदि आप एक ऐसी स्थिति के लिए काम पर रख रहे हैं जिसे समवर्ती विकास की आवश्यकता है, तो ये केवल शुरुआत हैं। लेकिन मुझे आश्चर्य है कि अगर कोई आपके सवाल का जवाब notifyAll()"अगर मैं ओएस अनुसूचक के काम करने में विश्वास नहीं करता, तो मैं इसका उपयोग कैसे करता हूं? notify()"
kdgregory

2
मैं Q के बारे में juc Locks, डेटा स्ट्रक्चर्स, थ्रेड पूल और
अनसेफ

2
दूसरों ने प्रश्नों की जटिलता के बारे में बात की है। यह मानते हुए कि वे परियोजना के लिए प्रासंगिक हैं, कुछ सरल प्रश्न के साथ उन तक ले जाना सुनिश्चित करें और प्रश्न की इस पंक्ति को छोड़ दें यदि यह स्पष्ट हो जाता है कि उम्मीदवार अपनी गहराई से बाहर है - यह उनके समय और तुम्हारा समय बर्बाद करना है और ऊर्जा को बर्बाद कर देता है साक्षात्कार के। ऐसे सवाल पूछने का कोई मतलब नहीं है जिन्हें आप जानते हैं कि वे जवाब नहीं दे पाएंगे। सुनिश्चित करें कि अन्य विषयों पर समान गहराई में जाने के लिए तैयार रहें - सिर्फ इसलिए कि यहां कोई कमजोर है इसका मतलब यह नहीं है कि वे सक्षम नहीं हैं और अन्य शक्तियों के माध्यम से खुद को साबित करने में सक्षम हैं।
शॉन मैकसोमरेटिंग

जवाबों:


11

यह वास्तव में निर्भर करता है कि आप 2 साल के जावा अनुभव वाले उम्मीदवार से पूछ रहे हैं या 7 साल के जावा अनुभव वाले। एक वास्तुकार / तकनीकी नेतृत्व / वरिष्ठ के लिए वे उचित प्रश्न लगते हैं लेकिन एक कनिष्ठ और शायद एक मध्य-स्तर के लिए भी, वे थोड़े कठिन लगते हैं।

इसके अलावा आप निम्न-स्तरीय सिंक्रोनाइज़ेशन तंत्र के बारे में सवाल पूछ रहे हैं, जो कि java.util.concurrentवर्तमान दिन के जावा विकास में बदल दिया गया है ; इसके बजाय wait()/notify() ताले पसंद किए जाते हैं। आप देख सकते हैं कि प्रभावी जावा 2 संस्करण ने एक अध्याय को गिरा दिया है जिसने प्रतीक्षा / सूचना तंत्र को विस्तार से समझाया है, क्योंकि इसे उपयोगी नहीं माना गया था। इसके अलावा, कंटेनर ज्यादातर मामलों में उच्च स्तर पर मल्टीथ्रेडिंग संभालता है; EJB के तरीके प्रोग्रामर की किसी भी चिंता के बिना उदाहरण के लिए थ्रेड-सुरक्षित हैं (इसका मतलब यह नहीं है कि प्रोग्रामर को मल्टीथ्रेडिंग नहीं पता होना चाहिए)।

मैं वास्तव में देखता हूं कि मल्टीथ्रेडिंग एक प्रोग्रामिंग भाषा के उप-भाग के बजाय ऑपरेटिंग सिस्टम के एक उप-भाग के रूप में हैं। यह देखने के लिए कि क्या कोई व्यक्ति म्यूटेक्स, सेमाफोरस या शेड्यूलिंग के बारे में वास्तव में मल्टीथ्रेडिंग और समानांतर प्रोग्रामिंग प्रश्नों को समझता है, सबसे पहले और उसके बाद ही पूछा जाना चाहिए, एक विशेष प्रोग्रामिंग भाषा में कार्यान्वयन के बारे में विवरण।


2
+1 पर प्रतीक्षा करें () और सूचित करें () टिप्पणियां - हालांकि एक डेवलपर अच्छी तरह से संगोष्ठी में पारंगत है, जो इस स्थान में जावा की क्षमताओं के इतिहास और विकास को जान सकेगा (जावा 7 में एफएंडजे के लिए सभी तरह सहित)।
मार्टिज़न वेरबर्ग

@ M3th: मेरे द्वारा पूछे गए अंतिम व्यक्ति के पास 10 साल का जावा अनुभव था और उसने समवर्ती प्रोग्रामिंग को जानने का दावा किया था। lockबनाम पोस्ट करने के लिए धन्यवाद wait/notify- मुझे lockगोएट्ज पुस्तक के बारे में पता था, लेकिन यह महसूस नहीं हुआ कि अब इसे पुराने तरीके से पसंद किया गया था। मैं @Martijn से सहमत हूं, हालांकि इस स्तर के अनुभव वाले किसी व्यक्ति को पुराने दृष्टिकोणों के बारे में पता होना चाहिए। वैसे भी मुझे फिर से सवाल पूछने का मतलब नहीं है (क्योंकि मैंने पहले ही इसे उत्तर के रूप में चिह्नित किया है - आपके द्वारा :-)) लेकिन मुझे लगता है कि 10 साल के अनुभव वाले किसी व्यक्ति को उन सवालों का जवाब देने में सक्षम होना चाहिए, नहीं?
sparc_spread

1
@Martijn Verburg मैं आप दोनों से सहमत हूँ; एक अच्छा जावा डेवलपर (विशेष रूप से एक जो एस / वह जानता है कि संगामिति कहता है) को पता होना चाहिए कि प्रतीक्षा () / सूचना () का उपयोग कैसे करें; कम से कम जिज्ञासा के लिए कि वे ऑब्जेक्ट क्लास में क्यों दिखाई देते हैं।
m3th0dman

1
@sparc_spread एक प्रोग्रामर जो स्पष्ट रूप से अपने रिज्यूमे में बताता है कि वह जानता है कि जावा कंसीडर को उत्तर जानना चाहिए (कम से कम अंतिम 3)। अनुभव के स्तर के बारे में, जैसा कि मैंने कहा था, एक प्रोग्रामर को इमो करें जो दावा करता है कि आर्किटेक्ट / तकनीकी लीड / सीनियर डेवलपर बनना चाहता है और इसमें 5+ जावा अनुभव (बैकएंड, जेएसपी और एमवीसी फ्रेमवर्क नहीं है) को उत्तर जानना चाहिए। जब आप वास्तव में निम्न-स्तर की सुविधाओं की आवश्यकता होती है, तो lockबनाम के बारे wait/notifyमें पसंद करते हैं, लेकिन ज्यादातर मामलों में एक उच्च-स्तरीय विकल्प उपलब्ध होता है; ब्लॉकिंग क्यू एक विशेष रूप से उपयोगी है।
m3th0dman

14

क्या ये उचित हैं या किसी ऐसे व्यक्ति से पूछने के लिए उन्नत हैं जो कहता है कि वे जावा कॉन्सेप्ट को जानते हैं?

मैं कहूंगा कि वे अपेक्षाकृत उन्नत प्रश्न हैं। हालांकि वे इस अर्थ में "अनुचित" नहीं हैं कि वे ट्रिक प्रश्न नहीं हैं।

वास्तव में "निष्पक्षता" वास्तव में एक प्रासंगिक मानदंड नहीं है। आपको (एक साक्षात्कारकर्ता के रूप में) इस बारे में चिंता होनी चाहिए कि क्या सवाल और आपके उत्तर की व्याख्या उस स्थिति या पदों के लिए सर्वश्रेष्ठ उम्मीदवारों का चयन कर रही है, जिसके लिए आप साक्षात्कार कर रहे हैं। (या इसे किसी अन्य तरीके से रखने के लिए, क्या आप उन उम्मीदवारों को अस्वीकार कर रहे हैं जो आपको इन सवालों के सही जवाब नहीं देने के कारण वास्तव में अधिक विचार करना चाहिए ?)

और जब हम इस पर होते हैं, तो क्या आपको लगता है कि जावा कंसर्ट में काम करने वाले किसी व्यक्ति से जावा कचरा संग्रह के बारे में उपरोक्त ज्ञान होना चाहिए?

फिर, यह वास्तव में प्रासंगिक सवाल नहीं है। जो सवाल आपको खुद से पूछना चाहिए वह यह है कि क्या आपको किसी ऐसे व्यक्ति की आवश्यकता है जिसे जावा कचरा संग्रह का अच्छा ज्ञान हो?


इस प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मैं वास्तव में चाहता हूं कि मैं उत्तर के रूप में दोनों को चिह्नित कर सकता था। आपने यहां मदद के लिए जो समय निकाला, मैं उसकी सराहना करता हूं।
3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.