top 40 java 8 interview questions answers
In deze zelfstudie hebben we de belangrijkste Java 8-interviewvragen en hun antwoorden gegeven met codevoorbeelden en uitleg:
Alle belangrijke vragen die in deze tutorial worden opgesomd, zijn specifiek voor Java 8. Java is (in de loop van de tijd) sterk geëvolueerd met de introductie van nieuwe versies. Bij elke versie hebben we nieuwe functies die aan Java zijn gekoppeld. Al deze belangrijke functies komen in deze tutorial aan bod.
Dit zijn veel voorkomende vragen die u zal worden gesteld in alle Java-interviews die geavanceerde vaardigheden vereisen. Deze concepten zijn onmisbaar als u wilt verschijnen voor standaard Java-certificeringsexamens, zoals Oracle Certified Associate (OCA).
Bekijk hier de Java-beginnershandleiding.
Dit artikel zal zeer geschikt zijn voor zowel Java-ontwikkelaars als Java-testers / automatiseringstesters of iedereen die op zoek is naar een hoger salaris in hetzelfde vakgebied omdat het geavanceerde Java-vaardigheden vereist.
Meest gestelde vragen over Java 8-sollicitatiegesprekken
V # 1) Maak een lijst van de nieuwe functies die in Java 8 zijn geïntroduceerd?
Antwoord: Nieuwe functies die in Java 8 worden geïntroduceerd, worden hieronder vermeld:
- Lambda-expressies
- Methodeverwijzingen
- Facultatieve Klasse
- Functionele interface
- Standaardmethoden
- Neushoorn, JavaScript-engine
- Stream API
- Datum API
Vraag 2) Wat zijn functionele interfaces?
Antwoord: Functionele interface is een interface met slechts één abstracte methode. De implementatie van deze interfaces wordt verzorgd met behulp van een Lambda Expression, wat betekent dat om de Lambda Expression te gebruiken, je een nieuwe functionele interface moet maken of je kunt de vooraf gedefinieerde functionele interface van Java 8
De annotatie die wordt gebruikt voor het maken van een nieuwe functionele interface is ' @FunctionalInterface
V # 3) Wat is een optionele klasse?
Antwoord: Optionele klasse is een speciale wrapper-klasse die in Java 8 is geïntroduceerd en die wordt gebruikt om NullPointerExceptions te vermijden. Deze laatste klasse is aanwezig onder het pakket java.util. NullPointerExceptions treedt op wanneer we de Null-controles niet uitvoeren.
V # 4) Wat zijn de standaardmethoden?
Antwoord: Standaardmethoden zijn de methoden van de interface die een hoofdtekst heeft. Deze methoden gebruiken, zoals de naam suggereert, de standaard sleutelwoorden. Het gebruik van deze standaardmethoden is 'Achterwaartse compatibiliteit', wat betekent dat als JDK een interface wijzigt (zonder standaardmethode), de klassen die deze interface implementeren, zullen breken.
Aan de andere kant, als u de standaardmethode in een interface toevoegt, kunt u de standaardimplementatie opgeven. Dit heeft geen invloed op de implementatieklassen.
Syntaxis:
Q # 5) Wat zijn de belangrijkste kenmerken van de Lambda-functie?
Antwoord: De belangrijkste kenmerken van de Lambda-functie zijn als volgt:
- Een methode die is gedefinieerd als Lambda Expression kan als parameter worden doorgegeven aan een andere methode.
- Een methode kan standalone bestaan zonder tot een klasse te behoren.
- Het is niet nodig om het parametertype te declareren, omdat de compiler het type kan ophalen uit de waarde van de parameter.
- We kunnen haakjes gebruiken bij het gebruik van meerdere parameters, maar het is niet nodig om haakjes te hebben als we een enkele parameter gebruiken.
- Als het hoofdgedeelte van de uitdrukking één enkele instructie heeft, is het niet nodig om accolades op te nemen.
Q # 6) Wat was er mis met de oude datum en tijd?
Antwoord: Hieronder worden de nadelen van de oude datum en tijd vermeld:
- Java.util.Date is veranderlijk en is niet thread-safe, terwijl de nieuwe Java 8 Date and Time API thread-safe is.
- Java 8 Date and Time API voldoet aan de ISO-normen, terwijl de oude datum en tijd slecht waren ontworpen.
- Het heeft verschillende API-klassen geïntroduceerd voor een datum zoals LocalDate, LocalTime, LocalDateTime, enz.
- Over de prestaties tussen de twee gesproken, Java 8 werkt sneller dan het oude regime van datum en tijd.
V # 7) Wat is het verschil tussen de Collection API en Stream API?
Antwoord: Het verschil tussen de Stream API en de Collection API is te zien in de onderstaande tabel:
Stream API | Collectie API |
---|---|
Het werd geïntroduceerd in de Java 8 Standard Edition-versie. | Het werd geïntroduceerd in Java-versie 1.2 |
Er is geen gebruik van de Iterator en Spliterators. | Met de hulp van forEach kunnen we de Iterator en Spliterators gebruiken om de elementen te herhalen en een actie uit te voeren op elk item of het element. |
Er kan een oneindig aantal functies worden opgeslagen. | Er kan een telbaar aantal elementen worden opgeslagen. |
Consumptie en iteratie van elementen uit het Stream-object kan slechts één keer worden gedaan. | Het consumeren en herhalen van elementen uit het Collection-object kan meerdere keren worden gedaan. |
Het wordt gebruikt om gegevens te berekenen. | Het wordt gebruikt om gegevens op te slaan. |
Q # 8) Hoe creëer je een functionele interface?
Antwoord: Hoewel Java een functionele interface kan identificeren, kunt u er een definiëren met de annotatie
@FunctionalInterface
Nadat u de functionele interface heeft gedefinieerd, kunt u slechts één abstracte methode hebben. Omdat u maar één abstracte methode heeft, kunt u meerdere statische methoden en standaardmethoden schrijven.
Hieronder ziet u het programmeervoorbeeld van FunctionalInterface geschreven voor vermenigvuldiging van twee getallen.
Uitgang:
V # 9) Wat is een SAM-interface?
Antwoord: Java 8 heeft het concept FunctionalInterface geïntroduceerd dat slechts één abstracte methode kan hebben. Omdat deze interfaces slechts één abstracte methode specificeren, worden ze soms SAM-interfaces genoemd. SAM staat voor 'Single Abstract Method'.
Q # 10) Wat is methodeverwijzing?
c ++ random number generator tussen twee getallen
Antwoord: In Java 8 is een nieuwe functie geïntroduceerd die bekend staat als Method Reference. Dit wordt gebruikt om te verwijzen naar de methode van functionele interface. Het kan worden gebruikt om Lambda Expression te vervangen terwijl naar een methode wordt verwezen.
Bijvoorbeeld Als de Lambda Expression eruit ziet
Dan zou de bijbehorende Method Reference zijn,
waarbij '::' een operator is die de naam van de klasse onderscheidt van de naam van de methode.
Q # 11) Leg de volgende syntaxis uit
Antwoord: Het is een statische methodeverwijzing naar de Waarde van methode van de Draad klasse. System.out :: println is een statische methodeverwijzing naar de println-methode van het out-object van de System-klasse.
Het retourneert de corresponderende stringvoorstelling van het argument dat wordt doorgegeven. Het argument kan Teken, Geheel getal, Booleaans, enzovoort zijn.
V # 12) Wat is een predikaat? Wat is het verschil tussen een predikaat en een functie?
Antwoord: Predicaat is een vooraf gedefinieerde functionele interface. Het staat onder het pakket java.util.function.Predicate. Het accepteert slechts een enkel argument in de onderstaande vorm,
Predikaat
Predikaat | Functie |
---|---|
Het heeft het retourtype Boolean. | Het heeft het retourtype Object. |
Het is geschreven in de vorm van Predikaat die een enkel argument accepteert. | Het is geschreven in de vorm van Functie die ook een enkel argument accepteert. |
Het is een functionele interface die wordt gebruikt om Lambda-expressies te evalueren. Dit kan worden gebruikt als een doelwit voor een Method Reference. | Het is ook een functionele interface die wordt gebruikt om Lambda-expressies te evalueren. In Functie is T voor invoertype en R is voor het resultaattype. Dit kan ook worden gebruikt als een doelwit voor een Lambda Expression en Method Reference. |
Q # 13) Is er iets mis met de volgende code? Zal het compileren of een specifieke fout geven?
Antwoord: Ja. De code zal compileren omdat het de functionele interface-specificatie volgt van het definiëren van slechts een enkele abstracte methode. De tweede methode, printString (), is een standaardmethode die niet telt als een abstracte methode.
Q # 14) Wat is een Stream API? Waarom hebben we de Stream API nodig?
Antwoord: Stream API is een nieuwe functie toegevoegd in Java 8. Het is een speciale klasse die wordt gebruikt voor het verwerken van objecten uit een bron zoals Collection.
We hebben de Stream API nodig omdat,
- Het ondersteunt geaggregeerde bewerkingen waardoor de verwerking eenvoudig is.
- Het ondersteunt programmeren in functionele stijl.
- Het heeft een snellere verwerking. Daarom is het geschikt voor betere prestaties.
- Het maakt parallelle operaties mogelijk.
Q # 15) Wat is het verschil tussen limiet en overslaan?
Antwoord: De limit () methode wordt gebruikt om de stream van de opgegeven grootte te retourneren. Bijvoorbeeld, Als je limiet (5) hebt genoemd, dan is het aantal uitvoerelementen 5.
Laten we eens kijken naar het volgende voorbeeld. De uitvoer retourneert hier zes elementen, aangezien de limiet is ingesteld op ‘zes’.
Uitgang:
Terwijl de skip () - methode wordt gebruikt om het element over te slaan.
Laten we eens kijken naar het volgende voorbeeld. In de uitvoer zijn de elementen 6, 7, 8, wat betekent dat het de elementen heeft overgeslagen tot de 6e index (beginnend bij 1).
Uitgang:
Q # 16) Hoe krijgt u de huidige datum en tijd met behulp van de Java 8 Date and Time API?
Antwoord: Het onderstaande programma is geschreven met behulp van de nieuwe API die in Java 8 is geïntroduceerd. We hebben gebruik gemaakt van LocalDate, LocalTime en LocalDateTime API om de huidige datum en tijd te krijgen.
In de eerste en tweede printopdracht hebben we de huidige datum en tijd opgehaald uit de systeemklok met de standaard tijdzone. In de derde printinstructie hebben we LocalDateTime API gebruikt die zowel de datum als de tijd zal afdrukken.
Uitgang:
Q # 17) Wat is het doel van de limit () - methode in Java 8?
Antwoord: De Stream.limit () methode specificeert de limiet van de elementen. De grootte die u opgeeft in de limiet (X), retourneert de stream met de grootte van ‘X’. Het is een methode van java.util.stream.Stream
Syntaxis:
Waar ‘X’ de grootte van het element is.
V # 18) Schrijf een programma om 5 willekeurige getallen af te drukken met forEach in Java 8?
oracle sql interviewvragen en antwoorden voor ervaren
Antwoord: Het onderstaande programma genereert 5 willekeurige getallen met behulp van forEach in Java 8. U kunt de limietvariabele instellen op een willekeurig getal, afhankelijk van het aantal willekeurige getallen dat u wilt genereren.
Uitgang:
Q # 19) Schrijf een programma om 5 willekeurige getallen in gesorteerde volgorde af te drukken met forEach in Java 8?
Antwoord: Het onderstaande programma genereert 5 willekeurige getallen met behulp van forEach in Java 8. U kunt de limietvariabele instellen op een willekeurig getal, afhankelijk van het aantal willekeurige getallen dat u wilt genereren. Het enige dat u hier hoeft toe te voegen, is de gesorteerde () methode.
Uitgang:
Q # 20) Wat is het verschil tussen Intermediate en Terminal Operations in Stream?
Antwoord: Alle Stream-bewerkingen zijn Terminal of Intermediate. Tussenliggende bewerkingen zijn de bewerkingen die de stream retourneren zodat sommige andere bewerkingen op die stream kunnen worden uitgevoerd. Tussenliggende bewerkingen verwerken de stream niet op de oproeplocatie, daarom worden ze lui genoemd.
Dit soort bewerkingen (tussenliggende bewerkingen) verwerken gegevens wanneer er een terminalbewerking wordt uitgevoerd. Voorbeelden van tussenliggende werking zijn kaart en filter.
Terminal Operations start de Stream-verwerking. Tijdens dit gesprek ondergaat de Stream alle tussenliggende bewerkingen. Voorbeelden van Terminal Operation zijn sum, Collect en forEach.
In dit programma proberen we eerst de tussenliggende bewerking uit te voeren zonder terminalbewerking. Zoals u kunt zien, wordt het eerste codeblok niet uitgevoerd omdat er geen ondersteuning voor Terminal-bewerking is.
Het tweede blok is succesvol uitgevoerd vanwege de Terminal operatie sum ().
Uitgang:
Q # 21) Een Java 8-programma schrijven om de som van alle getallen in een lijst te krijgen?
Antwoord: In dit programma hebben we ArrayList gebruikt om de elementen op te slaan. Vervolgens hebben we met behulp van de methode sum () de som berekend van alle elementen die aanwezig zijn in de ArrayList. Vervolgens wordt het geconverteerd naar Stream en elk element toegevoegd met behulp van de methoden mapToInt () en sum ().
Uitgang:
V # 22) Een Java 8-programma schrijven om de lijst met getallen te kwadrateren en vervolgens de getallen groter dan 100 eruit te filteren en vervolgens het gemiddelde van de resterende getallen te vinden?
Antwoord: In dit programma hebben we een array van gehele getallen genomen en deze in een lijst opgeslagen. Vervolgens hebben we met behulp van mapToInt () de elementen gekwadrateerd en de getallen groter dan 100 uitgefilterd. Ten slotte wordt het gemiddelde van het resterende aantal (groter dan 100) berekend.
Uitgang:
Q # 23) Wat is het verschil tussen findFirst () en findAny () van Stream?
Antwoord: Zoals de naam doet vermoeden, wordt de methode findFirst () gebruikt om het eerste element uit de stream te vinden, terwijl de methode findAny () wordt gebruikt om een element uit de stream te vinden.
De findFirst () is predestinarisme van aard, terwijl de findAny () niet-deterministisch is. Bij het programmeren betekent deterministisch dat de uitvoer is gebaseerd op de invoer- of begintoestand van het systeem.
Q # 24) Wat is het verschil tussen Iterator en Spliterator?
Antwoord: Hieronder staan de verschillen tussen Iterator en Spliterator.
Iterator | Splitser |
---|---|
Het werd geïntroduceerd in Java-versie 1.2 | Het werd geïntroduceerd in Java SE 8 |
Het wordt gebruikt voor Collection API. | Het wordt gebruikt voor Stream API. |
Enkele van de iteratiemethoden zijn next () en hasNext () die worden gebruikt om elementen te itereren. | Spliteratormethode is tryAdvance (). |
We moeten de iterator () -methode op het verzamelingsobject aanroepen. | We moeten de spliterator () -methode op Stream Object aanroepen. |
Herhaalt alleen in opeenvolgende volgorde. | Herhaalt in parallelle en opeenvolgende volgorde. |
Q # 25) Wat is de functionele consumenteninterface?
Antwoord: De functionele interface van de consument is ook een interface met één argument (zoals predikaat en functie). Het valt onder java.util.function.Consumer. Dit levert geen waarde op.
In het onderstaande programma hebben we gebruik gemaakt van de accept-methode om de waarde van het String-object op te halen.
Uitgang:
Q # 26) Wat is de functionele interface van de leverancier?
Antwoord: Functionele interface van leverancier accepteert geen invoerparameters. Het valt onder java.util.function.Supplier. Dit retourneert de waarde met behulp van de methode get.
In het onderstaande programma hebben we gebruik gemaakt van de methode get om de waarde van het String-object op te halen.
Uitgang:
Q # 27) Wat is Nashorn in Java 8?
Antwoord: Nashorn in Java 8 is een op Java gebaseerde engine voor het uitvoeren en evalueren van JavaScript-code.
Q # 28) Een Java 8-programma schrijven om het laagste en hoogste nummer van een stream te vinden?
Antwoord: In dit programma hebben we de methoden min () en max () gebruikt om het hoogste en laagste nummer van een stream te krijgen. Allereerst hebben we een stream geïnitialiseerd die gehele getallen bevat en met behulp van de methode Comparator.comparing () hebben we de elementen van de stream vergeleken.
Wanneer deze methode is opgenomen met max () en min (), krijgt u de hoogste en laagste cijfers. Het werkt ook bij het vergelijken van de snaren.
Uitgang:
Q # 29) Wat is het verschil tussen kaart- en flatMap-streambewerkingen?
Antwoord: Map Stream-bewerking geeft één uitvoerwaarde per invoerwaarde, terwijl flatMap Stream-bewerking nul of meer uitvoerwaarde per invoerwaarde oplevert.
Kaartvoorbeeld Map Stream-bediening wordt over het algemeen gebruikt voor eenvoudige bediening op Stream, zoals hieronder wordt vermeld.
In dit programma hebben we de karakters van 'Namen' veranderd in hoofdletters met behulp van de kaartbewerking nadat we ze in een Stream hebben opgeslagen en met behulp van de forEach Terminal-bewerking hebben we elk element afgedrukt.
Uitgang:
website die youtube-video's omzet naar mp4
flatMap Voorbeeld flatMap Stream-bewerking wordt gebruikt voor complexere Stream-bewerkingen.
Hier hebben we flatMap-bewerking uitgevoerd op 'Lijst met lijst van type String'. We hebben invoernamen als lijst gegeven en vervolgens opgeslagen in een stream waarop we de namen die beginnen met ‘S’ hebben uitgefilterd.
Ten slotte hebben we met behulp van de forEach Terminal-bewerking elk element afgedrukt.
Uitgang:
Q # 30) Wat is MetaSpace in Java 8?
Antwoord: In Java 8 is een nieuwe functie geïntroduceerd om klassen op te slaan. Het gebied waar alle klassen die in Java 8 zijn opgeslagen, MetaSpace worden genoemd. MetaSpace heeft de PermGen vervangen.
Tot Java 7 werd PermGen gebruikt door Java Virtual Machine om de klassen op te slaan. Omdat MetaSpace dynamisch is, omdat het dynamisch kan groeien en geen enkele beperking heeft qua grootte, heeft Java 8 PermGen vervangen door MetaSpace.
Q # 31) Wat is het verschil tussen interne en externe iteratie van Java 8?
Antwoord: Het verschil tussen interne en externe iteratie wordt hieronder opgesomd.
Interne iteratie | Externe iteratie |
---|---|
Het werd geïntroduceerd in Java 8 (JDK-8). | Het werd geïntroduceerd en geoefend in de vorige versie van Java (JDK-7, JDK-6 enzovoort). |
Het itereert intern op de geaggregeerde objecten zoals Verzameling. | Het itereert extern op de geaggregeerde objecten. |
Het ondersteunt de functionele programmeerstijl. | Het ondersteunt de OOPS-programmeerstijl. |
Interne Iterator is passief. | Externe Iterator is actief. |
Het is minder foutief en vereist minder codering. | Het vereist iets meer codering en het is meer foutgevoelig. |
Q # 32) Wat is JJS?
Antwoord: JJS is een opdrachtregelprogramma dat wordt gebruikt om JavaScript-code op de console uit te voeren. In Java 8 is JJS het nieuwe uitvoerbare bestand dat een JavaScript-engine is.
Q # 33) Wat is ChronoUnits in Java 8?
Antwoord: ChronoUnits is de opsomming die is geïntroduceerd ter vervanging van de Integer-waarden die in de oude API worden gebruikt voor het weergeven van de maand, dag, enz.
Q # 34) Leg StringJoiner Class uit in Java 8? Hoe kunnen we het samenvoegen van meerdere strings bereiken met StringJoiner Class?
Antwoord: In Java 8 werd een nieuwe klasse geïntroduceerd in het pakket java.util dat bekend stond als StringJoiner. Via deze klasse kunnen we meerdere strings samenvoegen, gescheiden door scheidingstekens, samen met een voorvoegsel en achtervoegsel eraan.
In het onderstaande programma zullen we leren hoe je met StringJoiner Class lid kunt worden van meerdere Strings. Hier hebben we ',' als scheidingsteken tussen twee verschillende strings. Vervolgens hebben we vijf verschillende strings samengevoegd door ze toe te voegen met behulp van de add () methode. Eindelijk, de String Joiner afgedrukt.
In de volgende vraag # 35 leert u hoe u een voorvoegsel en achtervoegsel aan de tekenreeks kunt toevoegen.
Uitgang:
V # 35) Schrijf een Java 8-programma om een voor- en achtervoegsel toe te voegen aan de tekenreeks?
Antwoord: In dit programma hebben we ',' als scheidingsteken tussen twee verschillende strings. We hebben ook '(' en ')' haakjes gegeven als voor- en achtervoegsel. Vervolgens worden vijf verschillende strings samengevoegd door ze toe te voegen met behulp van de add () - methode. Eindelijk, de String Joiner afgedrukt.
Uitgang:
Q # 36) Een Java 8-programma schrijven om een stream te herhalen met de methode forEach?
Antwoord: In dit programma itereren we een Stream beginnend bij 'nummer = 2', gevolgd door de telvariabele verhoogd met '1' na elke iteratie.
Vervolgens filteren we het getal waarvan de rest niet nul is wanneer het wordt gedeeld door het getal 2. We hebben ook de limiet ingesteld op? 5 wat betekent dat het slechts 5 keer zal herhalen. Ten slotte drukken we elk element af met forEach.
Uitgang:
Q # 37) Schrijf een Java 8-programma om een array te sorteren en vervolgens de gesorteerde array om te zetten in Stream?
Antwoord: In dit programma hebben we parallel sorteren gebruikt om een array van gehele getallen te sorteren. Vervolgens de gesorteerde array geconverteerd naar Stream en met behulp van forEach hebben we elk element van een Stream afgedrukt.
Uitgang:
Q # 38) Schrijf een Java 8-programma om het aantal strings in een lijst te vinden waarvan de lengte groter is dan 5?
Antwoord: In dit programma worden vier strings aan de lijst toegevoegd met de methode add (), en vervolgens hebben we met behulp van Stream en Lambda-expressie de strings geteld die een lengte hebben groter dan 5.
Uitgang:
Q # 39) Een Java 8-programma schrijven om twee streams samen te voegen?
Antwoord: In dit programma hebben we twee Streams gemaakt van de twee reeds gemaakte lijsten en deze vervolgens samengevoegd met behulp van een concat () - methode waarin twee lijsten als argument worden doorgegeven. Ten slotte de elementen van de aaneengeschakelde stroom afgedrukt.
Uitgang:
Q # 40) Een Java 8-programma schrijven om de dubbele elementen uit de lijst te verwijderen?
Antwoord: In dit programma hebben we de elementen in een array opgeslagen en omgezet in een lijst. Daarna hebben we de stream gebruikt en deze met behulp van de methode 'Collectors.toSet ()' verzameld in 'Set'.
Uitgang:
Gevolgtrekking
In dit artikel hebben we de nieuwe functies die in Java 8 zijn geïntroduceerd begrepen. We hebben alle belangrijke Java 8-interviewvragen en hun antwoorden in detail behandeld.
Bij het lezen van deze tutorial moet u kennis hebben opgedaan over de nieuwe API's voor datum-tijdmanipulatie, nieuwe functies van Java 8, nieuwe streaming-API's en de apt-programmeervoorbeelden volgens het concept. Deze nieuwe concepten of de functies maken deel uit van het interviewproces als je zin hebt in de meer uitdagende Java-posities.
Al het beste!!
Bekijk hier ALLE Java-tutorials.
Aanbevolen literatuur
- Interview vragen en antwoorden
- Vragen en antwoorden over ETL-tests
- Enkele lastige vragen en antwoorden voor handmatig testen
- Top 40 C-programmeervragen en antwoorden
- Top 40 populaire J2EE interviewvragen en antwoorden die u zou moeten lezen
- Spock-interviewvragen met antwoorden (meest populair)
- 25 Beste Agile Testing Interview Vragen en Antwoorden
- Top 32 beste datastage interviewvragen en antwoorden