Java सामान्य साक्षात्कार प्रश्न संपूर्ण समाधान

📚 Java मूल सिद्धांत

1. Java की विशेषताएं क्या हैं?

Java भाषा की मुख्य विशेषताओं को समझें

  • ऑब्जेक्ट-ओरिएंटेड:एनकैप्सुलेशन, विरासत, बहुरूपता जैसी विशेषताओं का समर्थन
  • प्लेटफॉर्म स्वतंत्रता:एक बार लिखें, कहीं भी चलाएं (WORA)
  • स्वचालित मेमोरी प्रबंधन:गार्बेज कलेक्शन तंत्र स्वचालित रूप से मेमोरी मुक्त करता है
  • मल्टी-थ्रेड समर्थन:अंतर्निहित थ्रेड तंत्र, समवर्ती प्रोग्रामिंग के लिए सुविधाजनक
  • मजबूत सुरक्षा:प्रकार जांच, अपवाद हैंडलिंग आदि सुरक्षा तंत्र प्रदान करता है
  • गतिशील विशेषताएं:रनटाइम प्रकार जांच और गतिशील लोडिंग

2. JDK, JRE, JVM में क्या अंतर है?

Java रनटाइम पर्यावरण की तीन-स्तरीय संरचना को समझें

  • JVM (Java Virtual Machine):वर्चुअल मशीन, बाइटकोड निष्पादित करने वाली अमूर्त कंप्यूटर, क्रॉस-प्लेटफॉर्म विशेषता लागू करता है
  • JRE (Java Runtime Environment):रनटाइम पर्यावरण, JVM और चलाने के लिए आवश्यक वर्ग पुस्तकालय शामिल
  • JDK (Java Development Kit):विकास उपकरण किट, JRE + संकलक + डिबग उपकरण आदि विकास उपकरण शामिल
  • शामिलता संबंध:JDK > JRE > JVM

3. बाइटकोड क्या है? Java कैसे क्रॉस-प्लेटफॉर्म है?

Java के क्रॉस-प्लेटफॉर्म तंत्र के सिद्धांत को गहराई से समझें

  • बाइटकोड परिभाषा:Java स्रोत कोड द्वारा संकलित मध्यस्थ कोड, फाइल एक्सटेंशन .class है
  • क्रॉस-प्लेटफॉर्म सिद्धांत:Java स्रोत कोड → बाइटकोड → विभिन्न प्लेटफॉर्म के JVM निष्पादन
  • लाभ:एक बार संकलित, कहीं भी चलाएं; विकासकर्ताओं को विभिन्न प्लेटफॉर्म के लिए कोड फिर से लिखने की आवश्यकता नहीं
  • निष्पादन प्रवाह:javac संकलक .java फाइल को .class फाइल में संकलित करता है, फिर विभिन्न प्लेटफॉर्म JVM द्वारा निर्वाहित होता है

4. Java में मूल डेटा प्रकार क्या हैं?

Java के प्रकार प्रणाली में महारत प्राप्त करें

  • पूर्णांक प्रकार:byte (1 बाइट), short (2 बाइट), int (4 बाइट), long (8 बाइट)
  • फ्लोटिंग पॉइंट प्रकार:float (4 बाइट), double (8 बाइट)
  • वर्ण प्रकार:char (2 बाइट, Unicode समर्थन)
  • बूलीन प्रकार:boolean (1 बाइट, true/false)
  • डिफ़ॉल्ट मान:पूर्णांक 0, फ्लोटिंग पॉइंट 0.0, बूलीन false, char '\\u0000'
  • रैपर क्लास:Integer, Long, Float, Double, Boolean आदि संबंधित संदर्भ प्रकार

5. final, finally, finalize में क्या अंतर है?

तीन समान लेकिन पूरी तरह अलग अवधारणाओं को अलग करें

  • final (कीवर्ड):क्लास को संशोधित करना विरासत को रोकता है, विधि को संशोधित करना अधिलेखन को रोकता है, चर को संशोधित करना पुनः असाइनमेंट को रोकता है
  • finally (कीवर्ड):try-catch-finally में कोड ब्लॉक, चाहे अपवाद हो या नहीं, निष्पादित होगा, आमतौर पर संसाधन मुक्ति के लिए उपयोग किया जाता है
  • finalize (विधि):Object क्लास की विधि, ऑब्जेक्ट को गार्बेज कलेक्ट करने से पहले कॉल किया जाता है, संसाधनों को साफ करने के लिए उपयोग किया जाता है (पहले से ही पदच्यु‍त)
  • आवेदन परिदृश्य:final अपरिवर्तनीयता नियंत्रण के लिए उपयोग किया जाता है, finally अपवाद सुरक्षा के लिए, finalize को try-with-resources द्वारा प्रतिस्थापित किया गया है

🎯 ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

6. ऑब्जेक्ट-ओरिएंटेड क्या है? चार प्रमुख विशेषताएं कौन सी हैं?

OOP की मुख्य अवधारणा को समझें

  • ऑब्जेक्ट-ओरिएंटेड परिभाषा:ऑब्जेक्ट को इकाई के रूप में प्रोग्रामिंग सोच, ऑब्जेक्ट की विशेषताओं और कार्यों पर जोर देता है
  • चार प्रमुख विशेषताएं:
  • अमूर्त:चीजों की सामान्य विशेषताओं को निकालें, गैर-अनिवार्य विवरणों को अनदेखा करें
  • एनकैप्सुलेशन:आंतरिक कार्यान्वयन विवरणों को छिपाएं, आवश्यक इंटरफेस प्रकट करें, सुरक्षा में सुधार करें
  • विरासत:सबक्लास पैरेंट क्लास की विशेषताओं और विधियों को विरासत में देता है, कोड पुनः उपयोग को लागू करता है
  • बहुरूपता:एक ही इंटरफेस की विभिन्न कार्यान्वयन, रनटाइम गतिशील बंधन

7. बहुरूपता क्या है? बहुरूपता के कार्यान्वयन तरीके कौन से हैं?

Java बहुरूपता तंत्र को गहराई से समझें

  • बहुरूपता परिभाषा:एक ऑब्जेक्ट कई रूप रखता है, विभिन्न ऑब्जेक्ट पर एक ही विधि कॉल के विभिन्न अभिव्यक्तियां होती हैं
  • कार्यान्वयन तरीके:
  • संकलन समय बहुरूपता (ओवरलोडिंग):समान विधि नाम, भिन्न पैरामीटर, संकलन अवधि निर्धारित करता है
  • रनटाइम बहुरूपता (ओवरराइडिंग):पैरेंट क्लास संदर्भ सबक्लास ऑब्जेक्ट की ओर इशारा करता है, रनटाइम अवधि निर्धारित करता है
  • रनटाइम बहुरूपता शर्तें:विरासत, अधिलेखन, अपकास्ट
  • लाभ:कोड लचीलापन और रखरखाव में सुधार करता है, इंटरफेस प्रोग्रामिंग समर्थन करता है

8. इंटरफेस और अमूर्त क्लास में क्या अंतर है?

दो अमूर्त तंत्रों की समानताओं और अंतरों की तुलना करें

  • अमूर्त क्लास:abstract द्वारा संशोधित, अमूर्त विधियां और ठोस विधियां हो सकती हैं
  • इंटरफेस:interface द्वारा परिभाषित, डिफ़ॉल्ट विधि public abstract है (Java 8+ डिफ़ॉल्ट कार्यान्वयन समर्थन करता है)
  • विरासत संबंध:क्लास अमूर्त क्लास को केवल एकल विरासत कर सकती है, लेकिन कई इंटरफेस लागू कर सकती है
  • एक्सेस संशोधक:अमूर्त क्लास private/protected का उपयोग कर सकती है, इंटरफेस सदस्य डिफ़ॉल्ट public है
  • चर:अमूर्त क्लास के उदाहरण चर हैं, इंटरफेस केवल स्थिर स्थिर है
  • उपयोग परिदृश्य:अमूर्त क्लास साझा कोड के लिए, इंटरफेस विनिर्देश परिभाषा के लिए

9. ओवरलोड (Overload) और अधिलेखन (Override) क्या है?

दो समान लेकिन अलग अवधारणाओं को अलग करें

  • ओवरलोडिंग (Overload):
  • एक ही क्लास में, विधि नाम समान, पैरामीटर प्रकार/संख्या/क्रम भिन्न
  • संकलन समय निर्धारित, स्थैतिक बंधन से संबंधित
  • रिटर्न मान प्रकार अलग हो सकता है (लेकिन केवल रिटर्न मान से अलग नहीं किया जा सकता)
  • अधिलेखन (Override):
  • सबक्लास पैरेंट क्लास की विधि को फिर से लागू करता है, विधि हस्ताक्षर पूरी तरह समान
  • रनटाइम निर्धारित, गतिशील बंधन से संबंधित
  • रिटर्न मान प्रकार और अपवाद संगत होना चाहिए

10. एक्सेस संशोधक क्या हैं? कार्य सीमा क्या है?

Java के एक्सेस नियंत्रण तंत्र में महारत प्राप्त करें

  • public:सार्वजनिक, सभी क्लास द्वारा एक्सेस किया जा सकता है
  • protected:संरक्षित, एक ही पैकेज और सबक्लास द्वारा एक्सेस किया जा सकता है
  • default (कोई संशोधक नहीं):डिफ़ॉल्ट, एक ही पैकेज द्वारा एक्सेस किया जा सकता है
  • private:निजी, केवल क्लास के अंदर एक्सेस किया जा सकता है
  • एक्सेस रेंज तुलना:public > protected > default > private
  • सर्वोत्तम अभ्यास:एक्सेस अनुमतियों को कम करें, एनकैप्सुलेशन सिद्धांत का पालन करें

💾 मेमोरी प्रबंधन और कचरा संग्रह

11. Java मेमोरी संरचना में क्या शामिल है?

JVM के मेमोरी आवंटन को समझें

  • हीप (Heap):ऑब्जेक्ट उदाहरण संग्रहीत करता है, सभी थ्रेड द्वारा साझा, कचरा संग्रह का मुख्य क्षेत्र, आकार कॉन्फ़िगर किया जा सकता है
  • स्टैक (Stack):स्थानीय चर और विधि कॉल संग्रहीत करता है, प्रत्येक थ्रेड का अपना, स्वचालित रूप से मेमोरी जारी करता है
  • विधि क्षेत्र (Method Area):वर्ग संरचना सूचना, रनटाइम स्थिर पूल, स्थिर चर संग्रहीत करता है, सभी थ्रेड द्वारा साझा
  • प्रोग्राम काउंटर:वर्तमान थ्रेड द्वारा निष्पादित बाइटकोड निर्देश पता रिकॉर्ड करता है
  • स्थानीय विधि स्टैक:स्थानीय विधि (C/C++ कोड) निष्पादन

12. कचरा संग्रह क्या है? कचरा संग्रह एल्गोरिदम क्या हैं?

GC तंत्र को गहराई से समझें

  • कचरा संग्रह परिभाषा:स्वचालित रूप से अब उपयोग में न आने वाली ऑब्जेक्ट द्वारा कब्जा की गई मेमोरी को पुनः प्राप्त करें
  • प्रमुख एल्गोरिदम:
  • मार्क-स्वीप:जीवित ऑब्जेक्ट को चिह्नित करें, कचरे को साफ करें, विखंडन का उत्पादन करें
  • प्रतिलिपि एल्गोरिदम:दो मेमोरी ब्लॉक में विभाजित करें, सफाई समय जीवित ऑब्जेक्ट की प्रतिलिपि करें, कोई विखंडन नहीं लेकिन मेमोरी बर्बाद करें
  • मार्क-कॉम्पैक्ट:चिह्नित करने के बाद संपीड़न संगठित करें, कोई विखंडन नहीं लेकिन प्रदर्शन कम
  • पीढ़ीगत एल्गोरिदम:ऑब्जेक्ट नई और पुरानी पीढ़ी में विभाजित, विभिन्न पीढ़ियां विभिन्न रणनीतियों का उपयोग करती हैं
  • लाभ:स्वचालित मेमोरी प्रबंधन, मेमोरी रिसाव से बचें

13. हीप और स्टैक में क्या अंतर है?

दो महत्वपूर्ण मेमोरी क्षेत्रों की तुलना करें

  • भंडारण सामग्री:हीप ऑब्जेक्ट संग्रहीत करता है, स्टैक मूल प्रकार और संदर्भ संग्रहीत करता है
  • थ्रेड:हीप सभी थ्रेड द्वारा साझा, प्रत्येक थ्रेड का अपना स्टैक है
  • प्रबंधन:हीप कचरा संग्रह द्वारा प्रबंधित, स्टैक स्वचालित रूप से जारी होता है
  • आकार:हीप आम तौर पर बड़ा, स्टैक अपेक्षाकृत छोटा
  • प्रदर्शन:स्टैक आवंटन गति तेजी, हीप आवंटन अपेक्षाकृत धीमा
  • अपवाद:हीप ओवरफ्लो OutOfMemoryError, स्टैक ओवरफ्लो StackOverflowError

14. मेमोरी रिसाव क्या है? इससे कैसे बचें?

सामान्य मेमोरी समस्याओं को जानें

  • मेमोरी रिसाव परिभाषा:प्रोग्राम द्वारा आवंटित मेमोरी जारी नहीं की जा सकती, दीर्घकालीन मेमोरी पर कब्जा करता है
  • सामान्य कारण:
  • लंबे जीवन चक्र ऑब्जेक्ट संक्षिप्त जीवन चक्र ऑब्जेक्ट का संदर्भ लेता है
  • संग्रह में ऑब्जेक्ट समय पर साफ नहीं किया जाता है
  • श्रोता या कॉलबैक पंजीकरण रद्द नहीं किए जाते हैं
  • स्थिर संग्रह अनंत वृद्धि
  • बचने के तरीके:समय पर संदर्भ जारी करें, try-with-resources का उपयोग करें, नियमित रूप से मेमोरी उपयोग की जांच करें

15. मजबूत संदर्भ, नरम संदर्भ, कमजोर संदर्भ, आभासी संदर्भ क्या है?

Java के चार संदर्भ प्रकारों को समझें

  • मजबूत संदर्भ:सामान्य संदर्भ, ऑब्जेक्ट पुनः प्राप्त नहीं किया जाता है, जब तक कोई मजबूत संदर्भ नहीं है
  • नरम संदर्भ (SoftReference):मेमोरी अपर्याप्त होने पर पुनः प्राप्त, कैश के लिए उपयोग किया जाता है
  • कमजोर संदर्भ (WeakReference):अगली GC पर पुनः प्राप्त, WeakHashMap के लिए उपयोग किया जाता है
  • आभासी संदर्भ (PhantomReference):किसी भी समय पुनः प्राप्त किया जा सकता है, संदर्भ कतार के साथ उपयोग किया जाना चाहिए, ऑब्जेक्ट पुनः प्राप्ति को ट्रैक करने के लिए उपयोग किया जाता है
  • पुनः प्राप्ति प्राथमिकता:आभासी > कमजोर > नरम > मजबूत

📦 संग्रह ढांचा

16. Java संग्रह ढांचा की संरचना क्या है?

संग्रह ढांचा की समग्र अवधारणा में महारत प्राप्त करें

  • Collection इंटरफेस:
  • List:क्रमबद्ध दोहराने योग्य, जैसे ArrayList, LinkedList
  • Set:अक्रमबद्ध गैर-दोहराने योग्य, जैसे HashSet, TreeSet
  • Queue:कतार, जैसे LinkedList, PriorityQueue
  • Map इंटरफेस:
  • कुंजी-मान युग्म मैपिंग:HashMap, TreeMap, ConcurrentHashMap
  • समग्र पदानुक्रम:Iterable → Collection/Map → ठोस कार्यान्वयन क्लास

17. ArrayList और LinkedList में क्या अंतर है?

दो सामान्य सूची कार्यान्वयनों की तुलना करें

  • डेटा संरचना:ArrayList सरणी पर आधारित, LinkedList द्विदिशीय लिंक्ड सूची पर आधारित
  • यादृच्छिक एक्सेस:ArrayList O(1), LinkedList O(n)
  • सम्मिलन हटाना:ArrayList O(n), LinkedList O(1)
  • मेमोरी अधिकार:ArrayList सन्निहित, LinkedList बिखरा हुआ (सूचक ओवरहेड)
  • थ्रेड सुरक्षा:दोनों अतुल्यकालिक, Collections.synchronizedList() या CopyOnWriteArrayList का उपयोग कर सकते हैं
  • चुनाव:बार-बार क्वेरी के लिए ArrayList, बार-बार सम्मिलन हटाने के लिए LinkedList

18. HashMap का सिद्धांत और प्रदर्शन क्या है?

HashMap के कार्य तंत्र को गहराई से समझें

  • डेटा संरचना:सरणी + लिंक्ड सूची + लाल-काली वृक्ष (JDK 8+)
  • कार्य सिद्धांत:hash(key) % table.length सरणी सूचकांक की गणना करता है, टकराव समय लिंकेज या वृक्षीकरण
  • लोडिंग कारक:डिफ़ॉल्ट 0.75, जब उपयोग किया गया क्षमता ≥ क्षमता × लोडिंग कारक विस्तृत
  • विस्तार तंत्र:क्षमता दोगुनी, तत्व पुनः हैश स्थिति
  • समय जटिलता:औसत O(1), सबसे बुरी O(n) (बड़े पैमाने पर टकराव समय)
  • थ्रेड सुरक्षा:अतुल्यकालिक, मल्टी-थ्रेड ConcurrentHashMap या Collections.synchronizedMap() का उपयोग करते हैं

19. HashSet दोहराव को कैसे सुनिश्चित करता है?

Set के दोहराव हटाने तंत्र को समझें

  • अंतर्निहित कार्यान्वयन:HashMap पर आधारित, कुंजी तत्व है, मान निश्चित Object
  • दोहराव हटाने तंत्र:पहले hashCode() की तुलना करें, फिर equals() का उपयोग करके समानता निर्धारित करें
  • जोड़ने प्रवाह:hash की गणना करें → जांचें कि यह मौजूद है या नहीं → मौजूद नहीं जोड़ें → मौजूद है तो अनदेखा करें
  • कस्टम ऑब्जेक्ट:equals() और hashCode() को पुनः परिभाषित करना चाहिए, संगतता सुनिश्चित करें
  • प्रदर्शन:सम्मिलन, हटाना, खोज औसत O(1), hash गुणवत्ता पर निर्भर

20. fail-fast और fail-safe क्या है?

संग्रह के पुनरावर्तक सुरक्षा तंत्र को समझें

  • fail-fast:
  • पुनरावृत्ति प्रक्रिया में संग्रह संशोधन ConcurrentModificationException फेंकेगा
  • modCount और expectedModCount द्वारा पहचान करें
  • जैसे ArrayList, HashMap (गैर-थ्रेड सुरक्षित)
  • fail-safe:
  • पुनरावृत्ति संग्रह स्नैपशॉट या प्रतिलिपि पर आधारित, मूल संग्रह संशोधन पुनरावृत्ति को प्रभावित नहीं करता
  • जैसे CopyOnWriteArrayList, ConcurrentHashMap
  • उपयोग सुझाव:पुनरावृत्ति समय पुनरावर्तक का remove() का उपयोग करें, या fail-safe संग्रह का उपयोग करें

⚠️ अपवाद हैंडलिंग

21. Java अपवाद प्रणाली क्या है?

Java अपवाद वर्गीकरण को समझें

  • Throwable (मूल वर्ग):
  • Exception (अपवाद):पुनः प्राप्त किए जा सकने वाले अपवाद
  • Error (त्रुटि):वर्चुअल मशीन स्तरीय त्रुटि, पुनः प्राप्त नहीं की जा सकती
  • Exception वर्गीकरण:
  • जांच अपवाद (Checked):पकड़ा जाना या घोषित होना चाहिए, जैसे IOException
  • गैर-जांच अपवाद (Unchecked):न पकड़े जा सकते, जैसे NullPointerException, IndexOutOfBoundsException
  • सामान्य अपवाद:NPE, ClassCastException, ArrayIndexOutOfBoundsException आदि

22. try-catch-finally निष्पादन क्रम?

अपवाद हैंडलिंग निष्पादन प्रवाह में महारत प्राप्त करें

  • सामान्य स्थिति:try → finally → सामान्य रिटर्न
  • अपवाद स्थिति:try → अपवाद होना → catch → finally → अपवाद संचरण या रिटर्न
  • finally विशेषता:निश्चित रूप से निष्पादन, यहां तक कि catch में return, throw, System.exit()
  • अपवाद स्थिति:finally में return try/catch के return को ओवरराइड करेगा
  • संसाधन जारी करना:try-with-resources का उपयोग करने की अनुशंसा की जाती है, स्वचालित रूप से संसाधनों को बंद करता है
  • सर्वोत्तम अभ्यास:finally में रिटर्न मान न बदलें, अपवाद नुकसान का कारण बनेगा

23. throws और throw में क्या अंतर है?

दो अपवाद हैंडलिंग कीवर्ड को अलग करें

  • throw:
  • हाथ से अपवाद उदाहरण फेंकना, विधि के अंदर उपयोग किया जाना चाहिए
  • स्वरूप: throw new Exception("message")
  • throws:
  • विधि हस्ताक्षर में संभावित अपवाद घोषित करना
  • स्वरूप: public void method() throws IOException
  • हैंडलिंग तरीके:throw throws द्वारा घोषित, throws द्वारा कॉलर को हैंडल करता है
  • आवेदन:throw विशिष्ट अपवाद हैंडलिंग के लिए, throws अपवाद संचरण के लिए

24. कस्टम अपवाद कैसे परिभाषित करें?

परियोजना विशिष्ट अपवाद क्लास बनाएं

  • विरासत संबंध:Exception (जांच अपवाद) या RuntimeException (गैर-जांच अपवाद) का विरासत करें
  • आवश्यक भाग:
  • कोई पैरामीटर निर्माणकर्ता प्रदान करें
  • संदेश निर्माणकर्ता प्रदान करें
  • संदेश और कारण निर्माणकर्ता प्रदान करें
  • कोड उदाहरण:public class CustomException extends Exception { ... }
  • सर्वोत्तम अभ्यास:स्पष्ट नामकरण, स्पष्ट दस्तावेज, उपयुक्त अपवाद वर्ग की विरासत करें

25. try-with-resources वाक्य-विन्यास के लाभ?

संसाधन स्वचालित प्रबंधन को समझें

  • वाक्य-विन्यास:try (InputStream is = ...) { ... } स्वचालित संसाधन बंद करता है
  • आवश्यकता:संसाधन AutoCloseable इंटरफेस लागू करना चाहिए
  • लाभ:
  • स्वचालित रूप से close() विधि को कॉल करता है, हाथ से प्रबंधन की आवश्यकता नहीं
  • अपवाद दबाए जाने पर सही ढंग से हैंडल कर सकते हैं
  • कोड अधिक सरल, संसाधन रिसाव से बचें
  • लागू परिदृश्य:File, Stream, Connection, Statement आदि संसाधन वर्ग

🔤 String, StringBuilder, StringBuffer

26. String की अपरिवर्तनीयता और इसके कारण?

String डिजाइन के गहरे विचारों को समझें

  • अपरिवर्तनीयता परिभाषा:String ऑब्जेक्ट निर्माण के बाद संशोधित नहीं किया जा सकता, कोई भी संशोधन ऑपरेशन नया ऑब्जेक्ट लौटाता है
  • कार्यान्वयन तरीका:value सरणी final द्वारा संशोधित, कोई setter विधि नहीं
  • अपरिवर्तनीयता कारण:
  • स्ट्रिंग बफर पूल अनुकूलन, दोहराव से बचें
  • थ्रेड सुरक्षा, सिंक्रोनाइजेशन की आवश्यकता नहीं
  • hashCode कैश समर्थन, HashMap कुंजी के लिए उपयुक्त
  • नुकसान:बार-बार संशोधन समय बड़ी संख्या में मध्यवर्ती ऑब्जेक्ट बनाएंगे

27. String, StringBuilder, StringBuffer में क्या अंतर है?

उपयुक्त स्ट्रिंग संचालन क्लास चुनें

  • String:अपरिवर्तनीय, थ्रेड सुरक्षित, खराब प्रदर्शन (बार-बार संशोधन)
  • StringBuilder:परिवर्तनीय, गैर-थ्रेड सुरक्षित, अच्छा प्रदर्शन (एकल थ्रेड)
  • StringBuffer:परिवर्तनीय, थ्रेड सुरक्षित (सिंक विधि), सामान्य प्रदर्शन (मल्टी-थ्रेड)
  • प्रदर्शन तुलना:StringBuilder > StringBuffer > String
  • उपयोग सुझाव:
  • एकल-थ्रेड स्ट्रिंग संयोजन StringBuilder का उपयोग करें
  • मल्टी-थ्रेड स्ट्रिंग संयोजन StringBuffer का उपयोग करें
  • संशोधन की आवश्यकता नहीं तो String का उपयोग करें

28. स्ट्रिंग स्थिर पूल क्या है?

स्ट्रिंग कैशिंग तंत्र को समझें

  • परिभाषा:JVM द्वारा रखरखाव की गई स्ट्रिंग कैश, स्ट्रिंग शाब्दिक संग्रहीत करता है
  • स्थान:JDK 7+ में हीप में, पहले विधि क्षेत्र में
  • निर्माण तंत्र:
  • शाब्दिक जैसे "abc" स्वचालित रूप से पूल में प्रवेश करता है
  • new String("abc") यदि "abc" पूल में नहीं है तो जोड़ें
  • intern() विधि:स्ट्रिंग को पूल में जोड़ता है या मौजूदा संदर्भ लौटाता है
  • अनुकूलन प्रभाव:मेमोरी बचाता है, स्ट्रिंग तुलना गति बढ़ाता है

29. स्ट्रिंग समानता की तुलना कैसे करें?

स्ट्रिंग तुलना विधियों में महारत प्राप्त करें

  • == तुलना:संदर्भ समान है या नहीं, सामग्री की तुलना न करें
  • equals() तुलना:स्ट्रिंग सामग्री समान है या नहीं, उपयोग की सिफारिश की जाती है
  • equalsIgnoreCase() तुलना:बड़े-छोटे अक्षरों को अनदेखा करते हुए सामग्री की तुलना करें
  • compareTo() तुलना:शब्दकोश क्रम तुलना, पूर्णांक लौटाता है
  • Objects.equals():null मान को हैंडल करने वाली सुरक्षित तुलना
  • सर्वोत्तम अभ्यास:स्ट्रिंग सामग्री तुलना के लिए equals() का उपयोग करें, == से बचें

30. String संयोजन प्रदर्शन समस्या?

स्ट्रिंग संयोजन प्रदर्शन अनुकूलित करें

  • समस्या:String s = "a" + "b" + "c" कई मध्यवर्ती ऑब्जेक्ट और प्रतिलिपि का उत्पादन करता है
  • कारण:String अपरिवर्तनीय, संयोजन हर बार नया ऑब्जेक्ट बनाता है
  • प्रदर्शन प्रभाव:लूप संयोजन O(n²) समय जटिलता
  • अनुकूलन योजना:
  • लूप के बाहर सीधे + लूप के बाहर: संकलक StringBuilder को अनुकूलित करेगा
  • StringBuilder या StringBuffer स्पष्ट रूप से उपयोग करें
  • String.join(), StringJoiner आदि उपकरण का उपयोग करें

🔄 मल्टी-थ्रेड और समवर्ती

31. थ्रेड क्या है? थ्रेड कैसे बनाएं?

थ्रेड की मूल अवधारणा और निर्माण तरीकों में महारत प्राप्त करें

  • थ्रेड परिभाषा:प्रक्रिया के अंदर स्वतंत्र निष्पादन प्रवाह, साझा मेमोरी लेकिन स्वतंत्र स्टैक
  • निर्माण तरीके:
  • Thread विरासत:public class MyThread extends Thread { public void run() {} }
  • Runnable कार्यान्वयन:public class MyRunnable implements Runnable { public void run() {} }
  • Callable कार्यान्वयन:रिटर्न मान और अपवाद समर्थन
  • अंतर:Runnable की सिफारिश की जाती है, एकल विरासत सीमा से बचें
  • शुरू करना:thread.start() को कॉल करें, run() को सीधे कॉल न करें

32. थ्रेड जीवन चक्र और स्थिति?

थ्रेड की विभिन्न स्थितियों का रूपांतरण समझें

  • NEW:थ्रेड निर्माण लेकिन शुरू नहीं
  • RUNNABLE:चलने योग्य स्थिति (निष्पादन के लिए प्रतीक्षा या निष्पादन)
  • BLOCKED:अवरुद्ध स्थिति, लॉक प्राप्ति के लिए प्रतीक्षा
  • WAITING:प्रतीक्षा स्थिति, अन्य थ्रेड सूचना के लिए प्रतीक्षा
  • TIMED_WAITING:निर्दिष्ट समय के लिए प्रतीक्षा
  • TERMINATED:थ्रेड समाप्त
  • स्थिति रूपांतरण:NEW → RUNNABLE → BLOCKED/WAITING → TERMINATED

33. synchronized का कार्य सिद्धांत?

Java के अंतर्निहित लॉक तंत्र को समझें

  • सिंक्रोनाइजेशन तंत्र:ऑब्जेक्ट के अंतर्निहित लॉक का उपयोग करके सिंक्रोनाइजेशन लागू करता है
  • उपयोग तरीके:
  • सिंक्रोनाइज विधि:public synchronized void method() {}
  • सिंक्रोनाइज ब्लॉक:synchronized(obj) { ... }
  • कार्य सिद्धांत:
  • प्रत्येक ऑब्जेक्ट के पास एक मॉनिटर है
  • थ्रेड लॉक प्राप्ति गंभीर क्षेत्र दर्ज करता है, परस्पर निष्पादन
  • बाइटकोड: monitorenter, monitorexit
  • विशेषता:पुन: प्रवेश, एक्सक्लूसिव, स्वचालित रिलीज

34. volatile कीवर्ड का कार्य?

मेमोरी दृश्यता और निर्देश पुनर्क्रमण निषेध को समझें

  • कार्य:
  • दृश्यता:संशोधन अन्य थ्रेड के लिए तुरंत दृश्यमान
  • निर्देश पुनर्क्रमण निषेध:संकलक और CPU पुनर्क्रमण अनुकूलन को रोकता है
  • कार्यान्वयन:मेमोरी बाधा, मुख्य मेमोरी से पढ़ना-लिखना
  • सीमा:परमाणुता की गारंटी नहीं दे सकता, synchronized की जगह नहीं ले सकता
  • आवेदन परिदृश्य:झंडा बिट, दोहरी जांच सिंगलटन, स्थिति चिह्न
  • तुलना synchronized:volatile हल्का लेकिन सीमित कार्य

35. wait(), notify(), notifyAll() का कार्य और अंतर?

थ्रेड संचार तंत्र में महारत प्राप्त करें

  • wait():
  • वर्तमान थ्रेड लॉक जारी करके प्रतीक्षा में प्रवेश, जब तक जागृत न हो
  • सिंक्रोनाइज ब्लॉक के अंदर कॉल किया जाना चाहिए
  • notify():
  • एक प्रतीक्षा थ्रेड को जागृत करें (यादृच्छिक चुनाव)
  • लॉक जारी न करें, सिंक्रोनाइज ब्लॉक समाप्त होने तक जारी न करें
  • notifyAll():
  • सभी प्रतीक्षा थ्रेड को जागृत करें
  • उपयोग पैटर्न:Producer-Consumer पैटर्न, मॉनिटर पैटर्न

💡 साक्षात्कार तैयारी सुझाव

आधार गहरा करें:केवल अवधारणा जानना काफी नहीं, सिद्धांत और कार्यान्वयन विवरण समझें

अधिक अभ्यास करें:कोडिंग अभ्यास के माध्यम से ज्ञान को सुदृढ़ करें, विशेष रूप से मल्टी-थ्रेड और समवर्ती संबंधित

स्रोत कोड पढ़ें:Java पुस्तकालय स्रोत कोड (संग्रह, समवर्ती आदि) को गहराई से समझने के लिए अध्ययन करें

विवरण पर ध्यान दें:सामान्य जाल और सर्वोत्तम अभ्यास में महारत प्राप्त करें, जैसे स्ट्रिंग तुलना, संग्रह संशोधन आदि

उदाहरण देते हुए समझाएं:साक्षात्कार में विशिष्ट उदाहरण का उपयोग करके अवधारणा को समझाएं, अभिव्यक्ति शक्ति बढ़ाएं