top 40 java 8 interview questions answers
इस ट्यूटोरियल में, हमने सबसे महत्वपूर्ण जावा 8 साक्षात्कार प्रश्न और उनके उत्तर कोड उदाहरण और स्पष्टीकरण के साथ प्रदान किए हैं:
इस ट्यूटोरियल में सूचीबद्ध सभी महत्वपूर्ण प्रश्न जावा 8. के लिए विशिष्ट हैं। जावा नए संस्करणों की शुरूआत के साथ बहुत विकसित हुआ है। प्रत्येक संस्करण के साथ, हमारे पास जावा से जुड़ी नई सुविधाएँ हैं। इन सभी महत्वपूर्ण विशेषताओं को इस ट्यूटोरियल में शामिल किया जाएगा।
ये बहुत ही सामान्य प्रश्न हैं जो आपको उन्नत कौशल की मांग करने वाले किसी भी जावा साक्षात्कार में पूछे जाएंगे। यदि आप किसी भी मानक जावा प्रमाणन परीक्षा जैसे Oracle प्रमाणित एसोसिएट (OCA) के लिए प्रकट होने जा रहे हैं, तो ये अवधारणाएँ अवश्य होनी चाहिए।
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
यह आलेख जावा डेवलपर्स के साथ-साथ जावा टेस्टर्स / ऑटोमेशन टेस्टर या जो भी उसी क्षेत्र में उच्च वेतन की तलाश में है, दोनों के लिए बहुत उपयुक्त होगा क्योंकि यह उन्नत जावा कौशल की मांग करता है।
सबसे अक्सर पूछे जाने वाले जावा 8 साक्षात्कार प्रश्न
Q # 1) जावा 8 में पेश की गई नई सुविधाओं को सूचीबद्ध करें?
उत्तर: जावा 8 में शुरू की गई नई सुविधाओं को नीचे सूचीबद्ध किया गया है:
- लैंबडा एक्सप्रेशन
- विधि संदर्भ
- वैकल्पिक वर्ग
- कार्यात्मक इंटरफ़ेस
- डिफ़ॉल्ट तरीके
- गैंडा, जावास्क्रिप्ट इंजन
- स्ट्रीम एपीआई
- तारीख एपीआई
Q # 2) कार्यात्मक इंटरफेस क्या हैं?
उत्तर: फ़ंक्शनल इंटरफ़ेस एक इंटरफ़ेस है जिसमें केवल एक सार पद्धति होती है। इन इंटरफेस का कार्यान्वयन एक लैम्ब्डा एक्सप्रेशन का उपयोग करके प्रदान किया जाता है जिसका अर्थ है कि लैम्ब्डा एक्सप्रेशन का उपयोग करने के लिए, आपको एक नया कार्यात्मक इंटरफ़ेस बनाने की आवश्यकता है या आप पूर्वनिर्धारित का उपयोग कर सकते हैं जावा के कार्यात्मक इंटरफ़ेस ।
एक नया कार्यात्मक इंटरफ़ेस बनाने के लिए उपयोग किया जाने वाला एनोटेशन ' @FunctionalInterface ”।
Q # 3) एक वैकल्पिक वर्ग क्या है?
उत्तर: वैकल्पिक वर्ग जावा 8 में पेश किया गया एक विशेष आवरण वर्ग है जिसका उपयोग NullPointerException से बचने के लिए किया जाता है। यह अंतिम वर्ग java.util पैकेज के अंतर्गत मौजूद है। NullPointerException तब होती है जब हम Null जाँच करने में विफल होते हैं।
Q # 4) डिफ़ॉल्ट तरीके क्या हैं?
उत्तर: डिफ़ॉल्ट विधियाँ इंटरफ़ेस की विधियाँ हैं जिनमें एक निकाय है। ये तरीके, जैसा कि नाम से पता चलता है, डिफ़ॉल्ट कीवर्ड का उपयोग करते हैं। इन डिफ़ॉल्ट विधियों का उपयोग 'बैकवर्ड कम्पेटिबिलिटी' है, जिसका अर्थ है कि अगर JDK किसी भी इंटरफ़ेस (डिफ़ॉल्ट विधि के बिना) को संशोधित करता है, तो इस इंटरफ़ेस को लागू करने वाले वर्ग टूट जाएंगे।
दूसरी ओर, यदि आप एक इंटरफ़ेस में डिफ़ॉल्ट विधि जोड़ते हैं तो आप डिफ़ॉल्ट कार्यान्वयन प्रदान करने में सक्षम होंगे। इससे कार्यान्वयन कक्षाएं प्रभावित नहीं होंगी।
वाक्य - विन्यास:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
क्यू # 5) लैम्ब्डा फंक्शन की मुख्य विशेषताएं क्या हैं?
उत्तर: लैंबडा फंक्शन की मुख्य विशेषताएं इस प्रकार हैं:
- एक विधि जिसे लैम्बडा एक्सप्रेशन के रूप में परिभाषित किया गया है, उसे दूसरे तरीके के पैरामीटर के रूप में पारित किया जा सकता है।
- एक विधि एक वर्ग से संबंधित बिना स्वसंपूर्ण अस्तित्व में हो सकती है।
- पैरामीटर प्रकार घोषित करने की कोई आवश्यकता नहीं है क्योंकि कंपाइलर पैरामीटर मान से प्रकार प्राप्त कर सकता है।
- हम कई मापदंडों का उपयोग करते समय कोष्ठक का उपयोग कर सकते हैं लेकिन जब हम किसी एकल पैरामीटर का उपयोग करते हैं तो कोष्ठक होने की कोई आवश्यकता नहीं है।
- यदि अभिव्यक्ति के शरीर का एक ही बयान है, तो घुंघराले ब्रेस शामिल करने की कोई आवश्यकता नहीं है।
क्यू # 6) पुरानी तारीख और समय में क्या गलत था?
उत्तर: नीचे सूचीबद्ध पुरानी तिथि और समय की कमियां हैं:
- Java.util.Date परिवर्तनशील है और थ्रेड-सुरक्षित नहीं है, जबकि नए Java 8 Date और Time API थ्रेड-सुरक्षित हैं।
- जावा 8 दिनांक और समय एपीआई आईएसओ मानकों को पूरा करता है जबकि पुरानी तारीख और समय खराब तरीके से डिजाइन किए गए थे।
- इसने स्थानीय तिथि, लोकलटाइम, लोकलडेटेट, इत्यादि जैसे कई एपीआई वर्गों की शुरुआत की है।
- दोनों के बीच प्रदर्शन के बारे में बात करते हुए, जावा 8 तारीख और समय के पुराने शासन की तुलना में तेजी से काम करता है।
Q # 7) कलेक्शन एपीआई और स्ट्रीम एपीआई में क्या अंतर है?
उत्तर: स्ट्रीम एपीआई और संग्रह एपीआई के बीच अंतर को नीचे दी गई तालिका से समझा जा सकता है:
स्ट्रीम एपीआई | संग्रह एपीआई |
---|---|
इसे जावा 8 मानक संस्करण संस्करण में पेश किया गया था। | इसे जावा संस्करण 1.2 में पेश किया गया था |
Iterator और Spliterators का कोई उपयोग नहीं है। | ForEach की मदद से, हम तत्वों को पुनरावृत्त करने के लिए Iterator और Spliterators का उपयोग कर सकते हैं और प्रत्येक आइटम या तत्व पर एक क्रिया कर सकते हैं। |
कई अनंत सुविधाओं को संग्रहीत किया जा सकता है। | तत्वों की एक संख्या गिने जा सकती है। |
स्ट्रीम ऑब्जेक्ट से तत्वों का उपभोग और पुनरावृत्ति केवल एक बार किया जा सकता है। | संग्रह वस्तु से तत्वों का उपभोग और परिवर्तन कई बार किया जा सकता है। |
इसका उपयोग डेटा की गणना करने के लिए किया जाता है। | इसका इस्तेमाल डाटा स्टोर करने के लिए किया जाता है। |
क्यू # 8) आप एक कार्यात्मक इंटरफ़ेस कैसे बना सकते हैं?
उत्तर: यद्यपि जावा एक कार्यात्मक इंटरफ़ेस की पहचान कर सकता है, आप एनोटेशन के साथ एक को परिभाषित कर सकते हैं
@FunctionalInterface
एक बार जब आप कार्यात्मक इंटरफ़ेस परिभाषित कर लेते हैं, तो आपके पास केवल एक सार विधि हो सकती है। चूंकि आपके पास केवल एक सार विधि है, आप कई स्थिर तरीके और डिफ़ॉल्ट तरीके लिख सकते हैं।
नीचे दो नंबरों के गुणन के लिए लिखे गए FunctionalInterface का प्रोग्रामिंग उदाहरण है।
@FunctionalInterface // annotation for functional interface interface FuncInterface { public int multiply(int a, int b); } public class Java8 { public static void main(String args()) { FuncInterface Total = (a, b) -> a * b; // simple operation of multiplication of 'a' and 'b' System.out.println('Result: '+Total.multiply(30, 60)); } }
आउटपुट:
Q # 9) एसएएम इंटरफेस क्या है?
उत्तर: Java 8 ने FunctionalInterface की अवधारणा पेश की है जिसमें केवल एक सार पद्धति हो सकती है। चूंकि ये इंटरफेस केवल एक सार पद्धति को निर्दिष्ट करते हैं, इसलिए उन्हें कभी-कभी एसएएम इंटरफेस कहा जाता है। सैम 'एकल सार विधि' के लिए खड़ा है।
क्यू # 10) विधि संदर्भ क्या है?
कैसे जावा में एक विधि से एक सरणी वापस करने के लिए
उत्तर: जावा 8 में, एक नई सुविधा को विधि संदर्भ के रूप में जाना जाता था। यह कार्यात्मक इंटरफ़ेस की विधि को संदर्भित करने के लिए उपयोग किया जाता है। इसका इस्तेमाल एक विधि का संदर्भ देते हुए लैम्ब्डा एक्सप्रेशन को बदलने के लिए किया जा सकता है।
उदाहरण के लिए: यदि लैंबडा एक्सप्रेशन जैसा दिखता है
num -> System.out.println(num)
तब संबंधित विधि संदर्भ होगा,
System.out::println
जहाँ '::' एक ऑपरेटर है जो विधि के नाम से वर्ग नाम को अलग करता है।
क्यू # 11) निम्नलिखित सिंटैक्स की व्याख्या करें
String:: Valueof Expression
उत्तर: यह एक स्थिर विधि का संदर्भ है का मूल्य की विधि तार कक्षा। System.out :: Println एक स्थिर विधि है, जो सिस्टम क्लास के ऑब्जेक्ट के println विधि का संदर्भ है।
यह पास किए गए तर्क का संगत स्ट्रिंग प्रतिनिधित्व लौटाता है। तर्क चरित्र, पूर्णांक, बूलियन और इतने पर हो सकता है।
Q # 12) एक विधेय क्या है? एक विधेय और एक समारोह के बीच अंतर बताइए?
उत्तर: Predicate एक पूर्व-निर्धारित कार्यात्मक इंटरफ़ेस है। यह java.util.function.Predicate पैकेज के अंतर्गत है। यह केवल एक ही तर्क को स्वीकार करता है जो नीचे दिखाए गए रूप में है,
विधेय
विधेय | समारोह |
---|---|
यह बूलियन के रूप में वापसी प्रकार है। | इसमें ऑब्जेक्ट के रूप में वापसी प्रकार है। |
के रूप में लिखा गया है विधेय जो एकल तर्क को स्वीकार करता है। | के रूप में लिखा गया है समारोह जो एकल तर्क को भी स्वीकार करता है। |
यह एक कार्यात्मक इंटरफ़ेस है जिसका उपयोग लैम्ब्डा एक्सप्रेशंस का मूल्यांकन करने के लिए किया जाता है। यह एक विधि संदर्भ के लिए एक लक्ष्य के रूप में इस्तेमाल किया जा सकता है। | यह एक कार्यात्मक इंटरफ़ेस भी है जिसका उपयोग लैम्ब्डा एक्सप्रेशंस का मूल्यांकन करने के लिए किया जाता है। फ़ंक्शन में, T इनपुट प्रकार के लिए है और R परिणाम प्रकार के लिए है। यह एक लैम्ब्डा एक्सप्रेशन और मेथड रेफरेंस के लिए एक लक्ष्य के रूप में भी इस्तेमाल किया जा सकता है। |
क्यू # 13) क्या निम्न कोड में कुछ भी गलत है? क्या यह किसी विशिष्ट त्रुटि को संकलित करेगा या देगा?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
उत्तर: हाँ। कोड संकलित करेगा क्योंकि यह केवल एक सार पद्धति को परिभाषित करने के कार्यात्मक इंटरफ़ेस विनिर्देश का अनुसरण करता है। दूसरी विधि, प्रिंटस्ट्रिंग (), एक डिफ़ॉल्ट विधि है जो एक सार पद्धति के रूप में नहीं गिना जाता है।
क्यू # 14) स्ट्रीम एपीआई क्या है? हमें स्ट्रीम एपीआई की आवश्यकता क्यों है?
उत्तर: स्ट्रीम एपीआई जावा 8 में जोड़ी गई एक नई सुविधा है। यह एक विशेष वर्ग है जिसका उपयोग संग्रह जैसे स्रोत से वस्तुओं को संसाधित करने के लिए किया जाता है।
हमें स्ट्रीम API की आवश्यकता है क्योंकि,
- यह कुल संचालन का समर्थन करता है जो प्रसंस्करण को सरल बनाता है।
- यह फंक्शनल-स्टाइल प्रोग्रामिंग का समर्थन करता है।
- यह तेजी से प्रसंस्करण करता है। इसलिए, यह बेहतर प्रदर्शन के लिए उपयुक्त है।
- यह समानांतर संचालन की अनुमति देता है।
क्यू # 15) सीमा और स्किप में क्या अंतर है?
उत्तर: सीमा () विधि का उपयोग निर्दिष्ट आकार की स्ट्रीम को वापस करने के लिए किया जाता है। उदाहरण के लिए, यदि आपने सीमा (5) का उल्लेख किया है, तो आउटपुट तत्वों की संख्या 5 होगी।
आइए निम्नलिखित उदाहरण पर विचार करें। यहां उत्पादन छह तत्व देता है क्योंकि सीमा। छह ’पर सेट है।
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .limit(6) /*limit is set to 6, hence it will print the numbers starting from 0 to 5 */ .forEach(num->System.out.print('
'+num)); } }
आउटपुट:
जबकि, स्किप () विधि का उपयोग तत्व को छोड़ने के लिए किया जाता है।
आइए निम्नलिखित उदाहरण पर विचार करें। आउटपुट में, तत्व 6, 7, 8 हैं, जिसका अर्थ है कि यह 6 वें इंडेक्स (1 से शुरू) तक तत्वों को छोड़ दिया है।
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .skip(6) /* It will skip till 6th index. Hence 7th, 8th and 9th index elements will be printed */ .forEach(num->System.out.print('
'+num)); } }
आउटपुट:
क्यू # 16) जावा 8 दिनांक और समय एपीआई का उपयोग करके आपको वर्तमान तिथि और समय कैसे मिलेगा?
उत्तर: नीचे दिए गए प्रोग्राम को जावा 8 में शुरू की गई नई एपीआई की मदद से लिखा गया है। हमने वर्तमान तिथि और समय पाने के लिए लोकलडेट, लोकल टाइम और लोकलडेट टाइम एपीआई का उपयोग किया है।
जावा में सूची कैसे घोषित करें
पहले और दूसरे प्रिंट स्टेटमेंट में, हमने सिस्टम दिनांक से वर्तमान दिनांक और समय को समय-क्षेत्र सेट के रूप में डिफ़ॉल्ट रूप से पुनर्प्राप्त किया है। तीसरे प्रिंट स्टेटमेंट में, हमने लोकलडेट टाइम एपीआई का उपयोग किया है, जो तारीख और समय दोनों को प्रिंट करेगा।
class Java8 { public static void main(String() args) { System.out.println('Current Local Date: ' + java.time.LocalDate.now()); //Used LocalDate API to get the date System.out.println('Current Local Time: ' + java.time.LocalTime.now()); //Used LocalTime API to get the time System.out.println('Current Local Date and Time: ' + java.time.LocalDateTime.now()); //Used LocalDateTime API to get both date and time } }
आउटपुट:
क्यू # 17) जावा 8 में सीमा () विधि का उद्देश्य क्या है?
उत्तर: Stream.limit () विधि तत्वों की सीमा को निर्दिष्ट करती है। वह आकार जो आप सीमा (X) में निर्दिष्ट करते हैं, वह ’X’ के आकार की स्ट्रीम लौटा देगा। यह java.util.stream.tream की एक विधि है
वाक्य - विन्यास:
limit(X)
जहां 'X' तत्व का आकार है
Q # 18) जावा 8 में forEach का उपयोग करके 5 यादृच्छिक संख्याओं को प्रिंट करने के लिए एक प्रोग्राम लिखें?
उत्तर: नीचे दिया गया प्रोग्राम जावा 8 में forEach की मदद से 5 रैंडम नंबर जेनरेट करता है। आप कितने रैंडम नंबर जेनरेट करना चाहते हैं, इसके आधार पर आप किसी भी नंबर पर लिमिट वेरिएबल सेट कर सकते हैं।
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).forEach(System.out::println); /* limit is set to 5 which means only 5 numbers will be printed with the help of terminal operation forEach */ } }
आउटपुट:
क्यू # 19) जावा 8 में forEach का उपयोग करके क्रमबद्ध क्रम में 5 यादृच्छिक संख्याओं को प्रिंट करने के लिए एक प्रोग्राम लिखें?
उत्तर: नीचे दिया गया प्रोग्राम जावा 8 में forEach की मदद से 5 रैंडम नंबर जेनरेट करता है। आप कितने रैंडम नंबर जेनरेट करना चाहते हैं, इसके आधार पर आप किसी भी नंबर पर लिमिट वेरिएबल सेट कर सकते हैं। केवल एक चीज जिसे आपको यहां जोड़ने की आवश्यकता है, वह क्रमबद्ध () विधि है।
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).sorted().forEach(System.out::println); /* sorted() method is used to sort the output after terminal operation forEach */ } }
आउटपुट:
क्यू # 20) स्ट्रीम में इंटरमीडिएट और टर्मिनल संचालन के बीच अंतर क्या है?
उत्तर: सभी स्ट्रीम ऑपरेशन या तो टर्मिनल या इंटरमीडिएट हैं। इंटरमीडिएट ऑपरेशन वे ऑपरेशन होते हैं जो स्ट्रीम को वापस करते हैं ताकि उस स्ट्रीम पर कुछ अन्य ऑपरेशन किए जा सकें। इंटरमीडिएट ऑपरेशन कॉल साइट पर स्ट्रीम को संसाधित नहीं करते हैं, इसलिए उन्हें आलसी कहा जाता है।
इस प्रकार के ऑपरेशन (इंटरमीडिएट ऑपरेशन) एक टर्मिनल ऑपरेशन किए जाने पर डेटा को प्रोसेस करते हैं। उदाहरण इंटरमीडिएट ऑपरेशन के नक्शे और फिल्टर हैं।
टर्मिनल ऑपरेशन्स स्ट्रीम प्रोसेसिंग शुरू करते हैं। इस कॉल के दौरान, स्ट्रीम सभी इंटरमीडिएट ऑपरेशन से गुजरती है। उदाहरण टर्मिनल ऑपरेशन के योग, कलेक्ट और फॉरएच हैं।
इस कार्यक्रम में, हम पहले टर्मिनल ऑपरेशन के बिना इंटरमीडिएट ऑपरेशन को निष्पादित करने की कोशिश कर रहे हैं। जैसा कि आप देख सकते हैं कि कोड का पहला ब्लॉक निष्पादित नहीं हुआ है क्योंकि कोई टर्मिनल ऑपरेशन सपोर्ट नहीं है।
टर्मिनल ऑपरेशन योग () के कारण दूसरे ब्लॉक को सफलतापूर्वक निष्पादित किया गया।
import java.util.Arrays; class Java8 { public static void main(String() args) { System.out.println('Intermediate Operation won't execute'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // No terminal operation so it won't execute }); System.out.println('Terminal operation starts here'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // This is followed by terminal operation sum() }).sum(); } }
आउटपुट:
क्यू # 21) एक सूची में मौजूद सभी नंबरों का योग पाने के लिए एक जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हमने तत्वों को संग्रहीत करने के लिए ArrayList का उपयोग किया है। फिर, योग () विधि की मदद से, हमने ArrayList में मौजूद सभी तत्वों के योग की गणना की है। फिर इसे स्ट्रीम में कनवर्ट किया जाता है और प्रत्येक तत्व को मैपटॉइंट () और सम () तरीकों की मदद से जोड़ा जाता है।
import java.util.*; class Java8 { public static void main(String() args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }
आउटपुट:
Q # 22) संख्याओं की सूची को वर्गाकार करने के लिए एक जावा 8 प्रोग्राम लिखें और फिर 100 से अधिक संख्याओं को फ़िल्टर करें और फिर शेष संख्याओं का औसत ज्ञात करें?
उत्तर: इस कार्यक्रम में, हमने इंटर्ज़र्स का एक ऐरे लिया है और उन्हें एक सूची में संग्रहीत किया है। फिर MapToInt () की सहायता से, हमने तत्वों को चुकता किया है और 100 से अधिक संख्याओं को फ़िल्टर किया है। अंत में, शेष संख्या (100 से अधिक) की औसत गणना की जाती है।
import java.util.Arrays; import java.util.List; import java.util.OptionalDouble; public class Java8 { public static void main(String() args) { Integer() arr = new Integer() { 100, 100, 9, 8, 200 }; List list = Arrays.asList(arr); // Stored the array as list OptionalDouble avg = list.stream().mapToInt(n -> n * n).filter(n -> n > 100).average(); /* Converted it into Stream and filtered out the numbers which are greater than 100. Finally calculated the average */ if (avg.isPresent()) System.out.println(avg.getAsDouble()); } }
आउटपुट:
क्यू # 23) स्ट्रीम के खोज में क्या अंतर है () और खोज ()?
उत्तर: जैसा कि नाम से पता चलता है, findFirst () पद्धति का उपयोग स्ट्रीम से पहला तत्व खोजने के लिए किया जाता है जबकि findAny () विधि का उपयोग स्ट्रीम से किसी तत्व को खोजने के लिए किया जाता है।
FindFirst () प्रकृति में पूर्ववर्तीवाद है, जबकि findAny () गैर-निर्धारक है। प्रोग्रामिंग में, नियतात्मक का अर्थ है कि आउटपुट सिस्टम के इनपुट या प्रारंभिक स्थिति पर आधारित है।
क्यू # 24) Iterator और Spliterator में क्या अंतर है?
उत्तर: नीचे Iterator और Spliterator के बीच अंतर है।
इटरेटर | फाड़नेवाला |
---|---|
इसे जावा संस्करण 1.2 में पेश किया गया था | इसे Java SE 8 में पेश किया गया था |
इसका उपयोग Collection API के लिए किया जाता है। | इसका उपयोग स्ट्रीम एपीआई के लिए किया जाता है। |
पुनरावृति के कुछ तरीके अगले () और हैनक्स्ट () हैं, जिनका उपयोग तत्वों को पुनरावृत्त करने के लिए किया जाता है। | Spliterator विधि tryAdvance () है। |
हमें संग्रह ऑब्जेक्ट पर पुनरावृत्त () विधि को कॉल करने की आवश्यकता है। | हमें स्ट्रीम ऑब्जेक्ट पर स्प्लिटर () विधि को कॉल करने की आवश्यकता है। |
केवल क्रमबद्ध क्रम में Iterates। | समानांतर और अनुक्रमिक क्रम में Iterates। |
क्यू # 25) कंज्यूमर फंक्शनल इंटरफेस क्या है?
उत्तर: कंज्यूमर फंक्शनल इंटरफेस भी एक सिंगल तर्क इंटरफेस (जैसे कि प्रेडिकेट और फंक्शन) है। यह java.util.function.Consumer के अंतर्गत आता है। इससे कोई मान नहीं लौटता है।
नीचे दिए गए कार्यक्रम में, हमने स्ट्रिंग विधि के मूल्य को पुनः प्राप्त करने के लिए स्वीकार पद्धति का उपयोग किया है।
import java.util.function.Consumer; public class Java8 { public static void main(String() args) Consumer str = str1 -> System.out.println(str1); str.accept('Saket'); /* We have used accept() method to get the value of the String Object */ } }
आउटपुट:
क्यू # 26) आपूर्तिकर्ता कार्यात्मक इंटरफ़ेस क्या है?
उत्तर: आपूर्तिकर्ता कार्यात्मक इंटरफ़ेस इनपुट मापदंडों को स्वीकार नहीं करता है। यह java.util.function.Supplier के अंतर्गत आता है। यह प्राप्त विधि का उपयोग करके मान लौटाता है।
नीचे दिए गए कार्यक्रम में, हमने स्ट्रिंग पद्धति के मूल्य को पुनः प्राप्त करने के लिए प्राप्त विधि का उपयोग किया है।
import java.util.function.Supplier; public class Java8 { public static void main(String() args) { Supplier str = () -> 'Saket'; System.out.println(str.get()); /* We have used get() method to retrieve the value of String object str. */ } }
आउटपुट:
क्यू # 27) जावा 8 में नैशोर्न क्या है?
उत्तर: जावा 8 में नैशॉर्न जावास्क्रिप्ट कोड को निष्पादित और मूल्यांकन करने के लिए जावा-आधारित इंजन है।
क्यू # 28) किसी स्ट्रीम में सबसे कम और अधिकतम संख्या ज्ञात करने के लिए जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हमने एक स्ट्रीम की उच्चतम और निम्नतम संख्या प्राप्त करने के लिए मिनट () और अधिकतम () विधियों का उपयोग किया है। सबसे पहले, हमने एक स्ट्रीम को इनिशियलाइज़ किया है जिसमें इंटेगर है और तुलनात्मक डॉटपरिंग () विधि की मदद से हमने स्ट्रीम के तत्वों की तुलना की है।
जब इस पद्धति को अधिकतम () और मिनट () के साथ शामिल किया जाता है, तो यह आपको उच्चतम और निम्नतम संख्या देगा। यह स्ट्रिंग्स की तुलना करते समय भी काम करेगा।
import java.util.Comparator; import java.util.stream.*; public class Java8{ public static void main(String args()) { Integer highest = Stream.of(1, 2, 3, 77, 6, 5) .max(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ Integer lowest = Stream.of(1, 2, 3, 77, 6, 5) .min(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ System.out.println('The highest number is: ' + highest); System.out.println('The lowest number is: ' + lowest); } }
आउटपुट:
क्यू # 29) मैप और फ्लैटपाइप स्ट्रीम ऑपरेशन के बीच अंतर क्या है?
उत्तर: मैप स्ट्रीम ऑपरेशन इनपुट मूल्य के अनुसार एक आउटपुट मूल्य देता है जबकि फ्लैट मैप स्ट्रीम ऑपरेशन इनपुट मूल्य के अनुसार शून्य या अधिक आउटपुट मूल्य देता है।
नक्शा उदाहरण- मैप स्ट्रीम ऑपरेशन को आमतौर पर स्ट्रीम पर सरल ऑपरेशन के लिए उपयोग किया जाता है जैसे कि नीचे उल्लेखित है।
इस कार्यक्रम में, हमने 'नाम' के पात्रों को एक स्ट्रीम में संग्रहीत करने के बाद मैप ऑपरेशन का उपयोग करके ऊपरी मामले में बदल दिया है और फॉरएच टर्मिनल ऑपरेशन की मदद से, हमने प्रत्येक तत्व को प्रिंट किया है।
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Map { public static void main(String() str) { List Names = Arrays.asList('Saket', 'Trevor', 'Franklin', 'Michael'); List UpperCase = Names.stream().map(String::toUpperCase).collect(Collectors.toList()); // Changed the characters into upper case after converting it into Stream UpperCase.forEach(System.out::println); // Printed using forEach Terminal Operation } }
आउटपुट:
समतल उदाहरण- flatMap स्ट्रीम ऑपरेशन का उपयोग अधिक जटिल स्ट्रीम ऑपरेशन के लिए किया जाता है।
यहां हमने 'टाइप स्ट्रिंग की सूची' पर फ्लैटपाइप ऑपरेशन किया है। हमने सूची के रूप में इनपुट नाम दिए हैं और फिर हमने उन्हें एक स्ट्रीम में संग्रहीत किया है, जिस पर हमने उन नामों को फ़िल्टर किया है जो as S ’से शुरू होते हैं।
अंत में, फॉरएच टर्मिनल ऑपरेशन की मदद से, हमने प्रत्येक तत्व को प्रिंट किया है।
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class flatMap { public static void main(String() str) { List Names = Arrays.asList(Arrays.asList('Saket', 'Trevor'), Arrays.asList('John', 'Michael'), Arrays.asList('Shawn', 'Franklin'), Arrays.asList('Johnty', 'Sean')); /* Created a “List of List of type String” i.e. List Stored names into the list */ List Start = Names.stream().flatMap(FirstName -> FirstName.stream()).filter(s -> s.startsWith('S')) .collect(Collectors.toList()); /* Converted it into Stream and filtered out the names which start with 'S' */ Start.forEach(System.out::println); /* Printed the Start using forEach operation */ } }
आउटपुट:
क्यू # 30) जावा 8 में मेटास्पेस क्या है?
उत्तर: जावा 8 में, कक्षाओं को संग्रहीत करने के लिए एक नई सुविधा शुरू की गई थी। वह क्षेत्र जहाँ जावा 8 में संग्रहीत सभी वर्गों को मेटास्पेस कहा जाता है। MetaSpace ने PermGen का स्थान ले लिया है।
जावा 7 तक, कक्षाओं को स्टोर करने के लिए जावा वर्चुअल मशीन द्वारा PermGen का उपयोग किया गया था। चूंकि मेटास्पेस गतिशील है, क्योंकि यह गतिशील रूप से बढ़ सकता है और इसका कोई आकार सीमा नहीं है, जावा 8 ने मेटास्पेस के साथ पेर्मेन को बदल दिया।
क्यू # 31) Java 8 Internal और External Iteration में क्या अंतर है?
उत्तर: आंतरिक और बाहरी परिवर्तन के बीच का अंतर नीचे सूचीबद्ध है।
आंतरिक गर्भाधान | बाहरी गर्भाधान |
---|---|
इसे Java 8 (JDK-8) में पेश किया गया था। | इसे जावा (JDK-7, JDK-6 और इसी तरह) के पिछले संस्करण में पेश किया गया था। |
यह संग्रह जैसी कुलीन वस्तुओं पर आंतरिक रूप से पुनरावृति करता है। | यह एकत्रित वस्तुओं पर बाह्य रूप से पुनरावृति करता है। |
यह कार्यात्मक प्रोग्रामिंग शैली का समर्थन करता है। | यह OOPS प्रोग्रामिंग शैली का समर्थन करता है। |
आंतरिक Iterator निष्क्रिय है। | बाहरी Iterator सक्रिय है। |
यह कम त्रुटिपूर्ण है और इसके लिए कम कोडिंग की आवश्यकता होती है। | इसमें थोड़ी अधिक कोडिंग की आवश्यकता होती है और यह अधिक त्रुटि-प्रवण होता है। |
क्यू # 32) जेजेएस क्या है
उत्तर: JJS एक कमांड-लाइन टूल है जिसका उपयोग कंसोल पर जावास्क्रिप्ट कोड को निष्पादित करने के लिए किया जाता है। जावा 8 में, JJS एक नया निष्पादन योग्य है जो एक जावास्क्रिप्ट इंजन है।
Q # 33) Java 8 में ChronoUnits क्या है?
उत्तर: ChronoUnits वह एनम है जिसे इंटेगर मूल्यों को बदलने के लिए पेश किया जाता है जो पुराने एपीआई में महीने, दिन, आदि का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं।
क्यू # 34) StringJoiner कक्षा जावा 8 में बताएं? StringJoiner Class का उपयोग करके हम कई स्ट्रिंग्स में शामिल कैसे हो सकते हैं?
उत्तर: जावा 8 में, पैकेज java.util में एक नया वर्ग पेश किया गया था, जिसे StringJoiner के रूप में जाना जाता था। इस वर्ग के माध्यम से, हम प्रिमाइटर द्वारा अलग किए गए कई तारों को जोड़ सकते हैं और साथ ही उन्हें उपसर्ग और प्रत्यय प्रदान कर सकते हैं।
नीचे दिए गए कार्यक्रम में, हम StringJoiner Class का उपयोग करके कई स्ट्रिंग्स में शामिल होने के बारे में जानेंगे। यहां, हमारे पास ',' दो अलग-अलग तारों के बीच सीमांकक के रूप में है। फिर हम उन्हें जोड़ने () विधि की सहायता से पांच अलग-अलग तारों में शामिल हो गए हैं। अंत में, स्ट्रिंग जॉइनर को मुद्रित किया।
अगले प्रश्न # 35 में, आप उपसर्ग और प्रत्यय को स्ट्रिंग में जोड़ने के बारे में सीखेंगे।
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(','); // Separated the elements with a comma in between. stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
आउटपुट:
Q # 35) स्ट्रिंग में उपसर्ग और प्रत्यय जोड़ने के लिए जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हमारे पास ',' दो अलग-अलग तारों के बीच सीमांकक के रूप में है। इसके अलावा, हमने '' ('और') 'कोष्ठक को उपसर्ग और प्रत्यय के रूप में दिया है। फिर पांच अलग-अलग तारों को जोड़कर () विधि की मदद से जोड़ा जाता है। अंत में, स्ट्रिंग जॉइनर को मुद्रित किया।
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(',', '(', ')'); // Separated the elements with a comma in between. //Added a prefix '(' and a suffix ')' stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
आउटपुट:
जावा j2ee साक्षात्कार और अनुभवी के लिए जवाब
क्यू # 36) ForEach पद्धति का उपयोग करके स्ट्रीम को पुनरावृत्त करने के लिए जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हम 'संख्या = 2' से शुरू होने वाली स्ट्रीम को पुनरावृत्त कर रहे हैं, इसके बाद प्रत्येक पुनरावृत्ति के बाद '1' द्वारा गिना गया चर भी।
फिर, हम उस संख्या को फ़िल्टर कर रहे हैं जिसका शेष संख्या 2 से विभाजित होने पर शून्य नहीं है। इसके अलावा, हमने इस सीमा को निर्धारित किया है? 5 जिसका अर्थ केवल 5 बार होगा। अंत में, हम प्रत्येक तत्व को forEach का उपयोग करके प्रिंट कर रहे हैं।
import java.util.stream.*; public class Java8 { public static void main(String() args){ Stream.iterate(2, count->count+1) // Counter Started from 2, incremented by 1 .filter(number->number%2==0) // Filtered out the numbers whose remainder is zero // when divided by 2 .limit(5) // Limit is set to 5, so only 5 numbers will be printed .forEach(System.out::println); } }
आउटपुट:
क्यू # 37) किसी सरणी को सॉर्ट करने के लिए जावा 8 प्रोग्राम लिखें और फिर सॉर्ट किए गए एरे को स्ट्रीम में बदलें?
उत्तर: इस कार्यक्रम में, हमने इंटीग्रर्स की एक सरणी को सॉर्ट करने के लिए समानांतर सॉर्ट का उपयोग किया है। फिर सॉर्ट किए गए एरे को स्ट्रीम में बदल दिया और फॉरएच की मदद से, हमने स्ट्रीम के प्रत्येक तत्व को प्रिंट किया।
import java.util.Arrays; public class Java8 { public static void main(String() args) { int arr() = { 99, 55, 203, 99, 4, 91 }; Arrays.parallelSort(arr); // Sorted the Array using parallelSort() Arrays.stream(arr).forEach(n -> System.out.print(n + ' ')); /* Converted it into Stream and then printed using forEach */ } }
आउटपुट:
क्यू # 38) किसी सूची में स्ट्रिंग्स की संख्या ज्ञात करने के लिए जावा 8 प्रोग्राम लिखें जिसकी लंबाई 5 से अधिक है?
उत्तर: इस कार्यक्रम में, ऐड () विधि का उपयोग करके सूची में चार स्ट्रिंग्स जोड़े जाते हैं, और फिर स्ट्रीम और लैंबडा अभिव्यक्ति की मदद से, हमने उन स्ट्रिंग्स को गिना है जिनकी लंबाई 5 से अधिक है।
import java.util.ArrayList; import java.util.List; public class Java8 { public static void main(String() args) { List list = new ArrayList(); list.add('Saket'); list.add('Saurav'); list.add('Softwaretestinghelp'); list.add('Steve'); // Added elements into the List long count = list.stream().filter(str -> str.length() > 5).count(); /* Converted the list into Stream and filtering out the Strings whose length more than 5 and counted the length */ System.out.println('We have ' + count + ' strings with length greater than 5'); } }
आउटपुट:
क्यू # 39) दो धाराओं को संक्षिप्त करने के लिए एक जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हमने पहले से बनाई गई सूचियों में से दो धाराएँ बनाई हैं और फिर उन्हें एक संक्षिप्त () विधि का उपयोग करके समेट लिया है जिसमें दो सूचियों को एक तर्क के रूप में पारित किया जाता है। अंत में, संघातित धारा के तत्वों को मुद्रित किया।
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Java8 { public static void main(String() args) { List list1 = Arrays.asList('Java', '8'); List list2 = Arrays.asList('explained', 'through', 'programs'); Stream concatStream = Stream.concat(list1.stream(), list2.stream()); // Concatenated the list1 and list2 by converting them into Stream concatStream.forEach(str -> System.out.print(str + ' ')); // Printed the Concatenated Stream } }
आउटपुट:
क्यू # 40) सूची से डुप्लिकेट तत्वों को हटाने के लिए एक जावा 8 प्रोग्राम लिखें?
उत्तर: इस कार्यक्रम में, हमने तत्वों को एक सरणी में संग्रहीत किया है और उन्हें सूची में परिवर्तित किया है। इसके बाद, हमने 'संग्राहक.सोसेट ()' पद्धति की मदद से स्ट्रीम का उपयोग किया है और इसे 'सेट' पर एकत्र किया है।
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String() args) { Integer() arr1 = new Integer() { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }
आउटपुट:
निष्कर्ष
इस लेख में, हमने जावा 8 में पेश की गई नई विशेषताओं को समझा है। हमने सभी प्रमुख जावा 8 साक्षात्कार प्रश्नों और उनके उत्तरों को विस्तार से कवर किया है।
इस ट्यूटोरियल को पढ़ने के बाद, आपको डेट-टाइम मैनिपुलेशन के लिए नए एपीआई, जावा 8 के नए फीचर्स, नए स्ट्रीमिंग एपीआई के साथ-साथ उपयुक्त प्रोग्रामिंग उदाहरणों के बारे में अवधारणा के अनुसार ज्ञान प्राप्त करना चाहिए। जब आप अधिक चुनौतीपूर्ण जावा पदों के लिए होते हैं तो ये नई अवधारणाएँ या सुविधाएँ साक्षात्कार प्रक्रिया का हिस्सा होती हैं।
शुभकामनाएं!!
=> यहाँ सभी जावा ट्यूटोरियल की जाँच करें।
अनुशंसित पाठ
- साक्षात्कार प्रश्न और उत्तर
- ईटीएल परीक्षण साक्षात्कार प्रश्न और उत्तर
- कुछ मुश्किल मैनुअल परीक्षण प्रश्न और उत्तर
- शीर्ष 40 सी प्रोग्रामिंग साक्षात्कार प्रश्न और उत्तर
- टॉप 40 पॉपुलर J2EE के इंटरव्यू सवाल और जवाब जो आपको पढ़ने चाहिए
- उत्तर के साथ स्पॉक साक्षात्कार प्रश्न (सर्वाधिक लोकप्रिय)
- 25 सर्वश्रेष्ठ चुस्त परीक्षण साक्षात्कार प्रश्न और उत्तर
- शीर्ष 32 सर्वश्रेष्ठ डाटाजेज साक्षात्कार प्रश्न और उत्तर