Java SE 8 Sollicitatievragen en Antwoorden (Deel 1)

In deze post gaan we enkele belangrijke Java SE 8 Interviewvragen met antwoorden bespreken. Ik zal nog een bericht schrijven om de overige Java SE 8 Interviewvragen te bespreken.

Java 8 Interviewvragen

  1. Waarom hebben we opnieuw Java nodig?
  2. Java SE 8 Nieuwe Functies?
  3. Voordelen van Java SE 8 Nieuwe Functies?
  4. Wat is een Lambda-uitdrukking?
  5. Wat zijn de drie delen van een Lambda-uitdrukking? Wat is het type van een Lambda-uitdrukking?
  6. Wat is een Functioneel Interface? Wat is een SAM-interface?
  7. Is het mogelijk om onze eigen Functionele Interface te definiëren? Wat is @FunctionalInterface? Wat zijn de regels om een Functionele Interface te definiëren?
  8. Is @FunctionalInterface-annotatie verplicht om een Functionele Interface te definiëren? Wat is het nut van de @FunctionalInterface-annotatie? Waarom hebben we Functionele Interfaces nodig in Java?
  9. Wanneer gebruiken we de Java 8 Stream API? Waarom moeten we de Java 8 Stream API in onze projecten gebruiken?
  10. Leg de verschillen uit tussen de Collection API en de Stream API uit.
  11. Wat is Spliterator in Java SE 8? Verschillen tussen Iterator en Spliterator in Java SE 8?
  12. Wat is Optioneel in Java 8? Wat is het gebruik van Optioneel? Voordelen van Java 8 Optioneel?
  13. Wat is Type Inferentie? Is Type Inferentie beschikbaar in oudere versies zoals Java 7 en voor Java 7 of is het alleen beschikbaar in Java SE 8?

Java 8 Interviewvragen en Antwoorden

In deze sectie zullen we elke vraag uit de vorige sectie oppakken en beantwoorden met een gedetailleerde beschrijving. Als je meer informatie en voorbeelden nodig hebt, bekijk dan eerdere Java SE 8-posts die beschikbaar zijn op JournalDEV.

Waarom hebben we opnieuw Java nodig?

Oracle Corporation heeft veel nieuwe concepten geïntroduceerd in Java SE 8 om de volgende voordelen te introduceren:

  • Om Huidige Multi-Core CPU’s Efficiënt te Gebruiken
    Recentelijk kunnen we drastische veranderingen in hardware waarnemen. Tegenwoordig maken alle systemen gebruik van Multi-Core CPU’s (2, 4, 8, 16-Core, enz.) om hun toepassingen te implementeren en uit te voeren. We hebben nieuwe programmeerconstructies in Java nodig om deze Multi-Core processoren efficiënt te benutten en zeer gelijktijdige en zeer schaalbare toepassingen te ontwikkelen. – Om FP-functies te gebruiken
    Oracle Corporation heeft veel FP (Functional Programming)-concepten geïntroduceerd als onderdeel van Java SE 8 om de voordelen van FP te benutten.

Nieuwe Functies van Java SE 8?

  • Lambda-Expressies
  • Functionele Interfaces
  • Stream API
  • Datum- en Tijd-API
  • Standaardmethoden en Statische Methoden van Interfaces
  • Spliterator
  • Methoden en Constructeur Referenties
  • Verbeteringen aan de Collecties API
  • Verbeteringen aan Concurrency Utils
  • Verbeteringen aan het Fork/Join Framework
  • Interne Iteratie
  • Parallelle Array en Parallelle Collectie Operaties
  • Optioneel
  • Type Annotaties en Herhaalbare Annotaties
  • Reflectie van Methodeparameters
  • Base64-codering en -decodering
  • IO en NIO2-verbeteringen
  • Nashorn JavaScript Engine
  • javac-verbeteringen
  • JVM-wijzigingen
  • Java 8 Compact Profielen: compact1, compact2, compact3
  • JDBC 4.2
  • JAXP 1.6
  • Java DB 10.10
  • Netwerken
  • Beveiligingswijzigingen

Voordelen van nieuwe functies in Java SE 8?

We kunnen de volgende voordelen behalen met de nieuwe functies in Java SE 8:

  • Meer beknopte en leesbare code
  • Meer herbruikbare code
  • Meer testbare en onderhoudbare code
  • Hoogst gelijktijdige en zeer schaalbare code
  • Parallelle code schrijven
  • Database-achtige bewerkingen schrijven
  • Betere prestaties van applicaties
  • Meer productieve code

Wat is een Lambda-uitdrukking?

Een lambda-expressie is een anonieme functie die een set invoerparameters accepteert en resultaten retourneert. Een lambda-expressie is een blok code zonder naam, met of zonder parameters en met of zonder resultaten. Dit blok code wordt op aanvraag uitgevoerd.

Wat zijn de drie onderdelen van een lambda-expressie? Wat is het type van een lambda-expressie?

A Lambda Expression contains 3 parts:

  • Parameterlijst
    Een lambda-expressie kan nul, één of meer parameters bevatten. Dit is optioneel.- Lambda-pijloperator
    “->” staat bekend als de lambda-pijloperator. Het scheidt de parameterlijst en de body.- Lichaam van de lambda-expressie

Het type van “Journal Dev” is java.lang.String. Het type van “true” is Boolean. Op dezelfde manier, wat is het type van een lambda-expressie? Het type van een lambda-expressie is een Functionele Interface. Voorbeeld: Wat is het type van de volgende lambda-expressie?

   () -> System.out.println("Hello World");

Deze lambda-expressie heeft geen parameters en retourneert geen resultaten. Daarom is het type “java.lang.Runnable” Functionele Interface.

Wat is een Functionele Interface? Wat is SAM Interface?

A Functional Interface is an interface, which contains one and only one abstract method. Functional Interface is also known as SAM Interface because it contains only one abstract method. SAM Interface stands for Single Abstract Method Interface. Java SE 8 API has defined many Functional Interfaces.

Is het mogelijk om onze eigen Functionele Interface te definiëren? Wat is @FunctionalInterface? Wat zijn de regels om een Functionele Interface te definiëren?

Ja, het is mogelijk om onze eigen Functionele Interfaces te definiëren. We gebruiken de annotatie @FunctionalInterface van Java SE 8 om een interface als Functionele Interface te markeren. We moeten deze regels volgen om een Functionele Interface te definiëren:

  • Definieer een interface met één en slechts één abstracte methode.
  • We kunnen niet meer dan één abstracte methode definiëren.
  • Gebruik de @FunctionalInterface-annotatie in de interface-definitie.
  • We kunnen elk aantal andere methoden definiëren, zoals Standaardmethoden, Statische methoden.
  • Als we de methode van de klasse java.lang.Object overschrijven als een abstracte methode, telt dit niet als een abstracte methode.

Is @FunctionalInterface annotatie verplicht om een Functioneel Interface te definiëren? Wat is het gebruik van @FunctionalInterface annotatie? Waarom hebben we Functionele Interfaces nodig in Java?

Het is niet verplicht om een Functioneel Interface te definiëren met @FunctionalInterface annotatie. Als we dat niet willen, kunnen we deze annotatie weglaten. Echter, als we het gebruiken in de definitie van een Functioneel Interface, dwingt de Java-compiler ons om slechts één abstracte methode binnen die interface te gebruiken. Waarom hebben we Functionele Interfaces nodig? Het type van een Lambda Expressie in Java SE 8 is een Functioneel Interface. Telkens wanneer we Lambda Expressies gebruiken, betekent dat dat we Functionele Interfaces gebruiken.

Wanneer gaan we over naar Java 8 Stream API? Waarom moeten we Java 8 Stream API gebruiken in onze projecten?

Als ons Java-project de volgende bewerkingen wil uitvoeren, is het beter om de Java 8 Stream API te gebruiken om veel voordelen te behalen:

  • Wanneer we database-achtige bewerkingen willen uitvoeren. Bijvoorbeeld, als we een groupby-bewerking, orderby-bewerking, enzovoort willen uitvoeren.
  • Wanneer we bewerkingen lui willen uitvoeren.
  • Wanneer we in Functionele Stijl willen programmeren.
  • Wanneer we parallelle bewerkingen willen uitvoeren.
  • Wanneer we interne iteratie willen gebruiken.
  • Wanneer we pijplijnbewerkingen willen uitvoeren.
  • Wanneer we betere prestaties willen bereiken.

Leg de verschillen uit tussen Collection API en Stream API?

S.No. Collection API Stream API
1. It’s available since Java 1.2 It is introduced in Java SE 8
2. It is used to store Data (A set of Objects). It is used to compute data (Computation on a set of Objects).
3. We can use both Spliterator and Iterator to iterate elements. We can use forEach to performs an action for each element of this stream. We can’t use Spliterator or Iterator to iterate elements.
4. It is used to store unlimited number of elements. Stream API is used to process on the elements of a Collection.
5. Typically, it uses External Iteration concept to iterate Elements such as Iterator. Stream API uses internal iteration to iterate Elements, using forEach methods.
6. Collection Object is constructed Eagerly. Stream Object is constructed Lazily.
7. We add elements to Collection object only after it is computed completely. We can add elements to Stream Object without any prior computation. That means Stream objects are computed on-demand.
8. We can iterate and consume elements from a Collection Object at any number of times. We can iterate and consume elements from a Stream Object only once.

Wat is Spliterator in Java SE 8? Verschillen tussen Iterator en Spliterator in Java SE 8?

Spliterator staat voor Splitable Iterator. Het is nieuw geïntroduceerd door Oracle Corporation als onderdeel van Java SE 8. Net als Iterator en ListIterator, is het ook een van de interfaces van Iterator.

S.No. Spliterator Iterator
1. It is introduced in Java SE 8. It is available since Java 1.2.
2. Splitable Iterator Non-Splitable Iterator
3. It is used in Stream API. It is used for Collection API.
4. It uses Internal Iteration concept to iterate Streams. It uses External Iteration concept to iterate Collections.
5. We can use Spliterator to iterate Streams in Parallel and Sequential order. We can use Iterator to iterate Collections only in Sequential order.
6. We can get Spliterator by calling spliterator() method on Stream Object. We can get Iterator by calling iterator() method on Collection Object.
7. Important Method: tryAdvance() Important Methods: next(), hasNext()

Wat is Optional in Java 8? Wat is het gebruik van Optional? Voordelen van Java 8 Optional?

Optioneel: Optional is een definitieve klasse die is geïntroduceerd als onderdeel van Java SE 8. Het is gedefinieerd in het java.util-pakket. Het wordt gebruikt om optionele waarden weer te geven die ofwel bestaan ​​of niet bestaan. Het kan ofwel één waarde of nul waarde bevatten. Als het een waarde bevat, kunnen we deze krijgen. Anders krijgen we niets. Het is een begrensde verzameling, wat betekent dat het hoogstens één element bevat. Het is een alternatief voor de “null” waarde. Belangrijkste voordeel van Optional is:

  • Het wordt gebruikt om null-controles te vermijden.
  • Het wordt gebruikt om “NullPointerException” te vermijden.

Wat is Type Inferentie? Is Type Inferentie beschikbaar in oudere versies zoals Java 7 en voor Java 7, of is het alleen beschikbaar in Java SE 8?

Type Inferentie betekent het bepalen van het type door de compiler op compile-tijd. Het is geen nieuwe functie in Java SE 8. Het is beschikbaar in Java 7 en eerder dan Java 7 ook. Voor Java 7:- Laten we Java-arrays verkennen. Definieer een array van strings met waarden zoals hieronder weergegeven:

String str[] = { "Java 7", "Java 8", "Java 9" };

Hier hebben we enkele stringwaarden aan de rechterkant toegewezen, maar het type niet gedefinieerd. De Java-compiler leidt automatisch het type af en maakt een array van strings. Java 7: Oracle Corporation heeft de “Diamond Operator” nieuwe functie geïntroduceerd in Java SE 7 om onnodige type-definitie in generieken te vermijden.

Map<String,List<Customer>> customerInfoByCity = new HashMap<>();

Hier hebben we geen type-informatie gedefinieerd aan de rechterkant, eenvoudigweg de Diamond Operator van Java SE 7 gedefinieerd. Java SE 8: Oracle Corporation heeft dit concept van Type Inferentie sterk verbeterd in Java SE 8. We gebruiken dit concept om Lambda Expressies, Functies, Methodereferenties, enz. te definiëren.

ToIntBiFunction<Integer,Integer> add = (a,b) -> a + b;

Hier observeert de Java-compiler de beschikbare type definitie aan de linkerkant en bepaalt het type van de Lambda Expressie parameters a en b als Integers. Dat is alles over Java 8 Interviewvragen. Ik heb enkele Java SE 8 Interviewvragen besproken in deze post en zal nog wat meer Java SE 8 Interviewvragen bespreken in mijn komende posts. Laat alstublieft een reactie achter als u mijn post leuk vindt of als u nog opmerkingen/suggesties heeft.

Source:
https://www.digitalocean.com/community/tutorials/javase8-interview-questions-part1