30 top java collections interview questions with answers
Αυτό το σεμινάριο περιλαμβάνει μια λίστα με τις πιο συχνές ερωτήσεις συνέντευξης Java Συλλογές, καθώς και απαντήσεις και παραδείγματα για εσάς :
Το βασικό API της Java είναι το Java Συλλογές Πλαίσιο. Υποστηρίζει τη θεμελιώδη έννοια αυτής της γλώσσας προγραμματισμού. Εάν θέλετε να είστε προγραμματιστής Java, θα πρέπει να γνωρίζετε καλά αυτές τις βασικές έννοιες.
Ο τομέας των συλλογών Java είναι εξαιρετικά ευρύς και πολλές ερωτήσεις μπορούν να τεθούν σε μια συνέντευξη. Εδώ έχουμε συγκεντρώσει μια λίστα με πολλές σχετικές ερωτήσεις που μπορεί να σας ρωτηθούν στη συνέντευξή σας.
=> Δείτε εδώ για να δείτε το A-Z Of Java Training Tutorials εδώ
Τι θα μάθετε:
Ερωτήσεις Συνέντευξης Συλλογών Java
Ε # 1) Εξηγήστε το Java Συλλογές Πλαίσιο.
Απάντηση: Το Java Συλλογές Πλαίσιο είναι μια αρχιτεκτονική που βοηθά στη διαχείριση και αποθήκευση μιας ομάδας αντικειμένων. Με αυτό, οι προγραμματιστές μπορούν να έχουν πρόσβαση σε προσυσκευασμένες δομές δεδομένων και να χειρίζονται δεδομένα με τη χρήση αλγορίθμων.
Η συλλογή Java περιλαμβάνει τη διεπαφή και τις κλάσεις, που υποστηρίζουν λειτουργίες όπως αναζήτηση, διαγραφή, εισαγωγή, ταξινόμηση κ.λπ. Μαζί με τη διεπαφή και τις κλάσεις, οι συλλογές Java περιλαμβάνουν επίσης αλγόριθμους που βοηθούν σε χειρισμούς.
Q # 2) Ποια είναι τα οφέλη των Java Συλλογών;
Απάντηση:
Τα οφέλη των Java Collection είναι:
- Αντί να εφαρμόζει τις κατηγορίες συλλογής μας, χρησιμοποιεί τις βασικές κατηγορίες συλλογής, μειώνοντας έτσι την προσπάθεια που απαιτείται για την ανάπτυξή της.
- Χρησιμοποιεί τις κατηγορίες πλαισίων συλλογής που έχουν δοκιμαστεί καλά. Ως εκ τούτου, η ποιότητα του κώδικα βελτιώνεται.
- Μειώνει την προσπάθεια συντήρησης κώδικα.
- Το Java Collection Framework είναι διαλειτουργικό και επαναχρησιμοποιήσιμο.
Ε # 3) Τι γνωρίζετε για την Ιεραρχία Συλλογών στην Ιάβα;
Απάντηση:
(εικόνα πηγή )
Q # 4) Πείτε μας για τις βασικές διεπαφές της Συλλογής Java.
Απάντηση:
Παρακάτω αναφέρονται οι βασικές διεπαφές του Java Collection Framework.
Συλλογή: Είναι η βάση της ιεραρχίας της Συλλογής και αντιπροσωπεύει τα στοιχεία της. Ωστόσο, η Java δεν παρέχει καμία άμεση εφαρμογή της Συλλογής. Επίσης, οι περισσότερες συλλογές Java προέρχονται από αυτήν τη διεπαφή.
Σειρά: Δεν μπορεί να διατηρήσει διπλά στοιχεία καθώς μοντελοποιεί την αφαίρεση του μαθηματικού συνόλου. Όπως υποδηλώνει το όνομα, αντιπροσωπεύει σύνολα, για παράδειγμα, μια τράπουλα καρτών.
Λίστα: Μπορεί να κρατήσει διπλά στοιχεία και είναι μια παραγγελθείσα συλλογή. Μπορείτε να χρησιμοποιήσετε το ευρετήριό του για πρόσβαση σε οποιοδήποτε στοιχείο σε αυτό. Η λίστα είναι σαν μια διάταξη, ένας πίνακας, με δυναμικό μήκος.
Αυτές είναι μερικές διεπαφές της Java Collection. Ωστόσο, υπάρχουν μερικές ακόμη διεπαφές, όπως φαίνεται παρακάτω.
- Ουρά
- Ντεκουέ
- Επαναληπτής
- Επαληθεύσιμο
- Ταξινόμηση
- Λίστα επαναληπτών.
Ε # 5) Γιατί οι σειριακές και κλωνοποιήσιμες διεπαφές δεν επεκτείνονται από τη Συλλογή Διεπαφή?
Απάντηση: Η αποστολή της συλλογής διασύνδεσης είναι να καθορίσει μια ομάδα αντικειμένων που ονομάζονται στοιχεία. Η εφαρμογή των Συλλογών αποφασίζει πώς θα διατηρηθούν τα στοιχεία. Για παράδειγμα, οι υλοποιήσεις λίστας επιτρέπουν διπλά στοιχεία, αλλά ο ορισμός εφαρμογών δεν το κάνει.
Πολλές εφαρμογές έχουν μια μέθοδο για δημόσια κλωνοποίηση. Ωστόσο, δεν είναι πρακτικό να το συμπεριλάβετε σε όλες τις υλοποιήσεις της Συλλογής, καθώς η Συλλογή είναι αφηρημένη και το μόνο που έχει σημασία είναι η εφαρμογή.
Η έννοια και οι συνέπειες τόσο της σειριοποίησης όσο και της κλωνοποίησης έχουν νόημα ενώ εργάζεστε με τις ουσιαστικές υλοποιήσεις. Ως εκ τούτου, εναπόκειται στην πραγματική εφαρμογή να αποφασίσει εάν μπορεί να σειριοποιηθεί ή να κλωνοποιηθεί και πώς.
Μάθετε περισσότερα = >> Διασύνδεση μαρκαδόρου σε Java: Σειριακό και κλωνοποιήσιμο
Αυτός είναι ο λόγος για τον οποίο η πραγματοποίηση σειριοποίησης και κλωνοποίησης σε κάθε υλοποίηση δεν είναι πολύ ευέλικτη και περιοριστική.
Q # 6) Τι καταλαβαίνετε από τον Iterator στο Java Collection Framework;
Απάντηση: Σε πίνακες simples, μπορούμε να χρησιμοποιήσουμε βρόχους για πρόσβαση σε κάθε στοιχείο. Όταν απαιτείται μια παρόμοια προσέγγιση για την πρόσβαση σε στοιχεία σε μια συλλογή, πηγαίνουμε για επαναλήψεις. Το Iterator είναι ένα κατασκεύασμα που χρησιμοποιείται για την πρόσβαση σε στοιχεία αντικειμένων Συλλογής.
Στην Java, οι Iterators είναι τα αντικείμενα που εφαρμόζουν τη διεπαφή 'Iterator' του Συλλογής Πλαισίου. Αυτή η διεπαφή είναι μέρος του πακέτου java.util.
Μερικά από τα χαρακτηριστικά του Iterators είναι:
- Οι επαναληπτές χρησιμοποιούνται για να διασχίσουν τα αντικείμενα της Συλλογής.
- Οι επαναληπτές είναι γνωστοί ως 'Universal Java Cursor' καθώς μπορούμε να χρησιμοποιήσουμε τον ίδιο Iterator για όλες τις συλλογές.
- Οι επαναληπτές παρέχουν λειτουργίες 'Ανάγνωση' και 'Κατάργηση' εκτός από τη διέλευση των συλλογών.
- Καθώς είναι καθολικές και λειτουργούν με όλες τις συλλογές, οι επαναληπτές μπορούν να εφαρμοστούν πιο εύκολα.
Λίστα ερωτήσεων συλλογής Java
Ε # 7) Γνωρίζετε τις χρήσεις της διασύνδεσης λίστας;
(εικόνα πηγή )
Απάντηση: Ο σκοπός της διασύνδεσης λίστας είναι να διατηρηθεί η σειρά της εισαγωγής. Επιτρέπει επίσης την αποθήκευση διπλών τιμών.
Βοηθά στον ομαλό χειρισμό των στοιχείων ανάλογα με τον δείκτη του με τις διάφορες μεθόδους που περιέχει. Οι ArrayList, Vector, Stack και LinkedList είναι οι διάφορες κλάσεις που εφαρμόζουν το List Interface.
Q # 8) Τι καταλαβαίνετε για το ArrayList στην Java;
Απάντηση: Η υλοποίηση του List Interface είναι ArrayList. Προσθέτει ή αφαιρεί δυναμικά στοιχεία από τη λίστα και παρέχει επίσης εισαγωγή στοιχείων μαζί με την πρόσβαση στη θέση. Το ArrayList επιτρέπει διπλές τιμές και το μέγεθός του μπορεί να αυξηθεί δυναμικά εάν ο αριθμός των στοιχείων υπερβαίνει το αρχικό μέγεθος.
Q # 9) Πώς θα μετατρέψετε έναν πίνακα συμβολοσειρών σε ArrayList;
Απάντηση: Αυτή είναι μια ερώτηση προγραμματισμού επιπέδου για αρχάριους που ζητάει ένας ερευνητής για να ελέγξει την κατανόησή σας για το Collection utiliti.classes. Συλλογή και πίνακες είναι οι δύο τάξεις χρησιμότητας του Συλλογικού Πλαισίου που συχνά ενδιαφέρονται οι ερευνητές.
Οι συλλογές προσφέρουν συγκεκριμένες στατικές λειτουργίες για την εκτέλεση συγκεκριμένων εργασιών σε τύπους συλλογής. Ενώ η Array έχει βοηθητικές λειτουργίες που εκτελεί σε τύπους συστοιχιών.
//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);
Σημειώστε ότι εκτός από τον τύπο συμβολοσειράς, μπορείτε επίσης να χρησιμοποιήσετε άλλους τύπους συστοιχιών για να μετατρέψετε σε ArrayList.
Για παράδειγμα,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Μετατροπή Array σε ArrayList και ArrayList σε Array.
Απάντηση: Για να μετατρέψετε το ArrayList σε Array, χρησιμοποιείται η μέθοδος toArray () List_object.toArray (νέα συμβολοσειρά (List_object.size ()))
Ενώ η μέθοδος asList () χρησιμοποιείται για τη μετατροπή του Array σε ArrayList- Arrays.asList (στοιχείο). Το asList () είναι μια στατική μέθοδος όπου τα αντικείμενα λίστας είναι οι παράμετροι.
Ε # 11) Τι είναι το LinkedList και πόσους τύπους υποστηρίζονται στην Java;
(εικόνα πηγή )
Απάντηση: Το LinkedList είναι μια δομή δεδομένων με μια ακολουθία συνδέσμων όπου κάθε σύνδεσμος συνδέεται με τον επόμενο σύνδεσμο.
Δύο τύποι LinkedList χρησιμοποιούνται στην Java για την αποθήκευση των στοιχείων:
- SingL LinkedList: Εδώ, κάθε κόμβος αποθηκεύει τα δεδομένα του κόμβου μαζί με μια αναφορά ή τον δείκτη στον επόμενο κόμβο.
- Διπλά συνδεδεμένη λίστα: Μια διπλή LinkedList έρχεται με διπλές αναφορές, μία αναφορά στον επόμενο κόμβο και άλλη μία για τον προηγούμενο κόμβο.
Ε # 12) Τι καταλαβαίνετε με το BlockingQueue;
Απάντηση: Σε μια απλή ουρά, γνωρίζουμε ότι κάθε φορά που η ουρά είναι γεμάτη, δεν μπορούμε να εισάγουμε άλλα στοιχεία. Σε αυτήν την περίπτωση, η ουρά παρέχει απλώς ένα μήνυμα ότι η ουρά είναι πλήρης και βγαίνει. Μια παρόμοια περίπτωση συμβαίνει όταν η ουρά είναι κενή και δεν υπάρχει στοιχείο που πρέπει να αφαιρεθεί στην ουρά.
Αντί να βγούμε απλώς όταν δεν μπορεί να γίνει εισαγωγή / αφαίρεση, τι θα περιμένουμε μέχρι να μπορέσουμε να εισάγουμε ή να αφαιρέσουμε το αντικείμενο;
Αυτό απαντάται από μια παραλλαγή της ουράς που ονομάζεται 'Αποκλεισμός ουράς' . Στο μπλοκάρισμα της ουράς, το μπλοκάρισμα ενεργοποιείται κατά τη διάρκεια των λειτουργιών enqueue και dequeue κάθε φορά που η ουρά προσπαθεί να γεμίσει την πλήρη ουρά ή να αδειάσει μια κενή ουρά.
Το μπλοκάρισμα φαίνεται στο παρακάτω σχήμα.
BlockingQueue
Έτσι, κατά τη διάρκεια της λειτουργίας enqueue, η ουρά αποκλεισμού θα περιμένει έως ότου γίνει διαθέσιμος χώρος ώστε να μπορεί να εισαχθεί επιτυχώς ένα στοιχείο. Ομοίως, στη λειτουργία dequeue, η ουρά αποκλεισμού θα περιμένει έως ότου ένα στοιχείο γίνει διαθέσιμο για τη λειτουργία.
τι να ανοίξετε αρχεία swf
Ο αποκλεισμός ουράς υλοποιεί τη διεπαφή «BlockingQueue» που ανήκει στο πακέτο «java.util.concurrent». Πρέπει να θυμόμαστε ότι η διεπαφή BlockingQueue δεν επιτρέπει μηδενική τιμή. Εάν συναντήσει null, τότε ρίχνει το NullPointerException.
Q # 13) Τι είναι η ουρά προτεραιότητας στην Java;
Απάντηση: Η ουρά προτεραιότητας στην Java είναι παρόμοια με τις δομές δεδομένων στοίβας ή ουράς. Είναι ένας αφηρημένος τύπος δεδομένων στην Java και εφαρμόζεται ως κατηγορία PriorityQueue στο πακέτο java.util. Η ουρά προτεραιότητας έχει μια ειδική δυνατότητα ότι κάθε στοιχείο στην ουρά προτεραιότητας έχει προτεραιότητα.
Σε ουρά προτεραιότητας, ένα στοιχείο με υψηλότερη προτεραιότητα είναι ο διακομιστής πριν από το στοιχείο με χαμηλότερη προτεραιότητα.
Όλα τα στοιχεία στην ουρά προτεραιότητας ταξινομούνται σύμφωνα με τη φυσική παραγγελία. Μπορούμε επίσης να παραγγείλουμε τα στοιχεία σύμφωνα με την προσαρμοσμένη σειρά παρέχοντας ένα συγκριτικό κατά τη δημιουργία ενός αντικειμένου ουράς προτεραιότητας.
Ορισμός ερωτήσεων συνέντευξης διεπαφής
Q # 14) Ποια είναι η χρήση του Set Interface; Πείτε μας για τα μαθήματα που το εφαρμόζουν Διεπαφή.
Απάντηση: Το Set Interface χρησιμοποιείται στη θεωρία του συνόλου για τη διαμόρφωση του μαθηματικού συνόλου. Είναι παρόμοιο με τη διεπαφή λίστας και ωστόσο είναι λίγο διαφορετικό από αυτό. Το Set Interface δεν είναι μια παραγγελθείσα συλλογή, επομένως δεν υπάρχει διατηρημένη παραγγελία όταν αφαιρείτε ή προσθέτετε τα στοιχεία.
Κυρίως, δεν υποστηρίζει διπλά στοιχεία, επομένως κάθε στοιχείο στο Set Interface είναι μοναδικό.
Επιτρέπει επίσης ουσιαστικές συγκρίσεις παρουσιών Set, ακόμη και όταν υπάρχουν διαφορετικές εφαρμογές. Επίσης, συνάπτει ένα πιο ουσιαστικό συμβόλαιο για τις ενέργειες των λειτουργιών ίσων και hashCode. Εάν δύο παραδείγματα έχουν τα ίδια στοιχεία, τότε είναι ίδια.
Για όλους αυτούς τους λόγους, το Set Interface δεν έχει λειτουργίες βάσει ευρετηρίου στοιχείων όπως List. Χρησιμοποιεί μόνο μεθόδους κληρονομικής διεπαφής συλλογής. TreeSet, EnumSet, LinkedHashSet και HashSet υλοποιεί Set Interface.
Ε # 15) Θέλω να προσθέσω ένα μηδενικό στοιχείο στο HashSet και το TreeSet. Μπορώ?
Απάντηση: Δεν μπορείτε να προσθέσετε κανένα μηδενικό στοιχείο στο TreeSet καθώς χρησιμοποιεί το NavigableMap για αποθήκευση στοιχείων. Αλλά μπορείτε να προσθέσετε μόνο ένα στο HashSet. Το SortedMap δεν επιτρέπει null πλήκτρα και το NavigableMap είναι το υποσύνολο του.
Αυτός είναι ο λόγος για τον οποίο δεν μπορείτε να προσθέσετε ένα μηδενικό στοιχείο στο TreeSet, θα εμφανίζεται με το NullPointerException κάθε φορά που προσπαθείτε να το κάνετε αυτό.
Q # 16) Τι γνωρίζετε για το LinkedHashSet;
Απάντηση: Το LinkedHashSet είναι η υποκατηγορία του HashSet και επιβάλλει το Set Interface. Ως μια παραγγελθείσα μορφή του HashSet, διαχειρίζεται μια Λίστα διπλά συνδεδεμένη σε όλα τα στοιχεία που περιέχει. Διατηρεί τη σειρά εισαγωγής και όπως και η μητρική της κλάση, φέρει μόνο μοναδικά στοιχεία.
Ε # 17) Μιλήστε για τον τρόπο με τον οποίο το HashSet αποθηκεύει στοιχεία.
Απάντηση: Το HashMap αποθηκεύει τα ζεύγη τιμών-κλειδιών, αλλά τα κλειδιά πρέπει να είναι μοναδικά. Αυτή η λειτουργία του Χάρτη χρησιμοποιείται από το HashSet για να βεβαιωθείτε ότι κάθε στοιχείο είναι μοναδικό.
Η δήλωση χάρτη στο HashSet εμφανίζεται όπως φαίνεται παρακάτω:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Τα αποθηκευμένα στοιχεία στο HashSet αποθηκεύονται ως κλειδί στο χάρτη και το αντικείμενο εμφανίζεται ως τιμή.
Q # 18) Εξηγήστε τη μέθοδο EmptySet ().
Απάντηση: Η μέθοδος Emptyset () αφαιρεί τα μηδενικά στοιχεία και επιστρέφει το κενό αμετάβλητο σύνολο. Αυτό το αμετάβλητο σύνολο είναι σειριοποιήσιμο. Η δήλωση μεθόδου του Emptyset () είναι- δημόσιο στατικό τελικό Ορισμός blankSet ().
Ερωτήσεις συνέντευξης διασύνδεσης χάρτη
Q # 19) Πείτε μας για τη διασύνδεση χάρτη.
Απάντηση: Το Map Interface έχει σχεδιαστεί για ταχύτερες αναζητήσεις και αποθηκεύει τα στοιχεία με τη μορφή ζευγών κλειδιών-τιμών. Καθώς κάθε κλειδί είναι μοναδικό εδώ, συνδέεται ή αντιστοιχεί σε μία μόνο τιμή. Αυτά τα ζεύγη κλειδιών-τιμών ονομάζονται καταχωρήσεις χάρτη.
Σε αυτήν τη διεπαφή, υπάρχουν μέθοδοι υπογραφές για ανάκτηση, εισαγωγή και αφαίρεση στοιχείων ανάλογα με το μοναδικό κλειδί. Αυτό το καθιστά ένα τέλειο εργαλείο για τη χαρτογράφηση συσχετισμών κλειδιού-τιμής, όπως ένα λεξικό.
Ε # 20) Ο χάρτης δεν επεκτείνει τη διεπαφή συλλογής. Γιατί;
Απάντηση: Η συλλογή Interface είναι η συσσώρευση αντικειμένων και αυτά τα αντικείμενα αποθηκεύονται δομικά με τον μηχανισμό καθορισμένης πρόσβασης. Ενώ η διασύνδεση του χάρτη ακολουθεί τη δομή των ζευγών κλειδιού-τιμής. Η μέθοδος προσθήκης της συλλογής διασύνδεσης δεν υποστηρίζει τη μέθοδο τοποθέτησης της διασύνδεσης χαρτών.
Αυτός είναι ο λόγος για τον οποίο ο χάρτης δεν επεκτείνει τη διεπαφή συλλογής, αλλά εξακολουθεί να είναι ένα σημαντικό μέρος του Java Collection Framework.
Ε # 21) Πώς λειτουργεί το HashMap στην Java;
Απάντηση: Το HashMap είναι μια συλλογή που βασίζεται στο χάρτη και τα στοιχεία της αποτελούνται από ζεύγη τιμών-κλειδιών. Ένα HashMap χαρακτηρίζεται συνήθως από, ή. Μπορείτε να έχετε πρόσβαση σε κάθε στοιχείο κατακερματισμού χρησιμοποιώντας το κλειδί του.
Ένα HashMap λειτουργεί με την αρχή του 'Hashing'. Στην τεχνική κατακερματισμού, μια μεγαλύτερη συμβολοσειρά μετατρέπεται σε μια μικρότερη συμβολοσειρά από μια «συνάρτηση κατακερματισμού» που δεν είναι παρά ένας αλγόριθμος. Η μικρότερη συμβολοσειρά βοηθά στην ταχύτερη αναζήτηση και αποτελεσματική ευρετηρίαση.
Q # 22) Εξηγήστε το IdentityHashMap, το WeakHashMap και το ConcurrentHashMap.
Απάντηση:
Χάρτης ταυτότητας μοιάζει πολύ με το HashMap. Η διαφορά είναι ότι κατά τη σύγκριση στοιχείων, το IdentityHashMap χρησιμοποιεί την ισότητα αναφοράς. Δεν είναι μια προτιμώμενη Εφαρμογή Χάρτη και παρόλο που εκτελεί τη Διεπαφή Χάρτη, δεν συμμορφώνεται σκόπιμα με τη γενική σύμβαση του Χάρτη.
Έτσι, όταν συγκρίνουμε αντικείμενα, αυτό επιτρέπει τη χρήση της μεθόδου ίσων. Είναι σχεδιασμένο για χρήση σε σπάνιες περιπτώσεις όπου κάποιος χρειάζεται σημασιολογία ισότητας αναφοράς.
WeakHashMap Η εφαρμογή αποθηκεύει μόνο αδύναμες αναφορές στα κλειδιά της. Αυτό επιτρέπει τη συλλογή απορριμμάτων ενός ζεύγους κλειδιού-τιμής όταν δεν υπάρχει πλέον αναφορά των κλειδιών του εκτός του WeakHashMap.
Χρησιμοποιείται κυρίως με εκείνα τα βασικά αντικείμενα όπου η δοκιμή για την ταυτότητα αντικειμένου πραγματοποιείται με τις ίδιες μεθόδους χρησιμοποιώντας τον τελεστή ==.
ΤαυτόχρονηHashMap εφαρμόζει ταυτόχρονα το ConcurrentMap και το Serializable interface. Είναι η αναβαθμισμένη, βελτιωμένη έκδοση του HashMap, καθώς δεν λειτουργεί καλά με το περιβάλλον πολλαπλών νημάτων. Σε σύγκριση με το HashMap, έχει υψηλότερο ποσοστό απόδοσης.
Q # 23) Ποια είναι η ποιότητα ενός καλού κλειδιού για το HashMap;
Απάντηση: Κατανοώντας τον τρόπο λειτουργίας του HashMap, είναι εύκολο να γνωρίζουμε ότι εξαρτώνται κυρίως από τις μεθόδους ίσων και hashCode βασικών αντικειμένων. Έτσι, ένα καλό κλειδί πρέπει να παρέχει τον ίδιο hashCode ξανά και ξανά ανεξάρτητα από τους χρόνους που ανακτάται.
Με τον ίδιο τρόπο, όταν συγκρίνεται με τη μέθοδο ίσο, τα ίδια πλήκτρα πρέπει να επιστρέφουν αληθινά και διαφορετικά κλειδιά πρέπει να επιστρέφουν ψευδώς. Αυτός είναι ο λόγος για τον οποίο ο καλύτερος υποψήφιος για τα κλειδιά HashMap λέγεται ότι είναι αμετάβλητες τάξεις.
Q # 24) Πότε μπορείτε να χρησιμοποιήσετε το TreeMap;
(εικόνα πηγή )
Απάντηση: Το TreeMap, ως ειδική μορφή του HashMap, διατηρεί τη σειρά των κλειδιών από προεπιλογή «φυσική παραγγελία», ως κάτι που λείπει στο HashMap. Μπορείτε να το χρησιμοποιήσετε για την ταξινόμηση αντικειμένων με κάποιο πλήκτρο.
Για παράδειγμα, Εάν θέλετε να εφαρμόσετε και να εκτυπώσετε ένα λεξικό με αλφαβητική σειρά, μπορείτε να χρησιμοποιήσετε το TreeMap μαζί με το TreeSet. Θα ταξινομηθεί αυτόματα. Φυσικά, θα μπορούσατε να το κάνετε και χειροκίνητα, αλλά η δουλειά θα γίνει πιο αποτελεσματικά με τη χρήση του TreeMap. Μπορείτε επίσης να το χρησιμοποιήσετε εάν η τυχαία πρόσβαση είναι ζωτικής σημασίας για εσάς.
Διαφορά μεταξύ ερωτήσεων
Q # 25) Ποια είναι η διαφορά μεταξύ Συλλογής και συλλογών;
Απάντηση:
Συλλογή | Συλλογές |
---|---|
Δεν μπορούμε να χρησιμοποιήσουμε το ListIterator για να διασχίσουμε ένα σύνολο. | Το ListIterator μπορεί να διασχίσει τη Λίστα προς οποιαδήποτε κατεύθυνση. |
Είναι μια διεπαφή. | Είναι τάξη. |
Η συλλογή αντιπροσωπεύει μια ομάδα αντικειμένων ως μία οντότητα. | Οι συλλογές ορίζουν διαφορετικές μεθόδους χρησιμότητας για αντικείμενα συλλογής. |
Είναι η ριζική διεπαφή του Collection Framework. | Οι συλλογές είναι τάξη χρησιμότητας. |
Προέρχεται από τις δομές δεδομένων του πλαισίου συλλογής. | Οι συλλογές περιέχουν πολλές διαφορετικές στατικές μεθόδους για τον χειρισμό της δομής δεδομένων. |
Q # 26) Πώς διαφέρει το Array από το ArrayList;
Απάντηση:
Οι διαφορές μεταξύ Array και ArrayList δίνονται παρακάτω:
Πίνακας | Λίστα Array |
---|---|
Ο πίνακας είναι μια κλάση με έντονη γραφή. | Το ArrayList είναι μια χαλαρά δακτυλογραφημένη τάξη. |
Το μέγεθος της σειράς δεν μπορεί να αλλάξει δυναμικά, η διάστασή του είναι στατική. | Το μέγεθος του ArrayList μπορεί να αλλάξει δυναμικά. |
Ένας πίνακας δεν χρειάζεται εγκιβωτισμό και αποσυμπίεση στοιχείων. | Το ArrayList χρειάζεται πυγμαχία και απεμπλοκή στοιχείων. |
Q # 27) Διαχωρίστε μεταξύ ArrayList και LinkedList.
Απάντηση:
Λίστα Array | Συνδεδεμένη λίστα |
---|---|
Το ArrayList χρησιμοποιεί τη δυναμική συστοιχία εσωτερικά για την αποθήκευση στοιχείων. | Το LinkedList εφαρμόζει τη διπλά συνδεδεμένη λίστα. |
Ο χειρισμός των στοιχείων του ArrayList είναι μάλλον αργός. | Το LinkedList χειρίζεται τα στοιχεία του πολύ πιο γρήγορα. |
Το ArrayList μπορεί να λειτουργήσει αποκλειστικά ως Λίστα. | Το LinkedList μπορεί να λειτουργήσει ως Λίστα και ουρά. |
Χρήσιμο για αποθήκευση και πρόσβαση σε δεδομένα. | Χρήσιμο για χειρισμό δεδομένων. |
Q # 28) Πώς διαφέρει το Iterator από το Iterator;
Απάντηση:
Επαληθεύσιμο | Επαναληπτής |
---|---|
Είναι διεπαφή πακέτου Java.lang. | Είναι διεπαφή πακέτου Java.util. |
Αποδίδει μόνο μία αφηρημένη μέθοδο γνωστή ως Iterator. | Έρχεται με δύο αφηρημένες μεθόδους - hasNext και επόμενη. |
Αντιπροσωπεύει μια σειρά στοιχείων που μπορούν να διασχίσουν. | Σημαίνει αντικείμενα με κατάσταση επανάληψης. |
Q # 29) Δηλώστε τις διαφορές μεταξύ Set και List.
Απάντηση:
Σειρά | Λίστα |
---|---|
Σετ εργαλείων Ορισμός διεπαφής. | Η λίστα εφαρμόζει τη διεπαφή λίστας. |
Το σετ είναι ένα αδιάτακτο σύνολο στοιχείων. | Η λίστα είναι μια σειρά στοιχείων. |
Το σετ δεν διατηρεί τη σειρά των στοιχείων κατά την εισαγωγή. | Η λίστα διατηρεί τη σειρά των στοιχείων κατά την εισαγωγή. |
Το σύνολο δεν επιτρέπει διπλές τιμές. | Η λίστα επιτρέπει διπλές τιμές. |
Το σετ δεν περιέχει καμία κλάση παλαιού τύπου. | Η λίστα περιέχει Vector, μια κλάση παλαιού τύπου. |
Το σετ επιτρέπει μόνο μία μηδενική τιμή. | Δεν υπάρχει περιορισμός στον αριθμό των μηδενικών τιμών στη λίστα. |
Q # 30) Ποια είναι η διαφορά μεταξύ Queue και Stack;
Απάντηση:
Ουρά | Σωρός |
---|---|
Η ουρά βασίζεται στην αρχή της προσέγγισης First-In-First-Out (FIFO). | Το Stack λειτουργεί σε βάση Last-In-First-Out (LIFO). |
Η εισαγωγή και η διαγραφή στην ουρά πραγματοποιούνται σε διαφορετικά άκρα. | Η εισαγωγή και η διαγραφή πραγματοποιούνται από το ίδιο άκρο που ονομάζεται κορυφή της στοίβας. |
Το Enqueue είναι το όνομα της Εισαγωγής και το dequeue είναι η διαγραφή στοιχείων. | Το Push είναι εισαγωγή και το Pop είναι η διαγραφή στοιχείων στο Stack. |
Έχει δύο δείκτες - ένα στο πρώτο στοιχείο της λίστας (μπροστά) και ένα στο τελευταίο (πίσω). | Έχει μόνο έναν δείκτη που δείχνει το επάνω στοιχείο. |
Ε # 31) Πώς διαφέρουν οι SinglyLinkedList και DoublyLinkedList μεταξύ τους;
Απάντηση:
Συνδεδεμένη λίστα | Διπλά συνδεδεμένη λίστα |
---|---|
Κάθε κόμβος της μοναδικής συνδεδεμένης λίστας αποτελείται από δεδομένα και δείκτη στον επόμενο κόμβο. | Μια διπλά συνδεδεμένη λίστα αποτελείται από δεδομένα, δείκτη στον επόμενο κόμβο και δείκτη στον προηγούμενο κόμβο. |
Η λίστα με έναν μόνο σύνδεσμο μπορεί να διασταυρωθεί χρησιμοποιώντας τον επόμενο δείκτη. | Μια διπλά συνδεδεμένη λίστα μπορεί να διασταυρωθεί χρησιμοποιώντας τον προηγούμενο και τον επόμενο δείκτη. |
Η λίστα με έναν μόνο σύνδεσμο παίρνει λιγότερο χώρο σε σύγκριση με μια λίστα διπλής σύνδεσης. | Η διπλά συνδεδεμένη λίστα καταλαμβάνει πολύ χώρο μνήμης. |
Η πρόσβαση στο στοιχείο δεν είναι πολύ αποτελεσματική. | Η πρόσβαση στο στοιχείο είναι αποτελεσματική. |
Q # 32) Πώς διαφέρει το HashMap από το HashTable;
Απάντηση:
HashMap | HashTable |
---|---|
Το HashMap κληρονομεί την κλάση AbstractMap | Η κατηγορία HashTable κληρονομεί το λεξικό. |
Το HashMap δεν είναι συγχρονισμένο. | Το HashTable είναι συγχρονισμένο. |
Το HashMap επιτρέπει πολλές μηδενικές τιμές, αλλά μόνο ένα μηδενικό κλειδί. | Το HashTable δεν επιτρέπει μηδενική τιμή ή κλειδί. |
Το HashMap είναι πιο γρήγορο. | Το HashTable είναι πιο αργό από το HashMap. |
Το HashMap μπορεί να περάσει από τον Iterator. | Το HashTable δεν μπορεί να διασταυρωθεί χρησιμοποιώντας iterator ή απαριθμητή. |
Q # 33) Καταγράψτε τη διαφορά μεταξύ ArrayList και Vector.
Απάντηση:
Λίστα Array | Διάνυσμα |
---|---|
Το ArrayList δεν είναι συγχρονισμένο. | Το διάνυσμα είναι συγχρονισμένο. |
Το ArrayList δεν είναι μια κληρονομιά. | Το διάνυσμα είναι μια κληρονομιά. |
Το ArrayList αυξάνει το μέγεθος κατά το ήμισυ του ArrayList όταν ένα στοιχείο εισάγεται πέρα από το μέγεθός του. | Το διάνυσμα αυξάνει το μέγεθός του διπλάσιο όταν ένα στοιχείο εισάγεται πέρα από το μέγεθός του. |
Το ArrayList δεν είναι ασφαλές για νήματα | Το διάνυσμα είναι ασφαλές για νήματα. |
Q # 34) Πώς διαφέρει το FailFast από το Failsafe;
Απάντηση:
FailFast | FailSafe |
---|---|
Κατά την επανάληψη, δεν επιτρέπεται καμία τροποποίηση μιας συλλογής. | Επιτρέπει την τροποποίηση κατά την επανάληψη. |
Χρησιμοποιεί την αρχική συλλογή για διασχίζοντας. | Χρησιμοποιεί ένα αντίγραφο της αρχικής συλλογής. |
Δεν απαιτείται επιπλέον μνήμη. | Χρειάζεται επιπλέον μνήμη. |
Ρίχνει το ConcurrentModificationException. | Δεν υπάρχει καμία εξαίρεση. |
συμπέρασμα
Αυτές οι ερωτήσεις συνέντευξης Java Collections θα σας βοηθήσουν να προετοιμαστείτε για τη συνέντευξη. Η προετοιμασία σας για τη συνέντευξη Java Συλλογές πρέπει να είναι βαθιά και εκτεταμένη, οπότε μελετήστε αυτές τις ερωτήσεις και κατανοήστε καλά την ιδέα.
Αυτές οι ερωτήσεις όχι μόνο δοκιμάζουν τις γνώσεις σας αλλά και την παρουσία του μυαλού σας.
=> Παρακολουθήστε εδώ την απλή εκπαίδευση Java
Συνιστώμενη ανάγνωση
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Βασικά Java: Java Syntax, Java Class και Core Java Concepts
- Ερωτήσεις και απαντήσεις συνέντευξης
- Ερωτήσεις και απαντήσεις συνέντευξης δοκιμών ETL
- 30 Κορυφαίες ερωτήσεις και απαντήσεις συνέντευξης HTML (2021 LIST)
- Κορυφαίες 30+ δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης αγγουριών
- Κορυφαίες 40 ερωτήσεις & απαντήσεις σε συνέντευξη Java 8 (Οι πιο σημαντικές)
- Top 30 ερωτήσεις και απαντήσεις συνέντευξης SAS