Java valodā intervētāji visbiežāk uzdod kolekcijas interviju jautājumus. Šeit ir saraksts ar visbiežāk uzdotajiem kolekciju interviju jautājumiem ar atbildēm.
1) Kas ir Java kolekcijas ietvars?
Collection Framework ir klašu un interfeisa kombinācija, ko izmanto datu glabāšanai un manipulēšanai objektu veidā. Šim nolūkam tas nodrošina dažādas klases, piemēram, ArrayList, Vector, Stack un HashSet utt., Kā arī saskarnes, piemēram, saraksts, rinda, kopa utt.
2) Kādas ir galvenās atšķirības starp masīvu un kolekciju?
Masīvs un kolekcija ir nedaudz līdzīgi attiecībā uz objektu atsauču glabāšanu un datu manipulācijām, taču tie atšķiras daudzos veidos. Galvenās atšķirības starp masīvu un kolekciju ir definētas zemāk:
- Masīvi vienmēr ir fiksēta izmēra, t.i., lietotājs nevar palielināt vai samazināt masīva garumu atbilstoši savām prasībām vai izpildes laikā, bet kolekcijā izmērus var dinamiski mainīt pēc vajadzības.
- Masīvi var glabāt tikai viendabīgus vai līdzīga tipa objektus, bet kolekcijā var glabāt neviendabīgus objektus.
- Masīvi nevar nodrošināt ?gatavu? metodes lietotāju prasībām, piemēram, šķirošana, meklēšana utt., bet Kolekcija ietver gatavas metodes lietošanai.
3) Paskaidrojiet dažādas saskarnes, kas tiek izmantotas kolekcijas sistēmā?
Kolekcijas ietvars ievieš dažādas saskarnes, kolekcijas interfeiss un kartes interfeiss (java.util.Map) ir galvenokārt lietotās Java Collection Framework saskarnes. Tālāk ir sniegts kolekcijas ietvara saskarņu saraksts:
1. Kolekcijas saskarne: Kolekcija (java.util.Collection) ir primārā saskarne, un katrai kolekcijai ir jāievieš šī saskarne.
Sintakse:
public interface Collectionextends Iterable
Kur norāda, ka šī saskarne ir vispārīga tipa
2. Saraksta saskarne: Saraksta interfeiss paplašina kolekcijas saskarni, un tā ir sakārtota objektu kolekcija. Tajā ir dublēti elementi. Tas arī ļauj nejauši piekļūt elementiem.
Sintakse:
public interface List extends Collection
3. Iestatīt saskarni: Set (java.util.Set) saskarne ir kolekcija, kurā nedrīkst būt dublēti elementi. Tas var ietvert tikai mantotās kolekcijas saskarnes metodes
Sintakse:
public interface Set extends Collection
Rindas interfeiss: Rindas (java.util.Queue) interfeiss definē rindas datu struktūru, kas glabā elementus formā FIFO (first in first out).
Sintakse:
public interface Queue extends Collection
4. Iestatīšanas interfeiss: tā ir divu galu rinda. Tas ļauj ievietot un noņemt elementus no abiem galiem. Tas implantē gan skursteņa, gan rindas rekvizītus, lai varētu veikt LIFO (pēdējais, pirmais ārā) steku un FIFO (pirmais iekšā pirmais ārā) rindas darbības.
Sintakse:
public interface Dequeue extends Queue
5. Kartes saskarne: Karte (java.util.Map) apzīmē elementu atslēgu, vērtību pāru krātuvi. Kartes saskarne neievieš kolekcijas saskarni. Tajā var būt tikai unikāla atslēga, bet tajā var būt elementu dublikāti. Ir divas saskarnes, kas ievieš karti java — kartes interfeiss un sakārtotā karte.
rinda pret kolonnu
4) Kāda ir atšķirība starp ArrayList un Vector?
Nē. | ArrayList | Vektors |
---|---|---|
1) | ArrayList nav sinhronizēts. | Vektors ir sinhronizēts. |
2) | ArrayList nav mantota klase. | Vector ir mantota klase. |
3) | ArrayList palielina tā lielumu par 50% no masīva lieluma. | Vector palielina tā izmēru, dubultojot masīva lielumu. |
4) | ArrayList nav ?pavedienu drošs? jo tas nav sinhronizēts. | Vektoru saraksts ir ?pavedienu drošs? jo katra metode ir sinhronizēta. |
5) Kāda ir atšķirība starp ArrayList un LinkedList?
Nē. | ArrayList | LinkedList |
---|---|---|
1) | ArrayList izmanto dinamisku masīvu. | LinkedList izmanto divkārši saistītu sarakstu. |
2) | ArrayList nav efektīvs manipulācijām, jo ir nepieciešams pārāk daudz. | LinkedList ir efektīvs manipulācijām. |
3) | ArrayList ir labāks datu glabāšanai un iegūšanai. | LinkedList ir labāk manipulēt ar datiem. |
4) | ArrayList nodrošina nejaušu piekļuvi. | LinkedList nenodrošina nejaušu piekļuvi. |
5) | ArrayList aizņem mazāk atmiņas, jo tas saglabā tikai objektu | LinkedList aizņem vairāk atmiņas, jo tajā tiek saglabāts objekts, kā arī šī objekta adrese. |
6) Kāda ir atšķirība starp Iterator un ListIterator?
Iterators šķērso elementus tikai virzienā uz priekšu, savukārt ListIterator šķērso elementus uz priekšu un atpakaļ.
Nē. | Iterators | ListIterator |
---|---|---|
1) | Iterators šķērso elementus tikai virzienā uz priekšu. | ListIterator šķērso elementus gan atpakaļ, gan uz priekšu. |
2) | Iteratoru var izmantot sarakstā, komplektā un rindā. | ListIterator var izmantot tikai sarakstā. |
3) | Iterators var veikt noņemšanas darbību tikai, šķērsojot kolekciju. | ListIterator var veikt ?pievienot,? ?noņemt,? un ?set? darbība, šķērsojot kolekciju. |
7) Kāda ir atšķirība starp iteratoru un uzskaitījumu?
Nē. | Iterators | Uzskaitījums |
---|---|---|
1) | Iterators var šķērsot mantotos un nemantotos elementus. | Uzskaitīšana var šķērsot tikai mantotos elementus. |
2) | Iterators ir ātrs. | Uzskaitīšana nav ātra. |
3) | Iterators ir lēnāks nekā uzskaitījums. | Uzskaitīšana ir ātrāka nekā Iterator. |
4) | Iterators var veikt noņemšanas darbību, šķērsojot kolekciju. | Uzskaitījums var veikt tikai pārvietošanas darbību kolekcijai. |
8) Kāda ir atšķirība starp sarakstu un komplektu?
Gan saraksts, gan iestatījums paplašina kolekcijas saskarni. Tomēr starp abiem ir dažas atšķirības, kas ir uzskaitītas zemāk.
- Sarakstā var būt dublēti elementi, savukārt komplektā ir iekļauti unikāli vienumi.
- Saraksts ir sakārtota kolekcija, kurā tiek uzturēta ievietošanas secība, savukārt kopa ir nesakārtota kolekcija, kas nesaglabā ievietošanas secību.
- Saraksta saskarnē ir viena mantotā klase, kas ir vektora klase, savukārt saskarnei Set nav nevienas mantotās klases.
- Saraksta saskarne var atļaut n skaitu nulles vērtību, savukārt saskarne Set pieļauj tikai vienu nulles vērtību.
9) Kāda ir atšķirība starp HashSet un TreeSet?
HashSet un TreeSet, abas klases, ievieš Set saskarni. Atšķirības starp abiem ir uzskaitītas zemāk.
- HashSet neuztur nekādu secību, savukārt TreeSet saglabā augošu secību.
- HashSet paredz jaukšanas tabula, savukārt TreeSet ievieš koka struktūra.
- HashSet darbojas ātrāk nekā TreeSet.
- HashSet atbalsta HashMap, savukārt TreeSet atbalsta TreeMap.
10) Kāda ir atšķirība starp Iestatīt un Karte?
Tālāk ir norādītas atšķirības starp komplektu un karti.
- Kopā ir tikai vērtības, savukārt kartē ir atslēga un vērtības.
- Kopā ir unikālas vērtības, savukārt kartē var būt unikālas atslēgas ar dublētām vērtībām.
- Kopā ir viens nulles vērtību skaits, savukārt kartē var iekļaut vienu nulles atslēgu ar n skaitu nulles vērtību.
11) Kāda ir atšķirība starp HashSet un HashMap?
Atšķirības starp HashSet un HashMap ir norādītas zemāk.
- HashSet satur tikai vērtības, savukārt HashMap ietver ierakstu (atslēgu, vērtību). HashSet var iterēt, bet HashMap ir jāpārvērš par Set, lai to varētu iterēt.
- HashSet ievieš Set saskarni, savukārt HashMap ievieš kartes saskarni
- HashSet nevar būt dublēta vērtība, savukārt HashMap var saturēt dublētās vērtības ar unikālām atslēgām.
- HashSet satur vienīgo nulles vērtību skaitu, savukārt HashMap var saturēt vienu nulles atslēgu ar n skaitu nulles vērtību.
12) Kāda ir atšķirība starp HashMap un TreeMap?
Atšķirības starp HashMap un TreeMap ir norādītas zemāk.
- HashMap neuztur nekādu secību, bet TreeMap saglabā augošu secību.
- HashMap tiek ieviests, izmantojot hash tabulu, savukārt TreeMap tiek ieviests ar koka struktūru.
- HashMap var kārtot pēc atslēgas vai vērtības, savukārt TreeMap var kārtot pēc atslēgas.
- HashMap var saturēt nulles atslēgu ar vairākām nulles vērtībām, turpretim TreeMap nevar saturēt nulles atslēgu, taču tai var būt vairākas nulles vērtības.
13) Kāda ir atšķirība starp HashMap un Hashtable?
Nē. | HashMap | Hashtable |
---|---|---|
1) | HashMap nav sinhronizēta. | Hashtable ir sinhronizēta. |
2) | HashMap var saturēt vienu nulles atslēgu un vairākas nulles vērtības. | Hashtable nedrīkst ietvert nulles atslēgu vai nulles vērtību. |
3) | HashMap nav ?pavedienu droša,? tāpēc tas ir noderīgs lietojumprogrammām bez vītnēm. | Hashtable ir droša pavedieniem, un to var koplietot starp dažādiem pavedieniem. |
4) | 4) HashMap manto AbstractMap klasi | Hashtable manto vārdnīcas klasi. |
14) Kāda ir atšķirība starp kolekciju un kolekcijām?
Tālāk ir norādītas atšķirības starp kolekciju un kolekcijām.
- Kolekcija ir saskarne, savukārt kolekcijas ir klase.
- Kolekcijas saskarne nodrošina datu struktūras standarta funkcionalitāti sarakstam, kopai un rindai. Tomēr kolekcijas klasē ir jākārto un jāsinhronizē kolekcijas elementi.
- Kolekcijas saskarne nodrošina metodes, kuras var izmantot datu struktūrai, savukārt kolekcijas klase nodrošina statiskās metodes, kuras var izmantot dažādām darbībām ar kolekciju.
15) Kāda ir atšķirība starp salīdzināmo un salīdzināmo?
Nē. | Salīdzināms | Salīdzinātājs |
---|---|---|
1) | Salīdzināmais nodrošina tikai viena veida secību. | Salīdzinātājs nodrošina vairāku veidu secības. |
2) | Tā nodrošina vienu metodi ar nosaukumu salīdzinātTo (). | Tā nodrošina vienu metodi ar nosaukumu salīdzināt (). |
3) | Tas ir atrodams java.lang pakotnē. | Tas atrodas java.util pakotnē. |
4) | Ja mēs ieviešam salīdzināmo saskarni, faktiskā klase tiek mainīta. | Faktiskā klase netiek mainīta. |
16) Ko jūs saprotat ar BlockingQueue?
BlockingQueue ir interfeiss, kas paplašina rindas interfeisu. Tas nodrošina vienlaicīgu darbību tādās darbībās kā izguve, ievietošana, dzēšana. Jebkura elementa izgūšanas laikā tas gaida, līdz rinda nav tukša. Uzglabājot elementus, tas gaida pieejamo vietu. BlockingQueue nevar saturēt nulles elementus, un BlockingQueue ieviešana ir pavedienu droša.
Sintakse:
public interface BlockingQueue extends Queue
17) Kādas ir rekvizītu faila priekšrocības?
Ja maināt vērtību rekvizītu failā, java klase nav jāpārkompilē. Tādējādi tas padara lietojumprogrammu viegli pārvaldāmu. To izmanto, lai saglabātu informāciju, kas bieži jāmaina. Apsveriet šādu piemēru.
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } }
Izvade
system oracle
18) Ko nozīmē hashCode() metode?
Metode hashCode() atgriež jaucējkoda vērtību (veselu skaitli).
Metode hashCode() atgriež to pašu veselo skaitļu, ja divas atslēgas (izsaucot vienāds() metodi) ir identiskas.
Tomēr ir iespējams, ka diviem jaucējkodu numuriem var būt dažādas vai vienādas atslēgas.
Ja divi objekti nerada vienādu rezultātu, izmantojot vienāds() metodi, tad hashcode() metode nodrošinās atšķirīgu veselu skaitļu rezultātu abiem objektiem.
19) Kāpēc mēs ignorējam equals() metodi?
Vienādības metode tiek izmantota, lai pārbaudītu, vai divi objekti ir vienādi vai nē. Tas ir jāatceļ, ja mēs vēlamies pārbaudīt objektus, pamatojoties uz īpašumu.
kurš izveidoja skolu
Piemēram, Darbinieks ir klase, kurā ir 3 datu dalībnieki: ID, vārds un alga. Taču mēs vēlamies pārbaudīt darbinieku vienlīdzību pēc algas. Pēc tam mums ir jāignorē vienāds() metode.
20) Kā sinhronizēt saraksta, kopas un kartes elementus?
Jā, Kolekciju klase nodrošina metodes, kā padarīt saraksta, kopas vai kartes elementus sinhronizētus:
publisks statisks Saraksts synchronizedList(List l){} |
publisks statisks Iestatījums synchronizedSet(Set s){} |
publisks statisks SortedSet synchronizedSortedSet(SortedSet s){} |
publiska statiskā karte sinhronizēta karte (karte m){} |
publiska statiska SortedMap synchronizedSortedMap(SortedMap m){} |
21) Kādas ir vispārējās kolekcijas priekšrocības?
Vispārējās kolekcijas izmantošanai ir trīs galvenās priekšrocības.
- Ja mēs izmantojam vispārīgo klasi, mums nav nepieciešama tipa apraide.
- Tas ir drošs tipam un tiek pārbaudīts kompilēšanas laikā.
- Generic apstiprina koda stabilitāti, padarot to kļūdu nosakāmu kompilēšanas laikā.
22) Kas ir hash-collision programmā Hashtable un kā tā tiek apstrādāta Java?
Divas dažādas atslēgas ar vienādu jaucējvērtību ir zināmas kā jaucējkods. Divi atsevišķi ieraksti tiks glabāti vienā jaucējkausē, lai izvairītos no sadursmes. Ir divi veidi, kā izvairīties no sadursmes.
- Atsevišķa ķēde
- Atveriet Addressing
23) Kas ir vārdnīcas klase?
Klase Vārdnīca nodrošina iespēju saglabāt atslēgu un vērtību pārus.
24) Kāds ir noklusējuma slodzes faktora lielums jaukšanas kolekcijā?
Noklusējuma slodzes koeficienta lielums ir 0,75 . Noklusējuma jauda tiek aprēķināta kā sākotnējā jauda * slodzes koeficients. Piemēram, 16 * 0,75 = 12. Tātad 12 ir kartes noklusējuma jauda.
25) Ko jūs saprotat ar atteici?
Java Iterators, kas nekavējoties izlaiž ConcurrentmodificationException, ja notiek strukturālas izmaiņas, tiek saukts par atteices ātru iteratoru. Fail-fats iterator neprasa papildu vietu atmiņā.
26) Kāda ir atšķirība starp Array un ArrayList?
Galvenās atšķirības starp Array un ArrayList ir norādītas zemāk.
SN | Masīvs | ArrayList |
---|---|---|
1 | Masīvam ir fiksēts izmērs, kas nozīmē, ka mēs nevaram mainīt masīva izmērus atbilstoši vajadzībām. | ArrayList nav fiksēta izmēra, mēs varam dinamiski mainīt izmēru. |
2 | Masīvi ir statiskā tipa. | ArrayList ir dinamiska izmēra. |
3 | Masīvi var uzglabāt primitīvus datu tipus, kā arī objektus. | ArrayList nevar saglabāt primitīvos datu tipus, tas var saglabāt tikai objektus. |
27) Kāda ir atšķirība starp masīva garumu un ArrayList lielumu?
Masīva garumu var iegūt, izmantojot rekvizītu garums, savukārt ArrayList neatbalsta garuma rekvizītu, taču mēs varam izmantot metodi size (), lai iegūtu objektu skaitu sarakstā.
Masīva garuma atrašana
Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length);
ArrayList lieluma atrašana
ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size());
28) Kā pārvērst ArrayList par Array un Array par ArrayList?
Mēs varam pārvērst masīvu par ArrayList, izmantojot klases Arrays metodi asList(). asList() metode ir Arrays klases statiskā metode un pieņem List objektu. Apsveriet šādu sintaksi:
java pamati
Arrays.asList(item)
Mēs varam pārvērst ArrayList par Array, izmantojot ArrayList klases metodi toArray (). Apsveriet šādu sintaksi, lai pārveidotu ArrayList par objektu List.
List_object.toArray(new�String[List_object.size()])
29) Kā padarīt Java ArrayList tikai lasāmu?
Mēs varam iegūt java ArrayList tikai lasāmu, izsaucot metodi Collections.unmodifiableCollection(). Ja mēs definējam ArrayList kā tikai lasāmu, mēs nevaram veikt nekādas izmaiņas kolekcijā, izmantojot �add(), remove() vai set() metodi.
30) Kā noņemt dublikātus no ArrayList?
Ir divi veidi, kā noņemt dublikātus no ArrayList.
Process dublēto elementu noņemšanai no ArrayList, izmantojot LinkedHashSet:
- Kopējiet visus ArrayList elementus uz LinkedHashSet.
- Iztukšojiet ArrayList, izmantojot metodi clear(), kas noņems visus elementus no saraksta.
- Tagad kopējiet visus LinkedHashset elementus uz ArrayList.
31) Kā apgriezt ArrayList?
Lai apgrieztu ArrayList, mēs varam izmantot kolekcijas klases reverse() metodi. Apsveriet šādu piemēru.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Izvade
printing the list.... 10 50 30 printing list in reverse order.... 30 50 10
32) Kā sakārtot ArrayList dilstošā secībā?
Lai kārtotu ArrayList dilstošā secībā, mēs varam izmantot kolekcijas klases reverseOrder metodi. Apsveriet šādu piemēru.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Izvade
printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10
33) Kā sinhronizēt ArrayList?
Mēs varam sinhronizēt ArrayList divos veidos.
- Izmantojot metodi Collections.synchronizedList().
- Izmantojot CopyOnWriteArrayList
3. 4) Kad lietot ArrayList un LinkedList?
LinkedLists ir labāk izmantot atjaunināšanas darbībām, savukārt ArrayLists ir labāk izmantot meklēšanas operācijām.