top 40 java 8 interview questions answers
En aquest tutorial, hem proporcionat les preguntes més importants de les entrevistes de Java 8 i les seves respostes amb exemples de codi i explicació:
Totes les preguntes importants que s’enumeren en aquest tutorial són específiques de Java 8. Java ha evolucionat molt (amb el pas del temps) amb la introducció de noves versions. Amb cada versió, tenim noves funcions associades a Java. Totes aquestes funcions importants es tractaran en aquest tutorial.
Aquestes són preguntes molt habituals que se us faran en qualsevol entrevista de Java que requereixi habilitats avançades. Aquests conceptes són imprescindibles si apareix en algun examen estàndard de certificació Java, com ara Oracle Certified Associate (OCA).
=> Feu una ullada a la guia per a principiants de Java aquí.
Aquest article serà molt adequat tant per als desenvolupadors de Java com per als provadors / automatitzadors de Java o per a qualsevol persona que vulgui obtenir una retribució més alta en el mateix camp perquè requereix coneixements avançats de Java.
Preguntes més freqüents sobre l'entrevista a Java 8
P # 1) Enumereu les noves funcions introduïdes a Java 8?
Resposta: A continuació es detallen les noves funcions introduïdes a Java 8:
- Expressions Lambda
- Referències del mètode
- Classe opcional
- Interfície funcional
- Mètodes predeterminats
- Rinoceront, motor JavaScript
- API Stream
- API Data
Q # 2) Què són les interfícies funcionals?
Resposta: La interfície funcional és una interfície que només té un mètode abstracte. La implementació d’aquestes interfícies es proporciona mitjançant una Expressió Lambda que significa que per utilitzar l’Expressió Lambda, heu de crear una nova interfície funcional o podeu utilitzar la configuració predefinida. interfície funcional de Java 8 .
L'anotació utilitzada per crear una nova interfície funcional és ' @FuncionalInterface '.
P # 3) Què és una classe opcional?
Resposta: La classe opcional és una classe d'embolcall especial introduïda a Java 8 que s'utilitza per evitar NullPointerExceptions. Aquesta classe final està present al paquet java.util. NullPointerExceptions es produeix quan no realitzem les comprovacions de Null.
P # 4) Quins són els mètodes predeterminats?
Resposta: Els mètodes per defecte són els mètodes de la interfície que té un cos. Aquests mètodes, com el seu nom indica, utilitzen les paraules clau predeterminades. L'ús d'aquests mètodes per defecte és 'Compatibilitat cap enrere', que significa que si JDK modifica qualsevol interfície (sense mètode per defecte), les classes que implementen aquesta interfície es trencaran.
D'altra banda, si afegiu el mètode per defecte en una interfície, podreu proporcionar la implementació per defecte. Això no afectarà les classes d'implementació.
Sintaxi:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Quines són les principals característiques de la funció Lambda?
Resposta: Les principals característiques de la funció Lambda són les següents:
- Un mètode que es defineix com a expressió Lambda es pot passar com a paràmetre a un altre mètode.
- Un mètode pot existir independent sense pertànyer a una classe.
- No cal declarar el tipus de paràmetre perquè el compilador pot obtenir el tipus del valor del paràmetre.
- Podem utilitzar parèntesis quan fem servir diversos paràmetres, però no cal tenir parèntesis quan fem servir un paràmetre únic.
- Si el cos d’expressió té una única afirmació, no cal incloure claudàtors.
Q # 6) Què passava amb la data i l’hora antigues?
Resposta: A continuació es detallen els inconvenients de la data i l’hora antigues:
- Java.util.Date es pot modificar i no és apte per a fils, mentre que la nova API de data i hora de Java 8 és apta per a fils.
- L'API Data i hora de Java 8 compleix els estàndards ISO, mentre que la data i l'hora antigues estaven mal dissenyades.
- Ha introduït diverses classes d'API per a una data com LocalDate, LocalTime, LocalDateTime, etc.
- Parlant del rendiment entre tots dos, Java 8 funciona més ràpidament que l’antic règim de data i hora.
Q # 7) Quina diferència hi ha entre l'API de col·lecció i l'API de flux?
Resposta: La diferència entre l'API Stream i l'API Collection es pot entendre a la taula següent:
API Stream | API de col·lecció |
---|---|
Es va introduir a la versió Java 8 Standard Edition. | Es va introduir a la versió 1.2 de Java |
No s’utilitza l’iterador ni els divisors. | Amb l'ajut de forEach, podem utilitzar l'iterador i els divisors per iterar els elements i realitzar una acció sobre cada element o element. |
Es poden emmagatzemar un nombre infinit de funcions. | Es pot emmagatzemar un nombre comptable d'elements. |
El consum i la iteració d'elements de l'objecte Stream només es poden fer una vegada. | El consum i la iteració d'elements de l'objecte de col·lecció es poden fer diverses vegades. |
S'utilitza per calcular dades. | S'utilitza per emmagatzemar dades. |
Q # 8) Com es pot crear una interfície funcional?
Resposta: Tot i que Java pot identificar una interfície funcional, podeu definir-ne una amb l’anotació
@FuncionalInterface
Un cop definida la interfície funcional, només podeu tenir un mètode abstracte. Com que només teniu un mètode abstracte, podeu escriure diversos mètodes estàtics i mètodes predeterminats.
A continuació es mostra l’exemple de programació de FunctionalInterface escrit per multiplicar dos nombres.
@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)); } }
Sortida:
P # 9) Què és una interfície SAM?
Resposta: Java 8 ha introduït el concepte de FunctionalInterface que només pot tenir un mètode abstracte. Atès que aquestes interfícies només especifiquen un mètode abstracte, a vegades se les anomena interfícies SAM. SAM significa 'Mètode abstracte únic'.
Q # 10) Què és el mètode de referència?
quina és la clau de seguretat per a la xarxa sense fils
Resposta: A Java 8, es va introduir una nova característica coneguda com a Referència de mètode. S'utilitza per referir-se al mètode de la interfície funcional. Es pot utilitzar per substituir l'Expressió Lambda mentre es fa referència a un mètode.
Per exemple: Si l’expressió Lambda s’assembla
num -> System.out.println(num)
Llavors la referència del mètode corresponent seria,
System.out::println
on “::” és un operador que distingeix el nom de la classe del nom del mètode.
Q # 11) Expliqueu la sintaxi següent
String:: Valueof Expression
Resposta: És un mètode estàtic de referència al fitxer El valor de mètode de la Corda classe. System.out :: println és una referència de mètode estàtic al mètode println de l'objecte out de la classe System.
Retorna la representació de cadena corresponent de l'argument que es passa. L’argument pot ser Caràcter, Enter, Booleà, etc.
P # 12) Què és un predicat? Indiqueu la diferència entre un predicat i una funció?
Resposta: El predicat és una interfície funcional predefinida. Es troba al paquet java.util.function.Predicate. Accepta només un únic argument que té la forma que es mostra a continuació,
Predicat
Predicat | Funció |
---|---|
Té el tipus de retorn com a booleà. | Té el tipus de retorn com a objecte. |
Està escrit en forma de Predicat que accepta un sol argument. | Està escrit en forma de Funció que també accepta un sol argument. |
És una interfície funcional que s’utilitza per avaluar les expressions de Lambda. Es pot utilitzar com a objectiu per a una referència de mètode. | També és una interfície funcional que s’utilitza per avaluar les expressions de Lambda. A Funció, T és per al tipus d’entrada i R és per al tipus de resultat. Això també es pot utilitzar com a objectiu per a una referència d’expressió i mètode de Lambda. |
Q # 13) Hi ha cap problema amb el codi següent? Compilarà o donarà algun error específic?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Resposta: Sí. El codi es compilarà perquè segueix l'especificació de la interfície funcional de definir només un mètode abstracte únic. El segon mètode, printString (), és un mètode per defecte que no compta com a mètode abstracte.
Q # 14) Què és una API Stream? Per què necessitem l'API Stream?
Resposta: L'API Stream és una nova característica afegida a Java 8. És una classe especial que s'utilitza per processar objectes d'una font com ara Collection.
Necessitem l'API Stream perquè,
- Admet operacions d'agregació que faciliten el processament.
- Admet programació d’estil funcional.
- Fa un processament més ràpid. Per tant, és apte per obtenir un millor rendiment.
- Permet operacions paral·leles.
Q # 15) Quina diferència hi ha entre límit i salt?
Resposta: El mètode limit () s’utilitza per retornar el flux de la mida especificada. Per exemple, Si heu esmentat el límit (5), el nombre d'elements de sortida seria de 5.
Vegem l’exemple següent. La sortida aquí retorna sis elements, ja que el límit s'estableix en 'sis'.
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)); } }
Sortida:
Mentre que, el mètode skip () s'utilitza per saltar l'element.
Vegem l’exemple següent. A la sortida, els elements són 6, 7, 8, el que significa que ha saltat els elements fins al 6è índex (a partir de 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)); } }
Sortida:
Q # 16) Com obtindreu la data i l'hora actuals mitjançant l'API Data i hora de Java 8?
Resposta: El programa següent s'escriu amb l'ajut de la nova API introduïda a Java 8. Hem fet ús de l'API LocalDate, LocalTime i LocalDateTime per obtenir la data i l'hora actuals.
A la primera i segona declaració d'impressió, hem recuperat la data i l'hora actuals del rellotge del sistema amb la zona horària establerta per defecte. A la tercera declaració d'impressió, hem utilitzat l'API LocalDateTime que imprimirà la data i l'hora.
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 } }
Sortida:
Q # 17) Quin és el propòsit del mètode limit () a Java 8?
Resposta: El mètode Stream.limit () especifica el límit dels elements. La mida que especifiqueu al límit (X), retornarà el flux de la mida de 'X'. És un mètode de java.util.stream.Stream
Sintaxi:
limit(X)
On 'X' és la mida de l'element.
P # 18) Escriviu un programa per imprimir 5 números aleatoris mitjançant forEach a Java 8?
Resposta: El programa següent genera 5 nombres aleatoris amb l'ajut de forEach a Java 8. Podeu establir la variable límit a qualsevol nombre en funció del nombre de nombres aleatoris que vulgueu generar.
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 */ } }
Sortida:
Q # 19) Escriviu un programa per imprimir 5 números aleatoris ordenats mitjançant forEach a Java 8?
Resposta: El programa següent genera 5 nombres aleatoris amb l'ajut de forEach a Java 8. Podeu establir la variable límit a qualsevol nombre en funció del nombre de nombres aleatoris que vulgueu generar. L’únic que heu d’afegir aquí és el mètode sorted ().
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 */ } }
Sortida:
Q # 20) Quina diferència hi ha entre les operacions intermèdia i terminal en flux?
Resposta: Totes les operacions de la transmissió són terminals o intermèdies. Les operacions intermèdies són les operacions que retornen el flux perquè es puguin realitzar algunes altres operacions en aquest flux. Les operacions intermèdies no processen el flux al lloc de trucades, per la qual cosa s’anomenen mandrosos.
Aquest tipus d’operacions (operacions intermèdies) processen dades quan es realitza una operació de terminal. Exemples de les operacions intermèdies són mapa i filtre.
Les operacions de terminal inicien el processament de flux. Durant aquesta trucada, el Stream realitza totes les operacions intermèdies. Exemples de l’operació Terminal són sum, Collect i forEach.
En aquest programa, primer estem intentant executar operacions intermèdies sense operacions de terminal. Com podeu veure, el primer bloc de codi no s’executarà perquè no s’admet cap operació de terminal.
El segon bloc s'ha executat correctament a causa de l'operació terminal sum ().
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(); } }
Sortida:
Q # 21) Escriure un programa Java 8 per obtenir la suma de tots els números presents en una llista?
Resposta: En aquest programa, hem utilitzat ArrayList per emmagatzemar els elements. Després, amb l'ajut del mètode sum (), hem calculat la suma de tots els elements presents a l'ArrayList. Després es converteix en Stream i s’afegeix cada element amb l’ajuda dels mètodes mapToInt () i sum ().
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 } }
Sortida:
P # 22) Escriviu un programa Java 8 per quadrar la llista de números i, a continuació, filtreu els números superiors a 100 i, a continuació, trobeu la mitjana dels números restants?
lloc web del proveïdor de dades per a ofertes en línia
Resposta: En aquest programa, hem pres una matriu d’enters i els hem emmagatzemat en una llista. Després, amb l'ajuda de mapToInt (), hem quadrat els elements i filtrat els nombres superiors a 100. Finalment, es calcula la mitjana del nombre restant (superior a 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()); } }
Sortida:
Q # 23) Quina diferència hi ha entre findFirst () i findAny () de Stream?
Resposta: Com el seu nom indica, el mètode findFirst () s'utilitza per trobar el primer element del flux, mentre que el mètode findAny () s'utilitza per trobar qualsevol element del flux.
El findFirst () és de naturalesa predestinarianisme, mentre que el findAny () no és determinista. En la programació, determinista significa que la sortida es basa en l'entrada o l'estat inicial del sistema.
Q # 24) Quina diferència hi ha entre Iterator i Spliterator?
Resposta: A continuació es mostren les diferències entre Iterator i Spliterator.
Iterador | Divisor |
---|---|
Es va introduir a la versió 1.2 de Java | Es va introduir a Java SE 8 |
S'utilitza per a l'API de col·lecció. | S'utilitza per a l'API Stream. |
Alguns dels mètodes iterats són next () i hasNext () que s’utilitzen per iterar elements. | El mètode Spliterator és tryAdvance (). |
Hem de trucar al mètode iterator () a l’objecte de col·lecció. | Hem de trucar al mètode spliterator () a Stream Object. |
Itera només en ordre seqüencial. | Itera en ordre paral·lel i seqüencial. |
Q # 25) Què és la interfície funcional del consumidor?
Resposta: La interfície funcional del consumidor també és una interfície d'argument únic (com Predicat i Funció). Es troba sota java.util.function.Consumer. Això no retorna cap valor.
Al programa següent, hem fet ús del mètode accept per recuperar el valor de l’objecte String.
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 */ } }
Sortida:
Q # 26) Què és la interfície funcional del proveïdor?
Resposta: La interfície funcional del proveïdor no accepta paràmetres d’entrada. Es troba a java.util.function.Supplier. Això retorna el valor mitjançant el mètode get.
Al programa següent, hem fet ús del mètode get per recuperar el valor de l'objecte String.
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. */ } }
Sortida:
Q # 27) Què és Nashorn a Java 8?
Resposta: Nashorn in Java 8 és un motor basat en Java per executar i avaluar el codi JavaScript.
Q # 28) Voleu escriure un programa Java 8 per trobar el nombre més baix i més alt d’un flux?
Resposta: En aquest programa, hem utilitzat mètodes min () i max () per obtenir el nombre més alt i més baix d’un flux. Primer de tot, hem inicialitzat un corrent que té nombres enters i, amb l’ajut del mètode Comparator.comparing (), hem comparat els elements del corrent.
Quan s’incorpora aquest mètode amb max () i min (), us proporcionarà el nombre més alt i el més baix. També funcionarà en comparar les cordes.
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); } }
Sortida:
Q # 29) Quina diferència hi ha entre l'operació de flux de mapes i plans?
Resposta: L'operació de flux de mapes proporciona un valor de sortida per valor d'entrada, mentre que l'operació de flux de mapa pla dóna zero o més valor de sortida per valor d'entrada.
Exemple de mapa- L’operació de la transmissió de mapes s’utilitza generalment per a una operació senzilla a la transmissió, com l’esmentada a continuació.
En aquest programa, hem canviat els caràcters de 'Noms' en majúscules mitjançant l'operació de mapa després d'emmagatzemar-los en un flux i, amb l'ajuda de l'operació per a cada terminal, hem imprès cada element.
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 } }
Sortida:
FlatMap Exemple- L'operació FlatMap Stream s'utilitza per a una operació Stream més complexa.
Aquí hem realitzat l'operació de FlatMap a la 'Llista de Llista de tipus String'. Hem donat noms d’entrada com a llista i després els hem emmagatzemat en un flux on hem filtrat els noms que comencen per ‘S’.
Finalment, amb l'ajut de l'operació per a cada terminal, hem imprès cada element.
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 */ } }
Sortida:
Q # 30) Què és MetaSpace a Java 8?
Resposta: A Java 8, es va introduir una nova característica per emmagatzemar classes. L'àrea on totes les classes que s'emmagatzemen a Java 8 s'anomenen MetaSpace. MetaSpace ha substituït el PermGen.
Fins a Java 7, la màquina virtual Java utilitzava PermGen per emmagatzemar les classes. Com que MetaSpace és dinàmic, ja que pot créixer dinàmicament i no té cap limitació de mida, Java 8 va substituir PermGen per MetaSpace.
Q # 31) Quina diferència hi ha entre la iteració interna i externa de Java 8?
com obrir fitxers de dades a Windows
Resposta: A continuació es mostra la diferència entre la iteració interna i externa.
Iteració interna | Iteració externa |
---|---|
Es va introduir a Java 8 (JDK-8). | Es va introduir i practicar a la versió anterior de Java (JDK-7, JDK-6, etc.). |
Itera internament en els objectes agregats com ara Collection. | Itera externament en els objectes agregats. |
Admet l'estil de programació funcional. | Admet l'estil de programació OOPS. |
Iterador intern és passiu. | L'iterador extern està actiu. |
És menys erroni i requereix menys codificació. | Requereix poc més codificació i és més propens a errors. |
Q # 32) Què és JJS?
Resposta: JJS és una eina de línia d'ordres que s'utilitza per executar codi JavaScript a la consola. A Java 8, JJS és el nou executable que és un motor JavaScript.
Q # 33) Què és ChronoUnits a Java 8?
Resposta: ChronoUnits és l’enumeració que s’introdueix per substituir els valors enters que s’utilitzen a l’antiga API per representar el mes, el dia, etc.
Q # 34) Expliqueu la classe StringJoiner a Java 8? Com podem aconseguir unir diverses cadenes mitjançant la classe StringJoiner?
Resposta: A Java 8, es va introduir una nova classe al paquet java.util que es coneixia com a StringJoiner. Mitjançant aquesta classe, podem unir diverses cadenes separades per delimitadors juntament amb proporcionar-los prefix i sufix.
Al programa següent, aprendrem sobre com unir diverses cadenes mitjançant la classe StringJoiner. Aquí tenim ',' com a delimitador entre dues cadenes diferents. A continuació, hem unit cinc cadenes diferents afegint-les amb l'ajut del mètode add (). Finalment, es va imprimir el String Joiner.
A la següent pregunta núm. 35, aprendreu sobre com afegir prefix i sufix a la cadena.
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); } }
Sortida:
P # 35) Escriure un programa Java 8 per afegir prefix i sufix a la cadena?
Resposta: En aquest programa, tenim ',' com a delimitador entre dues cadenes diferents. A més, hem donat claudàtors “(” i “)” com a prefix i sufix. A continuació, s'uneixen cinc cadenes diferents afegint-les amb l'ajut del mètode add (). Finalment, es va imprimir el String Joiner.
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); } }
Sortida:
Q # 36) Escriure un programa Java 8 per iterar un flux mitjançant el mètode forEach?
Resposta: En aquest programa, estem iterant un flux que comença des de 'número = 2', seguit de la variable de recompte incrementada per '1' després de cada iteració.
Aleshores, estem filtrant el nombre la resta del qual no és zero quan es divideix pel nombre 2. A més, hem establert el límit com a? 5 que significa només 5 vegades que iterarà. Finalment, estem imprimint cada element amb 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); } }
Sortida:
Q # 37) Escriure un programa Java 8 per ordenar una matriu i després convertir la matriu ordenada en Stream?
Resposta: En aquest programa, hem utilitzat la classificació paral·lela per ordenar una matriu d’enters. A continuació, hem convertit la matriu ordenada en Stream i, amb l'ajuda de forEach, hem imprès cada element d'un Stream.
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 */ } }
Sortida:
Q # 38) Escriviu un programa Java 8 per trobar el nombre de cadenes d’una llista amb una longitud superior a 5?
Resposta: En aquest programa, s’afegeixen quatre cadenes a la llista mitjançant el mètode add () i, a continuació, amb l’ajut de les expressions Stream i Lambda, hem comptabilitzat les cadenes que tenen una longitud superior a 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'); } }
Sortida:
Q # 39) Vols escriure un programa Java 8 per concatenar dos corrents?
Resposta: En aquest programa, hem creat dos corrents a partir de les dues llistes ja creades i les hem concatenat mitjançant un mètode concat () en què es passen dues llistes com a argument. Finalment, es van imprimir els elements del flux concatenat.
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 } }
Sortida:
Q # 40) Voleu escriure un programa Java 8 per eliminar els elements duplicats de la llista?
Resposta: En aquest programa, hem emmagatzemat els elements en una matriu i els hem convertit en una llista. Després, hem utilitzat el flux i el vam recollir a 'Establir' amb l'ajut del mètode 'Collectors.toSet ()'.
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)); } }
Sortida:
Conclusió
En aquest article hem entès les noves funcions introduïdes a Java 8. Hem tractat totes les preguntes principals de les entrevistes de Java 8 i les seves respostes en detall.
En llegir aquest tutorial, heu d’haver adquirit coneixements sobre les noves API per a la manipulació de la data i l’hora, les noves funcions de Java 8, les noves API de streaming, juntament amb els exemples de programació apt segons el concepte. Aquests nous conceptes o funcions formen part del procés de l’entrevista quan esteu a punt per aconseguir les posicions Java més difícils.
Tot el millor!!
=> Consulteu TOTS els tutorials de Java aquí.
Lectura recomanada
- Preguntes i respostes de l’entrevista
- Preguntes i respostes de l'entrevista de proves ETL
- Algunes preguntes i respostes de proves manuals complicades
- Top 40 C Preguntes i respostes de l'entrevista de programació
- Top 40 de les preguntes i respostes populars de l'entrevista J2EE que hauríeu de llegir
- Preguntes d'entrevistes amb respostes a Spock (més populars)
- 25 millors preguntes i respostes d’entrevista de proves àgils
- Top 32 de les millors preguntes i respostes de l’entrevista Datastage