Ελέγξτε αυτές τις 50 ερωτήσεις για να σπάσετε τη συνέντευξη προγραμματισμού Java

Μια λίστα με συχνές ερωτήσεις Java από προγραμματισμό συνεντεύξεων εργασίας.

Γεια σε όλους! Τα τελευταία χρόνια, μοιράζομαι πολλές ερωτήσεις και συζητήσεις Java Interview ξεχωριστά. Πολλοί από τους αναγνώστες μου ζήτησαν να τους φέρω μαζί, ώστε να μπορούν να τους φέρουν στο ίδιο σημείο. Αυτή η ανάρτηση είναι το αποτέλεσμα αυτού.

Αυτό το άρθρο περιέχει περισσότερες από 50 ερωτήσεις συνέντευξης Java που καλύπτουν όλα τα σημαντικά θέματα όπως τα βασικά βασικά Java, το Java Collection Framework, Java Multithreading and Concurrency, Java IO, JDBC, JVM Internals, Coding Problems, Object-Oriented Program, κ.λπ.

Οι ερωτήσεις συλλέγονται επίσης από διάφορες συνεντεύξεις και δεν είναι καθόλου πολύ δύσκολες. Ίσως τα έχετε δει ήδη στο τηλέφωνό σας ή σε πρόσωπο με πρόσωπο συνεντεύξεις.

Οι ερωτήσεις είναι επίσης πολύ χρήσιμες για την αναθεώρηση σημαντικών θεμάτων όπως το multithreading και οι συλλογές. Έχω επίσης μοιραστεί μερικούς χρήσιμους πόρους για περαιτέρω μάθηση και βελτίωση, όπως το The Complete Java MasterClass για να καλύψω και να καλύψω κενά στις δεξιότητές σας Java.

Τι περιμένουμε λοιπόν; Ακολουθεί η λίστα με μερικές από τις πιο συχνές ερωτήσεις Java σε συνεντεύξεις τόσο για αρχάριους όσο και έμπειρους προγραμματιστές Java.

50+ Ερωτήσεις συνέντευξης Java για 2 έως 3 χρόνια Έμπειρους προγραμματιστές

Έτσι, χωρίς να σπαταλάω περισσότερο χρόνο σας, εδώ είναι η λίστα με μερικές από τις συχνές ερωτήσεις Core Java Interview για αρχάριους προγραμματιστές. Αυτή η λίστα επικεντρώνεται σε αρχάριους και λιγότερο έμπειρους προγραμματιστές, όπως κάποιος με εμπειρία 2 έως 3 ετών στην Java.

1) Πώς επιτυγχάνει η Java την ανεξαρτησία της πλατφόρμας; (απάντηση)

υπόδειξη: bytecode και Java Virtual Machine

2) Τι είναι ClassLoaderστην Java; (απάντηση)

υπόδειξη: μέρος του JVM που φορτώνει bytecodes για τάξεις. Μπορείτε να γράψετε το δικό σας.

3) Γράψτε ένα πρόγραμμα Java για να ελέγξετε αν ένας αριθμός είναι ζυγός ή μονός; (απάντηση)

υπόδειξη: μπορείτε να χρησιμοποιήσετε τον τελεστή bitwise, όπως bitwise AND, θυμηθείτε, ακόμη και ο αριθμός έχει μηδέν στο τέλος σε δυαδική μορφή και ένας περίεργος αριθμός έχει 1 στο τέλος.

4) Διαφορά μεταξύ ArrayListκαι HashSetστην Java; (απάντηση)

Συμβουλή: όλες οι διαφορές μεταξύ Listκαι Setεφαρμόζονται εδώ, π.χ. παραγγελία, εις διπλούν, τυχαία αναζήτηση, κλπ Δείτε Java Βασικές αρχές: Συλλογές από τον Richard Warburton για να μάθετε περισσότερα σχετικά με ArrayList, HashSet και άλλες σημαντικές συλλογές στην Java.

5) Τι είναι το διπλό ελεγχόμενο κλείδωμα στο Singleton; (απάντηση)

υπαινιγμός: ελέγξτε δύο φορές εάν οι παρουσίες έχουν αρχικοποιηθεί ή όχι, πρώτα χωρίς κλείδωμα και δεύτερες με κλείδωμα.

6) Πώς δημιουργείτε Singleton ασφαλές για νήματα στην Java; (απάντηση)

υπόδειξη: πολλοί τρόποι, όπως η χρήση του Enum ή η χρήση διπλού ελέγχου μοτίβου κλειδώματος ή η χρήση ένθετης στατικής τάξης.

7) Πότε να χρησιμοποιήσετε την μεταβλητή μεταβλητή στην Java; (απάντηση)

υπόδειξη: όταν πρέπει να δώσετε εντολή στο JVM ότι μια μεταβλητή μπορεί να τροποποιηθεί από πολλά νήματα και να δώσει υπόδειξη στο JVM που δεν αποθηκεύει την τιμή της.

8) Πότε να χρησιμοποιήσετε μια μεταβατική μεταβλητή στην Java; (απάντηση)

υπόδειξη: όταν θέλετε να κάνετε μια μεταβλητή μη σειριοποιήσιμη σε μια κλάση, η οποία εφαρμόζει τη διεπαφή Serializable. Με άλλα λόγια, μπορείτε να το χρησιμοποιήσετε για μια μεταβλητή της οποίας η τιμή δεν θέλετε να αποθηκεύσετε. Ανατρέξτε στο The Complete Java MasterClass για να μάθετε σχετικά με παροδικές μεταβλητές στην Java.

9) Διαφορά μεταξύ της μεταβατικής και της πτητικής μεταβλητής στην Java; (απάντηση)

υπαινιγμός: εντελώς διαφορετικό, το ένα χρησιμοποιείται στο πλαίσιο της σειριοποίησης, ενώ το άλλο χρησιμοποιείται ταυτόχρονα.

10) Διαφορά μεταξύ Serializable και Externalizable στην Java; (απάντηση)

υπαινιγμός: Η Εξωτερική Εξωτερικότητα σας δίνει περισσότερο έλεγχο στη διαδικασία Σειριοποίησης.

11) Μπορούμε να παρακάμψουμε την ιδιωτική μέθοδο στην Java; (απάντηση)

υπόδειξη: Όχι, επειδή δεν είναι ορατό στην υποκατηγορία, μια κύρια απαίτηση για παράκαμψη μιας μεθόδου στην Java

12) Διαφορά μεταξύ Hashtableκαι HashMapστην Java; (απάντηση)

υπαινιγμός: πολλά αλλά το πιο σημαντικό είναι Hashtable, το οποίο συγχρονίζεται, ενώ HashMapδεν είναι. Είναι επίσης κληρονομιά και αργή σε σύγκριση με HashMap.

13) Διαφορά μεταξύ Listκαι Set στην Java; (απάντηση)

υπόδειξη: Listέχει παραγγελθεί και επιτρέπει διπλότυπο. Setείναι μη ταξινομημένο και δεν επιτρέπει διπλά στοιχεία.

14) Διαφορά μεταξύ ArrayListκαι Vectorστην Java (απάντηση)

υπόδειξη: Πολλά, αλλά το πιο σημαντικό είναι ότι ArrayListδεν είναι συγχρονισμένο και γρήγορο ενώ Vectorσυγχρονίζεται και είναι αργό. Είναι επίσης κλασική τάξη σαν Hashtable.

15) Διαφορά μεταξύ Hashtableκαι ConcurrentHashMapστην Java; (απάντηση)

υπόδειξη: πιο επεκτάσιμη. Δείτε το Java Fundamentals: Συλλογές του Richard Warburton για να μάθετε περισσότερα.

16) Πώς ConcurrentHashMapεπιτυγχάνεται επεκτασιμότητα; (απάντηση)

υπόδειξη: διαιρώντας τον χάρτη σε τμήματα και κλειδώνοντας μόνο κατά τη λειτουργία εγγραφής.

17) Ποιες δύο μεθόδους που θα αντικαταστήσει για ένα Objectγια να χρησιμοποιηθεί ως Keyτο HashMap; (απάντηση)

υπόδειξη: ισούται και hashcode

18) Διαφορά μεταξύ αναμονής και ύπνου στην Ιάβα; (απάντηση)

υπόδειξη: Η wait()μέθοδος απελευθερώνει το κλείδωμα ή την οθόνη, ενώ ο ύπνος δεν συμβαίνει.

19) Διαφορά μεταξύ notifyκαι notifyAllστην Java; (απάντηση)

υπόδειξη: notifyειδοποιεί ότι ένα τυχαίο νήμα περιμένει αυτό το κλείδωμα, ενώ notifyAllενημερώνει για όλα τα νήματα που περιμένουν μια οθόνη. Εάν είστε βέβαιοι ότι περιμένει μόνο ένα νήμα, τότε χρησιμοποιήστε το notify, αλλιώς notifyAllείναι καλύτερο. Δείτε το Mini-Course Threading Essentialsαπό τον Java Champion Heinz Kabutz για να μάθετε περισσότερα σχετικά με τα βασικά θέματα.

20) Γιατί παρακάμπτετε τον κατακερματισμό, μαζί με την equals()Java; (απάντηση)

Συμβουλή: για να είναι συμβατό με ίσων και των συμβάσεων hashCode, η οποία είναι απαραίτητη αν σκοπεύετε να αποθηκεύσετε το αντικείμενό σας σε κατηγορίες συλλογής, π.χ. HashMapή ArrayList.

21) Ποιος είναι ο συντελεστής φόρτωσης των HashMapμέσων; (απάντηση)

υπαινιγμός: Το όριο που ενεργοποιεί την αλλαγή μεγέθους HashMapείναι γενικά 0,75, πράγμα που σημαίνει ότι το HashMapίδιο μέγεθος αλλάζει εάν είναι γεμάτο 75 τοις εκατό.

22) Διαφορά μεταξύ ArrayListκαι LinkedListστην Java; (απάντηση)

υπόδειξη: όπως ένας πίνακας και μια συνδεδεμένη λίστα, το ένα επιτρέπει τυχαία αναζήτηση, ενώ το άλλο δεν το κάνει. Εύκολη εισαγωγή και διαγραφή στη συνδεδεμένη λίστα, αλλά η αναζήτηση είναι εύκολη σε έναν πίνακα. Δείτε το Java Fundamentals: Συλλογές , το μάθημα του Richard Warburton στο Pluralsight, για να μάθετε περισσότερα σχετικά με τη βασική δομή δεδομένων συλλογής στην Java.

23) Διαφορά μεταξύ CountDownLatchκαι CyclicBarrierστην Java; (απάντηση)

υπόδειξη: Μπορείτε να επαναχρησιμοποιήσετε CyclicBarrierαφού σπάσει το φράγμα, αλλά δεν μπορείτε να το ξαναχρησιμοποιήσετε CountDownLatchαφού ο αριθμός φτάσει στο μηδέν.

24) Πότε χρησιμοποιείτε το Runnablevs Threadστην Java; (απάντηση)

υπόδειξη: πάντα

25) Ποια είναι η έννοια του Enum να είναι ασφαλής τύπου στην Java; (απάντηση)

υπόδειξη: Αυτό σημαίνει ότι δεν μπορείτε να αντιστοιχίσετε μια παρουσία διαφορετικού τύπου Enum σε μια μεταβλητή Enum. π.χ. εάν έχετε μια μεταβλητή όπως η DayOfWeekημέρα τότε δεν μπορείτε να την αντιστοιχίσετε από το DayOfMonthenum.

26) Πώς λειτουργεί το Autoboxing του Integer στην Java; (απάντηση)

υπόδειξη: Χρησιμοποιώντας τη valueOf()μέθοδο στην Java.

27) Διαφορά μεταξύ PATHκαι Classpathστην Java; (απάντηση)

υπόδειξη: PATHχρησιμοποιείται από το λειτουργικό σύστημα ενώ Classpathχρησιμοποιείται από την JVM για τον εντοπισμό δυαδικού Java, π.χ. αρχεία JAR ή αρχεία κλάσης. Δείτε Java Βασικές αρχές: Η βασική πλατφόρμα για να μάθετε περισσότερα σχετικά PATH, Classpathκαι άλλα Java μεταβλητή περιβάλλοντος.

28) Διαφορά μεταξύ μεθόδου υπερφόρτωσης και παράκαμψης στην Java; (απάντηση)

υπόδειξη: Η παράκαμψη συμβαίνει στην υποκατηγορία ενώ η υπερφόρτωση συμβαίνει στην ίδια τάξη. Επίσης, η παράκαμψη είναι μια δραστηριότητα χρόνου εκτέλεσης ενώ η υπερφόρτωση επιλύεται κατά το χρόνο μεταγλώττισης.

29) Πώς αποτρέπετε την υποκατηγορία μιας κλάσης στην Java; (απάντηση)

υπόδειξη: απλώς κάντε τον κατασκευαστή σας ιδιωτικό

30) Πώς περιορίζετε το μάθημά σας από τη χρήση του πελάτη σας; (απάντηση)

υπόδειξη: ορίστε τον κατασκευαστή ιδιωτικό ή ρίξτε μια εξαίρεση από τον κατασκευαστή

31) Διαφορά μεταξύ StringBuilderκαι StringBufferστην Java; (απάντηση)

υπόδειξη: StringBuilderδεν συγχρονίζεται ενώ StringBufferσυγχρονίζεται.

32) Διαφορά μεταξύ Πολυμορφισμού και Κληρονομικότητας στην Ιάβα; (απάντηση)

υπόδειξη: Η κληρονομικότητα επιτρέπει την επαναχρησιμοποίηση κώδικα και χτίζει τη σχέση μεταξύ τάξης, η οποία απαιτείται από τον Πολυμορφισμό, ο οποίος παρέχει δυναμική συμπεριφορά. Βλέπε Java Fundamentals: Αντικειμενοστρεφής σχεδιασμόςγια να μάθετε περισσότερα σχετικά με τις δυνατότητες OOP.

33) Μπορούμε να παρακάμψουμε τη στατική μέθοδο στην Java; (απάντηση)

υπόδειξη: Όχι, επειδή η παράκαμψη επιλύεται κατά το χρόνο εκτέλεσης, ενώ η κλήση στατικής μεθόδου επιλύεται κατά το χρόνο μεταγλώττισης

34) Μπορούμε να αποκτήσουμε πρόσβαση στην ιδιωτική μέθοδο στην Java; (απάντηση)

υπόδειξη: ναι, στην ίδια τάξη αλλά όχι έξω από την τάξη

35) Διαφορά μεταξύ διεπαφής και αφηρημένης κλάσης στην Java; (απάντηση)

υπόδειξη: από την Java 8, η διαφορά είναι θολή. Ωστόσο, μια κλάση Java μπορεί ακόμα να εφαρμόσει πολλές διεπαφές, αλλά μπορεί να επεκτείνει μόνο μία κλάση.

36) Διαφορά μεταξύ του προγράμματος ανάλυσης DOM και SAX στην Java; (απάντηση)

υπόδειξη: Το DOM φορτώνει ολόκληρο το αρχείο XML στη μνήμη ενώ το SAX δεν το κάνει. Είναι ένα πρόγραμμα ανάλυσης βάσει συμβάντων και μπορεί να χρησιμοποιηθεί για την ανάλυση ενός μεγάλου αρχείου, αλλά το DOM είναι γρήγορο και πρέπει να προτιμάται για μικρά αρχεία.

37) Διαφορά μεταξύ λέξης-κλειδιού ρίψης και ρίψεων στην Java; (απάντηση)

υπόδειξη: ρίχνει δηλώνει ποια εξαίρεση μπορεί να ρίξει μια μέθοδος σε περίπτωση σφάλματος, αλλά η λέξη κλειδί ρίχνει πραγματικά μια εξαίρεση. Δείτε το Java Fundamentals: Exception Handling για να μάθετε περισσότερα σχετικά με το Exception handling στο Java.

38) Διαφορά μεταξύ επαναληπτικών ασφαλών και γρήγορης αποτυχίας στην Java; (απάντηση)

υπαινιγμός: το safe-safe δεν ρίχνει ConcurrentModificationExceptionενώ fail-fastκάνει όποτε εντοπίζει μια εξωτερική αλλαγή στην υποκείμενη συλλογή ενώ επαναλαμβάνεται.

39) Διαφορά μεταξύ Iterator και απαρίθμησης στην Java; (απάντηση)

υπαινιγμός: Το Iterator σάς δίνει επίσης τη δυνατότητα να αφαιρέσετε ένα στοιχείο κατά την επανάληψη, ενώ η απαρίθμηση δεν το επιτρέπει.

40) Τι είναι IdentityHashMapστην Java; (απάντηση)

υπόδειξη: A Map, που χρησιμοποιεί τον ==τελεστή ισότητας για να ελέγχει την ισότητα αντί για τη equals()μέθοδο.

41) Τι είναι η Stringπισίνα στην Ιάβα; (απάντηση)

υπαινιγμός: Μια ομάδα Stringγραμμάτων. Θυμηθείτε ότι έχει μετακινηθεί στο σωρό από το χώρο του Perm στο JDK 7.

42) Μπορεί ένα Serializableμάθημα να περιέχει ένα μη σειριοποιήσιμο πεδίο στην Java; (απάντηση)

υπόδειξη: Ναι, αλλά πρέπει να το κάνετε είτε στατικό είτε παροδικό.

43) Διαφορά μεταξύ αυτού και σούπερ στην Java; (απάντηση)

υπόδειξη: αυτό αναφέρεται στην τρέχουσα παρουσία, ενώ το σούπερ αναφέρεται σε μια παρουσία του superclass.

44) Διαφορά μεταξύ Comparatorκαι Comparableστην Java; (απάντηση)

υπόδειξη: Comparatorκαθορίζει την προσαρμοσμένη σειρά ενώ Comparableκαθορίζει τη φυσική σειρά των αντικειμένων, π.χ. την αλφαβητική σειρά για String. Ανατρέξτε στο The Complete Java MasterClass για να μάθετε περισσότερα σχετικά με την ταξινόμηση σε Java.

45) Διαφορά μεταξύ java.util.Dateκαι java.sql.Dateστην Java; (απάντηση)

υπόδειξη: το πρώτο περιέχει ημερομηνία και ώρα ενώ αργότερα περιέχει μόνο μέρος ημερομηνίας.

46) Γιατί η μέθοδος αναμονής και ειδοποίησης δηλώνεται στην Objectτάξη στην Java; (απάντηση)

υπόδειξη: επειδή απαιτούν κλείδωμα που είναι διαθέσιμο μόνο σε ένα αντικείμενο.

47) Γιατί η Java δεν υποστηρίζει πολλαπλές κληρονομίες; (απάντηση)

υπαινιγμός: Δεν υποστηρίζεται λόγω κακής εμπειρίας με το C ++, αλλά με το Java 8, έχει κάποια έννοια - μόνο πολλαπλές κληρονομικές από Typeαυτές δεν υποστηρίζονται τώρα στην Java.

48) Διαφορά μεταξύ ελεγμένης και μη επιλεγμένης Εξαίρεσης στην Java; (απάντηση)

υπόδειξη: Σε περίπτωση ελέγχου, πρέπει να χειριστείτε την εξαίρεση χρησιμοποιώντας το catch block, ενώ σε περίπτωση μη επιλεγμένου, εξαρτάται από εσάς. η μεταγλώττιση δεν θα σας ενοχλήσει.

49) Διαφορά μεταξύ σφάλματος και εξαίρεσης στην Java; (απάντηση)

υπόδειξη: Έχω κουραστεί να πληκτρολογώ παρακαλώ ελέγξτε την απάντηση

50) Διαφορά μεταξύ της κατάστασης του αγώνα και του αδιεξόδου στην Java; (απάντηση)

υπόδειξη: και τα δύο είναι σφάλματα που εμφανίζονται σε ταυτόχρονη εφαρμογή, το ένα συμβαίνει λόγω του προγραμματισμού νημάτων, ενώ άλλα συμβαίνουν λόγω κακής κωδικοποίησης. Δείτε το Multithreading και το Parallel Computing στην Java για να μάθετε περισσότερα σχετικά με το αδιέξοδο, τις συνθήκες αγώνων και άλλα θέματα multithreading.

Σημειώσεις κλεισίματος

Ευχαριστώ, φτάσατε στο τέλος του άρθρου… Καλή τύχη με τη συνέντευξη προγραμματισμού! Σίγουρα δεν θα είναι εύκολο, αλλά ακολουθώντας αυτόν τον χάρτη πορείας και οδηγό, είστε ένα βήμα πιο κοντά για να γίνετε μηχανικός DevOps.

Αν σας αρέσει αυτό το άρθρο, τότε μοιραστείτε με τους φίλους και τους συναδέλφους σας και μην ξεχάσετε να ακολουθήσετε το javinpaul στο Twitter!

Επιπρόσθετοι πόροι

  • Οδηγός συνέντευξης Java: 200+ ερωτήσεις και απαντήσεις συνέντευξης
  • Οδηγός συνέντευξης Spring Framework - 200+ ερωτήσεις και απαντήσεις
  • Προετοιμασία για συνέντευξη εργασίας από τον John Sonmez
  • Συνέντευξη προγραμματισμού Java Έκθεση του Markham
  • Cracking the Coding Interview - 189 ερωτήσεις και απαντήσεις
  • Δομή δεδομένων και ανάλυση αλγορίθμων για συνεντεύξεις εργασίας
  • 130+ ερωτήσεις συνέντευξης Java των τελευταίων 5 ετών
PS - Εάν χρειάζεστε ΔΩΡΕΑΝ πόρους για να μάθετε Java, μπορείτε να δείτε αυτήν τη λίστα με δωρεάν μαθήματα Java για να ξεκινήσετε την προετοιμασία σας.

PSS - Δεν έχω δώσει την απάντηση στις ερωτήσεις συνέντευξης που μοιράζονται στην εικόνα "Πόσα αντικείμενα String δημιουργούνται στον κώδικα;" μπορείτε να μαντέψετε και να εξηγήσετε;