Οι 40 κορυφαίες ερωτήσεις και απαντήσεις για πολυνηματική συνέντευξη (2025)
Κορυφαίες ερωτήσεις συνέντευξης πολλαπλών νημάτων Java
Ακολουθούν ερωτήσεις και απαντήσεις συνέντευξης Multithreading Interview Questions για νεοφώτιστους καθώς και έμπειρους υποψηφίους για να πάρουν τη δουλειά των ονείρων τους.
1) Τι είναι το νήμα;
Ένα νήμα είναι μια παράλληλη μονάδα εκτέλεσης. Μπορούμε να πούμε ότι είναι μέρος της διαδικασίας που μπορεί εύκολα να εκτελεστεί ταυτόχρονα με άλλα μέρη της διαδικασίας.
Δωρεάν λήψη PDF: Ερωτήσεις και απαντήσεις σε πολλές νηματικές συνεντεύξεις
2) Τι είναι το multithreading;
Πολλαπλών νημάτων στη Java είναι μια διαδικασία εκτέλεσης δύο ή περισσότερων νημάτων ταυτόχρονα για τη μέγιστη χρήση της CPU.
Το κύριο πλεονέκτημα είναι:
- Τα νήματα μοιράζονται τον ίδιο χώρο διευθύνσεων
- Το νήμα παραμένει ελαφρύ
- Το κόστος επικοινωνίας μεταξύ των νημάτων είναι χαμηλό.
3) Ποιες είναι οι καταστάσεις που σχετίζονται με το νήμα;
- Έτοιμος
- Τρέξιμο
- Αναμονή
- Νεκρή κατάσταση
4) Συζητήστε έναν κύκλο ζωής νήματος;
Ο κύκλος ζωής ενός νήματος είναι παρόμοιος με τον κύκλο ζωής των διεργασιών που εκτελούνται σε ένα το λειτουργικό σύστημα. Κατά τη διάρκεια του κύκλου ζωής του, το νήμα μπορεί να μετακινηθεί από τη μια κατάσταση στην άλλη. Ωστόσο, εξαρτάται από την επέμβαση που γίνεται σε αυτό.
5) Ποιες είναι οι καταστάσεις του νήματος;
Ακολουθούν οι διαφορετικές καταστάσεις νήματος:
Νέα: Ένα νήμα που μόλις εγκαινιάστηκε βρίσκεται στη νέα κατάσταση. Όταν καλείται μια μέθοδος start(), το νήμα γίνεται η κατάσταση ετοιμότητας. Στη συνέχεια, μεταφέρεται στην κατάσταση εκτέλεσης από τον προγραμματιστή νημάτων.
- Δυνατότητα εκτέλεσης: Ένα νήμα που είναι έτοιμο να τρέξει
- Τρέξιμο: Ένα νήμα που εκτελείται βρίσκεται σε κατάσταση εκτέλεσης.
- Αποκλείστηκε: Ένα μπλοκαρισμένο νήμα περιμένει για ένα κλείδωμα οθόνης βρίσκεται σε αυτήν την κατάσταση. Αυτό μπορεί επίσης να συμβεί όταν ένα νήμα εκτελεί μια λειτουργία I/O και μετακινείται στην επόμενη κατάσταση.
- Αναμονή: Είναι ένα νήμα που περιμένει ένα άλλο νήμα για να κάνει τη συγκεκριμένη ενέργεια.
- Timed_waiting: Είναι ένα νήμα που περιμένει να εκτελέσει ένα άλλο νήμα.
- Τερματίστηκε: Ένα νήμα που έχει βγει βρίσκεται σε αυτήν την κατάσταση.

6) Ποιες είναι οι κύριες διαφορές μεταξύ Thread και Process;
Το νήμα είναι ένα υποσύνολο διαδικασίας. Η διαδικασία μπορεί να περιέχει πολλά νήματα. Η διαδικασία μπορεί να εκτελεστεί σε διαφορετικό χώρο μνήμης, αλλά όλα τα νήματα μοιράζονται τον ίδιο χώρο μνήμης.
7) Τι είναι το αδιέξοδο;
Το αδιέξοδο είναι μια κατάσταση όταν ένα νήμα περιμένει ένα κλείδωμα αντικειμένου, το οποίο αποκτάται από ένα άλλο νήμα και το δεύτερο νήμα περιμένει επίσης ένα κλείδωμα αντικειμένου που αποκτάται από το πρώτο νήμα. Καθώς και τα δύο νήματα περιμένουν το ένα το άλλο να απελευθερωθεί αυτή η συνθήκη ονομάζεται αδιέξοδο.
8) Τι είναι το LiveLock;
Το Livelock συμβαίνει όταν όλα τα νήματα είναι αποκλεισμένα και δεν μπορούν να εκτελεστούν λόγω της μη διαθεσιμότητας των απαιτούμενων πόρων και της μη ύπαρξης μη αποκλεισμένου νήματος.
Το Livelock μπορεί να συμβεί στις ακόλουθες συνθήκες:
- Όταν όλα τα νήματα ενός προγράμματος εκτελούνται σε ένα αντικείμενο με μηδενικές παραμέτρους. Το πρόγραμμα είναι ζωντανά κλειδωμένο και δεν υποβάλλεται σε επεξεργασία έως ότου ένα ή περισσότερα νήματα καλέσουν το Object.notify () ή το Object.notifyAll() στα σχετικά αντικείμενα.
- Το Livelock συμβαίνει επίσης όταν όλα τα νήματα ενός προγράμματος είναι κολλημένα σε άπειρους βρόχους.

9) Τι είναι η οθόνη;
- Η οθόνη είναι ένα σώμα κώδικα που μπορεί να εκτελεστεί μόνο από ένα νήμα τη φορά.
- Εάν οποιοδήποτε άλλο νήμα επιχειρήσει να αποκτήσει πρόσβαση ταυτόχρονα, θα τεθεί σε αναστολή έως ότου το τρέχον νήμα απελευθερώσει την οθόνη.
10) Τι εννοείτε με τον όρο πείνα με νήμα;
Στην περίπτωση που ένα νήμα δεν έχει επαρκή CPU για την εκτέλεσή του, συμβαίνει ασιτία νήματος.
Ωστόσο, μπορεί να συμβεί στα ακόλουθα σενάρια
- Τα νήματα χαμηλής προτεραιότητας θα έχουν λιγότερη CPU σε σύγκριση με τα νήματα υψηλής προτεραιότητας. Το νήμα χαμηλότερης προτεραιότητας μπορεί να λιμοκτονήσει περιμένοντας να αποκτήσει περισσότερο χώρο στην CPU για την εκτέλεση υπολογισμών.
- Το νήμα μπορεί να περιμένει επ' αόριστον για ένα κλείδωμα στην οθόνη του αντικειμένου, αλλά η notify() μπορεί να ξυπνά επανειλημμένα κάποια άλλα νήματα. Σε αυτή την περίπτωση, το νήμα πεθαίνει από την πείνα.
11) Ποια είναι η έννοια του busy spin στο multi-threading;
Το busy spin είναι μια τεχνική που χρησιμοποιούν οι ταυτόχρονοι προγραμματιστές για να κάνουν ένα νήμα να περιμένει υπό ορισμένες προϋποθέσεις. Αυτό είναι αρκετά διαφορετικό από τις παραδοσιακές μεθόδους όπως η αναμονή () και η αναστολή λειτουργίας () που όλες περιλαμβάνουν την παραίτηση από τον έλεγχο της CPU. Αυτή η μέθοδος δεν απαιτεί την εγκατάλειψη της CPU, αντίθετα, απλώς εκτελεί τον κενό βρόχο.
12) Τι είναι η εναλλαγή περιβάλλοντος σε πολλαπλές νήματα;
Είναι η διαδικασία αποθήκευσης και επαναφοράς της κατάστασης της CPU. Αυτό βοηθά να περίληψη εκτέλεση νήματος από το ίδιο σημείο σε μεταγενέστερο χρονικό σημείο. Είναι ένα από τα βασικά χαρακτηριστικά για λειτουργικό σύστημα πολλαπλών εργασιών και υποστήριξη για το περιβάλλον πολλαπλών νημάτων.
13) Γιατί η συμπεριφορά του νήματος είναι απρόβλεπτη;
Μπορούμε να πούμε ότι η συμπεριφορά του νήματος είναι απρόβλεπτη επειδή η εκτέλεση των νημάτων εξαρτάται από τον προγραμματιστή νημάτων. Θα πρέπει να θυμάστε ότι κάθε προγραμματιστής νημάτων έχει διαφορετική υλοποίηση σε διαφορετικές πλατφόρμες όπως Windows, Unix κ.λπ.
14) Πώς μπορείτε να διακόψετε την εκτέλεση ενός νήματος για ένα συγκεκριμένο χρονικό διάστημα;
Η μέθοδος sleep () χρησιμοποιείται για την παύση της εκτέλεσης του νήματος για ορισμένο χρονικό διάστημα. Ωστόσο, αυτό δεν θα σταματήσει την επεξεργασία του νήματος για συγκεκριμένο χρόνο. Ωστόσο, όταν το νήμα ξυπνήσει από τον ύπνο, η κατάστασή του αλλάξει σε runnable και με βάση τον προγραμματισμό νημάτων, θα εκτελεστεί.
15) Ποιοι είναι πολλοί τρόποι με τους οποίους ένα νήμα μπορεί να εισέλθει σε κατάσταση αναμονής;
Ένα νήμα μπορεί να εισέλθει σε κατάσταση αναμονής με τους ακόλουθους τρόπους
- Χρησιμοποιώντας τη μέθοδο sleep().
- Αποκλεισμός σε I/O
- Ανεπιτυχής προσπάθεια απόκτησης της κλειδαριάς ενός αντικειμένου
- Με την επίκληση της μεθόδου αναμονής() ενός αντικειμένου
16) Τι θα συμβεί αν δεν παρακάμψουμε μια μέθοδο εκτέλεσης;
Στην Java, όταν καλούμε τη μέθοδο start() σε ένα νήμα, καλεί εσωτερικά τη μέθοδο run() με το νήμα που δημιουργήθηκε πρόσφατα. Έτσι, αν δεν παρακάμψουμε τη μέθοδο run( ), τότε το νήμα που δημιουργήθηκε πρόσφατα δεν θα κληθεί, οπότε δεν θα συμβεί τίποτα.
Παράδειγμα:
class MyThread extends Thread { //don't override run() method } public class DontOverrideRun { public static void main(String[] args) { System.out.println("main has started."); MyThread thread1=new MyThread(); thread1.start(); System.out.println("main has ended."); } }
17) Ποια είναι η κύρια διαφορά μεταξύ της μεθόδου Thread.start() & Thread?run();
Η μέθοδος Thread.start() (εγγενής μέθοδος) της κλάσης Thread κάνει τη δουλειά της εκτέλεσης της μεθόδου Thread.A run() σε ένα νήμα. Έτσι, εάν καλέσουμε απευθείας τη μέθοδο Thread.The run() εκτελείται επίσης στο ίδιο νήμα. Έτσι δεν θα λύσει ποτέ το σκοπό της δημιουργίας ενός νέου νήματος.
18) Πώς να δημιουργήσετε ένα νήμα στη java;
Υπάρχουν δύο μέθοδοι για να δημιουργήσετε ένα νήμα στη java.
- Πρώτα εφαρμόζοντας τη διεπαφή Runnable και στη συνέχεια δημιουργήστε ένα αντικείμενο νήματος από αυτήν.
- Η δεύτερη μέθοδος είναι η επέκταση της κλάσης νήματος.
19) Ποια είναι η έννοια της Προτεραιότητας Νημάτων;
Κάθε νήμα έχει μια προτεραιότητα. Ωστόσο, μια υψηλότερη προτεραιότητα έχει επίσης προτεραιότητα στην εκτέλεση. Ωστόσο, εξαρτάται επίσης από την υλοποίηση του Thread Scheduler που εξαρτάται από το λειτουργικό σύστημα. Είναι δυνατή η αλλαγή της προτεραιότητας του νήματος, αλλά δεν παρέχει διαβεβαίωση ότι το νήμα υψηλότερης προτεραιότητας θα εκτελεστεί πρώτα.
20) Τι κάνει η μέθοδος join();
Η μέθοδος join() περιμένει να πεθάνει ένα νήμα. Αναγκάζει όλα τα τρέχοντα νήματα να σταματήσουν να εκτελούνται μέχρι τη στιγμή που το νήμα ενωθεί για να ολοκληρώσει τη δουλειά του.
21) Τι είναι το Java Shutdown Hook;
Το άγκιστρο τερματισμού Java χρησιμοποιείται για την εκκαθάριση πόρων όταν το JVM τερματίζεται. Οι καθαροί πόροι σημαίνει το κλείσιμο του αρχείου καταγραφής, την αποστολή ειδοποιήσεων ή κάτι άλλο. Το άγκιστρο τερματισμού πρέπει να χρησιμοποιηθεί για την εκτέλεση κώδικα πριν τερματιστεί η λειτουργία του JVM.
22) Ποιες είναι οι δύο κύριες χρήσεις του volatile στην Java;
Τα νήματα επιτρέπεται να διατηρούν τις τιμές των μεταβλητών στην τοπική μνήμη Εάν μια μεταβλητή επισημαίνεται ως πτητική, τότε κάθε φορά που χρησιμοποιείται η ίδια μεταβλητή, πρέπει να διαβάζεται από την κύρια μνήμη.
Με τον ίδιο τρόπο, κάθε φορά που γράφεται η μεταβλητή, η τιμή πρέπει να αποθηκεύεται στην κύρια μνήμη.
23) Πώς μπορείτε να μοιράζεστε δεδομένα μεταξύ δύο νημάτων στην Java;
Μπορούμε να λάβουμε δεδομένα μεταξύ νημάτων χρησιμοποιώντας ένα κοινόχρηστο αντικείμενο ή ταυτόχρονα δομή δεδομένων όπως το BlockingQueue. Εφαρμόζει ένα μοτίβο παραγωγού-καταναλωτή χρησιμοποιώντας την αναμονή και ειδοποιεί μεθόδους. Περιλαμβάνει επίσης την κοινή χρήση αντικειμένων μεταξύ δύο νημάτων.
24) Πώς μπορούν να ελεγχθούν πολλαπλά νήματα ταυτόχρονα;
Πολλά νήματα μπορούν να ελεγχθούν ταυτόχρονα εάν δημιουργηθούν σε ένα αντικείμενο ThreadGroup.
25) Τι είναι η μέθοδος αποκλεισμού στην Java;
Στη Java, η μέθοδος αποκλεισμού είναι μια μέθοδος που αποκλείει μέχρι να ολοκληρωθεί η εργασία. Για παράδειγμα, η μέθοδος αποδοχής () των μπλοκ ServerSocket μέχρι τη στιγμή που θα συνδεθεί ένας πελάτης. Εδώ, ο αποκλεισμός αναφέρεται σε οτιδήποτε ο έλεγχος δεν θα επιστρέψει στον καλούντα μέχρι να ολοκληρωθεί η εργασία.
26) Ποια είναι η κύρια διαφορά μεταξύ της μεθόδου αναμονής () και ύπνου ();
Περίμενε() | Υπνος() |
Αυτή η μέθοδος ορίζεται στην κλάση Object | Η μέθοδος ορίζεται στην κλάση Thread |
Η μέθοδος Wait() απελευθερώνει το κλείδωμα | Αυτή η μέθοδος δεν απελευθερώνει ποτέ την κλειδαριά. |
27) Τι είναι ένα αμετάβλητο αντικείμενο; Πώς μπορεί να βοηθήσει στη σύνταξη μιας ταυτόχρονης εφαρμογής;
Οποιοδήποτε αντικείμενο μπορεί να θεωρηθεί μη αμφισβητούμενο εάν η κατάστασή του δεν αλλάξει μετά την κατασκευή του. Τα αμετάβλητα αντικείμενα χρησιμοποιούνται για τη δημιουργία απλών, αξιόπιστων και ταυτόχρονων εφαρμογών.
Για τη δημιουργία αντικειμένου αμετάβλητου, είναι σημαντικό να γίνει η κλάση και το μέλος της τελικά, έτσι ώστε μόλις δημιουργηθούν αντικείμενα, η κατάστασή της να μην τροποποιηθεί.
28) Πες μου τη διαφορά μεταξύ υποχώρησης και ύπνου;
Όταν μια εργασία καλεί τη μέθοδο yield(), επιστρέφει στην κατάσταση ετοιμότητας.
Όταν μια εργασία καλεί τη μέθοδο της sleep(), επιστρέφει στην κατάσταση αναμονής.
29) Τι είναι το ThreadPool;
Το ThreadPool είναι μια ομάδα νημάτων που επαναχρησιμοποιεί έναν σταθερό αριθμό νημάτων για την εκτέλεση της συγκεκριμένης εργασίας.
30) Ποια είναι η χρήση της λέξης-κλειδιού Συγχρονισμένη;
Η συγχρονισμένη λέξη-κλειδί μπορεί να εφαρμοστεί είτε στη στατική είτε στη μη στατική μέθοδο. Χρησιμοποιώντας το Συγχρονισμένο μόνο ένα νήμα μπορεί να έχει πρόσβαση σε συγχρονισμένες μεθόδους. Ωστόσο, στην περίπτωση όπου υπάρχουν πολλά νήματα που προσπαθούν να αποκτήσουν πρόσβαση στην ίδια μέθοδο. Εκείνη τη στιγμή, άλλα νήματα πρέπει να περιμένουν για το νήμα εκτέλεσης. Παρέχει επίσης ένα κλείδωμα στο αντικείμενο για να αποτρέψει μια κατάσταση αγώνα.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Τι είναι μια πτητική λέξη-κλειδί;
Η πτητική λέξη-κλειδί είναι ένας προσδιορισμός που εφαρμόζεται σε μια μεταβλητή όταν δηλώνεται. Λέει στον μεταγλωττιστή ότι η τιμή της μεταβλητής μπορεί να αλλάξει ανά πάσα στιγμή – χωρίς να γίνει καμία ενέργεια από τον κώδικα.
32) Ποιες είναι οι κύριες διαφορές μεταξύ notify και notifyAll στην Java;
Η μέθοδος Notify () δεν παρέχει κανέναν τρόπο για να επιλέξετε ένα συγκεκριμένο νήμα, γι' αυτό είναι χρήσιμο μόνο όταν ένα μεμονωμένο while notifyAll() στέλνει μια ειδοποίηση σε όλα τα νήματα. Τους επιτρέπει επίσης να ανταγωνίζονται για κλειδαριές. Εξασφαλίζει επίσης ότι τουλάχιστον ένα νήμα θα προχωρήσει περαιτέρω.
33) Ποια παράμετρος JVM χρησιμοποιείται για τον έλεγχο του μεγέθους στοίβας ενός νήματος;
Για τον έλεγχο του μεγέθους στοίβας του Thread σε Java χρησιμοποιείται η παράμετρος Xss.
34) Μπορείτε να ξεκινήσετε ένα νήμα δύο φορές σε Java;
Όχι, μόλις ξεκινήσει ένα νήμα, δεν μπορεί να ξεκινήσει τη δεύτερη φορά.
35) Ποιος είναι ο σκοπός της χρήσης της μεθόδου απόδοσης της κλάσης νήματος;
Η μέθοδος απόδοσης είναι ο απλούστερος τρόπος για να ζητήσετε από το τρέχον νήμα να εγκαταλείψετε την CPU έτσι ώστε το άλλο νήμα. Είναι μια στατική μέθοδος και εγγυάται μόνο ότι το τρέχον νήμα θα εγκαταλείψει την CPU, αλλά δεν λέει τίποτα για το ποιο άλλο νήμα επηρεάζει επίσης την CPU.
36) Πότε μπορούμε να πούμε ότι τα νήματα δεν είναι ελαφριά διαδικασία στη java;
Τα νήματα δεν είναι ελαφριά διαδικασία όταν τα νήματα της ίδιας διαδικασίας εκτελούνται ταυτόχρονα. Αν και, εάν τα νήματα διαφορετικών διεργασιών εκτελούνται ταυτόχρονα εκείνη τη στιγμή, τα νήματα γίνονται μια διαδικασία βαρέων βαρών.
37) Μπορεί να είναι δυνατός ο συγχρονισμός του κατασκευαστή μιας κλάσης Java;
Ως Πρότυπο Java, οι κατασκευαστές δεν μπορούν να συγχρονιστούν καθώς άλλα νήματα δεν μπορούν να δουν το αντικείμενο πριν το ολοκληρώσει η διαδικασία δημιουργίας νήματος. Δεν χρειάζεται να συγχρονιστεί ο κατασκευαστής Java Objects αφού όπως θα κλειδώσει το αντικείμενο που κατασκευάζεται.
38) Τι είναι η μεταβατική μεταβλητή;
Μια μεταβατική μεταβλητή είναι μια μεταβλητή που δεν μπορεί να σειριοποιηθεί κατά τη σειριοποίηση. Αρχικοποιείται στην προεπιλεγμένη τιμή του κατά τη σειριοποίηση.
Αυτές οι ερωτήσεις συνέντευξης θα βοηθήσουν επίσης στο viva (προφορικά) σας
Hii
με βοηθάει πραγματικά. κατά την προετοιμασία της συνέντευξης.
Είναι πραγματικά αξιέπαινο να γράψετε αυτό το άρθρο και να παρέχετε αυτές τις πληροφορίες.
Συνιστάται να
5) Ποιες είναι οι καταστάσεις του νήματος;
Το Runnable δεν είναι κατάσταση εκτέλεσης. Είναι έτοιμο να τρέξει
ενημερώθηκε! Ευχαριστώ που το επισήμανες
1. Οι καταστάσεις με δυνατότητα εκτέλεσης θεωρούνται ως διπλό στρώμα σε επίπεδο λειτουργικού συστήματος
2.Σχεδόν όλες οι γλώσσες προγραμματισμού βλέπουν το νήμα ως εκτελούμενο ή ΟΧΙ.
3. Ένα νήμα με δυνατότητα εκτέλεσης μπορεί είτε να βρίσκεται σε κατάσταση (έτοιμο ή σε λειτουργία).
4.Θα μπορούσατε να έχετε δύο νήματα σε καταστάσεις με δυνατότητα εκτέλεσης, αλλά μόνο ένα νήμα θα υπάρχει σε κατάσταση "εκτέλεσης",
ενώ το δεύτερο νήμα υπάρχει σε κατάσταση «τρέξιμο».