top 50 core java interview questions
Οι πιο συχνές ερωτήσεις και απαντήσεις συνέντευξης Java με παραδείγματα:
Σε αυτό το σεμινάριο, έχουμε καλύψει σχεδόν 50+ σημαντικές βασικές ερωτήσεις συνέντευξης Java για νέους και έμπειρους υποψηφίους.
Αυτή η ανάρτηση στις ερωτήσεις συνέντευξης JAVA είναι έτοιμη να σας βοηθήσει να κατανοήσετε τις βασικές έννοιες του προγραμματισμού Java για σκοπούς συνέντευξης. Όλες οι σημαντικές έννοιες JAVA εξηγούνται εδώ με παραδείγματα για την εύκολη κατανόησή σας.
Αυτό το σεμινάριο καλύπτει θέματα JAVA όπως βασικούς ορισμούς Java, έννοιες OOP, προσδιοριστές πρόσβασης, συλλογές, εξαιρέσεις, νήματα, σειριοποίηση κ.λπ., με παραδείγματα που θα σας κάνουν να ετοιμαστείτε τέλεια να αντιμετωπίσετε με σιγουριά οποιαδήποτε συνέντευξη της JAVA.
Οι πιο δημοφιλείς ερωτήσεις και απαντήσεις για συνέντευξη Java
Παρακάτω παρατίθεται μια ολοκληρωμένη λίστα με τις πιο σημαντικές και συχνές ερωτήσεις βασικής και προηγμένης συνέντευξης προγραμματισμού Java με λεπτομερείς απαντήσεις.
Q # 1) Τι είναι το JAVA;
Απάντηση: Η Java είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου και είναι ανεξάρτητη από την πλατφόρμα.
Η Java είναι μια συλλογή αντικειμένων. Αναπτύχθηκε από την Sun Microsystems. Υπάρχουν πολλές εφαρμογές, ιστότοποι και παιχνίδια που έχουν αναπτυχθεί χρησιμοποιώντας Java.
Q # 2) Ποια είναι τα χαρακτηριστικά του JAVA;
Απάντηση: Τα χαρακτηριστικά της Java είναι τα εξής:
- Έννοιες OOP
- Αντικειμενοστραφής
- Κληρονομία
- Ενθυλάκωση
- Πολυμορφισμός
- Αφαίρεση
- Ανεξάρτητη πλατφόρμα: Ένα μεμονωμένο πρόγραμμα λειτουργεί σε διαφορετικές πλατφόρμες χωρίς καμία τροποποίηση.
- Υψηλή απόδοση: Το JIT (Just In Time compiler) επιτρέπει υψηλή απόδοση στην Java. Το JIT μετατρέπει τον bytecode σε γλώσσα μηχανής και στη συνέχεια το JVM ξεκινά την εκτέλεση.
- Πολυνηματικά: Μια ροή εκτέλεσης είναι γνωστή ως νήμα. Το JVM δημιουργεί ένα νήμα που ονομάζεται κύριο νήμα. Ο χρήστης μπορεί να δημιουργήσει πολλά νήματα επεκτείνοντας την κλάση νήματος ή εφαρμόζοντας τη διεπαφή Runnable.
Q # 3) Πώς επιτρέπει η Java υψηλή απόδοση;
Απάντηση: Η Java χρησιμοποιεί το μεταγλωττιστή Just In Time για να επιτρέψει υψηλή απόδοση. Χρησιμοποιείται για τη μετατροπή των οδηγιών σε bytecodes.
Q # 4) Ονομάστε τα Java IDE;
Απάντηση: Το Eclipse και το NetBeans είναι τα IDE της JAVA.
Ε # 5) Τι εννοείς με τον Κατασκευαστή;
Απάντηση: Ο κατασκευαστής μπορεί να εξηγηθεί λεπτομερώς με καταχωρισμένα σημεία:
- Όταν δημιουργείται ένα νέο αντικείμενο σε ένα πρόγραμμα καλείται ένας κατασκευαστής που αντιστοιχεί στην τάξη.
- Ο κατασκευαστής είναι μια μέθοδος που έχει το ίδιο όνομα με το όνομα κλάσης.
- Εάν ένας χρήστης δεν δημιουργήσει έναν κατασκευαστή σιωπηρά, θα δημιουργηθεί ένας προεπιλεγμένος κατασκευαστής.
- Ο κατασκευαστής μπορεί να υπερφορτωθεί.
- Εάν ο χρήστης δημιούργησε έναν κατασκευαστή με μια παράμετρο, τότε θα πρέπει να δημιουργήσει έναν άλλο κατασκευαστή ρητά χωρίς παράμετρο.
Q # 6) Τι σημαίνει η τοπική μεταβλητή και η μεταβλητή Instance;
Απάντηση:
Τοπικές μεταβλητές ορίζονται στη μέθοδο και το εύρος των μεταβλητών που υπάρχουν μέσα στην ίδια τη μέθοδο.
Μεταβλητή παρουσίας ορίζεται εντός της κλάσης και εκτός της μεθόδου και το εύρος των μεταβλητών υπάρχει σε όλη την τάξη.
Q # 7) Τι είναι μια τάξη;
Απάντηση: Όλοι οι κώδικες Java ορίζονται σε μια κλάση. Έχει μεταβλητές και μεθόδους.
Μεταβλητές είναι χαρακτηριστικά που καθορίζουν την κατάσταση μιας κλάσης.
Μέθοδοι είναι ο τόπος όπου πρέπει να γίνει η ακριβής επιχειρηματική λογική. Περιέχει ένα σύνολο δηλώσεων (ή) οδηγιών για την ικανοποίηση της συγκεκριμένης απαίτησης.
Παράδειγμα:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
Q # 8) Τι είναι ένα αντικείμενο;
Απάντηση: Μια παρουσία μιας κλάσης ονομάζεται αντικείμενο. Το αντικείμενο έχει κατάσταση και συμπεριφορά.
Κάθε φορά που η JVM διαβάζει τη λέξη-κλειδί «νέα ()» τότε θα δημιουργεί μια παρουσία αυτής της κλάσης.
Παράδειγμα:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
Ο παραπάνω κώδικας δημιουργεί το αντικείμενο για την κλάση προσθήκης.
Q # 9) Ποιες είναι οι έννοιες OOP;
Απάντηση: Οι έννοιες OOP περιλαμβάνουν:
- Κληρονομία
- Ενθυλάκωση
- Πολυμορφισμός
- Αφαίρεση
- Διεπαφή
Προτεινόμενη ανάγνωση = >> Κορυφαίες ερωτήσεις συνέντευξης OOP
Q # 10) Τι είναι η κληρονομικότητα;
Απάντηση: Κληρονομικότητα σημαίνει ότι μια τάξη μπορεί να επεκταθεί σε άλλη τάξη. Για να μπορούν να επαναχρησιμοποιηθούν οι κωδικοί από τη μία τάξη στην άλλη. Η υπάρχουσα τάξη είναι γνωστή ως κατηγορία Super ενώ η παράγωγη κλάση είναι γνωστή ως υποκατηγορία.
Παράδειγμα:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Η κληρονομικότητα ισχύει μόνο για το κοινό και τα προστατευόμενα μέλη μόνο. Τα ιδιωτικά μέλη δεν μπορούν να κληρονομηθούν.
Q # 11) Τι είναι η ενθυλάκωση;
Απάντηση: Σκοπός της ενθυλάκωσης:
- Προστατεύει τον κώδικα από άλλους.
- Συντηρησιμότητα κώδικα.
Παράδειγμα:
Δηλώνουμε το «a» ως ακέραια μεταβλητή και δεν πρέπει να είναι αρνητικό.
public class Addition(){ int a=5; }
Εάν κάποιος αλλάξει την ακριβή μεταβλητή ως ' α = -5 ' τότε είναι κακό.
Για να ξεπεράσουμε το πρόβλημα πρέπει να ακολουθήσουμε τα παρακάτω βήματα:
- Μπορούμε να κάνουμε τη μεταβλητή ιδιωτική ή προστατευμένη.
- Χρησιμοποιήστε τις δημόσιες μεθόδους πρόσβασης όπως το set and get.
Για να τροποποιηθεί ο παραπάνω κώδικας ως:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Ο παρακάτω κώδικας δείχνει το σύστημα λήψης και ρύθμισης.
Οι συνθήκες μπορούν να παρασχεθούν κατά τη ρύθμιση της μεταβλητής.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
Για ενθυλάκωση, πρέπει να κάνουμε όλες τις μεταβλητές παρουσίας ιδιωτικές και να δημιουργήσουμε setter και getter για αυτές τις μεταβλητές. Αυτό με τη σειρά του θα αναγκάσει τους άλλους να καλέσουν τους ρυθμιστές αντί να έχουν άμεση πρόσβαση στα δεδομένα.
oracle sql pl sql ερωτήσεις συνέντευξης
Q # 12) Τι είναι ο πολυμορφισμός;
Απάντηση: Ο πολυμορφισμός σημαίνει πολλές μορφές.
Ένα μεμονωμένο αντικείμενο μπορεί να αναφέρεται στην υπερ-τάξη ή στην υποκατηγορία ανάλογα με τον τύπο αναφοράς που ονομάζεται πολυμορφισμός.
Παράδειγμα:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
Χρησιμοποιώντας τον τύπο αναφοράς χειραγώγησης μπορούμε να καλέσουμε τη μέθοδο προσθήκης 'add ()'. Αυτή η ικανότητα είναι γνωστή ως Πολυμορφισμός. Ο πολυμορφισμός ισχύει για υπερισχύουσα και όχι για υπερφόρτωση .
Ε # 13) Τι σημαίνει Μέθοδος Παράκαμψη;
Απάντηση: Η παράκαμψη μεθόδου συμβαίνει εάν η μέθοδος υποκατηγορίας πληροί τις παρακάτω προϋποθέσεις με τη μέθοδο Super-class:
- Το όνομα της μεθόδου πρέπει να είναι το ίδιο
- Το επιχείρημα πρέπει να είναι το ίδιο
- Ο τύπος επιστροφής πρέπει επίσης να είναι ο ίδιος
Το βασικό πλεονέκτημα της παράκαμψης είναι ότι η Υποκατηγορία μπορεί να παράσχει συγκεκριμένες πληροφορίες σχετικά με αυτόν τον τύπο υποκατηγορίας από την υπερ-κατηγορία.
Παράδειγμα:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
προσθήκη. Προσθήκη () Η μέθοδος καλεί τη μέθοδο προσθήκης () στην Υποκατηγορία και όχι στη μητρική κλάση. Έτσι παρακάμπτει τη μέθοδο Super-class και είναι γνωστή ως μέθοδος Overriding.
Ε # 14) Τι σημαίνει υπερφόρτωση;
Απάντηση: Η μέθοδος υπερφόρτωσης συμβαίνει για διαφορετικές κατηγορίες ή εντός της ίδιας τάξης.
Για υπερφόρτωση μεθόδων, η μέθοδος υποκατηγορίας πρέπει να πληροί τις παρακάτω συνθήκες με τις μεθόδους Super-class (ή) μεθόδους στην ίδια κατηγορία:
- Ίδιο όνομα μεθόδου
- Διαφορετικοί τύποι επιχειρημάτων
- Μπορεί να υπάρχουν διαφορετικοί τύποι επιστροφής
Παράδειγμα:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }
Εδώ η μέθοδος add () έχει διαφορετικές παραμέτρους στην κατηγορία Addition είναι υπερφορτωμένη στην ίδια κλάση με την super-class.
Σημείωση: Ο πολυμορφισμός δεν ισχύει για τη μέθοδο υπερφόρτωσης.
Q # 15) Τι σημαίνει το Interface;
Απάντηση: Δεν είναι δυνατή η επίτευξη πολλαπλών κληρονομιών στην Ιάβα. Για να ξεπεραστεί αυτό το πρόβλημα εισάγεται η ιδέα της διεπαφής.
Μια διεπαφή είναι ένα πρότυπο που έχει μόνο δηλώσεις μεθόδου και όχι την εφαρμογή της μεθόδου.
Παράδειγμα:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Όλες οι μέθοδοι στη διεπαφή είναι εσωτερικά δημόσιο κενό .
- Όλες οι μεταβλητές στη διεπαφή είναι εσωτερικά δημόσιος στατικός τελικός δηλαδή σταθερές.
- Τα μαθήματα μπορούν να εφαρμόσουν τη διεπαφή και να μην επεκτείνονται.
- Η κλάση που εφαρμόζει τη διεπαφή πρέπει να παρέχει μια εφαρμογή για όλες τις μεθόδους που δηλώνονται στη διεπαφή.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Q # 16) Τι σημαίνει κλάση Abstract;
Απάντηση: Μπορούμε να δημιουργήσουμε την κλάση Abstract χρησιμοποιώντας τη λέξη-κλειδί 'Abstract' πριν από το όνομα της τάξης. Μια αφηρημένη τάξη μπορεί να έχει μεθόδους τόσο «αφηρημένες» όσο και μεθόδους «μη αφηρημένες» που είναι συγκεκριμένες κατηγορίες.
Αφηρημένη μέθοδος:
Η μέθοδος που έχει μόνο τη δήλωση και όχι την εφαρμογή ονομάζεται αφηρημένη μέθοδος και έχει τη λέξη-κλειδί που ονομάζεται «αφηρημένη». Οι δηλώσεις τελειώνουν με ερωτηματικό.
Παράδειγμα:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- Μια αφηρημένη τάξη μπορεί επίσης να έχει μια μη αφηρημένη μέθοδο.
- Το συγκεκριμένο Subclass που επεκτείνει την κλάση Abstract πρέπει να παρέχει την εφαρμογή για αφηρημένες μεθόδους.
Q # 17) Διαφορά μεταξύ Array και Array List.
Απάντηση: Η διαφορά μεταξύ Array και Array List μπορεί να γίνει κατανοητή από τον παρακάτω πίνακα:
Πίνακας | Λίστα συστοιχιών |
---|---|
Το μέγεθος πρέπει να δοθεί τη στιγμή της δήλωσης πίνακα. Συμβολοσειρά () όνομα = νέα συμβολοσειρά (2) | Το μέγεθος ενδέχεται να μην απαιτείται. Αλλάζει το μέγεθος δυναμικά. ArrayList name = νέο ArrayList |
Για να τοποθετήσουμε ένα αντικείμενο σε πίνακα πρέπει να καθορίσουμε το ευρετήριο. όνομα (1) = 'βιβλίο' | Δεν απαιτείται ευρετήριο. name.add ('βιβλίο') |
Ο πίνακας δεν παραμετροποιείται τύπου | Το ArrayList στο java 5.0 παραμετροποιείται. Π.χ .: Αυτό το βραχίονα γωνίας είναι μια παράμετρος τύπου που σημαίνει μια λίστα String. |
Q # 18) Διαφορά μεταξύ String, String Builder και String Buffer.
Απάντηση:
Σειρά: Οι μεταβλητές συμβολοσειρών αποθηκεύονται σε ένα 'συνεχές σύνολο συμβολοσειρών'. Μόλις η αναφορά συμβολοσειράς αλλάξει την παλιά τιμή που υπάρχει στο 'συνεχές σύνολο συμβολοσειρών', δεν μπορεί να διαγραφεί.
Παράδειγμα:
Όνομα συμβολοσειράς = 'βιβλίο';
Συνεχής συγκέντρωση χορδών
.
Εάν το όνομα-τιμή έχει αλλάξει από 'βιβλίο' σε 'στυλό'.
Συνεχής συγκέντρωση χορδών
Στη συνέχεια, η παλαιότερη τιμή παραμένει στο συνεχές σύνολο συμβολοσειρών.
String Buffer:
- Εδώ οι τιμές συμβολοσειράς αποθηκεύονται σε μια στοίβα. Εάν οι τιμές αλλάξουν, τότε η νέα τιμή αντικαθιστά την παλαιότερη τιμή.
- Το buffer συμβολοσειράς συγχρονίζεται που είναι ασφαλές για νήματα.
- Η απόδοση είναι πιο αργή από το String Builder.
Παράδειγμα:
String Buffer name = 'βιβλίο';
Μόλις η τιμή του ονόματος αλλάξει σε 'στυλό' τότε το 'βιβλίο' διαγράφεται στη στοίβα.
Οικοδόμος συμβολοσειρών:
Αυτό είναι το ίδιο με το String Buffer, εκτός από το String Builder που δεν έχει ασφαλή νήματα και δεν είναι συγχρονισμένο. Προφανώς λοιπόν η απόδοση είναι γρήγορη.
Ερώτηση # 19) Εξηγήστε σχετικά με τους προσδιοριστές δημόσιας και ιδιωτικής πρόσβασης.
Απάντηση: Οι μέθοδοι και οι μεταβλητές παρουσίας είναι γνωστές ως μέλη.
Δημόσιο:
Τα δημόσια μέλη είναι ορατά στο ίδιο πακέτο καθώς και στο εξωτερικό πακέτο που ισχύει για άλλα πακέτα.
Τα δημόσια μέλη της κατηγορίας Α είναι ορατά στην κατηγορία Β (ίδιο πακέτο) καθώς και στην κατηγορία Γ (διαφορετικά πακέτα).
Ιδιωτικός:
Τα ιδιωτικά μέλη είναι ορατά μόνο στην ίδια τάξη και όχι για τα άλλα μαθήματα στο ίδιο πακέτο καθώς και μαθήματα στα εξωτερικά πακέτα.
Τα ιδιωτικά μέλη στην τάξη Α είναι ορατά μόνο σε αυτήν την τάξη. Είναι αόρατο τόσο για την κατηγορία Β όσο και για την κατηγορία Γ.
Ε # 20) Διαφορά μεταξύ Προεπιλεγμένων και Προστατευόμενων προσδιοριστών πρόσβασης.
Απάντηση:
Προκαθορισμένο: Οι μέθοδοι και οι μεταβλητές που δηλώνονται σε μια κλάση χωρίς προσδιοριστές πρόσβασης ονομάζονται προεπιλεγμένες.
Τα προεπιλεγμένα μέλη στην κατηγορία Α είναι ορατά στις άλλες κατηγορίες που βρίσκονται εντός του πακέτου και δεν είναι ορατές στις κλάσεις που βρίσκονται εκτός του πακέτου.
Έτσι τα μέλη της κατηγορίας Α είναι ορατά στην κατηγορία Β και αόρατα στην κατηγορία Γ.
Προστατευμένο:
.
Το Protected είναι το ίδιο με το Default, αλλά εάν επεκταθεί μια κλάση τότε είναι ορατό ακόμα και αν είναι εκτός του πακέτου.
Τα μέλη της κατηγορίας Α είναι ορατά στην κατηγορία Β επειδή βρίσκονται μέσα στο πακέτο. Για την Κλάση Γ είναι αόρατο, αλλά εάν η Κλάση Γ επεκτείνει την Κλάση Α, τότε τα μέλη είναι ορατά στην Κλάση Γ, ακόμη και αν είναι εκτός του πακέτου.
Ε # 21) Διαφορά μεταξύ HashMap και HashTable.
Απάντηση: Η διαφορά μεταξύ HashMap και HashTable φαίνεται παρακάτω:
HashMap | HashTable |
---|---|
Οι μέθοδοι δεν συγχρονίζονται | Οι βασικές μέθοδοι συγχρονίζονται |
Όχι ασφάλεια νήματος | Ασφάλεια νημάτων |
Το Iterator χρησιμοποιείται για την επανάληψη των τιμών | Το Enumerator χρησιμοποιείται για να επαναλάβει τις τιμές |
Επιτρέπει ένα μηδενικό κλειδί και πολλές μηδενικές τιμές | Δεν επιτρέπει τίποτα που είναι άκυρο |
Η απόδοση είναι υψηλή από το HashTable | Η απόδοση είναι αργή |
Q # 22) Διαφορά μεταξύ HashSet και TreeSet.
Απάντηση: Η διαφορά μεταξύ HashSet και TreeSet φαίνεται παρακάτω:
HashSet | TreeSet |
---|---|
Τα στοιχεία που έχουν εισαχθεί είναι σε τυχαία σειρά | Διατηρεί τα στοιχεία με την ταξινομημένη σειρά |
Μπορεί να αποθηκεύσει μηδενικά αντικείμενα | Δεν ήταν δυνατή η αποθήκευση μηδενικών αντικειμένων |
Η απόδοση είναι γρήγορη | Η απόδοση είναι αργή |
Q # 23) Διαφορά μεταξύ αφηρημένης κλάσης και διασύνδεσης.
Απάντηση: Οι διαφορές μεταξύ Abstract Class και Interface είναι οι εξής:
Περίληψη κλάσης:
- Οι αφηρημένες τάξεις έχουν έναν προεπιλεγμένο κατασκευαστή και καλείται κάθε φορά που η συγκεκριμένη υποκατηγορία δημιουργείται.
- Περιέχει αφηρημένες μεθόδους, καθώς και μη αφηρημένες μεθόδους.
- Η κλάση που επεκτείνει την κλάση Abstract δεν πρέπει να απαιτεί την εφαρμογή όλων των μεθόδων, μόνο οι αφηρημένες μέθοδοι πρέπει να εφαρμοστούν στην συγκεκριμένη υποκατηγορία.
- Η αφηρημένη κλάση περιέχει μεταβλητές παρουσίας.
Διεπαφή:
- Δεν διαθέτει κατασκευαστή και δεν μπορεί να είναι instantiated.
- Μόνο η αφηρημένη μέθοδος πρέπει να δηλωθεί.
- Οι τάξεις που εφαρμόζουν τη διεπαφή πρέπει να παρέχουν την εφαρμογή για όλες τις μεθόδους.
- Η διεπαφή περιέχει μόνο σταθερές.
Ερ # 24) Ποια είναι η έννοια των Συλλογών στην Java;
Απάντηση: Συλλογή είναι ένα πλαίσιο που έχει σχεδιαστεί για την αποθήκευση των αντικειμένων και τον χειρισμό του σχεδιασμού για την αποθήκευση των αντικειμένων.
Οι συλλογές χρησιμοποιούνται για την εκτέλεση των ακόλουθων λειτουργιών:
- Ερευνητικός
- Ταξινόμηση
- Χειρισμός
- Εισαγωγή
- Διαγραφή
Μια ομάδα αντικειμένων είναι γνωστή ως συλλογές. Όλες οι τάξεις και οι διεπαφές για συλλογή είναι διαθέσιμες στο πακέτο util Java.
Q # 25) Ποια είναι όλα τα μαθήματα και οι διασυνδέσεις που είναι διαθέσιμες στις συλλογές;
Απάντηση: Παρακάτω παρατίθενται οι τάξεις και οι διασυνδέσεις που είναι διαθέσιμες στις Συλλογές:
Διεπαφές:
- Συλλογή
- Λίστα
- Σειρά
- Χάρτης
- Ταξινομημένο σετ
- Ταξινομημένος χάρτης
- Ουρά
Μαθήματα:
- Τόπος αγώνων:
- Λίστα συστοιχιών
- Διάνυσμα
- Συνδεδεμένη λίστα
Σκηνικά:
- Σετ Hash
- Συνδεδεμένο σετ κατακερματισμού
- Σετ δέντρων
Χάρτες:
- Hash χάρτη
- Πίνακας κατακερματισμού
- Χάρτης δέντρου
- Συνδεδεμένος κατακερματισμένος χάρτης
Ουρά:
- Ουρά προτεραιότητας
Ε # 26) Τι σημαίνει παραγγελίες και ταξινόμηση σε συλλογές;
Απάντηση:
Διέταξε: Αυτό σημαίνει ότι οι τιμές που αποθηκεύονται σε μια συλλογή βασίζονται στις τιμές που προστίθενται στη συλλογή. Έτσι μπορούμε να επαναλάβουμε τις τιμές από τη συλλογή με μια συγκεκριμένη σειρά.
Ταξινομημένο: Οι μηχανισμοί ταξινόμησης μπορούν να εφαρμοστούν εσωτερικά ή εξωτερικά, έτσι ώστε η ομάδα αντικειμένων που ταξινομούνται σε μια συγκεκριμένη συλλογή να βασίζεται στις ιδιότητες των αντικειμένων.
Ε # 27) Εξηγήστε τις διάφορες λίστες που είναι διαθέσιμες στη συλλογή.
Απάντηση: Οι τιμές που προστίθενται στη λίστα βασίζονται στη θέση ευρετηρίου και ταξινομούνται κατά θέση ευρετηρίου. Επιτρέπονται διπλότυπα.
Οι τύποι των λιστών είναι:
α) Λίστα συστοιχιών:
- Γρήγορη επανάληψη και γρήγορη τυχαία πρόσβαση.
- Είναι μια ταξινομημένη συλλογή (κατά ευρετήριο) και δεν έχει ταξινομηθεί.
- Υλοποιεί τη διεπαφή τυχαίας προσπέλασης.
Παράδειγμα:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
Παραγωγή:
(Μήλο, κεράσι, ακτινίδιο, μπανάνα, κεράσι)
Από την έξοδο, η Array List διατηρεί τη σειρά εισαγωγής και δέχεται τα αντίγραφα. Αλλά δεν είναι ταξινομημένο.
β) Διάνυσμα:
Είναι το ίδιο με το Array List.
- Οι διανυσματικές μέθοδοι συγχρονίζονται.
- Ασφάλεια νημάτων.
- Εφαρμόζει επίσης την τυχαία πρόσβαση.
- Η ασφάλεια του νήματος προκαλεί συνήθως επιτυχία στην απόδοση.
Παράδειγμα:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
Παραγωγή:
(κεράσι, μήλο, μπανάνα, ακτινίδιο, μήλο)
Το διάνυσμα διατηρεί επίσης τη σειρά εισαγωγής και αποδέχεται τα διπλότυπα.
γ) Συνδεδεμένη λίστα:
- Τα στοιχεία συνδέονται διπλά το ένα με το άλλο.
- Η απόδοση είναι πιο αργή από τη λίστα Array.
- Καλή επιλογή για εισαγωγή και διαγραφή.
- Στην Java 5.0 υποστηρίζει κοινές μεθόδους ουράς peek (), Pool (), Offer () κ.λπ.
Παράδειγμα:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Παραγωγή:
(μπανάνα, κεράσι, μήλο, ακτινίδιο, μπανάνα)
Διατηρεί τη σειρά εισαγωγής και αποδέχεται τα διπλότυπα.
Ε # 28) Εξηγήστε για το Σετ και τους τύπους τους σε μια συλλογή.
Απάντηση: Το σετ νοιάζεται για τη μοναδικότητα. Δεν επιτρέπει επαναλήψεις. Εδώ χρησιμοποιείται η μέθοδος 'Equals ()' για να προσδιοριστεί εάν δύο αντικείμενα είναι ίδια ή όχι.
α) Σετ Hash:
- Χωρίς ταξινόμηση και χωρίς ταξινόμηση.
- Χρησιμοποιεί τον κωδικό κατακερματισμού του αντικειμένου για να εισαγάγει τις τιμές.
- Χρησιμοποιήστε αυτό όταν η απαίτηση είναι 'χωρίς διπλότυπα και δεν ενδιαφέρεστε για την παραγγελία'.
Παράδειγμα:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Παραγωγή:
(μπανάνα, κεράσι, ακτινίδιο, μήλο)
Δεν ακολουθεί καμία σειρά εισαγωγής. Δεν επιτρέπονται διπλότυπα.
β) Σετ συνδεδεμένων Hash:
- Μια παραγγελθείσα έκδοση του συνόλου κατακερματισμού είναι γνωστή ως Linked Hash Set.
- Διατηρεί μια λίστα διπλά συνδεδεμένων με όλα τα στοιχεία.
- Χρησιμοποιήστε αυτό όταν απαιτείται μια σειρά επανάληψης.
Παράδειγμα:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Παραγωγή:
(μπανάνα, κεράσι, μήλο, ακτινίδιο)
Διατηρεί τη σειρά εισαγωγής με την οποία έχουν προστεθεί στο σύνολο. Δεν επιτρέπονται διπλότυπα.
γ) Σετ δέντρων:
- Είναι μία από τις δύο ταξινομημένες συλλογές.
- Χρησιμοποιεί τη δομή του δέντρου 'Read-Black' και εγγυάται ότι τα στοιχεία θα είναι σε αύξουσα σειρά.
- Μπορούμε να κατασκευάσουμε ένα σετ δέντρων με τον κατασκευαστή χρησιμοποιώντας έναν συγκρίσιμο (ή) συγκριτή.
Παράδειγμα:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
Παραγωγή:
(μήλο, μπανάνα, κεράσι, ακτινίδιο)
Το TreeSet ταξινομεί τα στοιχεία σε αύξουσα σειρά. Δεν επιτρέπονται διπλότυπα.
Ερώτηση # 29) Εξηγήστε για το χάρτη και τους τύπους του.
Απάντηση: Χάρτης νοιάζεται για το μοναδικό αναγνωριστικό. Μπορούμε να χαρτογραφήσουμε ένα μοναδικό κλειδί σε μια συγκεκριμένη τιμή. Είναι ένα ζεύγος κλειδιών / τιμών. Μπορούμε να αναζητήσουμε μια τιμή, με βάση το κλειδί. Όπως και το σετ, ο χάρτης χρησιμοποιεί επίσης τη μέθοδο 'ισούται με ()' για να προσδιορίσει εάν δύο κλειδιά είναι ίδια ή διαφορετικά.
Ο χάρτης έχει τους ακόλουθους τύπους:
α) Χάρτης κατακερματισμού:
- Χωρίς διάταξη και χωρίς ταξινόμηση χάρτη.
- Το Hashmap είναι μια καλή επιλογή όταν δεν μας ενδιαφέρει η παραγγελία.
- Επιτρέπει ένα μηδενικό κλειδί και πολλές μηδενικές τιμές.
Παράδειγμα:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
Παραγωγή:
{key2 = μπανάνα, key1 = κεράσι, key4 = kiwi, key3 = apple}
Δεν επιτρέπονται διπλά κλειδιά στο χάρτη.
Δεν διατηρεί καμία παραγγελία εισαγωγής και δεν έχει ταξινομηθεί.
β) Πίνακας Hash:
- Όπως και το πλήκτρο διανύσματος, οι μέθοδοι της τάξης συγχρονίζονται.
- Ασφάλεια σπειρώματος και επομένως επιβραδύνει την απόδοση.
- Δεν επιτρέπει τίποτα που είναι άκυρο.
Παράδειγμα:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Παραγωγή:
{key2 = apple, key1 = κεράσι, key4 = kiwi, key3 = μπανάνα}
Δεν επιτρέπονται διπλά πλήκτρα.
ντο) Συνδεδεμένος χάρτης Hash:
- Διατηρεί τη σειρά εισαγωγής.
- Αργότερα από τον χάρτη Hash.
- Μπορώ να περιμένω μια ταχύτερη επανάληψη.
Παράδειγμα:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Παραγωγή:
{key2 = apple, key1 = κεράσι, key4 = kiwi, key3 = μπανάνα}
Δεν επιτρέπονται διπλά πλήκτρα.
δ) Χάρτης δέντρου:
- Ταξινομημένος χάρτης.
- Όπως το σετ δέντρων, μπορούμε να κατασκευάσουμε μια σειρά ταξινόμησης με τον κατασκευαστή.
Παράδειγμα:
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Παραγωγή:
{key1 = κεράσι, key2 = μπανάνα, key3 = apple, key4 = kiwi}
Ταξινομήθηκε σε αύξουσα σειρά με βάση το κλειδί. Δεν επιτρέπονται διπλά πλήκτρα.
Ε # 30) Εξηγήστε την ουρά προτεραιότητας.
Απάντηση: Διεπαφή ουράς
Ουρά προτεραιότητας: Η κλάση συνδεδεμένων λιστών έχει βελτιωθεί για την εφαρμογή της διεπαφής ουράς. Οι ουρές μπορούν να αντιμετωπιστούν με μια συνδεδεμένη λίστα. Ο σκοπός μιας ουράς είναι 'Priority-in, Priority-out'.
Ως εκ τούτου τα στοιχεία ταξινομούνται είτε φυσικά είτε σύμφωνα με το συγκριτή. Η παραγγελία στοιχείων αντιπροσωπεύει τη σχετική προτεραιότητά τους.
Q # 31) Τι σημαίνει εξαίρεση;
Απάντηση: Η εξαίρεση είναι ένα πρόβλημα που μπορεί να προκύψει κατά τη διάρκεια της κανονικής ροής εκτέλεσης. Μια μέθοδος μπορεί να ρίξει μια εξαίρεση όταν κάτι θρηνεί στο χρόνο εκτέλεσης. Εάν δεν ήταν δυνατή η αντιμετώπιση αυτής της εξαίρεσης, τότε η εκτέλεση τερματίζεται προτού ολοκληρώσει την εργασία.
Εάν χειριστούμε την εξαίρεση, τότε η κανονική ροή συνεχίζεται. Οι εξαιρέσεις είναι μια υποκατηγορία του java.lang.Exception.
Παράδειγμα χειρισμού Εξαίρεση:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Q # 32) Ποιοι είναι οι τύποι εξαιρέσεων;
Απάντηση: Υπάρχουν δύο τύποι εξαιρέσεων. Εξηγούνται παρακάτω λεπτομερώς.
α) Ελεγμένη εξαίρεση:
Αυτές οι εξαιρέσεις ελέγχονται από τον μεταγλωττιστή κατά τη στιγμή της σύνταξης. Τα μαθήματα που επεκτείνουν την κατηγορία Throwable εκτός από την εξαίρεση χρόνου εκτέλεσης και το σφάλμα ονομάζονται επιλεγμένη εξαίρεση.
Οι επιλεγμένες εξαιρέσεις πρέπει είτε να δηλώσουν την εξαίρεση χρησιμοποιώντας τη λέξη-κλειδί ρίψης (ή) που περιβάλλεται από κατάλληλη προσπάθεια / catch.
Για παράδειγμα, Εξαίρεση ClassNotFound
β) Εξαίρεση που δεν έχει ελεγχθεί:
Αυτές οι εξαιρέσεις δεν ελέγχονται κατά τη διάρκεια της μεταγλώττισης από τον μεταγλωττιστή. Ο μεταγλωττιστής δεν υποχρεούται να χειριστεί αυτές τις εξαιρέσεις. Περιλαμβάνει:
- Αριθμητική εξαίρεση
- Εξαίρεση ArrayIndexOutOfBounds
Q # 33) Ποιοι είναι οι διαφορετικοί τρόποι χειρισμού εξαιρέσεων;
Απάντηση: Παρακάτω περιγράφονται δύο διαφορετικοί τρόποι χειρισμού εξαιρέσεων:
α) Χρησιμοποιώντας το try / catch:
Ο επικίνδυνος κωδικός περιβάλλεται από μπλοκ δοκιμής. Εάν προκύψει εξαίρεση, τότε πιάνεται από το μπλοκ catch που ακολουθείται από το μπλοκ δοκιμής.
Παράδειγμα:
τι είναι ένα αρχείο .bin;
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
β) Δηλώνοντας λέξη-κλειδί ρίψεων:
Στο τέλος της μεθόδου, μπορούμε να δηλώσουμε την εξαίρεση χρησιμοποιώντας τη λέξη-κλειδί ρίψεων.
Παράδειγμα:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
Q # 34) Ποια είναι τα πλεονεκτήματα του Exception handling;
Απάντηση: Τα πλεονεκτήματα είναι τα εξής:
- Η κανονική ροή της εκτέλεσης δεν θα τερματιστεί εάν αντιμετωπιστεί μια εξαίρεση
- Μπορούμε να εντοπίσουμε το πρόβλημα χρησιμοποιώντας τη δήλωση αλιευμάτων
Ε # 35) Ποιες είναι οι εξαιρέσεις που χειρίζονται λέξεις-κλειδιά στην Java;
Απάντηση: Παρατίθενται παρακάτω οι δύο λέξεις-κλειδιά εξαίρεσης:
μια δοκιμή:
Όταν ένας επικίνδυνος κωδικός περιβάλλεται από ένα μπλοκ δοκιμής. Μια εξαίρεση που συμβαίνει στο μπλοκ δοκιμής συλλαμβάνεται από ένα μπλοκ catch. Η προσπάθεια μπορεί να ακολουθηθεί είτε από το catch (ή) τελικά (ή) και τα δύο. Αλλά οποιοδήποτε από τα μπλοκ είναι υποχρεωτικό.
β) αλίευση:
Αυτό ακολουθείται από ένα μπλοκ δοκιμής. Εδώ υπάρχουν εξαιρέσεις.
γ) τελικά:
Αυτό ακολουθείται είτε από μπλοκ δοκιμής (ή) μπλοκ σύλληψης. Αυτό το μπλοκ εκτελείται ανεξάρτητα από εξαίρεση. Έτσι γενικά παρέχονται κωδικοί καθαρισμού εδώ.
Q # 36) Εξηγήστε σχετικά με τη διάδοση εξαιρέσεων.
Απάντηση: Η εξαίρεση απορρίπτεται πρώτα από τη μέθοδο που βρίσκεται στην κορυφή της στοίβας. Εάν δεν πιάσει, τότε εμφανίζεται η μέθοδος και μεταβαίνει στην προηγούμενη μέθοδο και ούτω καθεξής έως ότου τα καταφέρει.
Αυτό ονομάζεται Εξαίρεση διάδοση.
Παράδειγμα:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
Από το παραπάνω παράδειγμα, η στοίβα μοιάζει όπως φαίνεται παρακάτω:
Εάν προκύψει εξαίρεση στο πρόσθεση() η μέθοδος δεν έχει πιάσει, τότε μετακινείται στη μέθοδο Προσθήκη() . Στη συνέχεια μετακινείται στο κύριος() μέθοδος και στη συνέχεια θα σταματήσει τη ροή εκτέλεσης. Ονομάζεται Εξαίρεση Διάδοσης.
Q # 37) Ποια είναι η τελική λέξη-κλειδί στην Java;
Απάντηση:
Μεταβλητή λήξης: Μόλις μια μεταβλητή δηλωθεί ως τελική, τότε η τιμή της μεταβλητής δεν θα μπορούσε να αλλάξει. Είναι σαν μια σταθερά.
Παράδειγμα:
τελικό int = 12;
Τελική μέθοδος: Δεν ήταν δυνατή η παράκαμψη μιας τελικής λέξης-κλειδιού σε μια μέθοδο. Εάν μια μέθοδος επισημανθεί ως τελική, τότε δεν μπορεί να παρακαμφθεί από την υποκατηγορία.
Τελική τάξη: Εάν ένα μάθημα δηλωθεί ως τελικό, τότε το μάθημα δεν θα μπορούσε να υποκατηγορηθεί. Κανένα μάθημα δεν μπορεί να επεκτείνει την τελική τάξη.
Q # 38) Τι είναι ένα νήμα;
Απάντηση: Στην Java, η ροή εκτέλεσης ονομάζεται Νήμα. Κάθε πρόγραμμα java έχει τουλάχιστον ένα νήμα που ονομάζεται κύριο νήμα, το κύριο νήμα δημιουργείται από την JVM. Ο χρήστης μπορεί να ορίσει τα δικά του νήματα επεκτείνοντας την κλάση νήματος (ή) εφαρμόζοντας τη διεπαφή Runnable. Τα νήματα εκτελούνται ταυτόχρονα.
Παράδειγμα:
public static void main(String() args){//main thread starts here }
Q # 39) Πώς δημιουργείτε ένα νήμα στην Java;
Απάντηση: Υπάρχουν δύο τρόποι για να φτιάξετε ένα νήμα.
α) Επέκταση κλάσης νημάτων: Επέκταση τάξης νήματος και παράκαμψη της μεθόδου εκτέλεσης. Το νήμα είναι διαθέσιμο στο java.lang.thread.
Παράδειγμα:
Public class Addition extends Thread { public void run () { } }
Το μειονέκτημα της χρήσης μιας κλάσης νήματος είναι ότι δεν μπορούμε να επεκτείνουμε άλλες κλάσεις επειδή έχουμε ήδη επεκτείνει την κλάση νήματος. Μπορούμε να υπερφορτώσουμε τη μέθοδο run () στην τάξη μας.
β) Εφαρμογή διεπαφής με δυνατότητα εκτέλεσης: Ένας άλλος τρόπος είναι η εφαρμογή της διεπαφής με δυνατότητα εκτέλεσης. Για αυτό, πρέπει να παρέχουμε την εφαρμογή για τη μέθοδο run () που ορίζεται στη διεπαφή.
Παράδειγμα:
Public class Addition implements Runnable { public void run () { } }
Q # 40) Εξηγήστε τη μέθοδο join ().
Απάντηση: Η μέθοδος Join () χρησιμοποιείται για τη σύνδεση ενός νήματος με το τέλος του τρέχοντος νήματος.
Παράδειγμα:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Με βάση τον παραπάνω κώδικα, το κύριο νήμα έχει ξεκινήσει την εκτέλεση. Όταν φτάσει τον κωδικό t.start () τότε το 'thread t' ξεκινά τη δική του στοίβα για την εκτέλεση. Η JVM εναλλάσσεται μεταξύ του κύριου νήματος και του «νήματος t».
Μόλις φτάσει τον κωδικό t.join () τότε το «νήμα t» μόνο εκτελείται και ολοκληρώνει την εργασία του, τότε μόνο το κύριο νήμα ξεκινά την εκτέλεση.
Είναι μια μη στατική μέθοδος. Η μέθοδος Join () έχει υπερφορτωμένη έκδοση. Έτσι μπορούμε να αναφέρουμε τη διάρκεια του χρόνου στη μέθοδο join () επίσης '.s'.
Q # 41) Τι κάνει η μέθοδος απόδοσης της κλάσης Thread;
Απάντηση: Μια μέθοδος απόδοσης () μετακινεί το τρέχον νήμα σε κατάσταση εκτέλεσης και επιτρέπει την εκτέλεση των άλλων νημάτων. Έτσι, τα νήματα ίσης προτεραιότητας έχουν την ευκαιρία να τρέξουν. Είναι μια στατική μέθοδος. Δεν απελευθερώνει καμία κλειδαριά.
Η μέθοδος Yield () μετακινεί το νήμα πίσω στην κατάσταση Runnable μόνο και όχι το νήμα σε κατάσταση νάρκης (), περιμένετε () (ή).
Παράδειγμα:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Ε # 42) Εξηγήστε για τη μέθοδο αναμονής ().
Απάντηση: περιμένετε () Η μέθοδος χρησιμοποιείται για να κάνει το νήμα να περιμένει στην πισίνα αναμονής. Όταν η μέθοδος αναμονής () εκτελείται κατά τη διάρκεια εκτέλεσης ενός νήματος, τότε αμέσως το νήμα εγκαταλείπει την κλειδαριά στο αντικείμενο και πηγαίνει στην πισίνα αναμονής. Η μέθοδος Wait () λέει στο νήμα να περιμένει ένα συγκεκριμένο χρονικό διάστημα.
Στη συνέχεια, το νήμα θα ξυπνήσει μετά την κλήση της ειδοποίησης () (ή) ειδοποίηση όλων ().
Περιμένετε () και οι άλλες προαναφερθείσες μέθοδοι δεν δίνουν το κλείδωμα στο αντικείμενο αμέσως έως ότου το νήμα που εκτελείται επί του παρόντος ολοκληρώσει τον συγχρονισμένο κώδικα. Χρησιμοποιείται ως επί το πλείστον στο συγχρονισμό.
Παράδειγμα:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) Διαφορά μεταξύ της μεθόδου notify () και της μεθόδου notifyAll () στην Java.
Απάντηση: Οι διαφορές μεταξύ της μεθόδου notify () και της notifyAll () αναφέρονται παρακάτω:
κοινοποιώ() | ειδοποίησηΌλα () |
---|---|
Αυτή η μέθοδος χρησιμοποιείται για την αποστολή ενός σήματος για να ξυπνήσει ένα μόνο νήμα στην πισίνα αναμονής. | Αυτή η μέθοδος στέλνει το σήμα για να ξυπνήσει όλα τα νήματα σε μια ουρά αναμονής. |
Ε # 44) Πώς να σταματήσετε ένα νήμα στην Java; Εξηγήστε τη μέθοδο ύπνου () σε ένα νήμα;
Απάντηση: Μπορούμε να σταματήσουμε ένα νήμα χρησιμοποιώντας τις ακόλουθες μεθόδους νήματος:
- Κοιμάμαι
- Αναμονή
- Αποκλείστηκε
Υπνος: Η μέθοδος Sleep () χρησιμοποιείται για την αναστολή του νήματος που εκτελείται αυτήν τη στιγμή για το δεδομένο χρονικό διάστημα. Μόλις το νήμα ξυπνήσει, μπορεί να μετακινηθεί στην κατάσταση εκτέλεσης. Έτσι, η μέθοδος sleep () χρησιμοποιείται για να καθυστερήσει την εκτέλεση για κάποιο χρονικό διάστημα.
Είναι μια στατική μέθοδος.
Παράδειγμα:
Νήμα. Ύπνος (2000)
Έτσι καθυστερεί το νήμα για ύπνο 2 χιλιοστά του δευτερολέπτου. Η μέθοδος Sleep () ρίχνει μια αδιάλειπτη εξαίρεση, επομένως πρέπει να περιβάλλουμε το μπλοκ με try / catch.
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Ε # 45) Πότε να χρησιμοποιήσετε την κλάση Runnable interface Vs Thread στην Java;
Απάντηση: Εάν χρειαζόμαστε την τάξη μας για να επεκτείνουμε κάποιες άλλες κατηγορίες εκτός από το νήμα, τότε μπορούμε να προχωρήσουμε με τη διεπαφή που μπορεί να εκτελεστεί, επειδή στην Java μπορούμε να επεκτείνουμε μόνο μία τάξη.
Εάν δεν πρόκειται να επεκτείνουμε κάποια κλάση τότε μπορούμε να επεκτείνουμε την κλάση νήματος.
Q # 46) Διαφορά μεταξύ της μεθόδου start () και run () της κλάσης νήματος.
Απάντηση: Η μέθοδος Start () δημιουργεί ένα νέο νήμα και ο κώδικας μέσα στη μέθοδο run () εκτελείται στο νέο νήμα. Εάν καλέσαμε άμεσα τη μέθοδο run (), τότε δεν δημιουργείται ένα νέο νήμα και το νήμα που εκτελείται αυτήν τη στιγμή θα συνεχίσει να εκτελεί τη μέθοδο run ().
Q # 47) Τι είναι το Multi-threading;
Απάντηση: Πολλά νήματα εκτελούνται ταυτόχρονα. Κάθε νήμα ξεκινά τη δική του στοίβα με βάση την προτεραιότητα ροής (ή) των νημάτων.
Παράδειγμα προγράμματος:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
Στην εκτέλεση της πρώτης γραμμής, το JVM καλεί την κύρια μέθοδο και η κύρια στοίβα νήματος φαίνεται όπως φαίνεται παρακάτω.
Μόλις φτάσει η εκτέλεση, t.start () γραμμή τότε δημιουργείται ένα νέο νήμα και δημιουργείται επίσης η νέα στοίβα για το νήμα. Τώρα το JVM αλλάζει στο νέο νήμα και το κύριο νήμα επιστρέφει στην κατάσταση εκτέλεσης.
Οι δύο στοίβες φαίνονται όπως φαίνεται παρακάτω.
Τώρα, το νήμα χρήστη εκτέλεσε τον κώδικα μέσα στη μέθοδο εκτέλεσης ().
Μόλις ολοκληρωθεί η μέθοδος run (), τότε το JVM επιστρέφει στο κύριο νήμα και το νήμα χρήστη έχει ολοκληρώσει την εργασία και η στοίβα εξαφανίστηκε.
Η JVM εναλλάσσεται μεταξύ κάθε νήματος έως ότου ολοκληρωθούν και τα δύο νήματα. Αυτό ονομάζεται Multi-threading.
Ε # 48) Εξηγήστε τον κύκλο ζωής του νήματος στην Java.
Απάντηση: Το νήμα έχει τις ακόλουθες καταστάσεις:
- Νέος
- Τρέξιμο
- Τρέξιμο
- Μη τρέξιμο (Αποκλεισμένο)
- Τερματίστηκε
- Νέος: Στη Νέα κατάσταση, έχει δημιουργηθεί μια παρουσία νήματος, αλλά η μέθοδος start () δεν έχει ακόμη ενεργοποιηθεί. Τώρα το νήμα δεν θεωρείται ζωντανό.
- Τρέξιμο : Το νήμα είναι σε κατάσταση εκτέλεσης μετά την επίκληση της μεθόδου start (), αλλά πριν από την κλήση της μεθόδου run (). Αλλά ένα νήμα μπορεί επίσης να επιστρέψει στην κατάσταση λειτουργίας από την αναμονή / ύπνο. Σε αυτήν την κατάσταση, το νήμα θεωρείται ζωντανό.
- Τρέξιμο : Το νήμα βρίσκεται σε κατάσταση λειτουργίας αφού καλέσει τη μέθοδο εκτέλεσης (). Τώρα το νήμα ξεκινά την εκτέλεση.
- Χωρίς δυνατότητα εκτέλεσης (Αποκλεισμένο): Το νήμα είναι ζωντανό, αλλά δεν είναι κατάλληλο για εκτέλεση. Δεν είναι σε κατάσταση λειτουργίας, αλλά επίσης, θα επιστρέψει στην κατάσταση εκτέλεσης μετά από λίγο. Παράδειγμα: περίμενε, κοιμήσου, μπλοκ.
- Τερματίστηκε : Μόλις ολοκληρωθεί η μέθοδος εκτέλεσης, τότε τερματίζεται. Τώρα το νήμα δεν είναι ζωντανό.
Q # 49) Τι είναι ο συγχρονισμός;
Απάντηση: Ο συγχρονισμός κάνει μόνο ένα νήμα για πρόσβαση σε ένα μπλοκ κώδικα κάθε φορά. Εάν πολλά νήματα έχουν πρόσβαση στο μπλοκ του κώδικα, τότε υπάρχει πιθανότητα ανακριβών αποτελεσμάτων στο τέλος. Για να αποφύγουμε αυτό το ζήτημα, μπορούμε να παρέχουμε συγχρονισμό για το ευαίσθητο μπλοκ κωδικών.
Η συγχρονισμένη λέξη-κλειδί σημαίνει ότι ένα νήμα χρειάζεται ένα κλειδί για να έχει πρόσβαση στον συγχρονισμένο κώδικα.
Οι κλειδαριές είναι ανά αντικείμενο. Κάθε αντικείμενο Java έχει κλειδαριά. Η κλειδαριά έχει μόνο ένα κλειδί. Ένα νήμα μπορεί να αποκτήσει πρόσβαση σε μια συγχρονισμένη μέθοδο μόνο εάν το νήμα μπορεί να πάρει το κλειδί για τα αντικείμενα που θα κλειδωθούν.
Για αυτό, χρησιμοποιούμε τη λέξη-κλειδί «Συγχρονισμένος».
Παράδειγμα:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
Q # 50) Ποιο είναι το μειονέκτημα του συγχρονισμού;
Χρόνια: Ο συγχρονισμός δεν συνιστάται για την εφαρμογή όλων των μεθόδων. Επειδή εάν ένα νήμα έχει πρόσβαση στον συγχρονισμένο κώδικα, τότε το επόμενο νήμα πρέπει να περιμένει. Έτσι, κάνει μια αργή απόδοση στο άλλο άκρο.
Q # 51) Τι σημαίνει Serialization;
Απάντηση: Η μετατροπή ενός αρχείου σε ροή byte είναι γνωστή ως Serialization. Τα αντικείμενα στο αρχείο μετατρέπονται σε byte για λόγους ασφαλείας. Για αυτό, πρέπει να εφαρμόσουμε μια διεπαφή java.io.Serializable. Δεν έχει καμία μέθοδο για να ορίσει.
Οι μεταβλητές που επισημαίνονται ως παροδικές δεν θα είναι μέρος της σειριοποίησης. Έτσι, μπορούμε να παραλείψουμε τη σειριοποίηση για τις μεταβλητές στο αρχείο χρησιμοποιώντας μια παροδική λέξη-κλειδί.
Μάθετε περισσότερα = >> Σειριοποιήσιμο και κλωνοποιήσιμο
Q # 52) Ποιος είναι ο σκοπός μιας παροδικής μεταβλητής;
Απάντηση: Οι μεταβατικές μεταβλητές δεν αποτελούν μέρος της διαδικασίας σειριοποίησης. Κατά τη διάρκεια της αποεριοποίησης, οι τιμές των μεταβατικών μεταβλητών ορίζονται στην προεπιλεγμένη τιμή. Δεν χρησιμοποιείται με στατικές μεταβλητές.
Παράδειγμα:
πώς να χρησιμοποιήσετε την εντολή cut στο unix
παροδικοί αριθμοί int
Q # 53) Ποιες μέθοδοι χρησιμοποιούνται κατά τη διαδικασία Serialization και Deserialization;
Απάντηση: Οι κλάσεις ObjectOutputStream και ObjectInputStream είναι java.io υψηλότερου επιπέδου. πακέτο. Θα τα χρησιμοποιήσουμε με τάξεις χαμηλότερου επιπέδου FileOutputStream και FileInputStream.
ObjectOutputStream.writeObject —-> Σειριοποιήστε το αντικείμενο και γράψτε το σειριακό αντικείμενο σε ένα αρχείο.
ObjectInputStream.readObject -> Διαβάζει το αρχείο και απολυμαίνει το αντικείμενο.
Για να σειριοποιηθεί, ένα αντικείμενο πρέπει να εφαρμόσει τη σειριοποιήσιμη διεπαφή. Εάν το superclass εφαρμόζει το Serializable, τότε η υποκατηγορία θα είναι αυτόματα σειριοποιήσιμη.
Q # 54) Ποιος είναι ο σκοπός μιας πτητικής μεταβλητής;
Απάντηση: Οι πτητικές μεταβλητές τιμές διαβάζονται πάντα από την κύρια μνήμη και όχι από τη μνήμη cache του νήματος. Αυτό χρησιμοποιείται κυρίως κατά το συγχρονισμό. Ισχύει μόνο για μεταβλητές.
Παράδειγμα:
πτητικός αριθμός int
Ερώτηση # 55) Διαφορά μεταξύ Σειριοποίησης και Αποεριοποίησης στην Ιάβα.
Απάντηση: Αυτές είναι οι διαφορές μεταξύ της σειριοποίησης και της αποεριοποίησης στην Java:
Σειριοποίηση | Αποϊστερίωση |
---|---|
Η σειριοποίηση είναι η διαδικασία που χρησιμοποιείται για τη μετατροπή των αντικειμένων σε ροή byte | Η αποεριοποίηση είναι η αντίθετη διαδικασία σειριοποίησης όπου μπορούμε να πάρουμε τα αντικείμενα πίσω από τη ροή byte. |
Ένα αντικείμενο σειριοποιείται γράφοντας το ObjectOutputStream. | Ένα αντικείμενο αποστειρώνεται διαβάζοντάς το από ένα ObjectInputStream. |
Q # 56) Τι είναι το SerialVersionUID;
Απάντηση: Κάθε φορά που ένα αντικείμενο είναι σε σειρά, το αντικείμενο σφραγίζεται με έναν αριθμό ID έκδοσης για την κλάση αντικειμένων. Αυτό το αναγνωριστικό ονομάζεται SerialVersionUID. Αυτό χρησιμοποιείται κατά τη διάρκεια της αποεριοποίησης για να επιβεβαιωθεί ότι ο αποστολέας και ο παραλήπτης είναι συμβατοί με τη σειρά.
συμπέρασμα
Αυτές είναι μερικές από τις βασικές ερωτήσεις συνέντευξης JAVA που καλύπτουν τόσο τις βασικές όσο και τις προηγμένες έννοιες Java για προγραμματισμό, καθώς και συνέντευξη προγραμματιστή, και αυτές είναι αυτές που έχουν απαντηθεί από τους ειδικούς της JAVA.
Ελπίζω ότι αυτό το σεμινάριο θα σας δώσει μια μεγάλη εικόνα για τις βασικές έννοιες κωδικοποίησης JAVA. Οι εξηγήσεις που δίνονται παραπάνω θα εμπλουτίσουν πραγματικά τις γνώσεις σας και θα αυξήσουν την κατανόησή σας για τον προγραμματισμό JAVA.
Ετοιμαστείτε να κάνετε μια συνέντευξη JAVA με αυτοπεποίθηση.