35+ Java 8 întrebări și răspunsuri la interviu (2025)

Fie că este vorba de un tehnist sau de orice alt profesionist, interviurile scot întotdeauna adrenalina din nervozitate. Cu toate acestea, pentru a ieși în evidență din mulțime, este important să-ți șlefuiești abilitățile și să pariezi pe abilitățile tale. Mai mult decât atât, având mâinile pe cele frecvent întrebat Java 8 întrebări și răspunsuri la interviu pot fi cele mai bune.

Prin urmare, săpați adânc în aceste 8 întrebări de interviu Java pentru începători și experimentați, pentru a obține succes în interviurile viitoare.

Java 8 întrebări la interviu pentru cei proaspăt și experiență

1) Java 8 se încadrează în ce paradigmă de programare?

Java 8 se încadrează în următoarea paradigmă de programare:

  • Limbajul de programare orientat pe obiecte sau pe clasă.
  • Limbajul de programare funcțional.
  • Limbajul de programare procedural specificat.
  • Limbajul de programare logic.

2) De ce ar trebui să folosim clasa Opțional?

Clasa opțională este o clasă de container nou introdusă, care este utilă în demonstrarea valorilor opționale existente sau inexistente. Avantajul său major este de a evita verificările nul & void și facilitează metode utile în verificarea existenței unei valori pentru o anumită variabilă.


Java 8 de întrebări la interviu

3) Numiți câteva caracteristici recente introduse în Java 8.

Mai jos sunt cele mai recente caracteristici care sunt introduse în Java 8:

  • Expresii Lambda: Este o Java funcție pe care o puteți partaja sau la care puteți face referire ca obiect.
  • Interferența metodei: Folosește funcția ca criteriu pentru a implementa o metodă.
  • Interferență funcțională: Fiecare interferență funcțională este asociată cu o singură metodă abstractă care este cunoscută sub numele de metodă funcțională.
  • Metoda implicită: Este util în implementarea metodelor în interfețe care ajută la activarea potențialului de „evoluție a interfeței”.
  • Date Time API: Este o versiune îmbunătățită, dar inspirată a API-urilor de timp java pentru a face față dezavantajelor ultimei versiuni.
  • Stream API este denumit stratul abstract, care ajută la canalizarea datelor de prelucrare.
  • Opțional: Clasa wrapper este utilă pentru verificarea valorilor nule și procesarea datelor ulterioare.
  • JavaScript și motor Nashorn: Este versiunea îmbunătățită a JavaScript Engine, care este util pentru activarea funcționalității sale în Java, înlocuind Rhino.

4) Specificați avantajele utilizării java 8

Iată câteva beneficii ale utilizării Java 8:

  • Ajută la crearea aplicațiilor mult mai rapid și într-un mod mai ușor.
  • Oferă un ambient foarte stabil pentru dezvoltatori.
  • Coduri concise, reutilizabile și ușor de înțeles.
  • Suport îmbunătățit și eficient.
  • Ușor de portat pe diverse sisteme de operare.
  • Coduri standard minime.

5) Ce este o colecție și cum este diferită de un flux?

O colecție este o bază de date în memorie care înregistrează toate valorile conform structurii de date curente. Deci, înainte de a adăuga, îl adăugați la colecție, este important să le calculați pe fiecare dintre ele. În timp ce un flux este o structură de date fixă ​​vizual în care putem calcula elementele în funcție de nevoile noastre.


6) Ce este expresia Lambada?

Expresia Lambada este un fel de funcție care nu are nume și este uneori denumită funcția anonimă deoarece nu are propriul tip de informații. Îl puteți folosi conform nevoilor dvs. și este foarte util în repetarea, filtrarea și extragerea oricăror date din colecție.

Exemplu:

import java. util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaExpressionExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");
        List<String> filteredNames = names.stream()
                .filter(name -> name.startsWith("C"))
                .map(name -> name.toUpperCase())
                .collect(Collectors.toList());
        System.out.println(filteredNames);
    }
}

ieșire:

Charlie

7) Definiți canalizarea fluxului

Canalizarea fluxului este o metodă de grupare a diferitelor operațiuni. Puteți realiza acest lucru prin clasificarea operațiunilor sale de flux în două părți. Operațiuni intermediare și terminale.

Ori de câte ori este efectuată o operațiune intermediară, aceasta returnează o instanță la conducta de flux. Prin urmare, orice utilizator poate configura un număr irațional de operațiuni intermediare pentru a eficientiza datele și, în cele din urmă, a forma o conductă de procesare.

Mai mult, pentru a termina conductele, este necesar să existe o operațiune terminală la sfârșitul procesului.


8) În ce sunt predicatul și consumatorul Java 8?

Un predicat este o interfață funcțională care primește de obicei argumente și preia o valoare booleană. Îl puteți folosi pentru a aplica un filtru pentru o colecție de obiecte.

Pe de altă parte, consumatorul este denumit o interfață funcțională încorporată care se găsește în JavaPachetul de funcții .util. Îl puteți folosi pentru a consuma orice obiect și ia valoarea de intrare și nu dă nimic.


9) De ce este folosită metoda peek () în Java 8?

Metoda peek() ajută la susținerea depanării, în care se dorește să se observe elementele, deoarece acestea tind să curgă dintr-un anumit punct al unei conducte. Este o reprezentare a observației noastre a modului în care trece fiecare element.

Sintaxă: public Object peek()


10) Ce te face candidatul ideal pentru Java rol de dezvoltator?

Iată câteva calități importante care te pot face un candidat ideal pentru Java rol de dezvoltator:

  • Ar trebui să aveți capacitatea de a scrie coduri clare, ușor de înțeles și eficiente.
  • O înțelegere profundă a tiparelor și conceptelor de „OOP sau programare orientată pe obiecte. "
  • O bună cunoaștere a diferitelor modele arhitecturale și de design.
  • Familiaritatea cu Java modele de concurență.
  • Experiență și cunoștințe de lucru cu diverse cadre de aplicații web, cum ar fi Spark si joaca.
  • Cunoștințe fundamentale ale Java Mașină virtuală sau JVM, dezavantajele sale, soluția de soluționare etc.
  • O bună experiență în utilizarea bazelor de date încorporate și externe.

11) Explicați „Interfața funcțională”.

O interfață cu un singur abstract se numește interfață funcțională. Este cunoscută și sub numele de Metoda abstractă unică sau SAM. Cu toate acestea, adnotarea @FunctionalInterface este opțională și poate fi folosită chiar dacă nu există. Se extinde la cealaltă interfață dacă nu are niciun rezumat.


12) De ce sunt necesare metode statice în Java 8?

Referința la metoda statică este denumită o metodă de utilitate sau ajutor, care este legată de o interfață. Este, de asemenea, o clasă care nu este legată de niciun obiect.

Iată motivele pentru a utiliza metoda Statică în Java:

  • Util pentru întreținerea și extinderea API-ului.
  • Presupune o împărțire clară și concisă a responsabilităților și nu trebuie să aveți o singură clasă de utilități pentru a avea colecțiile de utilități.
  • Util pentru păstrarea tuturor interfețelor într-o interfață comună, mai degrabă decât interfețe specifice.

13) Care sunt avantajele Nashorn?

Nashorn este cel mai avansat și nou JavaScenariu motor de procesare introdus în Java 8. Anterior, era bazat pe Mozilla Rhino. Oferă o conformitate sporită cu ECMA JavaScenariul. Este mai rapid decât versiunile sale anterioare.


14) Prin ce diferă API-ul Collection și API-ul Stream?

Iată câteva diferențe importante între Collection API și Stream API

Collection API Stream API
Collection API a fost folosit pentru prima dată în Java 1.2 Stream API a fost introdus pentru prima dată în Java IF 8.
Îl puteți folosi pentru a stoca date nelimitate. Îl puteți folosi pentru a calcula date nelimitate.
Collection API vă permite să utilizați Iterator și Spilterator pentru iterarea datelor. Stream API vă permite să utilizați Iterator și Spilterator pentru iterarea datelor.
API-ul Collection este ușor de accesat. API in-stream, nu există o modalitate directă de a ajunge la anumite elemente.
De asemenea, vă oferă ușurință procesarea în funcție de nevoile dvs. Stream API poate fi procesat o singură dată.

15) Descrieți PermGenSpace și MetaSpace.

PermGen sau Spațiul de generare permanentă este un tip unic de spațiu heap utilizat pentru a ține evidența metadatelor stocate, care este acum eliminat în Java 8.

Cu această nouă versiune, stocarea metadatelor se va face într-o memorie similară cunoscută sub numele de „MetaSpace”. Nu este un transferabil Java Memoria heap și este o versiune îmbunătățită a PermGen în aspectele de reglare automată, colectarea gunoiului etc.


16) Cum este creată interfața funcțională în Java 8?

Puteți folosi expresia lambda pentru a implementa metoda abstractă a interfeței funcționale în Java 8. Mai jos este un exemplu de codificare a aceluiași lucru:

Exemplu

import java.util.function.Consumer;
public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        Consumer<String> printer = System.out::println;
        printer.accept("Hello, world!");
    }
}

ieșire:

Hello, world!

17) Care sunt diferențele și asemănările dintre Funcție și Predicat în Java 8?

Iată diferențele dintre Funcție și Predicat în Java 8:

  • Funcția este utilă în transformare, în timp ce predicatul poate fi folosit pentru a testa orice condiție.
  • Funcția poate primi un argument și poate da un rezultat, în timp ce predicatul poate primi și un argument, dar oferă doar valoarea booleană.
  • Funcția este notată cu , iar Predicatul este notat doar cu , unde T este tipul funcției și R este rezultatul.

Mai jos sunt asemănările dintre funcție și predicat:

  • Atât funcția, cât și predicatul sunt interfețe funcționale.
  • Atât funcția cât și predicatul sunt funcții cu un singur argument.

18) Explicați diferența dintre skip(long) și limit(long) folosind un exemplu.

Skip-ul (lung) este o operație intermediară care recuperează elementele rămase după eliminarea celor n elemente inițiale ale unui anumit flux.

Exemplu:

import java.util.Arrays;
import java.util.List;
public class SkipExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
        // Create a stream from the names list
        names.stream()
                // Skip the first two elements of the stream
                .skip(2)
                // Print the remaining elements to the console
                .forEach(System.out::println);
    }
}

ieșire:

Charlie
Dave
Eve

Limita (lungă) preia fluxul de elemente de o anumită dimensiune

Exemplu:

import java.util.Arrays;
import java.util.List;
public class LimitExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
        // Create a stream from the names list
        names.stream()
                // Limit the stream to the first three elements
                .limit(3)
                // Print the elements to the console
                .forEach(System.out::println);
    }
}

ieșire:

AliceBob
Charlie

19) În ce situație este cea mai potrivită pentru utilizarea API-ului de flux Java 8?

Puteți utiliza API-ul stream în Java 8. Este nevoie de operațiunile de mai jos:

  • Puteți efectua procesări paralele.
  • Pentru executarea de operații leneș
  • Pentru a efectua operațiuni de bază de date
  • Utilizați pentru iterații interne.
  • Pentru scrierea programării în stil funcțional
  • Puteți utiliza pentru utilizarea operațiunilor pipeline.

20) Care este funcția Inferenței de tip?

Type Inference ajută compilatorul să identifice sau să recunoască tipurile de argumente doar având o privire de ansamblu asupra declarației corespunzătoare și a invocarii metodei.


21) Care este cel mai simplu mod de a identifica și elimina elementele duplicat dintr-o listă în Java 8?

Cea mai ușoară modalitate de a identifica și elimina elementele duplicate este prin utilizarea operațiunii de flux și efectuarea unei colecții, urmată de utilizarea metodei Collections.toSet().


22) Care sunt liniile directoare pentru interfața funcțională?

Mai jos sunt instrucțiunile pentru o interfață funcțională, care este printre cele mai solicitate Java 8 întrebări de programare:

  • Ar trebui să aibă o singură metodă abstractă.
  • Puteți avea cât mai multe metode implicite, deoarece nu este abstractă, iar implementarea este dată mai devreme de aceeași.
  • O metodă abstractă, elementul principal al metodelor publice din Java.lang, este cunoscut într-o interfață funcțională. Obiectul este încă privit ca o interfață utilă.

Notă: Explicația pentru aceasta este că fiecare clasă de implementare pentru această interfață poate avea o implementare pentru această metodă abstractă care este fie definită de clasa de implementare în sine, fie luată dintr-o superclasă.


23) Faceți diferența între spliterator și Iterator.

Iată câteva diferențe între spliterator și iterator:

Spliterator iteratoare
A fost introdus în Java 1.2. A fost introdus în Java 1.8.
Se repetă doar toate elementele separat. Transversa toate elementele separat, precum și în vrac.
Acționează ca un iterator pentru o colecție completă de API-uri. Acționează ca un iterator atât pentru API-ul de flux, cât și pentru colecție.
Nu va suporta programare paralelă. Suportă programare paralelă.

24) Cum poți apela o metodă implicită a unei interfețe într-o clasă?

Cuvântul cheie implicit, care este prezent la începutul semnăturii metodei, este folosit pentru a desemna o declarație de metodă într-o interfață ca metodă implicită. Puteți sări peste modificatorul public deoarece fiecare declarație de metodă dintr-o interfață, inclusiv metodele implicite, este publică automat.


25) Definiți metoda implicită. Când îl poți folosi?

Metoda implicită este prezentă în interfață și include o implementare. Această metodă este utilă în adăugarea de noi funcționalități la o interfață dată, păstrând în același timp compatibilitatea inversă împreună cu clasele sale care sunt deja implementate într-o interfață.


26) Cum sunt create fluxurile în Java, și se numără printre cele mai adresate întrebări de interviu în fluxul java 8?

Curge în flux Java descrieți secvența de obiecte dintr-o anumită sursă, cum ar fi o colecție, care va suporta operațiuni agregate. Îl puteți utiliza pentru a colecta, filtra, imprima și schimba o structură de date cu alta.

Iată exemple despre cum să creați fluxuri în Java:

import java.util.stream.Stream;
public class StreamExample {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve");
        stream.forEach(System.out::println);
    }
}

ieșire:

Alice
Bob
Charlie
Dave
Eve

27) Ce sunt operațiunile de flux Map și FlatMap?

Map și FlatMap sunt considerate operațiuni de flux și flux intermediar care acceptă o funcție. De asemenea, ajută la aplicarea funcției date la restul elementelor.


28) De ce trebuie să modificăm Java limbaj de programare frecvent?

Trebuie să modificăm Java limbaj de programare frecvent din următoarele motive:

  • Puteți utiliza funcțiile de Programare funcțională.
  • Pentru a utiliza eficient cea mai recentă tehnologie a procesoarelor Multi-Core.

29) Menționați câteva interfețe funcționale utilizate în Java 8.

Mai jos sunt câteva interfețe funcționale utilizate în Java 8:

  • BinarOperaTdR
  • Consumator
  • Funcţie
  • Furnizor
  • UnarOperaTdR
  • BiFunction
  • Predicat

30) Care sunt principalele clase API pentru oră și dată?

Mai jos sunt enumerate principalele clase API pentru oră și dată în care sunt utilizate Java 8:

  • Ora locala
  • LocalDateTime
  • LocalDate

31) Dați structura/sintaxa de bază a expresiei Lambda.

Structura/sintaxa de bază a expresiei Lambda este:

(arugument - list) - > {body}

Aici,

  • Argument – ​​listă: Îl puteți păstra plin sau gol.
  • Jeton săgeată: Este util în legarea expresiilor corporale și a argumentelor – listă.
  • Corp: Este format din instrucțiuni și expresii pentru expresia lambda.

32) Care sunt principalele caracteristici ale Stream?

Mai jos sunt principalele caracteristici ale Stream:

  • Conducte
  • Sursa
  • Agregat Operații
  • Secvență de elemente
  • Iterații automate

33) Care sunt cele mai frecvente operațiuni intermediare?

Unele dintre cele mai comune tipuri de expresii intermediare sunt:

  • Distinct ()
  • Omite (n lung)
  • Filtru (predicat)
  • Limită (n lung)
  • Hartă (Funcție)

34) Care sunt cele mai comune tipuri de operațiuni cu terminale?

Mai jos sunt cele mai comune tipuri de operațiuni terminale:

  • Conta
  • Reduce
  • Min
  • AllMatch
  • max
  • AnyMatch
  • La Array

35) În ce este referința la metodă Java 8?

Referința metodei în Java 8 este o modalitate de referire la interfața funcțională. Este cunoscută ca o formă mult mai ușoară și mai eficientă de exprimare lambda. Când utilizați expresii lambda pentru a trimite o metodă, o puteți înlocui cu referința la metodă.


36) Cum sunt diferite iterațiile interne și externe?

Mai jos sunt diferențele dintre iterația internă și cea externă:

Iterație internă Iterație externă
Este cunoscut și sub numele de iterator pasiv sau implicit. Este cunoscut și ca iterator activ sau explicit.
Este purtat intern pe diverse obiecte. Este purtat în exterior pe diverse obiecte.
Este utilizat în programarea funcțională. Este utilizat în programarea orientată pe obiecte.
Reprezintă foarte puține erori. Cu toate acestea, codificarea este o necesitate. Reprezintă mai multe erori. Cu toate acestea, codificarea nu este necesară.

37) Inferența de tip a fost folosită în versiunile anterioare ale Java?

Java a introdus interferența de tip în Java 5 dar cu acces foarte limitat. Dar de-a lungul anilor, posibilitățile de interferență de tip au crescut și este cel mai bun Java 8.


38) Notează a Java 8 care poate găsi numărul minim și maxim al unui flux.

import java.util.Arrays;
import java.util.stream.IntStream;
public class MinMaxExample {
    public static void main(String[] args) {
        int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4};
        int min = IntStream.of(numbers).min().getAsInt();
        int max = IntStream.of(numbers).max().getAsInt();
        System.out.println("Minimum number: " + min);
        System.out.println("Maximum number: " + max);
    }
}

ieșire:

Minimum number: 1
Maximum number: 9

39) Cum se unește mai multe șiruri prin intermediul clasei StringJoiner?

StringJoiner ajută la alăturarea unuia sau mai multor String și poate fi realizat printr-un anumit joiner sau delimitator. De exemplu, se poate uni un număr de șiruri de caractere separându-le cu virgulă (,).

Pentru a crea un șir CSV, se poate genera o cale completă pentru un anumit director în Linux, care se poate face prin alăturarea șirului cu ajutorul barei oblice „/”.


40) Care este cea mai bună alternativă la expresiile lambda în Java 8?

În general, utilizăm expresii lambda pentru a crea metode anonime care ajută la obținerea rezultatului dorit. Cu toate acestea, există cazuri în care expresiile lambda nu funcționează și folosesc numai o metodă existentă.

Așadar, pentru a evita acest lucru, puteți utiliza referința la metodă care poate ajuta la obținerea rezultatului dorit. Referința metodei este reprezentată folosind simbolul: (duble două puncte).