top 50 core java interview questions
उदाहरणों के साथ अक्सर पूछे जाने वाले जावा साक्षात्कार प्रश्न और उत्तर:
Android के लिए सबसे अच्छा एमपी 3 डाउनलोड साइटों
इस ट्यूटोरियल में, हमने फ्रेशर्स और अनुभवी उम्मीदवारों के लिए लगभग 50+ महत्वपूर्ण कोर जावा साक्षात्कार प्रश्न कवर किए हैं।
JAVA साक्षात्कार प्रश्न पर यह पोस्ट आपको साक्षात्कार के प्रयोजनों के लिए जावा प्रोग्रामिंग की मूल अवधारणाओं को समझने में मदद करने के लिए तैयार किया गया है। सभी महत्वपूर्ण JAVA अवधारणाओं को आपकी आसान समझ के लिए उदाहरणों के साथ यहां समझाया गया है।
इस ट्यूटोरियल में जावा जावा विषय जैसे बुनियादी जावा परिभाषाएँ, ओओपी अवधारणाएँ, एक्सेस विनिर्देशक, संग्रह, अपवाद, थ्रेड्स, सीरियलाइज़ेशन आदि शामिल हैं, उदाहरण के लिए आपको पूरी तरह से तैयार करने के लिए। किसी भी JAVA साक्षात्कार का सामना आत्मविश्वास से करना।
सबसे लोकप्रिय जावा साक्षात्कार प्रश्न और उत्तर
नीचे दिए गए विस्तृत उत्तरों के साथ सबसे महत्वपूर्ण और सामान्यतः पूछे जाने वाले बुनियादी और उन्नत जावा प्रोग्रामिंग साक्षात्कार प्रश्नों की एक व्यापक सूची है।
Q # 1) जावा क्या है?
उत्तर: जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है और प्लेटफार्म-स्वतंत्र है।
जावा वस्तुओं का एक संग्रह है। इसे Sun Microsystems द्वारा विकसित किया गया था। जावा का उपयोग करके बहुत सारे एप्लिकेशन, वेबसाइट और गेम विकसित किए गए हैं।
Q # 2) जावा की विशेषताएं क्या हैं?
उत्तर: जावा की विशेषताएं इस प्रकार हैं:
- OOP अवधारणाओं
- वस्तु के उन्मुख
- विरासत
- कैप्सूलीकरण
- बहुरूपता
- मतिहीनता
- स्वतंत्र मंच: एक एकल कार्यक्रम विभिन्न प्लेटफार्मों पर बिना किसी संशोधन के काम करता है।
- उच्च प्रदर्शन: JIT (जस्ट इन टाइम कंपाइलर) जावा में उच्च प्रदर्शन को सक्षम बनाता है। JIT बाईटेकोड को मशीनी भाषा में परिवर्तित करता है और फिर JVM निष्पादन को शुरू करता है।
- बहु थ्रेडेड: निष्पादन के प्रवाह को थ्रेड के रूप में जाना जाता है। जेवीएम एक धागा बनाता है जिसे मुख्य धागा कहा जाता है। उपयोगकर्ता थ्रेड क्लास को बढ़ाकर या रननेबल इंटरफ़ेस को लागू करके कई थ्रेड बना सकता है।
Q # 3) जावा उच्च प्रदर्शन कैसे सक्षम करता है?
उत्तर: उच्च प्रदर्शन को सक्षम करने के लिए जावा जस्ट इन टाइम कंपाइलर का उपयोग करता है। इसका उपयोग निर्देशों को bytecodes में बदलने के लिए किया जाता है।
Q # 4) जावा आईडीई का नाम बताइए?
उत्तर: ग्रहण और नेटबीन्स जावा के आईडीई हैं।
Q # 5) कंस्ट्रक्टर के क्या मायने हैं?
उत्तर: कंस्ट्रक्टर को विस्तार से बताया गया है:
- जब एक प्रोग्राम में एक नई ऑब्जेक्ट बनाई जाती है, तो एक कंस्ट्रक्टर को क्लास के अनुरूप लगाया जाता है।
- कंस्ट्रक्टर एक विधि है जिसका वर्ग नाम के समान नाम है।
- यदि कोई उपयोगकर्ता एक निर्माता नहीं बनाता है, तो जाहिर है कि एक डिफ़ॉल्ट निर्माता बनाया जाएगा।
- कंस्ट्रक्टर को ओवरलोड किया जा सकता है।
- यदि उपयोगकर्ता ने एक पैरामीटर के साथ एक कंस्ट्रक्टर बनाया है, तो उसे एक अन्य कंस्ट्रक्टर को बिना पैरामीटर के स्पष्ट रूप से बनाना चाहिए।
Q # 6) स्थानीय चर और इंस्टेंस चर का क्या अर्थ है?
उत्तर:
स्थानीय चर विधि के अंदर मौजूद चर की विधि और कार्यक्षेत्र में परिभाषित होते हैं।
उदाहरण चर वर्ग के अंदर और विधि के बाहर परिभाषित किया गया है और चर का दायरा पूरे वर्ग में मौजूद है।
Q # 7) क्लास क्या है?
उत्तर: सभी जावा कोड एक कक्षा में परिभाषित किए गए हैं। इसके चर और विधियां हैं।
चर वे विशेषताएँ हैं जो एक वर्ग की स्थिति को परिभाषित करती हैं।
तरीकों वह स्थान है जहाँ सटीक व्यापारिक तर्क किया जाना है। इसमें विशेष आवश्यकता को पूरा करने के लिए विवरणों (या) निर्देशों का एक सेट होता है।
उदाहरण:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
Q # 8) ऑब्जेक्ट क्या है?
उत्तर: किसी वर्ग के उदाहरण को एक वस्तु कहा जाता है। वस्तु में अवस्था और व्यवहार होता है।
जब भी JVM “नया ()” कीवर्ड पढ़ता है तो यह उस वर्ग का एक उदाहरण बना देगा।
उदाहरण:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
उपरोक्त कोड एडिशन क्लास के लिए ऑब्जेक्ट बनाता है।
Q # 9) OOPs अवधारणाएं क्या हैं?
उत्तर: OOPs अवधारणाओं में शामिल हैं:
- विरासत
- कैप्सूलीकरण
- बहुरूपता
- मतिहीनता
- इंटरफेस
सुझाव पढ़ें = >> शीर्ष OOPs साक्षात्कार प्रश्न
Q # 10) वंशानुक्रम क्या है?
उत्तर: वंशानुक्रम का अर्थ है कि एक वर्ग दूसरे वर्ग का विस्तार कर सकता है। ताकि कोड एक कक्षा से दूसरी कक्षा में पुन: उपयोग किए जा सकें। मौजूदा वर्ग को सुपर क्लास के रूप में जाना जाता है जबकि व्युत्पन्न वर्ग को उप वर्ग के रूप में जाना जाता है।
उदाहरण:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
इनहेरिटेंस केवल जनता और संरक्षित सदस्यों पर ही लागू होता है। निजी सदस्यों को विरासत में नहीं दिया जा सकता है।
Q # 11) एनकैप्सुलेशन क्या है?
उत्तर: एनकैप्सुलेशन का उद्देश्य:
- दूसरों से कोड की रक्षा करता है।
- कोड रखरखाव।
उदाहरण:
हम ’a’ को पूर्णांक चर के रूप में घोषित कर रहे हैं और यह नकारात्मक नहीं होना चाहिए।
public class Addition(){ int a=5; }
यदि कोई सटीक चर को ' a = -5 ' तो बुरा है।
समस्या को दूर करने के लिए हमें निम्न चरणों का पालन करने की आवश्यकता है:
- हम चर को निजी या संरक्षित बना सकते हैं।
- सार्वजनिक एक्सेसर विधियों जैसे कि सेट और प्राप्त करें का उपयोग करें।
ताकि उपरोक्त कोड को संशोधित किया जा सके:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
नीचे दिया गया कोड गेटटर और सेटर दिखाता है।
चर सेट करते समय स्थितियां प्रदान की जा सकती हैं।
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
एनकैप्सुलेशन के लिए, हमें सभी उदाहरण चर को निजी बनाने और उन चर के लिए सेटर और गेट्टर बनाने की आवश्यकता है। जो बदले में दूसरों को सीधे डेटा का उपयोग करने के बजाय बसने वालों को कॉल करने के लिए मजबूर करेगा।
Q # 12) बहुरूपता क्या है?
उत्तर: बहुरूपता का अर्थ है कई रूप।
एक एकल वस्तु संदर्भ प्रकार के आधार पर सुपर-क्लास या उप-वर्ग को संदर्भित कर सकती है जिसे बहुरूपता कहा जाता है।
उदाहरण:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
हेरफेर संदर्भ प्रकार का उपयोग करके हम एडिशन क्लास को 'ऐड ()' विधि कह सकते हैं। इस क्षमता को बहुरूपता के रूप में जाना जाता है। बहुरूपता के लिए लागू है अधिभावी और के लिए नहीं अधिक भार ।
Q # 13) मेथड ओवरराइडिंग का क्या मतलब है?
उत्तर: विधि ओवरराइडिंग तब होती है जब उप-वर्ग विधि सुपर-क्लास विधि के साथ नीचे की स्थितियों को संतुष्ट करती है:
- विधि का नाम समान होना चाहिए
- तर्क समान होना चाहिए
- रिटर्न प्रकार भी समान होना चाहिए
ओवरराइडिंग का मुख्य लाभ यह है कि उप-वर्ग सुपर-क्लास की तुलना में उस उप-वर्ग प्रकार के बारे में कुछ विशिष्ट जानकारी प्रदान कर सकता है।
उदाहरण:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
इसके अलावा। () विधि उप-वर्ग में ऐड () पद्धति को कॉल करती है न कि पैरेंट क्लास को। इसलिए यह सुपर-क्लास पद्धति को ओवरराइड करता है और इसे मेथड ओवरराइडिंग के रूप में जाना जाता है।
Q # 14) ओवरलोडिंग का क्या मतलब है?
उत्तर: विधि अधिभार विभिन्न वर्गों के लिए या एक ही वर्ग के भीतर होता है।
ओवरलोडिंग विधि के लिए, उप-वर्ग विधि को सुपर-क्लास विधि (या) विधियों के साथ ही कक्षा में नीचे की शर्तों को पूरा करना चाहिए:
- एक ही विधि का नाम
- विभिन्न प्रकार के तर्क
- अलग-अलग रिटर्न प्रकार हो सकते हैं
उदाहरण:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }
यहां Add () मेथड में Addition class के अलग-अलग पैरामीटर्स हैं जो सुपर-क्लास के साथ उसी क्लास में ओवरलोडेड हैं।
ध्यान दें: पॉलीमोर्फिज्म विधि अधिभार के लिए लागू नहीं है।
Q # 15) इंटरफ़ेस का क्या मतलब है?
उत्तर: जावा में एकाधिक वंशानुक्रम प्राप्त नहीं किए जा सकते हैं। इस समस्या को दूर करने के लिए इंटरफ़ेस अवधारणा शुरू की गई है।
एक इंटरफ़ेस एक टेम्पलेट है जिसमें केवल विधि घोषणाएं हैं और विधि कार्यान्वयन नहीं है।
उदाहरण:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- इंटरफ़ेस में सभी तरीके आंतरिक रूप से हैं सार्वजनिक सार शून्य ।
- इंटरफ़ेस में सभी चर आंतरिक रूप से हैं सार्वजनिक स्थिर फाइनल वह निरंतर है।
- कक्षाएं इंटरफ़ेस को लागू कर सकती हैं और विस्तारित नहीं होती हैं।
- इंटरफ़ेस को लागू करने वाले वर्ग को इंटरफ़ेस में घोषित सभी तरीकों के लिए एक कार्यान्वयन प्रदान करना चाहिए।
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Q # 16) एब्स्ट्रैक्ट क्लास का क्या मतलब है?
उत्तर: हम वर्ग नाम से पहले 'सार' कीवर्ड का उपयोग करके सार वर्ग बना सकते हैं। एक सार वर्ग में 'सार' और 'गैर-सार' दोनों विधियां हो सकती हैं जो एक ठोस वर्ग हैं।
सार विधि:
जिस विधि में केवल घोषणा है और कार्यान्वयन नहीं है उसे सार विधि कहा जाता है और इसमें 'सार' नाम का कीवर्ड है। घोषणाएँ अर्धविराम के साथ समाप्त होती हैं।
उदाहरण:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- एक सार वर्ग में एक गैर-सार पद्धति भी हो सकती है।
- अमूर्त वर्ग का विस्तार करने वाले ठोस उपवर्ग सार तरीकों के लिए कार्यान्वयन प्रदान करना चाहिए।
Q # 17) ऐरे और ऐरे लिस्ट में अंतर।
उत्तर: सरणी और सरणी सूची के बीच के अंतर को नीचे दी गई तालिका से समझा जा सकता है:
सरणी | सारणी सूची |
---|---|
आकार सरणी घोषणा के समय दिया जाना चाहिए। स्ट्रिंग () नाम = नया स्ट्रिंग (२) | आकार की आवश्यकता नहीं हो सकती है। यह आकार को गतिशील रूप से बदलता है। ArrayList नाम = नया ArrayList |
किसी ऑब्जेक्ट को सरणी में रखने के लिए हमें इंडेक्स को निर्दिष्ट करने की आवश्यकता होती है। नाम (1) = 'पुस्तक' | कोई सूचकांक की आवश्यकता है। name.add ('पुस्तक') |
Array टाइप किया हुआ नहीं है | जावा 5.0 में ArrayList को मानकीकृत किया गया है। उदा: यह कोण ब्रैकेट एक प्रकार का पैरामीटर है जिसका अर्थ है स्ट्रिंग की सूची। |
क्यू # 18) स्ट्रिंग, स्ट्रिंग बिल्डर और स्ट्रिंग बफर के बीच अंतर।
उत्तर:
स्ट्रिंग: स्ट्रिंग वैरिएबल को 'निरंतर स्ट्रिंग पूल' में संग्रहीत किया जाता है। एक बार स्ट्रिंग संदर्भ पुराने मान को बदल देता है जो 'निरंतर स्ट्रिंग पूल' में मौजूद है, इसे मिटाया नहीं जा सकता है।
उदाहरण:
स्ट्रिंग नाम = 'पुस्तक';
लगातार स्ट्रिंग पूल
।
यदि नाम-मान 'पुस्तक' से 'पेन' में बदल गया है।
लगातार स्ट्रिंग पूल
फिर पुराने मूल्य निरंतर स्ट्रिंग पूल में रहता है।
स्ट्रिंग बफर:
- यहां स्ट्रिंग मान एक स्टैक में संग्रहीत किए जाते हैं। यदि मान बदले जाते हैं तो नया मान पुराने मान को बदल देता है।
- स्ट्रिंग बफ़र सिंक्रनाइज़ है जो थ्रेड-सुरक्षित है।
- स्ट्रिंग निर्माता की तुलना में प्रदर्शन धीमा है।
उदाहरण:
स्ट्रिंग बफ़र नाम = 'पुस्तक';
एक बार नाम मान को 'पेन' में बदल दिया गया तो स्टैक में 'बुक' मिटा दिया जाता है।
स्ट्रिंग बिल्डर:
यह स्ट्रिंग बिल्डर को छोड़कर स्ट्रिंग बफर के समान है जो सुरक्षित रूप से थ्रेडेड नहीं है जो सिंक्रनाइज़ नहीं है। तो जाहिर है प्रदर्शन तेज है।
Q # 19) पब्लिक और प्राइवेट एक्सेस स्पेसर्स के बारे में बताएं।
उत्तर: विधियों और उदाहरण चर को सदस्यों के रूप में जाना जाता है।
जनता:
सार्वजनिक सदस्य उसी पैकेज के साथ-साथ बाहर के पैकेज में भी दिखाई देते हैं जो अन्य पैकेजों के लिए है।
कक्षा A के सार्वजनिक सदस्य कक्षा B (समान पैकेज) के साथ-साथ कक्षा C (विभिन्न पैकेज) के लिए दृश्यमान हैं।
निजी:
निजी सदस्य केवल एक ही कक्षा में दिखाई देते हैं और एक ही पैकेज में अन्य कक्षाओं के साथ-साथ बाहर के पैकेजों में भी नहीं।
कक्षा A में निजी सदस्य केवल उसी कक्षा में दिखाई देते हैं। यह क्लास बी के साथ-साथ क्लास सी के लिए भी अदृश्य है।
Q # 20) डिफ़ॉल्ट और संरक्षित एक्सेस स्पेसर्स के बीच अंतर।
उत्तर:
चूक: बिना किसी एक्सेस स्पेसियर के एक वर्ग में घोषित तरीकों और चर को डिफ़ॉल्ट कहा जाता है।
कक्षा ए में डिफ़ॉल्ट सदस्य अन्य कक्षाओं के लिए दिखाई देते हैं जो पैकेज के अंदर होते हैं और उन कक्षाओं के लिए अदृश्य होते हैं जो पैकेज के बाहर होते हैं।
इसलिए क्लास ए के सदस्य क्लास बी और क्लास सी के लिए अदृश्य दिखाई दे रहे हैं।
संरक्षित:
।
संरक्षित डिफ़ॉल्ट के समान है, लेकिन यदि कोई वर्ग विस्तारित होता है, तो यह पैकेज के बाहर भी दिखाई देता है।
क्लास ए के सदस्य क्लास बी में दिखाई देते हैं क्योंकि यह पैकेज के अंदर है। क्लास सी के लिए यह अदृश्य है लेकिन अगर क्लास सी क्लास ए का विस्तार करता है तो सदस्य क्लास सी के लिए दिखाई देते हैं भले ही यह पैकेज के बाहर हो।
Q # 21) हाशप और हैशटेबल के बीच अंतर।
उत्तर: HashMap और HashTable के बीच का अंतर नीचे देखा जा सकता है:
हैश मैप | हैश तालिका |
---|---|
तरीके सिंक्रनाइज़ नहीं हैं | प्रमुख विधियाँ समकालिक हैं |
धागा सुरक्षा नहीं | धागा सुरक्षा |
Iterator का उपयोग मूल्यों को पुनरावृत्त करने के लिए किया जाता है | मूल्यों को पुनरावृत्त करने के लिए एन्यूमरेटर का उपयोग किया जाता है |
एक शून्य कुंजी और कई अशक्त मूल्यों की अनुमति देता है | ऐसा कुछ भी नहीं है जो अशक्त हो |
प्रदर्शन हैशटेबल से अधिक है | प्रदर्शन धीमा है |
Q # 22) हैशसेट और ट्रीसेट के बीच अंतर।
उत्तर: हैशसेट और ट्रीसेट के बीच अंतर को नीचे देखा जा सकता है:
हैशसेट | ट्रीसैट |
---|---|
सम्मिलित तत्व यादृच्छिक क्रम में हैं | तत्वों को क्रमबद्ध क्रम में बनाए रखता है |
अशक्त वस्तुओं को संग्रहीत करने में सक्षम हो सकता है | नल की वस्तुओं को स्टोर नहीं किया जा सकता है |
प्रदर्शन तेज है | प्रदर्शन धीमा है |
Q # 23) सार वर्ग और इंटरफ़ेस के बीच अंतर।
उत्तर: सार वर्ग और इंटरफ़ेस के बीच अंतर निम्नानुसार हैं:
सार वर्ग:
- अमूर्त कक्षाओं में एक डिफ़ॉल्ट कंस्ट्रक्टर होता है और इसे तब भी कहा जाता है जब भी कंक्रीट उपवर्ग तत्काल होता है।
- इसमें एब्सट्रैक्ट के तरीके के साथ-साथ नॉन-एब्सट्रैक्ट के तरीके भी शामिल हैं।
- जो वर्ग एब्सट्रैक्ट क्लास का विस्तार करता है, उसे सभी विधियों के कार्यान्वयन की आवश्यकता नहीं होती है, केवल एब्सट्रैक्ट विधियों को कंक्रीट सब-क्लास में लागू करने की आवश्यकता होती है।
- सार वर्ग में उदाहरण चर शामिल हैं।
इंटरफेस:
- इसका कोई निर्माणकर्ता नहीं है और इसे तत्काल नहीं बनाया जा सकता है।
- अकेले सार विधि घोषित की जानी चाहिए।
- इंटरफ़ेस को लागू करने वाली कक्षाएं सभी तरीकों के लिए कार्यान्वयन प्रदान करना चाहिए।
- इंटरफ़ेस में केवल स्थिरांक हैं।
क्यू # 24) जावा में कलेक्शंस का क्या अर्थ है?
उत्तर: संग्रह एक फ्रेमवर्क है जिसे ऑब्जेक्ट्स को स्टोर करने और ऑब्जेक्ट्स को स्टोर करने के लिए डिज़ाइन में हेरफेर करने के लिए डिज़ाइन किया गया है।
निम्नलिखित कार्यों को करने के लिए संग्रह का उपयोग किया जाता है:
- खोज कर
- छंटाई
- जोड़-तोड़
- प्रविष्टि
- विलोपन
वस्तुओं के समूह को संग्रह के रूप में जाना जाता है। जावा उपयोग पैकेज में एकत्रित करने के लिए सभी कक्षाएं और इंटरफेस उपलब्ध हैं।
Q # 25) संग्रह में उपलब्ध सभी वर्ग और इंटरफेस क्या हैं?
उत्तर: नीचे दिए गए संग्रह में उपलब्ध कक्षाएं और इंटरफेस हैं:
इंटरफेस:
- संग्रह
- सूची
- सेट
- नक्शा
- क्रमबद्ध सेट
- मैप को क्रमबद्ध किया
- पंक्ति
कक्षाएं:
- सूची:
- सारणी सूची
- वेक्टर
- लिंक्ड सूची
सेट:
- हैश सेट
- लिंक किया गया हैश सेट
- ट्री सेट
मैप्स:
- हैश मैप
- हैश तालिका
- ट्री-मैप
- लिंक किया हुआ मैप
पंक्ति:
- प्राथमिकता कतार
Q # 26) संग्रह में क्रमबद्ध और क्रमबद्ध द्वारा क्या मतलब है?
उत्तर:
आदेश दिया गया: इसका मतलब है कि एक संग्रह में संग्रहीत मूल्य उन मूल्यों पर आधारित होते हैं जिन्हें संग्रह में जोड़ा जाता है। तो हम एक विशिष्ट क्रम में संग्रह से मूल्यों को पुनरावृत्त कर सकते हैं।
क्रमबद्ध: सॉर्टिंग तंत्र को आंतरिक या बाहरी रूप से लागू किया जा सकता है ताकि किसी विशेष संग्रह में छांटे गए वस्तुओं का समूह वस्तुओं के गुणों पर आधारित हो।
Q # 27) संग्रह में उपलब्ध विभिन्न सूचियों के बारे में बताएं।
उत्तर: सूची में जोड़े गए मान सूचकांक स्थिति पर आधारित होते हैं और इसे सूचकांक स्थिति द्वारा आदेशित किया जाता है। डुप्लिकेट की अनुमति है।
सूचियों के प्रकार हैं:
क) सरणी सूची:
- तेज़ पुनरावृत्ति और तेज़ रैंडम एक्सेस।
- यह एक ऑर्डर किया गया संग्रह (इंडेक्स द्वारा) है और इसे क्रमबद्ध नहीं किया गया है।
- यह रैंडम एक्सेस इंटरफेस को लागू करता है।
उदाहरण:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
आउटपुट:
(सेब, चेरी, कीवी, केला, चेरी)
आउटपुट से, एरे लिस्ट प्रविष्टि क्रम को बनाए रखता है और यह डुप्लिकेट को स्वीकार करता है। लेकिन यह हल नहीं हुआ।
बी) वेक्टर:
यह ऐरे लिस्ट के समान है।
- वेक्टर विधियां सिंक्रनाइज़ की जाती हैं।
- धागा सुरक्षा।
- यह रैंडम एक्सेस को भी लागू करता है।
- थ्रेड सुरक्षा आमतौर पर एक प्रदर्शन हिट का कारण बनती है।
उदाहरण:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
आउटपुट:
(चेरी, सेब, केला, कीवी, सेब)
वेक्टर सम्मिलन क्रम को भी बनाए रखता है और डुप्लिकेट को स्वीकार करता है।
ग) लिंक की गई सूची:
- तत्वों को एक दूसरे से दोगुना जोड़ा जाता है।
- प्रदर्शन ऐरे सूची से धीमा है।
- प्रविष्टि और विलोपन के लिए अच्छा विकल्प।
- जावा 5.0 में यह सामान्य कतार विधियों का समर्थन करता है (), पूल (), प्रस्ताव () आदि।
उदाहरण:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
आउटपुट:
(केला, चेरी, सेब, कीवी, केला)
प्रविष्टि क्रम बनाए रखता है और डुप्लिकेट को स्वीकार करता है।
Q # 28) एक संग्रह में सेट और उनके प्रकारों के बारे में बताएं।
उत्तर: विशिष्टता की परवाह करें। यह दोहराव की अनुमति नहीं देता है। यहां 'समान ()' विधि का उपयोग यह निर्धारित करने के लिए किया जाता है कि दो वस्तुएं समान हैं या नहीं।
क) हैश सेट:
- अव्यवस्थित और अनसुलझा।
- मान सम्मिलित करने के लिए ऑब्जेक्ट के हैश कोड का उपयोग करता है।
- आवश्यकता होने पर इसका उपयोग करें 'कोई डुप्लिकेट नहीं है और ऑर्डर के बारे में परवाह नहीं है'।
उदाहरण:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
आउटपुट:
(केला, चेरी, कीवी, सेब)
यह किसी भी प्रविष्टि क्रम का पालन नहीं करता है। डुप्लिकेट की अनुमति नहीं है।
ख) लिंक किए गए हैश सेट:
- हैश सेट के एक ऑर्डर किए गए संस्करण को लिंक्ड हैश सेट के रूप में जाना जाता है।
- सभी तत्वों की दोहरी-लिंक की गई सूची बनाए रखता है।
- इसका उपयोग तब करें जब एक पुनरावृत्ति क्रम की आवश्यकता हो।
उदाहरण:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
आउटपुट:
(केला, चेरी, सेब, कीवी)
यह सम्मिलन क्रम को बनाए रखता है जिसमें उन्हें सेट में जोड़ा गया है। डुप्लिकेट की अनुमति नहीं है।
ग) ट्री सेट:
- यह दो क्रमबद्ध संग्रहों में से एक है।
- 'रीड-ब्लैक' ट्री संरचना का उपयोग करता है और गारंटी देता है कि तत्व आरोही क्रम में होंगे।
- हम एक तुलनीय (या) तुलनित्र का उपयोग करके कंस्ट्रक्टर के साथ एक पेड़ सेट का निर्माण कर सकते हैं।
उदाहरण:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
आउटपुट:
(सेब, केला, चेरी, कीवी)
ट्रीसेट आरोही क्रम में तत्वों को क्रमबद्ध करता है। और डुप्लिकेट की अनुमति नहीं है।
Q # 29) मानचित्र और उसके प्रकारों के बारे में बताएं।
उत्तर: नक्शा अद्वितीय पहचानकर्ता की परवाह करता है। हम विशिष्ट मूल्य के लिए एक अद्वितीय कुंजी मैप कर सकते हैं। यह एक कुंजी / मूल्य जोड़ी है। हम कुंजी के आधार पर एक मान खोज सकते हैं। सेट की तरह, नक्शा यह भी निर्धारित करने के लिए 'बराबरी ()' विधि का उपयोग करता है कि क्या दो कुंजी समान हैं या अलग-अलग हैं।
नक्शा निम्न प्रकार का है:
क) हैश मैप:
- अनियंत्रित और अनसुलझा नक्शा।
- जब हम ऑर्डर के बारे में परवाह नहीं करते हैं तो हैशमैप एक अच्छा विकल्प है।
- यह एक अशक्त कुंजी और कई अशक्त मूल्यों की अनुमति देता है।
उदाहरण:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
आउटपुट:
{की 2 = केला, की 1 = चेरी, की 4 = कीवी, की 3 = सेब}
मानचित्र में डुप्लिकेट कुंजियों की अनुमति नहीं है।
यह किसी भी प्रविष्टि क्रम को बनाए नहीं रखता है और अनसोल्ड है।
बी) हैश टेबल:
- वेक्टर कुंजी की तरह, कक्षा के तरीके सिंक्रनाइज़ किए जाते हैं।
- थ्रेड सुरक्षा और इसलिए प्रदर्शन धीमा कर देती है।
- यह कुछ भी ऐसा नहीं है जो अशक्त हो।
उदाहरण:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
आउटपुट:
{की 2 = सेब, की 1 = चेरी, की 4 = कीवी, की 3 = केला}
डुप्लिकेट कुंजियों की अनुमति नहीं है।
सी) लिंक्ड हैश मैप:
- प्रविष्टि क्रम बनाए रखता है।
- हैश मैप की तुलना में धीमा।
- मैं एक तेज पुनरावृत्ति की उम्मीद कर सकता हूं।
उदाहरण:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
आउटपुट:
{की 2 = सेब, की 1 = चेरी, की 4 = कीवी, की 3 = केला}
डुप्लिकेट कुंजियों की अनुमति नहीं है।
डी) ट्रीपैप:
- मैप को क्रमबद्ध किया।
- ट्री सेट की तरह, हम कंस्ट्रक्टर के साथ एक क्रम बना सकते हैं।
उदाहरण:
क्या जावा आज के लिए प्रयोग किया जाता है
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
आउटपुट:
{की 1 = चेरी, की 2 = केला, की 3 = सेब, की 4 = कीवी}
यह कुंजी के आधार पर आरोही क्रम में क्रमबद्ध होता है। डुप्लिकेट कुंजियों की अनुमति नहीं है।
Q # 30) प्राथमिकता कतार की व्याख्या करें।
उत्तर: कतार इंटरफ़ेस
प्राथमिकता कतार: कतार इंटरफ़ेस को लागू करने के लिए लिंक्ड सूची वर्ग को बढ़ाया गया है। कड़ियों को एक लिंक्ड सूची के साथ संभाला जा सकता है। एक कतार का उद्देश्य 'प्राथमिकता-इन, प्राथमिकता-आउट' है।
इसलिए तत्वों को या तो स्वाभाविक रूप से या तुलनित्र के अनुसार आदेश दिया जाता है। आदेश देने वाले तत्व उनकी सापेक्ष प्राथमिकता का प्रतिनिधित्व करते हैं।
Q # 31) अपवाद से क्या अभिप्राय है?
उत्तर: एक अपवाद एक समस्या है जो निष्पादन के सामान्य प्रवाह के दौरान हो सकती है। एक विधि एक अपवाद को फेंक सकती है जब कुछ रनटाइम पर मेल खाती है। यदि उस अपवाद को संभाला नहीं जा सकता है, तो कार्य पूरा होने से पहले निष्पादन समाप्त हो जाता है।
यदि हम अपवाद को संभालते हैं, तो सामान्य प्रवाह जारी रहता है। अपवाद java.lang.Exception का एक उपवर्ग हैं।
अपवाद से निपटने के लिए उदाहरण:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Q # 32) अपवाद के प्रकार क्या हैं?
उत्तर: अपवाद दो प्रकार के होते हैं। उन्हें नीचे विस्तार से बताया गया है।
क) जाँच अपवाद:
संकलन के समय इन अपवादों को कंपाइलर द्वारा जांचा जाता है। रनटाइम अपवाद और त्रुटि को छोड़कर थ्रोएबल क्लास का विस्तार करने वाले वर्गों को चेक एक्सेप्शन कहा जाता है।
चेक किए गए अपवादों को उपयुक्त प्रयास / पकड़ से घिरे थ्रो कीवर्ड (या) का उपयोग करके या तो अपवाद घोषित करना चाहिए।
उदाहरण के लिए, वर्ग अपवाद में नहीं मिला
ख) अनियंत्रित अपवाद:
संकलक द्वारा संकलन समय के दौरान इन अपवादों की जाँच नहीं की जाती है। कंपाइलर इन अपवादों को संभालने के लिए बाध्य नहीं करता है। उसमे समाविष्ट हैं:
- अंकगणित का अपवाद
- सीमा अपवाद के बाहर सरणी सूचकांक
Q # 33) अपवादों को संभालने के विभिन्न तरीके क्या हैं?
उत्तर: अपवादों को संभालने के दो अलग-अलग तरीके नीचे दिए गए हैं:
a) ट्राय / कैच का उपयोग करना:
जोखिम भरा कोड ट्राई ब्लॉक से घिरा हुआ है। यदि कोई अपवाद होता है, तो यह कैच ब्लॉक द्वारा पकड़ा जाता है, जो कि ट्राई ब्लॉक के बाद होता है।
उदाहरण:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) थ्रो कीवर्ड घोषित करके:
विधि के अंत में, हम थ्रो कीवर्ड का उपयोग करके अपवाद की घोषणा कर सकते हैं।
उदाहरण:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
क्यू # 34) अपवाद से निपटने के क्या फायदे हैं?
उत्तर: लाभ इस प्रकार हैं:
- यदि अपवाद को नियंत्रित किया जाता है, तो निष्पादन के सामान्य प्रवाह को समाप्त नहीं किया जाएगा
- हम कैच डिक्लेरेशन का उपयोग करके समस्या की पहचान कर सकते हैं
Q # 35) जावा में कीवर्ड को संभालने वाले एक्सेप्शन क्या हैं?
उत्तर: नीचे सूचीबद्ध दो अपवाद हैंडलिंग कीवर्ड हैं:
एक कोशिश:
जब एक जोखिम कोड एक कोशिश ब्लॉक से घिरा हुआ है। ट्रायल ब्लॉक में होने वाले अपवाद को कैच ब्लॉक द्वारा पकड़ा जाता है। कोशिश या तो पकड़ या (या) अंत में (या) दोनों के द्वारा हो सकती है। लेकिन ब्लॉक में से कोई भी एक अनिवार्य है।
बी) पकड़:
इसके बाद कोशिश ब्लॉक है। अपवाद यहाँ पकड़े गए हैं।
ग) अंत में:
यह या तो कोशिश ब्लॉक (या) पकड़ने ब्लॉक द्वारा पीछा किया जाता है। यह ब्लॉक अपवाद के बिना निष्पादित किया जाता है। इसलिए आम तौर पर सफाई कोड यहाँ प्रदान किए जाते हैं।
Q # 36) अपवाद प्रचार के बारे में बताएं।
उत्तर: अपवाद को पहले उस विधि से फेंका जाता है जो स्टैक के शीर्ष पर होती है। यदि यह पकड़ में नहीं आता है, तो यह विधि को चबूतरे पर ले जाता है और पिछली विधि तक ले जाता है और इसी तरह जब तक वे प्राप्त नहीं हो जाते।
इसे अपवाद प्रसार कहा जाता है।
उदाहरण:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
उपरोक्त उदाहरण से, स्टैक नीचे जैसा दिखता है:
यदि इसमें अपवाद होता है जोड़ () विधि को पकड़ा नहीं जाता है, फिर वह विधि की ओर बढ़ता है जोड़ें () । फिर इसे ले जाया जाता है मुख्य() विधि और फिर यह निष्पादन के प्रवाह को रोक देगा। इसे अपवाद प्रसार कहा जाता है।
Q # 37) जावा में अंतिम कीवर्ड क्या है?
उत्तर:
चर अंत: एक बार जब एक चर को अंतिम घोषित किया जाता है, तो चर का मूल्य नहीं बदला जा सकता है। यह एक स्थिरांक की तरह है।
उदाहरण:
अंतिम int = 12;
अंतिम विधि: एक विधि में एक अंतिम कीवर्ड, ओवरराइड नहीं किया जा सकता है। यदि कोई विधि अंतिम के रूप में चिह्नित की जाती है, तो यह उपवर्ग द्वारा ओवरराइड नहीं की जा सकती है।
अंतिम वर्ग: यदि किसी वर्ग को अंतिम घोषित किया जाता है, तो उस वर्ग को उपवर्गित नहीं किया जा सकता है। कोई भी वर्ग अंतिम वर्ग का विस्तार नहीं कर सकता है।
Q # 38) थ्रेड क्या है?
उत्तर: जावा में, निष्पादन के प्रवाह को थ्रेड कहा जाता है। प्रत्येक जावा प्रोग्राम में कम से कम एक धागा होता है जिसे मुख्य धागा कहा जाता है, मुख्य धागा JVM द्वारा बनाया जाता है। उपयोगकर्ता Runnable इंटरफ़ेस को लागू करके थ्रेड क्लास (या) को विस्तारित करके अपने स्वयं के थ्रेड को परिभाषित कर सकता है। धागे को समवर्ती रूप से निष्पादित किया जाता है।
उदाहरण:
public static void main(String() args){//main thread starts here }
क्यू # 39) आप जावा में एक धागा कैसे बनाते हैं?
उत्तर: एक धागा बनाने के लिए दो तरीके उपलब्ध हैं।
क) धागा कक्षा बढ़ाएँ: थ्रेड क्लास का विस्तार करना और रन विधि को ओवरराइड करना। धागा java.lang.thread में उपलब्ध है।
उदाहरण:
Public class Addition extends Thread { public void run () { } }
थ्रेड क्लास का उपयोग करने का नुकसान यह है कि हम किसी अन्य वर्ग का विस्तार नहीं कर सकते क्योंकि हमने थ्रेड क्लास को पहले ही बढ़ा दिया है। हम अपनी कक्षा में रन () पद्धति को ओवरलोड कर सकते हैं।
बी) कार्यान्वयन योग्य इंटरफ़ेस: एक अन्य तरीका रनने योग्य इंटरफ़ेस को लागू करना है। उसके लिए, हमें रन () पद्धति के लिए कार्यान्वयन प्रदान करना चाहिए जो इंटरफ़ेस में परिभाषित किया गया है।
उदाहरण:
Public class Addition implements Runnable { public void run () { } }
Q # 40) जॉइन () विधि के बारे में बताएं।
उत्तर: Join () विधि का उपयोग वर्तमान में चल रहे धागे के अंत के साथ एक धागे को जोड़ने के लिए किया जाता है।
उदाहरण:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
उपरोक्त कोड के आधार पर, मुख्य सूत्र ने निष्पादन शुरू कर दिया है। जब यह कोड तक पहुँच जाता है t.start () तब execution थ्रेड टी ’निष्पादन के लिए स्वयं स्टैक शुरू करता है। JVM मुख्य धागे और 'थ्रेड टी' के बीच स्विच करता है।
एक बार यह कोड तक पहुँच जाता है t.join () तब केवल थ्रेड टी 'को निष्पादित किया जाता है और अपना कार्य पूरा करता है, उसके बाद ही मुख्य थ्रेड निष्पादन को शुरू करता है।
यह एक गैर-स्थैतिक विधि है। ज्वाइन () विधि में एक अतिभारित संस्करण है। तो हम शामिल होने की समय अवधि का उल्लेख कर सकते हैं () विधि भी '.s'।
Q # 41) थ्रेड क्लास की उपज विधि क्या है?
उत्तर: एक उपज () विधि वर्तमान में चल रहे धागे को एक रन करने योग्य स्थिति में ले जाती है और अन्य थ्रेड्स को निष्पादन के लिए अनुमति देती है। ताकि समान प्राथमिकता वाले थ्रेड्स को चलाने का मौका मिले। यह एक स्थिर विधि है। यह कोई ताला जारी नहीं करता है।
यील्ड () विधि थ्रेड को केवल रन करने योग्य स्थिति में ले जाती है, और थ्रेड को सोने के लिए नहीं (), प्रतीक्षा () (या) ब्लॉक।
उदाहरण:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Q # 42) प्रतीक्षा () विधि के बारे में बताएं।
उत्तर: प्रतीक्षा () प्रतीक्षा पूल में प्रतीक्षा करने के लिए धागा बनाने के लिए विधि का उपयोग किया जाता है। जब थ्रेड निष्पादन के दौरान प्रतीक्षा () विधि निष्पादित की जाती है तो तुरंत थ्रेड ऑब्जेक्ट पर लॉक छोड़ देता है और वेटिंग पूल में जाता है। प्रतीक्षा () विधि किसी दिए गए समय की प्रतीक्षा करने के लिए थ्रेड को बताती है।
फिर सूचना के बाद धागा जाग जाएगा () (या) सभी को सूचित करें () विधि कहा जाता है।
प्रतीक्षा करें () और उपर्युक्त अन्य विधियाँ ऑब्जेक्ट पर तुरंत लॉक नहीं देती हैं जब तक कि वर्तमान में निष्पादित धागा सिंक्रनाइज़ कोड पूरा नहीं करता है। यह ज्यादातर सिंक्रनाइज़ेशन में उपयोग किया जाता है।
उदाहरण:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) जावा में सूचित () विधि और InformAll () विधि के बीच अंतर।
उत्तर: अधिसूचित () विधि और नोटिफिकेशन () विधि के बीच अंतर नीचे सूचीबद्ध हैं:
सूचित करें() | नोटिफ़ायर () |
---|---|
इस पद्धति का उपयोग वेटिंग पूल में एक सिंगल थ्रेड को जगाने के लिए सिग्नल भेजने के लिए किया जाता है। | यह विधि एक प्रतीक्षा स्पूल में सभी थ्रेड्स को जगाने के लिए सिग्नल भेजती है। |
Q # 44) जावा में थ्रेड को कैसे रोकें? थ्रेड में नींद () विधि के बारे में बताएं?
उत्तर: हम निम्नलिखित सूत्र विधियों का उपयोग करके एक धागे को रोक सकते हैं:
- सोया हुआ
- इंतज़ार कर रही
- अवरोधित
नींद: नींद () विधि का उपयोग समय की दी गई राशि के लिए वर्तमान में निष्पादित धागे को सोने के लिए किया जाता है। एक बार धागा जागने के बाद यह रननीय अवस्था में जा सकता है। तो नींद () विधि का उपयोग कुछ अवधि के लिए निष्पादन में देरी करने के लिए किया जाता है।
यह एक स्थिर विधि है।
उदाहरण:
धागा। नींद (2000)
तो यह धागे को 2 मिलीसेकेंड सोने के लिए देरी करता है। नींद () विधि एक निर्बाध अपवाद फेंकता है, इसलिए हमें कोशिश / पकड़ने के साथ ब्लॉक को घेरना होगा।
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Q # 45) जावा में रननेबल इंटरफ़ेस बनाम थ्रेड क्लास का उपयोग कब करें?
उत्तर: अगर हमें धागे के अलावा कुछ अन्य वर्गों का विस्तार करने के लिए हमारी कक्षा की आवश्यकता है तो हम रनवेबल इंटरफ़ेस के साथ जा सकते हैं क्योंकि जावा में हम केवल एक वर्ग का विस्तार कर सकते हैं।
अगर हम किसी वर्ग का विस्तार नहीं करने जा रहे हैं तो हम धागा वर्ग का विस्तार कर सकते हैं।
Q # 46) थ्रेड क्लास के प्रारंभ () और रन () विधि के बीच अंतर।
उत्तर: प्रारंभ () विधि एक नया थ्रेड बनाता है और रन () विधि के अंदर कोड को नए थ्रेड में निष्पादित किया जाता है। यदि हम सीधे रन () विधि कहते हैं तो एक नया धागा नहीं बनता है और वर्तमान में निष्पादित धागा रन () विधि को निष्पादित करता रहेगा।
Q # 47) मल्टी-थ्रेडिंग क्या है?
उत्तर: कई थ्रेड्स को एक साथ निष्पादित किया जाता है। प्रत्येक थ्रेड थ्रेड्स के प्रवाह (या) प्राथमिकता के आधार पर अपना स्वयं का स्टैक शुरू करता है।
उदाहरण कार्यक्रम:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
पहली पंक्ति के निष्पादन पर, जेवीएम मुख्य विधि कहता है और मुख्य धागा स्टैक नीचे दिखाया गया है।
एक बार निष्पादन तक पहुँच जाता है, t.start () फिर एक नया धागा बनाया जाता है और धागे के लिए नया स्टैक भी बनाया जाता है। अब जेवीएम नए धागे पर स्विच करता है और मुख्य धागा वापस रनने योग्य स्थिति में आ जाता है।
नीचे दिखाए गए अनुसार दो ढेर दिखते हैं।
अब, उपयोगकर्ता थ्रेड ने रन () विधि के अंदर कोड निष्पादित किया।
एक बार रन () विधि पूरी हो जाने के बाद, जेवीएम मुख्य धागे में वापस आ जाता है और उपयोगकर्ता थ्रेड ने कार्य पूरा कर लिया है और स्टैक गायब हो गया है।
JVM दोनों धागे के पूरा होने तक प्रत्येक थ्रेड के बीच स्विच करता है। इसे मल्टी-थ्रेडिंग कहा जाता है।
Q # 48) जावा में धागा जीवन चक्र की व्याख्या कीजिए।
उत्तर: थ्रेड में निम्न अवस्थाएँ होती हैं:
- नवीन व
- चलाने योग्य
- दौड़ना
- गैर-चलने योग्य (अवरुद्ध)
- समाप्त
- नवीन व: नई स्थिति में, थ्रेड उदाहरण बनाया गया है, लेकिन प्रारंभ () विधि अभी तक लागू नहीं है। अब धागे को जीवित नहीं माना जाता है।
- चलाने योग्य : थ्रेड प्रारंभ () विधि के मंगलाचरण के बाद रन करने योग्य स्थिति में है, लेकिन रन () विधि से पहले लागू किया जाता है। लेकिन एक धागा भी प्रतीक्षा / नींद से रननीय अवस्था में लौट सकता है। इस अवस्था में धागे को जीवित माना जाता है।
- दौड़ना : रन () विधि को कॉल करने के बाद थ्रेड चालू स्थिति में है। अब धागा निष्पादन शुरू करता है।
- न चलने योग्य (अवरुद्ध): धागा जीवित है लेकिन यह चलाने के योग्य नहीं है। यह रन करने योग्य स्थिति में नहीं है, लेकिन यह भी, कुछ समय के बाद रननीय अवस्था में वापस आ जाएगा। उदाहरण: रुको, सो जाओ, ब्लॉक करो।
- समाप्त : एक बार रन विधि पूरी हो जाने के बाद इसे समाप्त कर दिया जाता है। अब धागा जीवित नहीं है।
Q # 49) सिंक्रोनाइज़ेशन क्या है?
उत्तर: सिंक्रनाइज़ेशन एक बार में कोड के ब्लॉक तक पहुंचने के लिए केवल एक धागा बनाता है। यदि कई धागे कोड के ब्लॉक तक पहुंचते हैं, तो अंत में गलत परिणामों के लिए एक मौका है। इस समस्या से बचने के लिए, हम कोड के संवेदनशील ब्लॉक के लिए सिंक्रनाइज़ेशन प्रदान कर सकते हैं।
सिंक्रोनाइज़्ड कीवर्ड का मतलब है कि सिंक्रोनाइज़्ड कोड को एक्सेस करने के लिए एक थ्रेड की जरूरत होती है।
ताले प्रति वस्तु हैं। हर जावा ऑब्जेक्ट में एक लॉक होता है। एक ताला में केवल एक कुंजी होती है। एक थ्रेड सिंक्रनाइज़ विधि तक तभी पहुंच सकता है जब थ्रेड को ऑब्जेक्ट्स को लॉक करने के लिए कुंजी मिल सकती है।
इसके लिए, हम 'सिंक्रोनाइज़्ड' कीवर्ड का उपयोग करते हैं।
उदाहरण:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
Q # 50) सिंक्रोनाइज़ेशन का नुकसान क्या है?
वर्षों: सभी विधियों को लागू करने के लिए सिंक्रनाइज़ेशन की सिफारिश नहीं की जाती है। क्योंकि यदि एक थ्रेड सिंक्रनाइज़ कोड तक पहुंचता है, तो अगले थ्रेड को इंतजार करना होगा। तो यह दूसरे छोर पर धीमी गति से प्रदर्शन करता है।
Q # 51) सीरियल से क्या मतलब है?
उत्तर: किसी फाइल को बाइट स्ट्रीम में परिवर्तित करने को सीरियलाइजेशन कहा जाता है। फ़ाइल में ऑब्जेक्ट्स को सुरक्षा उद्देश्यों के लिए बाइट्स में परिवर्तित किया जाता है। इसके लिए, हमें java.io.Serializable इंटरफ़ेस लागू करना होगा। इसे परिभाषित करने की कोई विधि नहीं है।
परिवर्तनशील के रूप में चिह्नित चर को क्रमबद्धता का हिस्सा नहीं बनाया जाएगा। तो हम एक क्षणिक कीवर्ड का उपयोग करके फ़ाइल में चर के लिए क्रमांकन को छोड़ सकते हैं।
और जानें = >> सीरियल करने योग्य और क्लोन करने योग्य
Q # 52) क्षणिक चर का उद्देश्य क्या है?
उत्तर: क्षणिक चर अनुक्रमिक प्रक्रिया का हिस्सा नहीं हैं। डिसेरिएलाइज़ेशन के दौरान, क्षणिक चर के मान डिफ़ॉल्ट मान पर सेट होते हैं। यह स्थिर चर के साथ प्रयोग नहीं किया जाता है।
उदाहरण:
सी ++ स्टैक डेटा संरचना
क्षणिक int संख्या;
Q # 53) सीरियलाइज़ेशन और डिसेरिएलाइज़ेशन प्रक्रिया के दौरान किन तरीकों का इस्तेमाल किया जाता है?
उत्तर: ObjectOutputStream और ObjectInputStream कक्षाएं उच्च स्तर के java.io हैं। पैकेज। हम उन्हें निम्न स्तर की कक्षाओं FileOutputStream और FileInputStream के साथ उपयोग करेंगे।
ObjectOutputStream.writeObject -> ऑब्जेक्ट को सीरियल करें और किसी फ़ाइल पर क्रमबद्ध ऑब्जेक्ट लिखें।
ObjectInputStream.readObject -> फ़ाइल को पढ़ता है और ऑब्जेक्ट को डिसेर्बलाइज़ करता है।
क्रमबद्ध होने के लिए, किसी ऑब्जेक्ट को क्रमबद्ध इंटरफ़ेस लागू करना होगा। यदि सुपरक्लास सीरियल को लागू करता है, तो उप-वर्ग स्वचालित रूप से धारावाहिक हो जाएगा।
Q # 54) एक अस्थिर चर का उद्देश्य क्या है?
उत्तर: अस्थिर चर मान हमेशा मुख्य मेमोरी से पढ़े जाते हैं और थ्रेड की कैश मेमोरी से नहीं। यह मुख्य रूप से सिंक्रनाइज़ेशन के दौरान उपयोग किया जाता है। यह केवल चरों के लिए लागू है।
उदाहरण:
वाष्पशील int संख्या;
Q # 55) जावा में सीरियललाइज़ेशन और डिसेरिएलाइज़ेशन के बीच अंतर।
उत्तर: जावा में क्रमबद्धता और विलयनीकरण के बीच ये अंतर हैं:
क्रमबद्धता | अक्रमांकन |
---|---|
Serialization वह प्रक्रिया है जिसका उपयोग वस्तुओं को बाइट स्ट्रीम में बदलने के लिए किया जाता है | देशीकरण वैश्वीकरण की विपरीत प्रक्रिया है जहां हम वस्तुओं को बाइट स्ट्रीम से वापस पा सकते हैं। |
ऑब्जेक्ट को ObjectOutputStream लिखकर क्रमबद्ध किया जाता है। | एक ObjectInputStream से पढ़कर किसी ऑब्जेक्ट को डिसेररलाइज़ किया जाता है। |
Q # 56) SerialVersionUID क्या है?
उत्तर: जब भी किसी ऑब्जेक्ट को सीरियल किया जाता है, तो ऑब्जेक्ट को ऑब्जेक्ट क्लास के लिए एक संस्करण आईडी नंबर के साथ मोहर दिया जाता है। इस ID को SerialVersionUID कहा जाता है। यह सत्यापित करने के लिए डिसेरिएलाइज़ेशन के दौरान उपयोग किया जाता है कि प्रेषक और रिसीवर जो कि सीरियललाइज़ेशन के साथ संगत हैं।
निष्कर्ष
ये कुछ JAVA साक्षात्कार प्रश्न हैं जो प्रोग्रामिंग के साथ-साथ डेवलपर साक्षात्कार के लिए बुनियादी और उन्नत जावा अवधारणाओं दोनों को कवर करते हैं, और ये वे हैं जो हमारे जावा विशेषज्ञों द्वारा उत्तर दिए गए हैं।
मुझे आशा है कि यह ट्यूटोरियल आपको जेएएए कोर कोडिंग अवधारणाओं के बारे में विस्तार से जानकारी देगा। ऊपर दिए गए स्पष्टीकरण वास्तव में आपके ज्ञान को समृद्ध करेंगे और जावा प्रोग्रामिंग की आपकी समझ को बढ़ाएंगे।
आत्मविश्वास से एक JAVA साक्षात्कार दरार करने के लिए तैयार हो जाओ।