30 top java collections interview questions with answers
Aquest tutorial inclou una llista de les preguntes més freqüents sobre les entrevistes a les col·leccions de Java, juntament amb respostes i exemples :
L’API bàsic de Java és el Java Collections Framework. Admet el concepte fonamental d’aquest llenguatge de programació. Si voleu ser desenvolupador de Java, hauríeu de ser conscients d’aquests conceptes bàsics.
L'àrea de les col·leccions de Java és extremadament àmplia i es poden fer moltes preguntes en una entrevista. Aquí hem recopilat una llista de tantes preguntes rellevants que us podríem fer a l’entrevista.
=> Consulteu aquí per veure aquí A-Z de tutorials de formació
Què aprendreu:
Preguntes d'entrevistes de Java Collections
Q # 1) Expliqueu el Java Collections Framework.
Resposta: El Java Collections Framework és una arquitectura que ajuda a gestionar i emmagatzemar un grup d'objectes. Amb ell, els desenvolupadors poden accedir a estructures de dades preenvasades i manipular-les amb l’ús d’algoritmes.
La col·lecció Java inclou la interfície i les classes, que admeten operacions com la cerca, la supressió, la inserció, l’ordenació, etc. Juntament amb la interfície i les classes, les col·leccions Java també inclouen algoritmes que ajuden a la manipulació.
Q # 2) Quins avantatges tenen les col·leccions Java?
Resposta:
Els avantatges de les col·leccions Java són:
- En lloc d'implementar les nostres classes de col·lecció, utilitza les classes bàsiques de col·lecció, reduint així l'esforç necessari per al seu desenvolupament.
- Utilitza les classes del framework de col·lecció que estan ben provades. Per tant, es millora la qualitat del codi.
- Redueix l’esforç en el manteniment del codi.
- Java Collection Framework és interoperable i reutilitzable.
P # 3) Què sabeu de la jerarquia de les col·leccions a Java?
Resposta:
(imatge font )
Q # 4) Parleu-nos de les interfícies bàsiques de Java Collection.
Resposta:
A continuació, es mostren les interfícies bàsiques de Java Collection Framework.
Col · lecció: És la base de la jerarquia de la col·lecció i representa els seus elements. Tot i això, Java no proporciona cap aplicació directa de Collection. A més, la majoria de les col·leccions Java provenen d’aquesta interfície.
Conjunt: No pot contenir elements duplicats ja que modela l’abstracció del conjunt matemàtic. Com el seu nom indica, representa conjunts, per exemple, una baralla de cartes.
Llista: Pot contenir elements duplicats i és una col·lecció ordenada. Podeu utilitzar el seu índex per accedir a qualsevol element del mateix. La llista és com un arranjament, una matriu, amb una longitud dinàmica.
Aquestes són algunes interfícies de Java Collection. No obstant això, hi ha algunes interfícies més, tal com es mostra a continuació.
- Cua
- Retireu la cua
- Iterador
- Iterable
- SortedSet
- ListIterator.
Q # 5) Per què la col·lecció no amplia les interfícies serialitzables i clonables Interfície?
Resposta: La tasca de la interfície de col·lecció és especificar un grup d'objectes anomenats elements. La implementació de les col·leccions decideix com es mantindran els elements. Per exemple, les implementacions de la llista permeten duplicar elements, però les implementacions de conjunts no.
Moltes implementacions tenen un mètode per a la clonació pública. Però no és pràctic incloure-la a totes les implementacions de la col·lecció, ja que la col·lecció és abstracta i la implementació és l’important.
El significat i les ramificacions tant de la serialització com de la clonació té sentit mentre es treballa amb les implementacions de fons. Per tant, correspon a la implementació real decidir si es pot serialitzar o clonar i com.
Més informació = >> Interfície de marcador a Java: serialitzable i clonable
Per això, introduir la serialització i la clonació en totes les implementacions no és molt flexible i és restrictiu.
P # 6) Què enteneu per Iterator al Java Collection Framework?
Resposta: A les matrius simples, podem utilitzar bucles per accedir a cada element. Quan es necessita un enfocament similar per accedir als elements d’una col·lecció, apostem pels iteradors. Iterator és una construcció que s'utilitza per accedir a elements d'objectes de col·lecció.
A Java, els iteradors són els objectes que implementen la interfície 'Iterator' de Collection Framework. Aquesta interfície forma part del paquet java.util.
Algunes de les característiques dels iteradors són:
- Els iteradors s’utilitzen per recórrer els objectes de la col·lecció.
- Els iteradors es coneixen com a “cursor universal de Java”, ja que podem utilitzar el mateix iterador per a totes les col·leccions.
- Els iteradors proporcionen operacions 'Llegir' i 'Eliminar' a part de recórrer les col·leccions.
- Com que són universals i funcionen amb totes les col·leccions, els iteradors són més fàcils d'implementar.
Llista de preguntes sobre la col·lecció Java
P # 7) Coneixeu els usos de la interfície de llista?
(imatge font )
Resposta: El propòsit de la interfície de llista és mantenir l’ordre de la inserció. També permet emmagatzemar valors duplicats.
Ajuda a la bona manipulació dels elements en funció del seu índex amb els diversos mètodes que conté. ArrayList, Vector, Stack i LinkedList són les diverses classes que implementen la interfície de llista.
Q # 8) Què enteneu sobre ArrayList a Java?
Resposta: La implementació de la interfície de llista és ArrayList. Afegeix o elimina dinàmicament elements de la llista i també proporciona inserció d’elements juntament amb l’accés posicional. ArrayList permet duplicar valors i la seva mida pot augmentar dinàmicament si el nombre d'elements supera la mida inicial.
P # 9) Com es convertirà una matriu de cadenes a una llista de matrius?
Resposta: Aquesta és una pregunta de programació per a principiants que un entrevistador us pregunta per comprovar el vostre coneixement de la col·lecció utility.classes. Col·lecció i matrius són les dues classes d’utilitat del Framework de col·lecció que solen interessar als entrevistadors.
Les col·leccions ofereixen certes funcions estàtiques per realitzar tasques específiques sobre tipus de col·lecció. Mentre que Array té funcions d’utilitat que realitza en tipus de matriu.
//String array String() num_words = {'one', 'two', 'three', 'four', 'five'}; //Use java.util.Arrays class to convert to list List wordList = Arrays.asList(num_words);
Tingueu en compte que, a part del tipus de cadena, també podeu utilitzar matrius d’altres tipus per convertir-los a ArrayList.
Per exemple,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Converteix Array a ArrayList i ArrayList a Array.
Resposta: Per convertir ArrayList a Array, s’utilitza el mètode toArray () List_object.toArray (nova cadena (List_object.size ()))
Mentre que el mètode asList () s’utilitza per convertir Array a ArrayList- Arrays.asList (element). L'asList () és un mètode estàtic on els objectes de llista són els paràmetres.
Q # 11) Què és una LinkedList i quants tipus d’admet a Java?
(imatge font )
Resposta: LinkedList és una estructura de dades amb una seqüència d’enllaços on cada enllaç està connectat al següent enllaç.
A Java s’utilitzen dos tipus de LinkedList per emmagatzemar els elements:
- Llista enllaçada individualment: Aquí, cada node emmagatzema les dades del node juntament amb una referència o el punter al següent node.
- Llista doblement enllaçada: Una llista doblement enllaçada inclou dues referències, una referència al node següent i una altra per al node anterior.
P # 12) Què entén per BlockingQueue?
Resposta: En una simple cua, sabem que sempre que la cua està plena, no podem inserir cap element més. En aquest cas, la cua simplement proporciona un missatge que indica que la cua està plena i surt. Un cas similar passa quan la cua està buida i no hi ha cap element per eliminar a la cua.
En lloc de sortir només quan no es pot inserir / eliminar, què passa si esperem fins que puguem inserir o eliminar l’element?
A això es respon una variació de cua anomenada 'Cua de bloqueig' . A la cua de bloqueig, el bloqueig s'activa durant les operacions de cola i de cola sempre que la cua intenta colar la cua completa o deixar una cua buida.
El bloqueig es mostra a la figura següent.
BlockingQueue
Així, durant l'operació de cola, la cua de bloqueig esperarà fins que hi hagi un espai disponible perquè un element es pugui inserir amb èxit. De la mateixa manera, a l'operació de cola de bloqueig, la cua de bloqueig esperarà fins que un element estigui disponible per a l'operació.
instrucció python if en una línia
El bloqueig de la cua implementa la interfície 'BlockingQueue' que pertany al paquet 'java.util.concurrent'. Hem de recordar que la interfície BlockingQueue no permet un valor nul. Si es troba nul, llença NullPointerException.
P # 13) Què és una cua de prioritat a Java?
Resposta: Una cua prioritària a Java és similar a les estructures de dades de pila o cua. És un tipus de dades abstractes a Java i s’implementa com a classe PriorityQueue al paquet java.util. La cua de prioritat té una característica especial perquè cada element de la cua de prioritat té una prioritat.
En una cua de prioritat, un element amb una prioritat més alta és el servidor anterior a l’element amb una prioritat inferior.
Tots els elements de la cua de prioritat s’ordenen segons l’ordre natural. També podem ordenar els elements segons un ordre personalitzat proporcionant un comparador en el moment de crear un objecte de cua prioritària.
Definiu preguntes d’entrevista d’interfície
P # 14) Què utilitza Set Interface? Expliqueu-nos les classes que implementen això Interfície.
Resposta: La interfície de conjunts s’utilitza en la teoria de conjunts per donar forma al conjunt matemàtic. És similar a la interfície de la llista i, tanmateix, és una mica diferent. Set Interface no és una col·lecció ordenada, per tant, no es conserva cap ordre quan traieu o afegiu els elements.
Principalment, no admet elements duplicats, de manera que cada element de la interfície de configuració és únic.
També permet comparacions significatives d’instàncies de Set, fins i tot quan hi ha implementacions diferents. A més, estableix un contracte més substancial sobre les accions de les operacions d'iguals i hashCode. Si dos exemples tenen els mateixos elements, són iguals.
Per tots aquests motius, Set Interface no té operacions basades en índex d'elements, com Llista. Només utilitza mètodes heretats per la interfície de col·lecció. TreeSet, EnumSet, LinkedHashSet i HashSet implementen Set Interface.
Q # 15) Vull afegir un element nul a HashSet i TreeSet. Puc?
Resposta: No podeu afegir cap element nul a TreeSet ja que utilitza NavigableMap per emmagatzemar elements. Però només podeu afegir-ne un a HashSet. SortedMap no permet les claus nul·les i NavigableMap és el seu subconjunt.
És per això que no podeu afegir un element nul a TreeSet; apareixerà amb l'excepció NullPointerEx cada vegada que proveu de fer-ho.
P # 16) Què en sabeu de LinkedHashSet?
Resposta: LinkedHashSet és la subclasse de HashSet i aplica la interfície de configuració. Com a forma ordenada de HashSet, gestiona una llista doblement enllaçada a través de tots els elements que conté. Conserva l’ordre d’inserció i, igual que la seva classe pare, només porta elements únics.
P # 17) Parleu de la manera com HashSet emmagatzema elements.
Resposta: HashMap emmagatzema els parells de valors-claus, però les claus han de ser úniques. Aquesta característica de Map l’utilitza HashSet per assegurar-se que cada element sigui únic.
La declaració del mapa a HashSet apareix com es mostra a continuació:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Els elements emmagatzemats a HashSet s’emmagatzemen com a clau al mapa i l’objecte es presenta com a valor.
P # 18) Expliqueu el mètode EmptySet ().
Resposta: El mètode Emptyset () elimina els elements nuls i retorna el conjunt immutable buit. Aquest conjunt immutable es pot serialitzar. La declaració del mètode de l’Emptyset () és- public static final Establir emptySet ().
Preguntes d'entrevistes de la interfície del mapa
P # 19) Parleu-nos de la interfície del mapa.
Resposta: Map Interface està dissenyat per a cerques més ràpides i emmagatzema els elements en forma de parells de valors-clau. Com que cada tecla és única aquí, es connecta o mapeja a un únic valor. Aquests parells de valors-clau s’anomenen entrades de mapa.
En aquesta interfície, hi ha signatures de mètodes per recuperar, inserir i eliminar elements en funció de la clau única. Això el converteix en una eina perfecta per assignar associacions valor-clau, com ara un diccionari.
P # 20) El mapa no amplia la interfície de col·lecció. Per què?
Resposta: La interfície de col·lecció és l’acumulació d’objectes i aquests objectes s’emmagatzemen estructuralment amb el mecanisme d’accés especificat. Mentre que la interfície del mapa segueix l'estructura dels parells clau-valor. El mètode add de la interfície de col·lecció no admet el mètode put de la interfície de mapa.
És per això que Map no amplia la interfície de col·lecció, però és una part important de Java Collection Framework.
P # 21) Com funciona HashMap a Java?
Resposta: HashMap és una col·lecció basada en Map i els seus elements consisteixen en parells valor-clau. Un HashMap normalment es denota amb, o. Es pot accedir a cada element hashmap mitjançant la seva clau.
Un HashMap funciona segons el principi de 'Hashing'. En la tècnica de hash, una cadena més llarga es transforma en una cadena més petita mitjançant una 'funció hash' que no és res més que un algorisme. La cadena més petita facilita la cerca més ràpida i la indexació eficient.
Q # 22) Expliqueu IdentityHashMap, WeakHashMap i ConcurrentHashMap.
Resposta:
IdentityHashMap és molt semblant a HashMap. La diferència és que, en comparar elements, IdentityHashMap utilitza la igualtat de referència. No és una implementació del mapa preferida i, tot i que executa la interfície del mapa, no compleix intencionadament el contracte general del mapa.
Per tant, en comparar objectes, s’autoritza l’ús del mètode igual. Està dissenyat per utilitzar-se en casos rars en què es necessita una semàntica d’igualtat de referència.
WeakHashMap La implementació només emmagatzema referències febles a les seves claus. Això permet la recollida d’escombraries d’un parell clau-valor quan no hi ha més referència de les seves claus fora del WeakHashMap.
S’utilitza principalment amb aquells objectes clau en què la prova d’identitat d’objectes es realitza mitjançant mètodes iguals mitjançant l’operador ==.
ConcurrentHashMap implementa les interfícies ConcurrentMap i Serializable. És la versió millorada i millorada d’HashMap, ja que no funciona bé amb l’entorn multithread. En comparació amb HashMap, té un índex de rendiment més alt.
P # 23) Quina és la qualitat d'una bona clau per a HashMap?
Resposta: En entendre com funciona HashMap, és fàcil saber que depenen principalment de mètodes iguals i hashCode d'objectes clau. Per tant, una bona clau ha de proporcionar el mateix hashCode una i altra vegada, independentment de les vegades que s’obté.
De la mateixa manera, en comparació amb el mètode igual, les mateixes claus han de retornar certes i diferents claus han de retornar falses. Per això, es diu que el millor candidat per a les claus HashMap són classes immutables.
P # 24) Quan es pot utilitzar TreeMap?
(imatge font )
Resposta: TreeMap, com a forma especial de HashMap, manté l’ordenació de les claus per defecte com a ‘ordenació natural’, com a quelcom que falta a HashMap. El podeu utilitzar per ordenar objectes amb alguna clau.
Per exemple, si voleu implementar i imprimir un diccionari per ordre alfabètic, podeu utilitzar TreeMap juntament amb TreeSet. S’ordenarà automàticament. Per descomptat, també ho podríeu haver fet manualment, però la feina es farà de manera més eficient amb l’ús de TreeMap. També podeu utilitzar-lo si l’accés aleatori és vital per a vosaltres.
Diferència entre preguntes
P # 25) Quina diferència hi ha entre col·lecció i col·leccions?
Resposta:
Col · lecció | Col·leccions |
---|---|
No podem utilitzar ListIterator per recórrer un conjunt. | ListIterator pot recórrer la llista en qualsevol direcció. |
És una interfície. | És de classe. |
La col·lecció representa un grup d'objectes com una única entitat. | Les col·leccions defineixen diferents mètodes d’utilitat per a objectes de col·lecció. |
És la interfície arrel de Collection Framework. | Les col·leccions són una classe d’utilitat. |
Deriva les estructures de dades de Collection Framework. | Les col·leccions contenen molts mètodes estàtics diferents per ajudar a manipular l'estructura de dades. |
P # 26) En què es diferencia Array d'una ArrayList?
Resposta:
A continuació es donen les diferències entre Array i ArrayList:
Matriu | ArrayList |
---|---|
La matriu és una classe fortament tipificada. | ArrayList és una classe poc tipificada. |
No es pot canviar la mida de la matriu dinàmicament, la seva dimensió és estàtica. | ArrayList es pot canviar la mida de manera dinàmica. |
Una matriu no necessita la caixa ni la desempaquetat d’elements. | ArrayList necessita boxar i desempaquetar elements. |
P # 27) Diferencieu entre ArrayList i LinkedList.
Resposta:
ArrayList | Llista enllaçada |
---|---|
ArrayList utilitza la matriu dinàmica internament per emmagatzemar elements. | LinkedList implementa la llista doblement enllaçada. |
La manipulació dels elements ArrayList és bastant lenta. | LinkedList manipula els seus elements molt més ràpidament. |
ArrayList pot actuar únicament com a llista. | LinkedList pot actuar tant com a llista com com a cua. |
Útil per emmagatzemar i accedir a dades. | Útil per manipular dades. |
P # 28) En què es diferencia Iterable de Iterator?
Resposta:
Iterable | Iterador |
---|---|
És una interfície de paquet Java.lang. | És una interfície de paquet Java.util. |
Només produeix un mètode abstracte conegut com a iterador. | Ve amb dos mètodes abstractes: hasNext i next. |
Representa una sèrie d’elements que es poden recórrer. | Indica objectes amb estat d'iteració. |
P # 29) Indiqueu les diferències entre Set i List.
Resposta:
Conjunt | Llista |
---|---|
Set implements Establir interfície. | La llista implementa la interfície de la llista. |
El conjunt és un conjunt d’elements no ordenats. | La llista és un conjunt d’elements ordenats. |
El conjunt no manté l’ordre dels elements durant la inserció. | La llista manté l'ordre dels elements durant la inserció. |
El conjunt no permet duplicar valors. | La llista permet valors duplicats. |
El conjunt no conté cap classe heretada. | La llista conté Vector, una classe heretada. |
El conjunt només permet un valor nul. | No hi ha restricció sobre el nombre de valors nuls a la llista. |
P # 30) Quina diferència hi ha entre la cua i la pila?
Resposta:
Cua | Pila |
---|---|
La cua funciona segons el principi de l'enfocament First-In-First-Out (FIFO). | Stack funciona sobre la base de l’última entrada (LIFO). |
La inserció i supressió a la cua es produeix en diferents extrems. | La inserció i la supressió es realitzen des del mateix extrem anomenat part superior de la pila. |
Enqueue és el nom d'inserció i dequeue és l'eliminació d'elements. | Push és inserció i Pop és la supressió d’elements de Stack. |
Té dos indicadors: un cap al primer element de la llista (frontal) i un cap a l’últim (darrere). | Només té un punter que apunta a l'element superior. |
P # 31) En què es diferencien SinglyLinkedList i DoublyLinkedList?
Resposta:
Llista enllaçada individualment | Llista doblement enllaçada |
---|---|
Cada node de la llista enllaçada individualment consta de dades i un punter al següent node. | Una llista doblement enllaçada consta de dades, un punter al node següent i un punter al node anterior. |
La llista enllaçada individualment es pot recórrer mitjançant el següent punter. | Es pot recórrer una llista doblement enllaçada utilitzant tant el punter anterior com el següent. |
La llista enllaçada individualment ocupa menys espai en comparació amb una llista doblement enllaçada. | La llista doblement enllaçada ocupa molt espai de memòria. |
L’accés a elements no és molt eficient. | L’accés als elements és eficient. |
P # 32) En què es diferencia HashMap de HashTable?
Resposta:
HashMap | HashTable |
---|---|
HashMap hereta la classe AbstractMap | HashTable hereta la classe de diccionari. |
HashMap no està sincronitzat. | HashTable està sincronitzat. |
HashMap permet múltiples valors nuls, però només una clau nul·la. | HashTable no permet un valor ni una clau nuls. |
HashMap és més ràpid. | HashTable és més lent que HashMap. |
HashMap pot ser recorregut per Iterator. | No es pot recórrer HashTable mitjançant l'iterador o l'enumerador. |
Q # 33) Enumereu la diferència entre ArrayList i Vector.
Resposta:
ArrayList | Vector |
---|---|
ArrayList no està sincronitzat. | El vector està sincronitzat. |
ArrayList no és una classe heretada. | El vector és una classe heretada. |
ArrayList augmenta la mida a la meitat d'ArrayList quan un element s'insereix més enllà de la seva mida. | El vector augmenta la seva mida per doble quan un element s’insereix més enllà de la seva mida. |
ArrayList no és apte per a fils | El vector és segur per a fils. |
P # 34) En què es diferencia FailFast de Failsafe?
Resposta:
FailFast | A prova de fallades |
---|---|
Mentre es itera, no es permet cap modificació d'una col·lecció. | Permet modificacions mentre s’itera. |
Utilitza la col·lecció original per recórrer. | Utilitza una còpia de la col·lecció original. |
No cal cap memòria addicional. | Necessita memòria addicional. |
Llança ConcurrentModificationException. | No es produeix cap excepció. |
Conclusió
Aquestes preguntes sobre l'entrevista de Java Collections l'ajudaran a preparar-se per a l'entrevista. La vostra preparació per a l’entrevista de Java Collections ha de ser profunda i extensa, així que estudieu aquestes preguntes i enteneu bé el concepte.
Aquestes preguntes no només posen a prova els vostres coneixements, sinó també la vostra presència mental.
=> Mireu aquí les sèries de formació Java senzilles
Lectura recomanada
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Conceptes bàsics de Java: sintaxi de Java, Java Class i conceptes bàsics de Java
- Preguntes i respostes de l’entrevista
- Preguntes i respostes de l'entrevista de proves ETL
- 30 millors preguntes i respostes d'entrevistes HTML (LLISTA 2021)
- Les 30 preguntes i respostes més populars de l'entrevista de cogombre
- Top 40 de les preguntes i respostes de l'entrevista de Java 8 (El més important)
- Top 30 de les preguntes i respostes de l’entrevista SAS