जावा साक्षात्कार कैसे पास करें: A से Z तक शीर्ष प्रश्न
\n\nजावा डेवलपर पद के लिए साक्षात्कार केवल सिंटैक्स ज्ञान की जांच नहीं है। नियोक्ता मौलिक सिद्धांतों की आपकी समझ, स्वच्छ कोड लिखने की क्षमता और वास्तविक समस्याओं को हल करने की क्षमता का मूल्यांकन करता है। इस लेख में, हमने जावा के शीर्ष प्रश्न एकत्र किए हैं जो सभी प्रमुख विषयों को कवर करते हैं: OOP की मूल बातों से लेकर मल्टीथ्रेडिंग और फ्रेमवर्क तक। यह लेख Junior और Middle दोनों डेवलपर्स के लिए उपयुक्त है।
\n\nहमने सामग्री को तार्किक ब्लॉकों में विभाजित किया है ताकि आप व्यवस्थित रूप से तैयारी कर सकें। प्रत्येक प्रश्न के साथ एक संक्षिप्त उत्तर और जावा में कोड उदाहरण दिया गया है। PythonLib के साथ साक्षात्कार की तैयारी करें!
\n\n1. जावा और OOP (Object-Oriented Programming) की मूल बातें
\n\n1.1. जावा में OOP के कौन से सिद्धांत लागू किए गए हैं?
\nजावा OOP के चार मुख्य सिद्धांतों का समर्थन करता है: वंशानुक्रम (extends/implements), बहुरूपता (मेथड ओवरलोडिंग और ओवरराइडिंग), एनकैप्सुलेशन (private फ़ील्ड + getters/setters) और एब्स्ट्रैक्शन (abstract class/interface)।
\n\n// एनकैप्सुलेशन का उदाहरण\npublic class User {\n private String name;\n\n public String getName() {\n return name;\n }\n\n public void setName(String name) {\n this.name = name;\n }\n}\n\n\n1.2. एब्स्ट्रैक्ट क्लास इंटरफ़ेस से कैसे भिन्न है?
\nजावा 8 से पहले: एब्स्ट्रैक्ट क्लास में कार्यान्वित विधियाँ और फ़ील्ड हो सकते हैं, इंटरफ़ेस में केवल एब्स्ट्रैक्ट विधियाँ और स्थिरांक होते हैं। जावा 8 के बाद, इंटरफ़ेस में default और static विधियाँ जोड़ी गईं। मुख्य अंतर: एक क्लास कई इंटरफ़ेस लागू कर सकता है, लेकिन केवल एक एब्स्ट्रैक्ट क्लास से विरासत प्राप्त कर सकता है।
\n\n1.3. मेथड ओवरलोडिंग और ओवरराइडिंग क्या है?
\n- \n
- ओवरलोडिंग (overloading): समान नाम लेकिन अलग-अलग पैरामीटर वाली विधियाँ (कंपाइलेशन)। \n
- ओवरराइडिंग (overriding): चाइल्ड क्लास पैरेंट की विधि के कार्यान्वयन को बदलता है (रनटाइम)। \n
// Overloading\nclass Calculator {\n int sum(int a, int b) { return a + b; }\n double sum(double a, double b) { return a + b; }\n}\n\n// Overriding\nclass Animal {\n void sound() { System.out.println("Some sound"); }\n}\nclass Dog extends Animal {\n @Override\n void sound() { System.out.println("Bark"); }\n}\n\n\n2. Java Collections Framework
\n\n2.1. List, Set और Map के मुख्य कार्यान्वयनों के नाम बताएं।
\n- \n
- List: ArrayList (इंडेक्स द्वारा तेज़ पहुँच), LinkedList (तेज़ इन्सर्शन/डिलीट)। \n
- Set: HashSet (HashMap पर आधारित, ऑर्डर की गारंटी नहीं देता), TreeSet (सॉर्टेड), LinkedHashSet (इन्सर्शन ऑर्डर बनाए रखता है)। \n
- Map: HashMap (तेज़ पहुँच, null कुंजियाँ), TreeMap (कुंजी द्वारा सॉर्टिंग), LinkedHashMap (इन्सर्शन ऑर्डर)। \n
2.2. HashMap कैसे काम करता है?
\nHashMap बकेट की एक सरणी और हैश फ़ंक्शन का उपयोग करता है। कुंजी डालते समय, इसका hashCode गणना की जाती है, फिर बकेट इंडेक्स निर्धारित किया जाता है। यदि बकेट में पहले से तत्व हैं (टकराव), तो लिंक्ड लिस्ट या रेड-ब्लैक ट्री (यदि तत्व > 8 हैं) का उपयोग किया जाता है। डिफ़ॉल्ट प्रारंभिक क्षमता 16 है, लोड फैक्टर 0.75 है।
\n\nMap<String, Integer> map = new HashMap<>();\nmap.put("Java", 1);\nmap.put("Python", 2);\nSystem.out.println(map.get("Java")); // 1\n\n\n2.3. ArrayList, LinkedList से कैसे भिन्न है?
\nArrayList डायनामिक ऐरे पर आधारित है, LinkedList डबली लिंक्ड लिस्ट पर आधारित है। ArrayList इंडेक्स द्वारा पहुँच में तेज़ है (O(1) बनाम O(n)), लेकिन बीच में इन्सर्शन/डिलीट में धीमा है (O(n) बनाम O(1))। LinkedList संदर्भों को संग्रहीत करने के कारण अधिक मेमोरी की आवश्यकता होती है।
\n\n3. मल्टीथ्रेडिंग और Concurrency
\n\n3.1. जावा में थ्रेड बनाने के कौन से तरीके मौजूद हैं?
\n- \n
Threadक्लास से विरासत प्राप्त करना और ओवरराइड करना