हर अच्छे जावा / जावा ईई डेवलपर के सवालों का जवाब देने में सक्षम होना चाहिए? [बन्द है]


138

मैं हर अच्छे नेट प्रश्नों के माध्यम से जा रहा था ।

आपको क्या लगता है कि एक अच्छे जावा / जावा ईई प्रोग्रामर को क्या जवाब देने में सक्षम होना चाहिए?

मैं इस प्रश्न को समुदाय विकी के रूप में चिह्नित कर रहा हूं क्योंकि यह उपयोगकर्ता विशिष्ट नहीं है और इसका उद्देश्य बड़े पैमाने पर प्रोग्रामिंग समुदाय की सेवा करना है।

कुछ आश्चर्यजनक प्रतिक्रियाओं के लिए आगे देख रहे हैं।

संपादित करें : कृपया प्रश्नों के उत्तर भी दें, जैसा कि टिप्पणियों में सुझाया गया है, ताकि लोग भाषा के संबंध में कुछ नया सीख सकें।


3
यह प्रश्न .Net प्रश्न के समान प्रतिक्रिया पाने में सक्षम क्यों नहीं है?
राहेल

5
अच्छा भगवान :), .Net प्रश्न एक साल पहले पूछा गया था और यह एक दिन का है और आप प्रतिक्रियाओं की तुलना कर रहे हैं।
zapping

1
आप अपने प्रश्न को संपादित क्यों नहीं करते हैं और वाक्य जोड़ें "कृपया अपने स्वयं के प्रश्न का उत्तर दें।", ताकि लोग कुछ सीख भी सकें (नया)।
r3zn1k

9
"एंटरप्राइज एडिशन के लिए वर्तमान संक्षिप्त नाम क्या है";)
बोहोओ

17
अल्बर्ट आइंस्टीन का किस्सा .. आइंस्टीन के सहयोगियों में से एक ने उनसे एक दिन उनका टेलीफोन नंबर मांगा। आइंस्टीन एक टेलीफोन निर्देशिका के लिए पहुंचे और इसे देखा। "आपको अपना नंबर याद नहीं है?" आदमी ने पूछा, चौंका। "नहीं," आइंस्टीन ने उत्तर दिया। "मुझे कुछ ऐसा क्यों याद रखना चाहिए जिसे मैं आसानी से एक किताब से प्राप्त कर सकता हूं?" क्या मैं सबके पास पहुँच रहा हूँ?) हाँ, मुझे पता है, आइंस्टीन एक साक्षात्कारकर्ता का सामना नहीं कर रहा था ...
एस.बी.

जवाबों:


83

हैशकोड () और बराबरी () के बीच क्या संबंध है? इन विधियों का महत्व क्या है? उन्हें लागू करने के लिए क्या आवश्यकताएं हैं?


हां, प्रत्येक देव को कम से कम समस्याओं के बारे में पता होना चाहिए, भले ही आप उन्हें व्यवहार में आवश्यक रूप से सामना नहीं करेंगे।
9

3
बराबर () और हैशकोड
pramodc84

70

सेट, मानचित्र और सूची में क्या अंतर है?

मैं अभी भी चकित हूं कि एक टेलीफोन साक्षात्कार में कितने लोग इसे नहीं जानते हैं।


8
दी गई है, लेकिन यह 20 सेकंड की बात है जो नेट ("जावा कलेक्शन फ्रेमवर्क") पर डॉक्स को देख रहा है, इसलिए बहुत से सार्थक लोग इसे स्मृति में रखने से परेशान नहीं हो सकते हैं।
मनुर

127
नहीं, खेद है कि खरीद नहीं है, यह बुनियादी ज्ञान है जो हर डेवलपर को पता होना चाहिए।
जॉन

15
मैं कहूंगा कि सॉफ्टवेयर में नौकरी के बारे में सोचने वाले किसी व्यक्ति को न केवल यह समझने की जरूरत है, बल्कि विभिन्न प्रकार की सूचियों (ArrayList / LinkedList) के बीच अंतर भी है। जरूरी नहीं कि सबसे अच्छा कार्यान्वयन या यहां तक ​​कि ओ (एन) संकेतन भी हो, लेकिन यह समझने की आवश्यकता है कि कब क्या उपयोग करना सही है।
गोवेंजो

11
+1 @Jon: मैं आमतौर पर विचार के स्कूल "विवरण याद करने की आवश्यकता नहीं" की सदस्यता लेता हूं, लेकिन यदि आप उन बुनियादी इंटरफेस के बीच बुनियादी वैचारिक मतभेदों को भी नहीं जानते हैं, तो आप निश्चित रूप से एक अच्छे जावा डेवलपर नहीं हैं।
जोआचिम सॉर

13
@ जोशीम: आप अपने बयान से "जावा" शब्द को छोड़ सकते हैं। सेट, मैप्स और लिस्ट बुनियादी एल्गोरिथम धारणाएँ हैं।
CPerkins

44

क्या एक इंटरफ़ेस कई इंटरफेस बढ़ा सकता है?

अधिकांश लोग "नहीं" का जवाब देते हैं, क्योंकि वे जानते हैं कि जावा में कई विरासत नहीं हैं। लेकिन एक इंटरफ़ेस अभी भी कई इंटरफेस का विस्तार कर सकता है (लेकिन एक वर्ग कई वर्गों का विस्तार नहीं कर सकता है)। इससे हीरे की समस्या नहीं होती है।

इस सवाल का जवाब "नहीं" है, तो साक्षात्कारकर्ता पूछना चाहिए "क्यों हैं यह मना किया जा सकता है?"। फिर आप इसके बारे में सोचना शुरू करते हैं और आपको महसूस करना चाहिए कि इसके साथ कोई समस्या नहीं है।

तो आपने साक्षात्कार में कुछ (अपने आप से) सीखा और आपने साक्षात्कारकर्ता को दिखाया कि आप कक्षाओं, वस्तुओं, विरासत, बहुरूपता आदि के बारे में तर्क करने में सक्षम हैं, यह वास्तव में एक उम्मीदवार की तुलना में बहुत बेहतर है जो दिल से जवाब जानता है, लेकिन ऐसा नहीं करता है समझे क्यों


मैंने हीरे की विरासत की समस्या के साथ कल एक सी ++ व्याख्याता को भ्रमित किया, वह इसके बारे में बिल्कुल भी नहीं जानता था :)
एस्को

2
मुझे एक बार यह सवाल पूछा गया था और मैंने "नहीं" का जवाब दिया। मुझे लगता है कि यह तनाव था और मैंने बहुत तेजी से जवाब दिया। इसकी हमेशा उन चीजों के जवाब जानना मुश्किल होता है जिनका आप कभी उपयोग नहीं करते हैं।
14

1
मैं पाठ में थोड़ा और विस्तार करता हूं। "नहीं" का उत्तर देना वास्तव में ठीक है। इस सवाल के साथ क्या अच्छा है कि यह ओओ अवधारणाओं के बारे में चर्चा को ट्रिगर करने का एक अच्छा तरीका है ans देखें कि उम्मीदवार कैसे कारण है। यदि साक्षात्कारकर्ता आप अभी "हाँ" सुनना चाहते थे तो यह प्रभावी रूप से व्यर्थ है। इंटरफेस की बहु विरासत वास्तव में दिल से ज्ञात होने के लिए सामान्य नहीं है।
ewernli

3
इस सवाल का एक पेचीदा संस्करण है "क्या जावा मल्टीपल इनहेरिटेंस का समर्थन करता है?" जिसका उत्तर केवल "इंटरफेस" के लिए है
nsfyn55

23

का प्रयोग अंतिम विधि कॉल में कीवर्ड। उदाहरण के लिए, विधि कोड के लिए अंतिम क्वालीफायर का उपयोग करने के बावजूद नीचे दिए गए कोड में विधि परीक्षण कोई संकलित त्रुटि क्यों नहीं देता है ।

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}


मैं वास्तव में इस सवाल का जवाब जानना पसंद करूंगा। यह बहुत दिलचस्प लगता है।
राहेल

@ राचल: इसका कारण यह है कि finalकीवर्ड Nameऑब्जेक्ट पर लागू होता है , न कि nameकक्षा के क्षेत्र मेंName
ryanprayogo

20
ठीक है, पैरामीटर nअंतिम के रूप में घोषित किया गया है, जिसका अर्थ है कि इसे testविधि निकाय में पुन: असाइन नहीं किया जा सकता है। यह एक त्रुटि का कारण नहीं बनता है क्योंकि विधि testपैरामीटर को पुन: असाइन करने का प्रयास नहीं करता है, यह केवल पैरामीटर पर एक संपत्ति निर्धारित करता है ... n = new Name("test");एक संकलित त्रुटि का कारण होगा ...
rjohnston

7
@ Rjohnston की टिप्पणियों में जोड़ना: विधि पैरामीटर के लिए अंतिम का उपयोग कक्षा के उदाहरण की अपरिहार्यता सुनिश्चित नहीं करता है। अगर वहाँ अपरिवर्तनीयता की आवश्यकता होती है तो वर्ग (वर्तमान मामले में नाम) को डिज़ाइन किया जाना चाहिए (उदाहरण के लिए वर्तमान मामले में सेटर प्रदान न करें)
sateesh

बहुमूल्य जानकारी साझा करने के लिए आप सभी का धन्यवाद। मैं वास्तव में इस पर आपके इनपुट की सराहना करता हूं।
राचेल

19

एक निश्चित स्ट्रिंग की तुलना है। के बीच अंतर

स्ट्रिंग हेल्लोवर्ल्ड = "हैलो वर्ल्ड";
helloWorld == "हैलो वर्ल्ड";
"हैलो वर्ल्ड"। असामान (हेलोवर्ल्ड);


14
बहुत यकीन है कि आपको नए स्ट्रिंग ("हैलो वर्ल्ड") जैसा कुछ करने की आवश्यकता होगी। स्ट्रिंग स्थिरांक को पूल से नहीं खींचा जाता है, बहुत अधिक प्रभाव इंटर्न () होगा, इसलिए दोनों कथनों को सच कर सकता है?
स्टीवन श्लैंस्कर


17

ट्रिक प्रश्न: जावा में संदर्भ के लिए किस प्रकार के पैरामीटर पारित किए जाते हैं?

यह आश्चर्यजनक है कि कितने लोग अभी भी "आदिम मूल्य द्वारा पारित किए जाते हैं, वस्तुओं को संदर्भ द्वारा पारित किया जाता है" मंत्र।


4
मुझे आश्चर्य है कि अगर सही उत्तर हमेशा एक साक्षात्कार में देने के लिए है। जिस स्थान के लिए मैंने साक्षात्कार किया था, साक्षात्कारकर्ता ने भी उसी बात को तोता था।
MAK

2
मैंने उन लोगों के बीच अंतर देखा है जिन्होंने पहली भाषा के रूप में C का अध्ययन किया था और जिन लोगों ने जावा के बारे में इस प्रश्न का उत्तर देने में पहली भाषा के रूप में C ++ का अध्ययन किया था। शायद इसलिए कि सी उपयोगकर्ताओं को सिखाया जाता है कि एक पॉइंटर को एक मूल्य पर पास करना "संदर्भ द्वारा पास" है।
उरई

23
यह "गलत" उत्तर के रूप में एक बेवकूफ सवाल है, सबसे अधिक संभावना तकनीकी रूप से सही हो जाएगी यदि आप यह भी पूछते हैं कि "क्या परिणाम संदर्भ से गुजर रहे हैं?" संदर्भ के माध्यम से क्या होता है यह परिभाषा की बात है और इस प्रकार जावा दुनिया में बहुत अधिक मूल्य नहीं है क्योंकि वस्तुओं को पारित करने का केवल एक ही तरीका है। यह समझने के लिए अधिक महत्वपूर्ण है कि वास्तव में आपके द्वारा इच्छित तरीके के संदर्भ में पास के लिए एब्रीहिट विपरीत परिभाषा का उपयोग करने से क्या होता है ।
x4u

3
यह प्रश्न कम से कम समस्याग्रस्त है, क्योंकि यह ज्यादातर "पास बाय वैल्यू" / "पास बाय रेफरेंस" की सटीक परिभाषा पर टिका होता है, जिसे अक्सर गलत तरीके से इस्तेमाल किया जाता है। जबकि मैं मानता हूं कि एक अच्छे डेवलपर को परिभाषाएं पता होनी चाहिए, इसके परिणामों को समझना अधिक महत्वपूर्ण है। यदि आप जावा के वास्तविक व्यवहार को समझते हैं, तो अवधारणा के लिए सही नाम जानना बहुत सार्थक नहीं है, क्योंकि यह ऐसा कुछ नहीं है जिस पर आप अभ्यास करते हैं, क्योंकि यह कभी नहीं बदलता है।
10

3
एर्म, वस्तुओं को जावा में संदर्भ द्वारा पारित किया जाता है। आप किसी वस्तु को मूल्य से पास नहीं कर सकते हैं; अन्य बातों के अलावा, स्टैक पर ऑब्जेक्ट कभी भी मौजूद नहीं होते हैं। संदर्भ मूल्य द्वारा पारित किए जाते हैं, निश्चित रूप से।
सीन ओवेन

17

आपने "अच्छा", "डेवलपर" कहा। यहाँ मेरे 2 सेंट भी हैं .. :)

  • "जाँच अपवाद" का क्या अर्थ है?
  • अप्रत्याशित परिस्थितियों को संभालने के लिए कौन सा उपयोग करना बेहतर है और कब: दावे या अपवाद?
  • स्ट्रिंग क्लास अंतिम क्यों है? (या यह नहीं है?))
  • ऑब्जेक्ट क्लास में प्रतीक्षा, सूचना और सूचना सभी तरीके हैं?
  • थ्रेड क्लास फाइनल क्यों नहीं है? मैं थ्रेड का विस्तार कभी क्यों करूंगा?
  • दो दिनांक वर्ग क्यों हैं; एक java.util पैकेज में और दूसरा java.sql में?
  • यदि कोई अपवाद अंततः ब्लॉक में फेंक दिया जाता है तो क्या होता है? शेष को अंतिम रूप से निष्पादित किया गया है या नहीं?
  • एक कचरा संग्रहकर्ता ठीक है, लेकिन फिर एक जावा अनुप्रयोगों में मेमोरी लीक पूरी तरह से अनुपस्थित है? यदि नहीं, तो कैसे?

J2EE के लिए:

  • क्या सर्वलेट में उदाहरण / स्थिर चर होना अच्छा है? क्यों नहीं? फिर आप "राज्य" कहाँ संग्रहीत करते हैं?
  • उपरोक्त प्रश्न पर जारी: क्या (और) एक (वेब) अनुप्रयोग के लिए "राज्य" है?
  • यदि मैंने "JSP" में DB कनेक्शन बनाना / बंद करना शुरू कर दिया तो क्या होगा?
  • JSP अपवादों को संभालने के तरीके क्या हैं? पकड़ने की कोशिश? हम्मम .. क्या कुछ और है?

मैं कई, कई, कई और अधिक सोच सकता हूँ, लेकिन यह अभी के लिए करूँगा :)


8
उत्तर अच्छे होंगे, मैं उनमें से कुछ का जवाब नहीं जानता।
MAK

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

यदि एक अपवाद को अंततः ब्लॉक में फेंक दिया जाता है, तो इसका बाकी भाग नहीं चलेगा। "शुद्ध" जावा प्रोग्राम में, कैनोनिकल मेमोरी लीक मौजूद नहीं है। हालाँकि, मेमोरी का उपयोग तब भी किया जा सकता है यदि डेटा संरचनाओं में उन वस्तुओं के संदर्भ नहीं होते हैं जिनकी अब आवश्यकता नहीं है। यदि मूल पुस्तकालयों का उपयोग कर रहे हैं तो उनके संसाधनों को प्रबंधित करने की आवश्यकता हो सकती है, उदाहरण के लिए SWT में यह निश्चित संपत्ति पर कॉल करना ज़रूरी है। निश्चित रूप से यह सुनिश्चित करने के लिए कि वे रिसाव नहीं करते हैं।
ZoFreX

2
"यह कभी भी नहीं होना चाहिए" त्रुटियों के लिए सिद्धांतों का उपयोग करें जिन्हें विकास में निपटाया जाना है। त्रुटियों के लिए अपवादों का उपयोग करें जो वास्तव में रनटाइम पर हो सकते हैं, और कार्यक्रम को किसी तरह से उनसे निपटने की आवश्यकता होगी।
मेट्रिक्सफ्रॉग

16

स्ट्रिंग, स्ट्रिंगबर्गर और स्ट्रिंगबर्ल के बीच अंतर क्या है?


5
स्ट्रिंग - अपरिवर्तनीय वर्ग एक स्ट्रिंग का प्रतिनिधित्व करता है। स्ट्रिंगरबफ़र - बिल्डर पैटर्न जावा के पुराने संस्करणों में पेश किया गया है जो स्ट्रिंग के निर्माण के लिए उपयोग करने के लिए हर ऑपरेशन (या उनमें से अधिकांश) पर सिंक्रनाइज़ होता है। StringBuilder - जावा 5 (JDK 1.5) में शुरू की गई, एक ऐसा वर्ग जो StringBuffer API का उपयोग करता है ताकि वह स्ट्रिंग का निर्माण कर सके जो हर ऑपरेशन (या उनमें से अधिकांश) पर सिंक्रनाइज़ नहीं होती है । क्योंकि स्ट्रिंग्स का निर्माण एक ही सूत्र में होता है, जावा रनटाइम्स / JDK में इस उद्देश्य के लिए StringBuilder को प्राथमिकता दी जाती है जो इसका समर्थन करते हैं।
MetroidFan2002

13

"क्या एक तैनाती वर्णनकर्ता है?"

यदि उम्मीदवार अप्रत्याशित रूप से कंपकंपी करता है, तो उसे पूर्व 3.0 ईजेबी के साथ काम करने का अनुभव है।


इसे "shudders अनजाने में + जोर से + जोर से + दबा देता है + इस सवाल को 2 बार दोहराने के बाद मृत हो जाता है", मुझे कभी-कभी इसका "एक और केवल" कारण लगता है कि उन्होंने पूरे एनोटेशन चीज़ को जोड़ा / समर्थित किया! :)
एलिस्टर

12

कई प्रश्न और साक्षात्कार http://www.techinterviews.com/interview-questions/java पर उपलब्ध हैं और मैं वास्तव में उनमें से चयन को कॉपी / पेस्ट करने में मूल्य नहीं देखता।

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

यह सब कहा जा रहा है, मेरा पसंदीदा सवाल "आपको जावा के बारे में क्या पसंद नहीं है?" ( इस एक की भावना में )। यह वास्तव में एक उत्कृष्ट सवाल है, यह आपको एक तत्काल प्रतिक्रिया देता है कि एक उम्मीदवार ने जावा का कितना उपयोग किया है और इसके एपीआई का पता लगाया है और यदि वह इसके बारे में धार्मिक है या नहीं (जैसा कि ओपी ने लिखा है)।

अपडेट: जैसा कि CPerkins द्वारा सुझाया गया है, ऊपर दिए गए प्रश्न के लिए बेहतर शब्दांकन "हो सकता है कि आप जावा में परिवर्तित किए गए सबसे अधिक क्या देखना चाहेंगे?"। और वास्तव में, मैं इस तरह से पसंद करता हूं।


मुझे यह पसंद नहीं है कि "आपको जावा के बारे में क्या पसंद नहीं है?", मैं झूठ बोलूंगा, क्योंकि यह ऐसा लगता है जैसे "आपने अपनी आखिरी कंपनी क्यों छोड़ दी?"। इसके अलावा वे सोच सकते हैं - "अगर तुम जावा से नफरत करते हो तो हम तुम्हें नौकरी नहीं देंगे"।
14

@ 01 यह आपका अधिकार है, लेकिन मैं आपसे सहमत नहीं हूँ और मुझे लगता है कि आप उस प्रश्न के बिंदु से चूक गए हैं।
पास्कल थिवेंट

1
मैंने आमतौर पर इसे और अधिक देखा है: "आप जावा में बदला हुआ क्या देखना पसंद करेंगे" बजाय "पसंद न करें"।
CPerkins

@ सहकर्मी वास्तव में एक बेहतर शब्द है, "पसंद नहीं है" और "नफरत" (संदर्भ में) की तुलना में बेहतर है। धन्यवाद।
पास्कल थिवेंट

11

System.out.println में 'System', 'out', 'println' क्या है? जब आप हशप पर 'पुट' कहते हैं तो क्या होता है?


क्या जवाब है ?? मैं कभी नहीं सोचता कि क्या सिस्टम क्लास है !! मुझे आश्चर्य है कि asnwer :)
पलाअला

10
  1. जावा में उपयोग किए जाने वाले विभिन्न एक्सेस मॉडिफायर बताएं। मेरे पास बहुत से लोगों के साथ संघर्ष हुआ है, विशेष रूप से डिफ़ॉल्ट पहुंच।
  2. यदि आप जावा भाषा या प्लेटफ़ॉर्म के बारे में एक चीज़ बदल सकते हैं तो यह क्या होगा? अच्छे डेवलपर्स के पास यहां एक उत्तर होगा जबकि जो लोग वास्तव में विकास में रुचि नहीं रखते हैं वे शायद परवाह नहीं करते हैं।
  3. यदि उनका सीवी कुछ कहता है जैसे वे EJB2.1 का उपयोग करते हैं तो EJB3 के बारे में पूछें कि वे इसके बारे में क्या जानते हैं। सर्वश्रेष्ठ डेवलपर्स नवीनतम घटनाओं के साथ रखेंगे भले ही वे नए संस्करणों का उपयोग न करें।

3
अगर वहाँ सिर्फ एक चीज थी जिसे मैं बदल सकता था, मैं ऑपरेटर को भाषा में ओवरलोडिंग जोड़ दूंगा, शायद ओवरलोडेबल ऑपरेटरों के एक प्रतिबंधित सेट के साथ (यानी, कोई ओवरलोडिंग newया ^या >>, <<और >>>)। अगर मैं एक और चीज बदल सकता हूं, तो वह है सच्चा कॉल-बाय-रेफरेंस शब्दार्थ जोड़ना । एक तीसरी बात unsignedअभिन्न प्रकार को जोड़ना होगा ।
चिन्मय कांची

1
प्रतिनिधियों और बंद और शायद एक लंबोदर अभिव्यक्ति, लेकिन यह वास्तव में आवश्यक नहीं है। विस्तार के तरीके भी भव्य होंगे। यदि वे ठीक से उपयोग किए जाते हैं तो वे वास्तव में कोड को साफ कर सकते हैं।
जोएल

10
  • बराबरी पर आने पर सामान्य अनुबंध क्या है?
  • क्या बेहतर विकल्प सूचियों या सरणियों को प्राथमिकता देता है?
  • आमतौर पर स्वीकृत नामकरण परंपराएं क्या हैं?
  • कैसे काम करता है?
  • तुलनीय कैसे लागू करें?
  • JDBC के तैयार स्टेटमेंट का उपयोग करने के क्या फायदे हैं?
  • Java EE क्या है?
  • एक कंटेनर क्या है और यह क्या सेवाएं प्रदान करता है?

9

यदि आप जावा "अनुभव" के साथ स्नातक की भर्ती कर रहे हैं, तो एक सरल प्रश्न जैसे कुछ कोड लिखें जो NullPointerException को फेंकने का कारण बनेगा, यह पता लगा सकता है कि हाल ही में उम्मीदवारों ने जावा का उपयोग किसने किया है, और जब उन्होंने अपनी यूनिट / कोर्स समाप्त किया तो बस रोक नहीं पाए।


16
क्या "नया NullPointerException () फेंकना" एक सही उत्तर है?
Thorbjørn Ravn Andersen

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

9

क्या छपेगा?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

उत्तर : कूलेंटर्न + 1

थोड़ा और मुश्किल:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

उत्तर : कूलेंटर्न


पहला कोड इंगित करता है कि अंत में हमेशा बहिष्कृत किया जाता है भले ही रिटर्न स्टेटमेंट try ब्लॉक में उपलब्ध था, लेकिन मुझे दूसरा कोड नहीं मिला ?? क्या हुआ जब बयान बिल्डर = अशक्त; होता है ??
पलाअला

3
@ इला, यह लगभग एक अस्थायी मूल्य है जैसा कि बिल्डर को सेट किया जाता है, बिल्डर को अंत में ब्लॉक करने के लिए सेट किया जाता है, और फिर अस्थायी मूल्य वह होता है जो वापस आ जाता है।
deterb

1
@VextoR, हाँ अला ने अच्छा विवरण दिया है। यह कोड जाँचता है कि साक्षात्कारकर्ता कोशिश को कैसे समझता है ... अंत में वापसी के साथ ब्लॉक करें, और सामान्य रूप से चर गुंजाइश, चर हैंडलिंग
zaletniy

4
रिटर्न स्टेटमेंट StringBuilder वस्तु के संदर्भ में लौट रहा है। संदर्भ को अंत में बदलना संदर्भ के लिए कुछ भी नहीं करता है जो वास्तव में वापस आ गया है। हालाँकि, ऑब्जेक्ट की सामग्री को बदलना प्रभावित करता है कि क्या लौटा है, पहले उदाहरण में।
डेरेक लित्ज़

8

अमूर्त वर्ग और इंटरफ़ेस के बीच क्या अंतर है? आप उनमें से प्रत्येक का उपयोग कब करेंगे?

जावा डेवलपर्स के बहुत सारे लोग यह नहीं जानते हैं, मैंने विश्वविद्यालय में अपने कंप्यूटर विज्ञान पाठ्यक्रम के अधिकांश लोगों से पूछा और अधिकांश लोग इसका जवाब नहीं दे सके।


एकमात्र अंतर सार वर्ग में गैर-सार तरीके हो सकते हैं।
टीबीएच

1
यदि आप एक जावा पुस्तक, निश्चित रूप से पढ़ेंगे तो इसका उत्तर होगा। हालाँकि तब आप यह भी जोड़ सकते हैं कि वे सदस्य चर भी शामिल कर सकते हैं, P: लेकिन उनका उपयोग करने के लिए कब और क्यों में अंतर, और भी दिलचस्प है।
ZoFreX

1
इंटरफ़ेस का उपयोग मुझे बहुत शक्तिशाली टेक्नीक प्रदान करता है जो कि पॉलीमोफिज़्म है, जो कक्षाओं से किसी भी अतिप्रचलित विधि को कॉल कर सकता है जो इंटरफ़ेस को एक अचूक तरीके से लागू करता है, जिसे यू के लिए प्रत्येक बच्चे के प्रकार को जानने की आवश्यकता नहीं है।
19

@ टीबीएच - यह मत भूलो कि एकल विरासत मॉडल में जावा वर्तमान में उपयोग करता है, आप केवल एक अमूर्त वर्ग का विस्तार कर सकते हैं, कार्यक्षमता के एक सेट के लिए - लेकिन आप एकल के बिना कार्यान्वित होने के लिए कई कार्यात्मकताओं के लिए एक ही वर्ग में कई इंटरफेस को जोड़ सकते हैं वंशानुक्रम प्रतिबंध।
MetroidFan2002

8

सरल प्रश्न जैसे,

  • JRE और JDK क्या है?
  • जावा दावा क्यों करता है?

हालांकि ये बहुत बुनियादी हैं, बहुत से डेवलपर्स जवाब नहीं जानते हैं। मेरा सुझाव है कि कोड से संबंधित प्रश्नों से पहले ये पूछे जाएं।


JDK / JRE भाग के बारे में न जानें। उदाहरण के लिए, मैक पर ऐसा कोई भेद नहीं है। तो मैक पर एक जावा डेवलपर के रूप में, वास्तव में उस बारे में जानने की कोई आवश्यकता नहीं है।
फाबियान स्टील

मुझे लगता है कि यह एक अच्छा सवाल है, और अगर यह उन लोगों को बेनकाब करने में मदद करता है, जो मैक पर गंभीर जावा विकास का प्रयास करने के लिए काफी गुमराह हैं, तो यह बेहतर है। गंभीरता से, यदि आप एक जावा डेवलपर होने का दावा करते हैं, लेकिन पता नहीं होगा कि java.sun.com पर क्लिक करने के लिए कौन सा डाउनलोड लिंक है तो समस्या है।
मार्क बी

अच्छी तरह से एक जावा डेवलपर होने के नाते किसी को उस प्लेटफ़ॉर्म के बारे में चिंता करने की ज़रूरत नहीं है जो वह / वह पर चिंता कर रहा है। जावा उपकरण को समझना बुनियादी आवश्यकता लगता है। कम से कम मैं इस पर विचार करता हूं। मैं मैक ओएस के बारे में अवगत नहीं हूं। मुझे पता है कि मैं = = चिंता नहीं करता हूं ओएस जिसमें मैं काम करता हूं।
रवीशा

@mbaird जो एक मतलबी टिप्पणी के रूप में आता है। हालांकि मैं एक मैक पर विकसित होता हूं और मुझे पता है कि जेआरई / जेडीके क्या हैं, चलो वास्तविक विकास में ईमानदार हैं, क्या वास्तव में कोई फर्क नहीं पड़ता है? विशेष रूप से आईडीई के साथ जो कमांड-लाइन अतीत की चीज़ का उपयोग करते हैं, एक जावा देव को यह जानने की ज़रूरत है कि भाषा को किसी और चीज़ से अधिक कैसे उपयोग किया जाए।
एलेक्सिस किंग

6

टॉप 5 जे 2 ईई / जेईई प्रश्न

जे 2 ईई / जेईई मिडलवेयर प्रश्नों की सूची जो मैंने सामना की है, असाधारण रूप से लंबे हैं, लेकिन यहां शीर्ष 5 हैं जो मुझसे पूछे गए हैं, और इनमें अच्छी चर्चा हुई है:

  1. क्या होता है जब एमडीबी एक अपवाद का सामना करता है जो इसे संभाल नहीं सकता है?
    यह प्रश्न आमतौर पर जहर संदेश, त्रुटि कतार इत्यादि के बारे में विभिन्न दिलचस्प चर्चाओं की ओर जाता है।
  2. एक जेएमएस टॉपिक, और विभिन्न जेवीएम पर कुछ उपभोक्ताओं को देखते हुए, टिकाऊ उपभोक्ताओं के साथ और बिना विभिन्न परिदृश्यों पर सवाल।
    यह सवाल आमतौर पर मुझे टिकाऊ ग्राहकों का उपयोग करने के लिए, कतारों का उपयोग करने के लिए, आदि के संदर्भ में चर्चा करने की अनुमति देता है।
  3. यदि एक ऐसी स्थिति में फंस गया है जहां एक हाइबरनेट / जेपीए पीओजेओ सामग्री तक पहुंच अपवादों की ओर जाता है, तो कोई इसे कैसे हल करेगा?
    यह आलसी लोडिंग, रीहाइड्रेटिंग, आदि के बारे में अद्भुत चर्चा करता है, इसमें एंटिना बीन्स के साथ जेपीए की तुलना और इसके विपरीत भी होता है। मैंने इसे तैयार रहना, और अवधारणाओं में स्पष्ट होना उपयोगी पाया है।
  4. एक साधारण वेब सेवा कैसे प्रदान की जा सकती है?
    परिष्कृत SOAP / REST समाधानों के आधार पर सरल वेब सर्वर से कोई भी समाधान, और बीच में कोई भी, काफी अच्छा होना चाहिए। इसके अलावा, साक्षात्कारकर्ता के आधार पर, कभी-कभी यह कुछ डिजाइन विचारों जैसे - डब्ल्यूएसडीएल पहले, डॉक-शैली, एसओएपी बिचौलियों आदि जैसे विषयों पर बहुत दिलचस्प चर्चा की ओर जाता है, इससे जेएएक्स-डब्ल्यूएएस ओवरएक्स में लिस्टिंग में सुधार जैसे प्रश्न हो सकते हैं। -RPC, या SOAP1.2 पर SOAP1.2, जिनके उत्तर आमतौर पर मुझे याद है पर आधारित हैं।
  5. JEE 5 संसाधन इंजेक्शन
    यह प्रश्न कई तरह से पेश किया जाता है, जो सेवा लोकेटर पैटर्न से शुरू होकर javax.naming.Contextप्रश्नों तक होता है।

एक और मुश्किल सवाल मुझे परेशान करने वाला लगता है, लेकिन कई बार सामना करना पड़ा है, आश्रित पुस्तकालयों को एक संग्रह में कैसे पैक किया जाता है?
या बंडल किए गए संग्रह में विभिन्न वर्गों की दृश्यता।
यदि चर्चा विभिन्न एप्लिकेशन सर्वरों, संसाधन अभिलेखागार आदि के श्रेणी लोडर पदानुक्रम की ओर नहीं ले जाती है, तो इस्तीफा देना और आगे बढ़ना सबसे अच्छा है।

शीर्ष 5 कोर जावा प्रश्न:

  1. Java.util.collections पर प्रश्न
    यह सभी प्रश्नों की जननी है। एक बार जब आप इस क्षेत्र में साक्षात्कारकर्ता को प्रभावी रूप से जमीन पर ला सकते हैं, और यदि आप तैयार हैं, तो बाकी साक्षात्कार आमतौर पर यहां रहता है। जानने के लिए सुनिश्चित हो Set, List, Map, और के महत्व Object.equals()और Object.hashCode()इन इंटरफेस के हर कार्यान्वयन में।
  2. रिफैक्टिंग सवाल
    ये अच्छे होते हैं अगर इंटरव्यू लेने वाले का दिमाग खुले। यदि साक्षात्कारकर्ता के पास पहले से ही एक विशिष्ट समाधान है, और आपका उसका / उसके साथ मेल नहीं खाता है, तो आप बहुत अधिक बर्बाद हैं। उत्तर के साथ सहमत होना सबसे अच्छा है "मैं समझता हूं कि अन्य समाधान संभव हैं।"
  3. JDK5 में बहु-थ्रेडिंग पर प्रश्न, पहले के JDK संस्करणों की तुलना में मैंने पाया है कि java.util.concurrent पैकेज कक्षाओं के साथ तैयार किया जाना सबसे अच्छा है । डग ले की पुस्तक के अधिकांश उत्तर हैं।
  4. JDK1.6 / JDK1.7 में नया क्या है ...?
    यह कई साक्षात्कारकर्ताओं के साथ एक निश्चित शॉट प्रश्न है। जितना मैं इससे नफरत करता हूं, उतना तैयार रहना सबसे अच्छा है। कम से कम कुछ याद रखना जो मैंने साथ काम किया है, और चर्चा को किसी अन्य दिशा में ले जाना, काफी हद तक प्रभावी ढंग से चकमा देता है और हल करता है।
  5. जावा एपीआई
    समय में पैटर्न और फिर से मुझे जावा एपीआई में एक गोएफ पैटर्न को इंगित करने के लिए कहा गया है। इसके लिए बेहतर तरीके से तैयार रहें।



5

आप (।) विधि को क्यों ओवरराइड करेंगे?


4

एक अधिक शुद्ध जावा प्रश्न:

नींद और प्रतीक्षा में क्या अंतर है? बहुत से लोग वास्तव में नहीं समझते हैं कि प्रतीक्षा कैसे काम कर रही है।

आपको InterruptedException को संभालने की आवश्यकता कैसे है?


4

यह वह सवाल है जिसका मैंने अपने साक्षात्कार में सामना किया।

जावा में मुख्य विधि को सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) क्यों कहा जाता है?

उत्तर:

1. मुख्य () को सार्वजनिक घोषित किया जाना चाहिए क्योंकि यह JVM द्वारा लागू किया जाता है जब भी कार्यक्रम निष्पादन शुरू होता है ।JVM हमारे प्रोग्राम पैकेज से संबंधित नहीं है।

पैकेज के बाहर मुख्य का उपयोग करने के लिए हमें इसे सार्वजनिक घोषित करना पड़ता है। यदि हम इसे सार्वजनिक के अलावा किसी अन्य चीज के रूप में घोषित करते हैं, तो यह रनटाइम त्रुटि दिखाता है, लेकिन संकलन समय त्रुटि नहीं

2. मुख्य () को स्थिर के रूप में घोषित किया जाना चाहिए क्योंकि यदि किसी विधि को स्थिर के रूप में घोषित किया जाता है तो हम ClassName.methodName () का उपयोग करके उस विधि को कक्षा के बाहर बुला सकते हैं ;

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

JVM पहले टेस्ट क्लास को लोड करेगा, और कमांडलाइन तर्कों के लिए जाँच करेगा और मुख्य विधि को Test.main () कहेगा;

3. main () को void main () घोषित किया जाना चाहिए क्योंकि JVM मुख्य () से किसी भी मूल्य की उम्मीद नहीं कर रहा है। इसलिए, इसे शून्य घोषित किया जाना चाहिए।

यदि अन्य रिटर्न प्रकार प्रदान किया जाता है, तो यह एक रनटाइम ईरर है।

4. मुख्य () स्ट्रिंग के रूप में स्ट्रिंग तर्क होना चाहिए क्योंकि JVM कमांड लाइन तर्क पास करके मुख्य विधि कहता है। वे स्ट्रिंग सरणी ऑब्जेक्ट में संग्रहीत होते हैं यह मुख्य () के लिए एक तर्क के रूप में पारित किया जाता है।


आप उपयोग कर सकते हैं public static void main(String... args)यदि आप बहुत झुके हुए हैं :-) इसमें एक ही हस्ताक्षर है जैसे[]
corsiKa

3

J2SE और J2EE (या JSE और JEE) में क्या अंतर है?

एक डेवलपर को यह इंगित करने में सक्षम होना चाहिए कि एंटरप्राइज़ संस्करण मूल रूप से एक इंटरफ़ेस परिभाषा (यानी एक विनिर्देश) है जिसे विक्रेताओं द्वारा लागू किया जा सकता है। जबकि मानक संस्करण अपने आप में एक कार्यान्वयन है


4
क्या विपणन शब्दावली को सीधे रखने की क्षमता वास्तव में दिन के अंत में महत्वपूर्ण है?
लारेंस गोन्साल्वेस

@ गौर - यह कहने के लिए एक हास्यास्पद बात है। दो चीजों के बीच एक वास्तविक अंतर है जिसे आप आश्चर्यचकित करेंगे कि कितने अनुभवी डेवलपर्स सिर्फ समझ नहीं पाते हैं
oxbow_lakes

मेरा कहना है कि अगर कोई अच्छा कोडर है, तो मैं कम परवाह नहीं कर सकता अगर उन्हें J2SE और J2EE के बीच का अंतर पता हो।
लारेंस गोंसाल्वेस

मैंने इस प्रश्न को "सामान होने के रूप में पढ़ा कि एक जेईई + जेएसई डेवलपर को पता होना चाहिए", जिस स्थिति में मुझे लगता है कि दो प्रौद्योगिकियों के बीच अंतर को समझना प्रासंगिक है।
oxbow_lakes

4
@ Thorbjørn Ravn Andersen मुझे संदेह है कि अधिकांश जावा कोडर, अच्छे वाले शामिल हैं, ऊपर दिए गए भेद के बारे में दृढ़ता से जानते हैं, "उद्यम संस्करण मूल रूप से एक इंटरफ़ेस परिभाषा है ... जबकि मानक संस्करण अपने आप में एक कार्यान्वयन है"। सबसे अच्छे जावा कोडर्स के लिए वह अंतर है जो मायने रखता है जो एपीआई उपलब्ध हैं। उदाहरण: सर्वलेट ईई आदि का हिस्सा हैं, किसी भी मामले में, जैसा कि मुझे लगता है कि अच्छी भाषा-एक्स प्रोग्रामर की तुलना में अच्छे प्रोग्रामर ढूंढना अधिक महत्वपूर्ण है, मुझे लगता है कि अच्छे जेएसई / जेईई प्रोग्रामर की तुलना में अच्छे जावा प्रोग्रामर ढूंढना अधिक महत्वपूर्ण है।
लॉरेंस गोंसाल्वेस

3

volatileसंकलक द्वारा कोड अनुकूलन को कैसे प्रभावित करता है ?


3
उस प्रविष्टि में सही उत्तर भी होना चाहिए।
Thorbjørn Ravn Andersen

मुझे पूर्ण उत्तर याद नहीं है, अच्छी व्याख्या के लिए इस l youtube youtube.com/… को देखें । संक्षेप में: मान लें कि विधि किसी बिंदु पर अस्थिर चर का उपयोग करती है। तब कंपाइलर उस बिंदु के बाद इस विधि के कोड का अनुकूलन नहीं करता है।
रोमन

2

कैसे एक सत्र बीन के बारे में है और स्टेटलेस और स्टेटफुल सत्र बीन्स के बीच कुछ अंतरों का वर्णन करें।


2

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

आयात कथन के महत्व से, असामान्य समाप्ति के ठीक नीचे से बहुत गहरी शुरुआत करना संभव है


2

कोर: 1. क्या जांचे और अनियंत्रित अपवाद हैं? 2. कोड में नए अपवाद जोड़ते समय किस प्रकार (चेक / अनचेक किया गया) का उपयोग कब करें?

सर्वलेट: 1. response.sendRedirect () और request.forward () के बीच क्या अंतर है?


क्या आप इन सवालों के जवाब दे सकते हैं? यह मेरे लिए "जाँच और अनियंत्रित अपवाद" के बारे में जानने का पहला मौका है !!
पलाअला

सरल Google खोज आपको उत्तर दे सकती है: google.co.in/…
YoK

1

कैसे threadsकाम करते हैं? क्या है synchronized? यदि synchronizedएक कक्षा में दो विधियाँ हैं, तो उन्हें एक साथ दो थ्रेड द्वारा निष्पादित किया जा सकता है। कई लोगों को हां का जवाब सुनकर आप हैरान रह जाएंगे । फिर सभी धागे से संबंधित प्रश्न, जैसे गतिरोध , भुखमरी आदि।


2
इसका कारण यह है कि उत्तर ´is´ हां ...
16

@ फ़ोर्टेगा - यह कैसे हो सकता है? प्रत्येक विधि में ऑब्जेक्ट पर लॉक होता है। यदि threadकोई विधि चला रहा है, तो कोई अन्य threadलॉक प्राप्त नहीं कर सकता है।
फास्टकोडजवा

1
यदि आपके पास एक ही प्रकार की दो वस्तुएं हैं, तो आप पहली विधि को पहली वस्तु पर और दूसरी विधि को दूसरी वस्तु पर एक साथ कह सकते हैं। जब तक विधियां निश्चित रूप से स्थिर नहीं होतीं।
फारेगा

2
अगर आपको ठीक से समझ में नहीं आता है कि लॉकिंग कैसे होती है, तो यह वास्तव में एक दिमाग नहीं है। इसके अलावा, हालांकि यह एक दिमाग नहीं हो सकता है, इसका मतलब यह नहीं है कि मेरा जवाब गलत था :-)
Fortega

1
यह उत्तर उन progrmmers के लिए भ्रम पैदा कर सकता है जो अपने काम में धागे का उपयोग नहीं करते थे, लेकिन मुझे लगता है कि यह एक अच्छा है :)
palAlaa

1

एक बात कई जावा प्रोग्रामर को पता नहीं है कि स्ट्रिंग्स अपरिवर्तनीय हैं, इसलिए StringBuilder या StringBuffer का उपयोग करें!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}

और नंबर जैसे कि इंटेगर, लॉन्ग वगैरह
आर्थर रोनाल्ड

प्रदर्शन के लिहाज से, अपरिवर्तनीय तार को समाप्‍त करने और स्ट्रिंगबर्ल का उपयोग करने के बीच कोई अंतर नहीं है। इसका कारण यह है कि आधुनिक जावा कंपाइलर संघनन को अनुकूलित करेगा: java.sun.com/docs/books/jls/third_edition/html/… जो भी विधि अधिक पठनीय है उसका उपयोग करना सबसे अच्छा है।
ब्रेंट विल्सन

1
@BrentWilson जो आप लिंक करते हैं वह वह नहीं होगा जो आप सोचते हैं। यह s += "a" + "b" + "c"एक Stringbuilder.append(...)परिदृश्य में बदल जाएगा । लेकिन यह एक लूप का अनुकूलन नहीं करेगा for। इस उत्तर में कोड कुल 201 स्ट्रिंग्स, 100 स्ट्रिंगबाइल्डर्स, और (कार्यान्वयन के आधार पर) char[]उन स्ट्रींगबुइल्डर्स के अंदर 300 अलग-अलग एस, और अनुमानित 425k + अक्षर बनाने का अंत करेगा । इसे StringBuilder को एकमुश्त उपयोग करने के लिए बदलने से यह 1 String, 1 StringBuilder और 13-15 आंतरिक char[]s तक कम हो जाएगा, इसके बजाय ~ 8k वर्णों का उपयोग करना चाहिए।
corsiKa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.