top 50 c interview questions with answers
Συχνές ερωτήσεις βασικών ερωτήσεων συνέντευξης C # σχετικά με τον προγραμματισμό και την κωδικοποίηση:
Το C # είναι μια γλώσσα προγραμματισμού που έχει αναπτυχθεί γρήγορα και χρησιμοποιείται επίσης ευρέως. Είναι σε υψηλή ζήτηση, ευπροσάρμοστο και υποστηρίζει cross-platform επίσης.
Δεν χρησιμοποιείται μόνο για παράθυρα αλλά και πολλά άλλα λειτουργικά συστήματα. Ως εκ τούτου, είναι πολύ σημαντικό να έχουμε μια καλή κατανόηση αυτής της γλώσσας για να προσγειωθείτε σε οποιαδήποτε εργασία στη βιομηχανία δοκιμών λογισμικού.
Παρακάτω αναφέρονται δεν είναι μόνο ένα σύνολο από τις πιο συχνές ερωτήσεις του C #, αλλά και μερικά πολύ σημαντικά θέματα που πρέπει να κατανοήσουμε ότι ξεχωρίζουν από το πλήθος του C # πληθυσμού.
Καθώς το C # είναι ένα τεράστιο θέμα, για την ευκολία αντιμετώπισης όλων των εννοιών, έχω χωρίσει αυτό το θέμα σε τρία μέρη όπως αναφέρεται παρακάτω:
- Ερωτήσεις για βασικές έννοιες
- Ερωτήσεις για πίνακες και χορδές
- Προηγμένες έννοιες
Αυτό το άρθρο περιλαμβάνει ένα σύνολο κορυφαίων ερωτήσεων και απαντήσεων σε συνέντευξη 50 C # που καλύπτουν σχεδόν όλα τα σημαντικά θέματα με απλούς όρους, προκειμένου να σας βοηθήσουν να προετοιμαστείτε για τη συνέντευξή σας.
Τι θα μάθετε:
Οι πιο δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης C #
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ
Q # 1) Τι είναι ένα αντικείμενο και μια τάξη;
Απάντηση: Το Class είναι μια ενθυλάκωση ιδιοτήτων και μεθόδων που χρησιμοποιούνται για την αναπαράσταση οντότητας σε πραγματικό χρόνο. Πρόκειται για μια δομή δεδομένων που συγκεντρώνει όλες τις παρουσίες σε μία μονάδα.
Το αντικείμενο ορίζεται ως παρουσία μιας κλάσης. Από τεχνική άποψη, είναι απλώς ένα τεμάχιο μνήμης που διατίθεται που μπορεί να αποθηκευτεί με τη μορφή μεταβλητών, πίνακα ή συλλογής.
Q # 2) Ποιες είναι οι βασικές έννοιες OOP;
Απάντηση: Οι τέσσερις βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού είναι:
- Ενθυλάκωση : Εδώ, η εσωτερική αναπαράσταση ενός αντικειμένου κρύβεται από την προβολή εκτός του ορισμού του αντικειμένου. Μόνο οι απαιτούμενες πληροφορίες είναι προσβάσιμες, ενώ η υπόλοιπη εφαρμογή δεδομένων είναι κρυφή.
- Αφαίρεση: Είναι μια διαδικασία αναγνώρισης της κρίσιμης συμπεριφοράς και δεδομένων ενός αντικειμένου και εξάλειψης των άσχετων λεπτομερειών.
- Κληρονομία : Είναι η δυνατότητα δημιουργίας νέων τάξεων από άλλη τάξη. Αυτό γίνεται με πρόσβαση, τροποποίηση και επέκταση της συμπεριφοράς των αντικειμένων στη μητρική τάξη.
- Πολυμορφισμός : Το όνομα σημαίνει, ένα όνομα, πολλές μορφές. Επιτυγχάνεται με την ύπαρξη πολλαπλών μεθόδων με το ίδιο όνομα αλλά με διαφορετικές υλοποιήσεις.
Q # 3) Τι είναι ο κωδικός Managed και Unmanaged;
Απάντηση: Ο διαχειριζόμενος κώδικας είναι ένας κώδικας που εκτελείται από το CLR (Common Language Runtime), δηλαδή όλος ο κωδικός εφαρμογής βασίζεται στην πλατφόρμα .Net. Θεωρείται ότι διαχειρίζεται λόγω του .Net πλαισίου που χρησιμοποιεί εσωτερικά τον συλλέκτη απορριμμάτων για την εκκαθάριση της αχρησιμοποίητης μνήμης.
Ο μη διαχειριζόμενος κώδικας είναι οποιοσδήποτε κώδικας που εκτελείται από το χρόνο εκτέλεσης της εφαρμογής οποιουδήποτε άλλου πλαισίου εκτός από το .Net. Ο χρόνος εκτέλεσης της εφαρμογής θα φροντίζει τη μνήμη, την ασφάλεια και άλλες λειτουργίες απόδοσης.
Q # 4) Τι είναι μια διεπαφή;
Απάντηση: Η διεπαφή είναι μια τάξη χωρίς εφαρμογή. Το μόνο πράγμα που περιέχει είναι η δήλωση μεθόδων, ιδιοτήτων και συμβάντων.
Q # 5) Ποιοι είναι οι διαφορετικοί τύποι τάξεων στο C #;
Απάντηση: Οι διαφορετικοί τύποι τάξεων στο C # είναι:
- Μερική τάξη: Επιτρέπει στα μέλη του να διαιρούνται ή να μοιράζονται με πολλά αρχεία .cs. Συμβολίζεται με τη λέξη-κλειδί Μερικός.
- Σφραγισμένη τάξη: Είναι μια τάξη που δεν μπορεί να κληρονομηθεί. Για να αποκτήσετε πρόσβαση στα μέλη μιας κλειστής τάξης, πρέπει να δημιουργήσουμε το αντικείμενο της τάξης. Συμβολίζεται με τη λέξη-κλειδί Σφραγισμένο .
- Περίληψη τάξη : Είναι μια τάξη του οποίου το αντικείμενο δεν μπορεί να τεκμηριωθεί. Η τάξη μπορεί να κληρονομηθεί μόνο. Θα πρέπει να περιέχει τουλάχιστον μία μέθοδο. Συμβολίζεται με τη λέξη-κλειδί αφηρημένη .
- Στατική τάξη : Είναι μια τάξη που δεν επιτρέπει κληρονομιά. Τα μέλη της τάξης είναι επίσης στατικά. Συμβολίζεται με τη λέξη-κλειδί στατικός . Αυτή η λέξη-κλειδί λέει στον μεταγλωττιστή να ελέγξει για τυχόν τυχαίες παρουσίες της στατικής τάξης.
Ε # 6) Εξηγήστε τη συλλογή κωδικών στο C #.
Απάντηση: Η σύνταξη κώδικα στο C # περιλαμβάνει τα ακόλουθα τέσσερα βήματα:
- Σύνταξη του πηγαίου κώδικα σε διαχειριζόμενο κώδικα από C # compiler.
- Συνδυάζοντας τον πρόσφατα δημιουργημένο κώδικα σε συγκροτήματα.
- Φόρτωση του χρόνου εκτέλεσης της κοινής γλώσσας (CLR).
- Εκτέλεση της συναρμολόγησης από CLR.
Ε # 7) Ποιες είναι οι διαφορές μεταξύ μιας κλάσης και μιας δομής;
Απάντηση: Παρακάτω δίνονται οι διαφορές μεταξύ κλάσης και δομής:
Τάξη | Δομή |
---|---|
Υποστηρίζει κληρονομικότητα | Δεν υποστηρίζει την κληρονομικότητα |
Το Class είναι Pass by αναφορά (τύπος αναφοράς) | Το Struct is Pass by Copy (Τύπος τιμής) |
Τα μέλη είναι ιδιωτικά από προεπιλογή | Τα μέλη είναι δημόσια από προεπιλογή |
Καλό για μεγαλύτερα σύνθετα αντικείμενα | Καλό για μικρά απομονωμένα μοντέλα |
Μπορεί να χρησιμοποιήσει συλλέκτη απορριμμάτων για διαχείριση μνήμης | Δεν είναι δυνατή η χρήση του συλλέκτη απορριμμάτων και ως εκ τούτου δεν υπάρχει διαχείριση μνήμης |
Q # 8) Ποια είναι η διαφορά μεταξύ της μεθόδου Virtual και της μεθόδου Abstract;
Απάντηση: Η εικονική μέθοδος πρέπει πάντα να έχει μια προεπιλεγμένη εφαρμογή. Ωστόσο, μπορεί να παρακαμφθεί στην παράγωγη κατηγορία, αν και δεν είναι υποχρεωτική. Μπορεί να παρακαμφθεί χρησιμοποιώντας το καταπατώ λέξη-κλειδί.
Μια αφηρημένη μέθοδος δεν έχει εφαρμογή. Βρίσκεται στην αφηρημένη τάξη. Είναι υποχρεωτικό η παράγωγη τάξη να εφαρμόζει την αφηρημένη μέθοδο. Ενα καταπατώ Η λέξη-κλειδί δεν είναι απαραίτητη εδώ αν και μπορεί να χρησιμοποιηθεί.
Q # 9) Εξηγήστε τους χώρους ονομάτων στο C #.
Απάντηση: Χρησιμοποιούνται για την οργάνωση μεγάλων έργων κώδικα. Το 'Σύστημα' είναι ο πιο διαδεδομένος χώρος ονομάτων στο C #. Μπορούμε να δημιουργήσουμε τον δικό μας χώρο ονομάτων και μπορούμε επίσης να χρησιμοποιήσουμε έναν χώρο ονομάτων σε έναν άλλο, ο οποίος ονομάζεται Nested Namespaces.
Συμβολίζονται με τη λέξη-κλειδί 'namespace'.
Q # 10) Τι είναι η δήλωση «χρησιμοποιώντας» στο C #;
Απάντηση: Η λέξη-κλειδί «Χρήση» σημαίνει ότι ο συγκεκριμένος χώρος ονομάτων χρησιμοποιείται από το πρόγραμμα.
Για παράδειγμα, χρησιμοποιώντας το Σύστημα
Εδώ, Σύστημα είναι ένας χώρος ονομάτων. Η τάξη Console ορίζεται στο System. Έτσι, μπορούμε να χρησιμοποιήσουμε το console.writeline (“….”) Ή την ανάγνωση στο πρόγραμμά μας.
Ερ # 11) Εξηγήστε την αφαίρεση.
Απάντηση: Η αφαίρεση είναι μία από τις έννοιες του OOP. Χρησιμοποιείται για την εμφάνιση μόνο των βασικών χαρακτηριστικών της τάξης και την απόκρυψη περιττών πληροφοριών.
Ας πάρουμε ένα παράδειγμα αυτοκινήτου:
Ο οδηγός του αυτοκινήτου πρέπει να γνωρίζει τις λεπτομέρειες σχετικά με το αυτοκίνητο, όπως χρώμα, όνομα, καθρέφτης, τιμόνι, γρανάζι, φρένο κ.λπ. Αυτό που δεν χρειάζεται να γνωρίζει είναι ένας εσωτερικός κινητήρας, σύστημα εξάτμισης.
Έτσι, η αφαίρεση βοηθά στο να ξέρει τι είναι απαραίτητο και να κρύβει τις εσωτερικές λεπτομέρειες από τον έξω κόσμο. Η απόκρυψη των εσωτερικών πληροφοριών μπορεί να επιτευχθεί δηλώνοντας παραμέτρους ως Ιδιωτικές χρησιμοποιώντας το ιδιωτικός λέξη-κλειδί.
Ε # 12) Εξηγήστε τον πολυμορφισμό;
Απάντηση: Προγραμματικά, ο πολυμορφισμός σημαίνει την ίδια μέθοδο αλλά διαφορετικές υλοποιήσεις. Είναι 2 τύπων, Compile-time και Runtime.
- Πολυμορφισμός μεταγλώττισης επιτυγχάνεται με υπερφόρτωση χειριστή.
- Πολυμορφισμός χρόνου εκτέλεσης επιτυγχάνεται με παράκαμψη. Οι κληρονομικότητες και οι εικονικές συναρτήσεις χρησιμοποιούνται κατά τη διάρκεια του πολυμορφισμού χρόνου εκτέλεσης.
Για παράδειγμα ,Εάν μια τάξη έχει μια μέθοδο Void Add (), ο πολυμορφισμός επιτυγχάνεται με υπερφόρτωση της μεθόδου, δηλαδή, η κενή Προσθήκη (int a, int b), η κενή Προσθήκη (int add) είναι όλες υπερφορτωμένες μέθοδοι.
Ε # 13) Πώς εφαρμόζεται ο Χειρισμός Εξαίρεσης στο C #;
Απάντηση: Ο χειρισμός της εξαίρεσης γίνεται χρησιμοποιώντας τέσσερις λέξεις-κλειδιά στο C #:
- δοκιμάστε : Περιέχει ένα μπλοκ κώδικα για το οποίο θα ελεγχθεί μια εξαίρεση.
- σύλληψη : Είναι ένα πρόγραμμα που λαμβάνει μια εξαίρεση με τη βοήθεια του χειριστή εξαιρέσεων.
- τελικά : Είναι ένα μπλοκ κώδικα που γράφεται για εκτέλεση ανεξάρτητα από το εάν υπάρχει εξαίρεση ή όχι.
- Βολή : Ρίχνει μια εξαίρεση όταν παρουσιάζεται ένα πρόβλημα.
Q # 14) Τι είναι τα μαθήματα C # I / O; Ποιες είναι οι κοινές τάξεις εισόδου / εξόδου;
Απάντηση: Το C # έχει χώρο ονομάτων System.IO, που αποτελείται από κλάσεις που χρησιμοποιούνται για την εκτέλεση διαφόρων λειτουργιών σε αρχεία όπως δημιουργία, διαγραφή, άνοιγμα, κλείσιμο κ.λπ.
Μερικές κοινές τάξεις εισόδου / εξόδου είναι:
- Αρχείο - Βοηθά στη διαχείριση ενός αρχείου.
- StreamWriter - Χρησιμοποιείται για τη σύνταξη χαρακτήρων σε μια ροή.
- StreamReader - Χρησιμοποιείται για την ανάγνωση χαρακτήρων σε μια ροή.
- StringWriter - Χρησιμοποιείται για την ανάγνωση ενός buffer συμβολοσειράς.
- StringReader - Χρησιμοποιείται για τη σύνταξη ενός buffer συμβολοσειράς.
- Μονοπάτι - Χρησιμοποιείται για την εκτέλεση λειτουργιών που σχετίζονται με τις πληροφορίες διαδρομής.
Q # 15) Τι είναι η τάξη StreamReader / StreamWriter;
Απάντηση: Το StreamReader και το StreamWriter είναι κλάσεις του namespace System.IO. Χρησιμοποιούνται όταν θέλουμε να διαβάσουμε ή να γράψουμε τα χαρακτηριστικά90, βάση δεδομένων αναγνώστη, αντίστοιχα.
Μερικά από τα μέλη του StreamReader είναι: Κλείσιμο (), ανάγνωση (), ανάγνωση ().
Τα μέλη του StreamWriter είναι: Κλείσιμο (), Εγγραφή (), Γραφή ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
Q # 16) Τι είναι ο Καταστροφέας στο C #;
Απάντηση: Το Destructor χρησιμοποιείται για τον καθαρισμό της μνήμης και την απελευθέρωση των πόρων. Αλλά στο C # αυτό γίνεται μόνο από τον συλλέκτη απορριμμάτων. Το System.GC.Collect () καλείται εσωτερικά για καθαρισμό. Αλλά μερικές φορές μπορεί να είναι απαραίτητη η χειροκίνητη εφαρμογή καταστροφών.
Για παράδειγμα:
~Car() { Console.writeline(“….”); }
Q # 17) Τι είναι μια αφηρημένη τάξη;
Απάντηση: Μια αφηρημένη κλάση είναι μια κλάση που συμβολίζεται με αφηρημένη λέξη-κλειδί και μπορεί να χρησιμοποιηθεί μόνο ως βασική τάξη. Αυτή η τάξη πρέπει πάντα να κληρονομείται. Δεν είναι δυνατή η δημιουργία μιας παρουσίας της ίδιας της τάξης. Εάν δεν θέλουμε κανένα πρόγραμμα να δημιουργήσει ένα αντικείμενο μιας τάξης, τότε τέτοιες τάξεις μπορούν να γίνουν αφηρημένες.
Οποιαδήποτε μέθοδος στην αφηρημένη κλάση δεν έχει υλοποιήσεις στην ίδια κλάση. Αλλά πρέπει να εφαρμοστούν στην παιδική τάξη.
Για παράδειγμα:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Όλες οι μέθοδοι σε μια αφηρημένη τάξη είναι έμμεσα εικονικές μέθοδοι. Ως εκ τούτου, η εικονική λέξη-κλειδί δεν πρέπει να χρησιμοποιείται με μεθόδους στην αφηρημένη τάξη.
Q # 18) Τι είναι η εγκιβωτισμός και η απελευθέρωση;
Απάντηση: Η μετατροπή ενός τύπου τιμής σε τύπο αναφοράς ονομάζεται Boxing.
Για παράδειγμα:
int Value1 - = 10;
//----Πυγμαχία------//
αντικείμενο boxedValue = Value1;
Η ρητή μετατροπή του ίδιου τύπου αναφοράς (δημιουργήθηκε με πυγμαχία) επιστρέφεται σε τύπο τιμής καλείται Αποσύνδεση .
Για παράδειγμα:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
sql συνεντεύξεις ερωτήσεις και απαντήσεις για τους νεότερους
Q # 19) Ποια είναι η διαφορά μεταξύ Συνέχεια και Διακοπή δήλωσης;
Απάντηση: Η δήλωση διακοπής σπάει το βρόχο. Κάνει τον έλεγχο του προγράμματος για έξοδο από το βρόχο. Η δήλωση συνέχισης κάνει τον έλεγχο του προγράμματος για έξοδο μόνο από την τρέχουσα επανάληψη. Δεν σπάει το βρόχο.
Q # 20) Ποια είναι η διαφορά μεταξύ του μπλοκ τελικά και οριστικοποίησης;
Απάντηση: τελικά Το block καλείται μετά την εκτέλεση του block και catch. Χρησιμοποιείται για χειρισμό εξαιρέσεων. Ανεξάρτητα από το αν μια εξαίρεση έχει παγιδευτεί ή όχι, αυτό το μπλοκ κώδικα θα εκτελεστεί. Συνήθως, αυτό το μπλοκ θα έχει κωδικό καθαρισμού.
Η μέθοδος οριστικοποίησης καλείται λίγο πριν από τη συλλογή απορριμμάτων. Χρησιμοποιείται για την εκτέλεση εργασιών καθαρισμού μη διαχειριζόμενου κώδικα. Καλείται αυτόματα όταν μια δεδομένη παρουσία δεν καλείται στη συνέχεια.
Πίνακες και χορδές
Q # 21) Τι είναι μια σειρά; Δώστε τη σύνταξη για έναν μονό και πολυδιάστατο πίνακα;
Απάντηση: Ένα Array χρησιμοποιείται για την αποθήκευση πολλαπλών μεταβλητών του ίδιου τύπου. Είναι μια συλλογή μεταβλητών που αποθηκεύονται σε μια γειτονική θέση μνήμης.
Για παράδειγμα:
διπλοί αριθμοί = νέο διπλό (10);
int () σκορ = νέο int (4) {25,24,23,25};
Ένας μονοδιάστατος πίνακας είναι ένας γραμμικός πίνακας όπου οι μεταβλητές αποθηκεύονται σε μία μόνο σειρά. Πάνω από παράδειγμα είναι ένας μονοδιάστατος πίνακας.
Οι πίνακες μπορούν να έχουν περισσότερες από μία ιδιότητες. Οι πολυδιάστατες συστοιχίες ονομάζονται επίσης ορθογώνιες συστοιχίες.
Για παράδειγμα , int (,) number = νέο int (3,2) {{1,2}, {2,3}, {3,4}};
Q # 22) Τι είναι η Jagged Array;
Απάντηση: Ο Jagged πίνακας είναι ένας πίνακας του οποίου τα στοιχεία είναι πίνακες. Ονομάζεται επίσης ως πίνακας συστοιχιών. Μπορεί να είναι μεμονωμένες ή πολλαπλές διαστάσεις.
int () jaggedArray = νέο int (4) ();
Q # 23) Ονομάστε μερικές ιδιότητες του Array.
Απάντηση: Οι ιδιότητες μιας σειράς περιλαμβάνουν:
- Μήκος: Παίρνει τον συνολικό αριθμό στοιχείων σε έναν πίνακα.
- IsFixedSize: Ενημερώνει εάν ο πίνακας έχει σταθερό μέγεθος ή όχι.
- IsReadOnly : Λέει αν ο πίνακας είναι μόνο για ανάγνωση ή όχι.
Q # 24) Τι είναι το Array Class;
Απάντηση: Η κατηγορία Array είναι η βασική κατηγορία για όλες τις συστοιχίες. Παρέχει πολλές ιδιότητες και μεθόδους. Είναι παρόν στο σύστημα namespace.
Q # 25) Τι είναι μια συμβολοσειρά; Ποιες είναι οι ιδιότητες μιας σειράς String;
Απάντηση: Το String είναι μια συλλογή αντικειμένων char. Μπορούμε επίσης να δηλώσουμε μεταβλητές συμβολοσειρών στο c #.
string name = 'C # Ερωτήσεις';
Μια κλάση συμβολοσειρών στο C # αντιπροσωπεύει μια συμβολοσειρά. Οι ιδιότητες της κλάσης συμβολοσειρών είναι:
- Οστεοφυλάκιο λάβετε το αντικείμενο Char στην τρέχουσα συμβολοσειρά.
- Μήκος λαμβάνει τον αριθμό των αντικειμένων στην τρέχουσα συμβολοσειρά.
Q # 26) Τι είναι μια ακολουθία διαφυγής; Ονομάστε μερικές ακολουθίες διαφυγής String στο C #.
Απάντηση: Μια ακολουθία διαφυγής συμβολίζεται με κάθετο (). Η ανάστροφη κάθετο υποδηλώνει ότι ο χαρακτήρας που ακολουθεί πρέπει να ερμηνεύεται κυριολεκτικά ή να είναι ένας ειδικός χαρακτήρας. Μια ακολουθία διαφυγής θεωρείται ως ένας μοναδικός χαρακτήρας.
Οι ακολουθίες διαφυγής συμβολοσειράς έχουν ως εξής:
- n - Χαρακτήρας νέας γραμμής
- b - Backspace
- \ - ανάστροφη κάθετο
- '- Ενιαία προσφορά
- '' - Διπλό απόσπασμα
Q # 27) Τι είναι οι τυπικές εκφράσεις; Αναζήτηση μιας συμβολοσειράς χρησιμοποιώντας κανονικές εκφράσεις;
Απάντηση: Η κανονική έκφραση είναι ένα πρότυπο που ταιριάζει με ένα σύνολο εισόδων. Το σχέδιο μπορεί να αποτελείται από τελεστές, κατασκευές ή χαρακτήρες χαρακτήρων. Το Regex χρησιμοποιείται για την ανάλυση συμβολοσειρών και την αντικατάσταση της συμβολοσειράς χαρακτήρων.
Για παράδειγμα:
* ταιριάζει με τον προηγούμενο χαρακτήρα μηδέν ή περισσότερες φορές. Έτσι, ένα regex * b είναι ισοδύναμο με το b, ab, aab, aaab και ούτω καθεξής.
Αναζήτηση μιας συμβολοσειράς χρησιμοποιώντας το Regex:
static void Main(string() args) { string() languages = { 'C#', 'Python', 'Java' }; foreach(string s in languages) { if(System.Text.RegularExpressions.Regex.IsMatch(s,'Python')) { Console.WriteLine('Match found'); } } }
Το παραπάνω παράδειγμα αναζητά το 'Python' έναντι του συνόλου των εισόδων από τον πίνακα γλωσσών. Χρησιμοποιεί το Regex.IsMatch που επιστρέφει αληθές σε περίπτωση που το μοτίβο βρίσκεται στην είσοδο. Το μοτίβο μπορεί να είναι οποιαδήποτε κανονική έκφραση που αντιπροσωπεύει την είσοδο που θέλουμε να ταιριάξουμε.
Q # 28) Ποιες είναι οι βασικές λειτουργίες String; Εξηγώ.
Απάντηση: Μερικές από τις βασικές λειτουργίες συμβολοσειρών είναι:
- Συνδυάστε : Δύο συμβολοσειρές μπορούν να συνδυαστούν είτε χρησιμοποιώντας System.String.Concat είτε χρησιμοποιώντας + χειριστή.
- Τροποποιώ : Το Replace (a, b) χρησιμοποιείται για την αντικατάσταση μιας συμβολοσειράς με μια άλλη συμβολοσειρά. Η περικοπή () χρησιμοποιείται για την περικοπή της συμβολοσειράς στο τέλος ή στην αρχή.
- Συγκρίνω : Το System.StringComparison () χρησιμοποιείται για να συγκρίνει δύο χορδές, είτε μια σύγκριση πεζών-κεφαλαίων είτε όχι με διάκριση πεζών-κεφαλαίων. Χρειάζεται κυρίως δύο παράμετροι, η αρχική συμβολοσειρά και η συμβολοσειρά για σύγκριση.
- Αναζήτηση : Οι μέθοδοι StartWith, EndsWith χρησιμοποιούνται για την αναζήτηση μιας συγκεκριμένης συμβολοσειράς.
Q # 29) Τι είναι η ανάλυση; Πώς να αναλύσετε μια συμβολοσειρά ώρας ημερομηνίας;
Απάντηση: Η ανάλυση μετατρέπει μια συμβολοσειρά σε άλλο τύπο δεδομένων.
Για παράδειγμα:
κείμενο συμβολοσειράς = '500';
int num = int.Parse (κείμενο);
Το 500 είναι ακέραιος. Έτσι, η μέθοδος Parse μετατρέπει τη συμβολοσειρά 500 σε δικό της τύπο βάσης, δηλαδή int.
Ακολουθήστε την ίδια μέθοδο για να μετατρέψετε μια συμβολοσειρά DateTime.
string dateTime = '1 Ιανουαρίου 2018';
DateTime parsedValue = DateTime.Parse (dateTime);
Προηγμένες έννοιες
Q # 30) Τι είναι ένας εκπρόσωπος; Εξηγώ.
Απάντηση: Το Delegate είναι μια μεταβλητή που κρατά την αναφορά σε μια μέθοδο. Ως εκ τούτου, είναι δείκτης συνάρτησης ή τύπος αναφοράς. Όλοι οι εκπρόσωποι προέρχονται από το χώρο ονομάτων System.Delegate. Τόσο το Delegate όσο και η μέθοδος στην οποία αναφέρεται μπορεί να έχουν την ίδια υπογραφή.
- Δήλωση εκπροσώπου: δημόσιος εκπρόσωπος άκυρη AddNumbers (int n)?
Μετά τη δήλωση ενός πληρεξούσιου, το αντικείμενο πρέπει να δημιουργηθεί από τον πληρεξούσιο χρησιμοποιώντας τη νέα λέξη-κλειδί.
AddNumbers an1 = νέα AddNumbers (αριθμός);
Ο πληρεξούσιος παρέχει ένα είδος ενθυλάκωσης στη μέθοδο αναφοράς, η οποία θα κληθεί εσωτερικά όταν καλείται ένας εκπρόσωπος.
public delegate int myDel(int number); public class Program { public int AddNumbers(int a) { int Sum = a + 10; return Sum; } public void Start() { myDel DelgateExample = AddNumbers; } }
Στο παραπάνω παράδειγμα, έχουμε έναν εκπρόσωπο myDel που παίρνει μια ακέραια τιμή ως παράμετρο. Το Class Program έχει μια μέθοδο της ίδιας υπογραφής με τον πληρεξούσιο, που ονομάζεται AddNumbers ().
Εάν υπάρχει μια άλλη μέθοδος που ονομάζεται Έναρξη () που δημιουργεί ένα αντικείμενο του πληρεξούσιου, τότε το αντικείμενο μπορεί να αντιστοιχιστεί στο AddNumbers καθώς έχει την ίδια υπογραφή με εκείνη του πληρεξούσιου.
Q # 31) Τι είναι τα γεγονότα;
Απάντηση: Τα συμβάντα είναι ενέργειες χρήστη που δημιουργούν ειδοποιήσεις στην εφαρμογή στην οποία πρέπει να ανταποκριθεί. Οι ενέργειες του χρήστη μπορεί να είναι κινήσεις ποντικιού, πάτημα πλήκτρων και ούτω καθεξής.
Προγραμματικά, μια τάξη που δημιουργεί ένα συμβάν ονομάζεται εκδότης και μια τάξη που αποκρίνεται / λαμβάνει το συμβάν ονομάζεται συνδρομητής. Το συμβάν θα πρέπει να έχει τουλάχιστον έναν συνδρομητή αλλιώς το γεγονός δεν αυξάνεται ποτέ.
Οι εκπρόσωποι χρησιμοποιούνται για τη δήλωση εκδηλώσεων.
Οι εκπρόσωποι του δημοσίου δεν είναι έγκυροι αριθμοί εκτύπωσης ();
Εκτύπωση εκδηλώσεων myEvent;
Q # 32) Πώς να χρησιμοποιήσετε τους Εκπροσώπους με Εκδηλώσεις;
Απάντηση: Οι εκπρόσωποι χρησιμοποιούνται για να αυξήσουν τα γεγονότα και να τα χειριστούν. Πάντα ένας εκπρόσωπος πρέπει να δηλώνεται πρώτα και μετά να δηλώνονται τα Γεγονότα.
Ας δούμε ένα παράδειγμα:
Σκεφτείτε μια τάξη που ονομάζεται Patient. Εξετάστε δύο άλλες κατηγορίες, την Ασφάλιση και την Τράπεζα που απαιτούν πληροφορίες Θανάτου του Ασθενούς από την κατηγορία ασθενών Εδώ, οι Ασφάλειες και η Τράπεζα είναι οι συνδρομητές και η κατηγορία Ασθενών γίνεται ο Εκδότης. Ενεργοποιεί το συμβάν θανάτου και οι άλλες δύο τάξεις θα πρέπει να λάβουν το συμβάν.
namespace ConsoleApp2 { public class Patient { public delegate void deathInfo();//Declaring a Delegate// public event deathInfo deathDate;//Declaring the event// public void Death() { deathDate(); } } public class Insurance { Patient myPat = new Patient(); void GetDeathDetails() { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetDeathDetails----------// myPat.deathDate += GetDeathDetails; } } public class Bank { Patient myPat = new Patient(); void GetPatInfo () { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetPatInfo ----------// myPat.deathDate += GetPatInfo; } } }
Q # 33) Ποιοι είναι οι διαφορετικοί τύποι Αντιπροσώπων;
Απάντηση: Διαφορετικοί τύποι Αντιπροσώπων είναι:
- Ενιαίος εκπρόσωπος : Εκπρόσωπος που μπορεί να καλέσει μια μεμονωμένη μέθοδο.
- Αντιπρόσωπος πολλαπλής διανομής : Εκπρόσωπος που μπορεί να καλέσει πολλές μεθόδους. Οι χειριστές + και - χρησιμοποιούνται για να εγγραφούν και να διαγραφούν αντίστοιχα.
- Γενικός αντιπρόσωπος : Δεν απαιτεί να οριστεί μια παρουσία του εκπροσώπου. Είναι τριών τύπων, Action, Funcs και Predicate.
- Δράση - Στο παραπάνω παράδειγμα εκπροσώπων και εκδηλώσεων, μπορούμε να αντικαταστήσουμε τον ορισμό του εκπροσώπου και του συμβάντος χρησιμοποιώντας τη λέξη-κλειδί Action. Ο Εκπρόσωπος δράσης ορίζει μια μέθοδο που μπορεί να ζητηθεί σε ορίσματα αλλά δεν επιστρέφει αποτέλεσμα
Δημόσιος εκπρόσωπος άκυρο deathInfo ();
Δημόσιο συμβάν deathInfo deathΗμερομηνία;
// Αντικατάσταση με ενέργεια //
Δημόσια εκδήλωση Action deathDate;
Η δράση αναφέρεται σιωπηρά σε έναν εκπρόσωπο.
-
- λειτουργίες - Ένας εκπρόσωπος Func ορίζει μια μέθοδο που μπορεί να κληθεί σε ορίσματα και επιστρέφει ένα αποτέλεσμα.
Διασκεδάστε το myDel είναι το ίδιο όπως εξουσιοδότηση bool myDel (int a, string b);
-
- Κατηγορούμενο - Καθορίζει μια μέθοδο που μπορεί να κληθεί σε ορίσματα και πάντα επιστρέφει το bool.
Βραβείο myDel είναι το ίδιο όπως εξουσιοδότηση bool myDel (string s);
Q # 34) Τι σημαίνουν οι Αντιπρόσωποι Multicast;
Απάντηση: Ένας πληρεξούσιος που δείχνει περισσότερες από μία μεθόδους ονομάζεται Αντιπρόσωπος πολλαπλής διανομής. Η πολλαπλή μετάδοση επιτυγχάνεται χρησιμοποιώντας το χειριστή + και + =.
Εξετάστε το παράδειγμα από το Q # 32.
Υπάρχουν δύο συνδρομητές για deathEvent, GetPatInfo , και GetDeathDetails . Και ως εκ τούτου χρησιμοποιήσαμε το χειριστή + =. Σημαίνει όποτε το myDel καλείται, και οι δύο συνδρομητές καλούν. Οι εκπρόσωποι θα κληθούν με τη σειρά με την οποία προστίθενται.
Ερώτηση # 35) Εξηγήστε εκδότες και συνδρομητές σε εκδηλώσεις.
Απάντηση: Ο εκδότης είναι μια τάξη υπεύθυνη για τη δημοσίευση ενός μηνύματος διαφορετικών τύπων άλλων τάξεων. Το μήνυμα δεν είναι παρά Εκδήλωση όπως συζητήθηκε στις παραπάνω ερωτήσεις.
Από το Παράδειγμα στο Q # 32, το Class Patient είναι η κατηγορία Publisher. Δημιουργεί ένα συμβάν Εκδήλωση θανάτου , το οποίο λαμβάνεται από τις άλλες τάξεις.
Οι συνδρομητές καταγράφουν το μήνυμα του τύπου που του ενδιαφέρει. Και πάλι, από το Παράδειγμα του Q # 32, η Class Insurance και η Bank είναι συνδρομητές. Ενδιαφέρονται για την εκδήλωση Εκδήλωση θανάτου του τύπου κενός .
Q # 36) Τι είναι οι σύγχρονες και ασύγχρονες λειτουργίες;
Απάντηση: Ο συγχρονισμός είναι ένας τρόπος για να δημιουργήσετε έναν κώδικα ασφαλούς νήματος όπου μόνο ένα νήμα μπορεί να έχει πρόσβαση στον πόρο ανά πάσα στιγμή. Η ασύγχρονη κλήση περιμένει την ολοκλήρωση της μεθόδου προτού συνεχίσει τη ροή προγράμματος.
Ο σύγχρονος προγραμματισμός επηρεάζει άσχημα τις λειτουργίες διεπαφής χρήστη όταν ο χρήστης προσπαθεί να εκτελεί χρονοβόρες λειτουργίες, καθώς θα χρησιμοποιείται μόνο ένα νήμα. Στην ασύγχρονη λειτουργία, η κλήση μεθόδου θα επιστρέψει αμέσως έτσι ώστε το πρόγραμμα να μπορεί να εκτελεί άλλες λειτουργίες ενώ η μέθοδος που καλείται ολοκληρώνει την εργασία της σε ορισμένες περιπτώσεις.
Στο C #, οι λέξεις-κλειδιά Async και Await χρησιμοποιούνται για την επίτευξη ασύγχρονου προγραμματισμού. Ανατρέξτε στο Q # 43 για περισσότερες λεπτομέρειες σχετικά με τον σύγχρονο προγραμματισμό.
Q # 37) Τι είναι η αντανάκλαση στο C #;
Απάντηση: Το Reflection είναι η δυνατότητα ενός κωδικού να έχει πρόσβαση στα μεταδεδομένα του συγκροτήματος κατά τη διάρκεια του χρόνου εκτέλεσης. Ένα πρόγραμμα αντικατοπτρίζεται και χρησιμοποιεί τα μεταδεδομένα για να ενημερώσει τον χρήστη ή να τροποποιήσει τη συμπεριφορά του. Τα μεταδεδομένα αναφέρονται σε πληροφορίες σχετικά με αντικείμενα, μεθόδους.
Το namespace System.Reflection περιέχει μεθόδους και κλάσεις που διαχειρίζονται τις πληροφορίες όλων των φορτωμένων τύπων και μεθόδων. Χρησιμοποιείται κυρίως για εφαρμογές παραθύρων, Για παράδειγμα , για να δείτε τις ιδιότητες ενός κουμπιού σε μορφή παραθύρου.
Το αντικείμενο MemberInfo της αντανάκλασης τάξης χρησιμοποιείται για να ανακαλύψει τα χαρακτηριστικά που σχετίζονται με μια τάξη.
Ο προβληματισμός υλοποιείται σε δύο βήματα, πρώτα, παίρνουμε τον τύπο του αντικειμένου και μετά χρησιμοποιούμε τον τύπο για να αναγνωρίσουμε μέλη όπως μεθόδους και ιδιότητες.
Για να πάρουμε έναν τύπο τάξης, μπορούμε απλά να χρησιμοποιήσουμε,
Πληκτρολογήστε mytype = myClass.GetType ();
Μόλις έχουμε έναν τύπο τάξης, μπορείτε να έχετε εύκολα πρόσβαση στις άλλες πληροφορίες σχετικά με την τάξη.
System.Reflection.MemberInfo Πληροφορίες = mytype.GetMethod ('AddNumbers');
Η παραπάνω δήλωση προσπαθεί να βρει μια μέθοδο με όνομα Προσθήκη αριθμών στην τάξη η τάξη μου .
Q # 38) Τι είναι μια γενική τάξη;
Απάντηση: Generics ή Generic class χρησιμοποιείται για τη δημιουργία κλάσεων ή αντικειμένων που δεν έχουν συγκεκριμένο τύπο δεδομένων. Ο τύπος δεδομένων μπορεί να αντιστοιχιστεί κατά τη διάρκεια του χρόνου εκτέλεσης, δηλαδή όταν χρησιμοποιείται στο πρόγραμμα.
Για παράδειγμα:
Έτσι, από τον παραπάνω κώδικα, βλέπουμε αρχικά 2 μεθόδους σύγκρισης, για να συγκρίνουμε συμβολοσειρά και int.
Σε περίπτωση άλλων συγκρίσεων παραμέτρων τύπου δεδομένων, αντί να δημιουργήσουμε πολλές υπερφορτωμένες μεθόδους, μπορούμε να δημιουργήσουμε μια γενική κλάση και να περάσουμε έναν υποκατάστατο τύπο δεδομένων, δηλαδή T. .
Ε # 39) Εξηγήστε τις ιδιότητες Λήψη και Ορισμός Accessor;
Απάντηση: Λήψη και ρύθμιση ονομάζονται Accessors. Αυτά χρησιμοποιούνται από το Properties. Η ιδιότητα παρέχει έναν μηχανισμό ανάγνωσης, εγγραφής της αξίας ενός ιδιωτικού πεδίου. Για την πρόσβαση σε αυτό το ιδιωτικό πεδίο, χρησιμοποιούνται αυτοί οι προσβάτες.
Το Get Property χρησιμοποιείται για την επιστροφή της αξίας ενός ακινήτου
Ορισμός Accessoror χρησιμοποιείται για τον καθορισμό της τιμής.
Η χρήση του get and set έχει ως εξής:
Q # 40) Τι είναι ένα νήμα; Τι είναι το Multithreading;
Απάντηση: Ένα νήμα είναι ένα σύνολο οδηγιών που μπορούν να εκτελεστούν, οι οποίες θα επιτρέψουν στο πρόγραμμά μας να εκτελεί ταυτόχρονη επεξεργασία. Η ταυτόχρονη επεξεργασία μας βοηθά να κάνουμε περισσότερες από μία εργασίες τη φορά. Από προεπιλογή, το C # έχει μόνο ένα νήμα. Αλλά τα άλλα νήματα μπορούν να δημιουργηθούν για την εκτέλεση του κώδικα παράλληλα με το αρχικό νήμα.
Το νήμα έχει έναν κύκλο ζωής. Ξεκινά κάθε φορά που δημιουργείται μια κλάση νήματος και τερματίζεται μετά την εκτέλεση. Σύστημα. Περικοπή είναι ο χώρος ονομάτων που πρέπει να συμπεριληφθεί για τη δημιουργία νημάτων και τη χρήση των μελών του.
Τα νήματα δημιουργούνται με την επέκταση της κλάσης νημάτων. Αρχή() χρησιμοποιείται μέθοδος για να ξεκινήσει η εκτέλεση του νήματος.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
Το C # μπορεί να εκτελέσει περισσότερες από μία εργασίες τη φορά. Αυτό γίνεται με το χειρισμό διαφορετικών διαδικασιών από διαφορετικά νήματα. Αυτό ονομάζεται MultiThreading.
Υπάρχουν πολλές μέθοδοι νήματος που χρησιμοποιούνται για τον χειρισμό πολλαπλών νημάτων:
Έναρξη, ύπνος, διακοπή, αναστολή, συνέχιση και συμμετοχή.
Οι περισσότερες από αυτές τις μεθόδους είναι αυτονόητες.
Q # 41) Ονομάστε μερικές ιδιότητες της κλάσης νημάτων.
Απάντηση: Λίγες ιδιότητες της κλάσης νημάτων είναι:
- Ειναι ΖΩΝΤΑΝΟΣ - περιέχει τιμή True όταν ένα νήμα είναι ενεργό.
- Ονομα - Μπορεί να επιστρέψει το όνομα του νήματος. Επίσης, μπορεί να ορίσει ένα όνομα για το νήμα.
- Προτεραιότητα - επιστρέφει την προτεραιότητα της εργασίας που έχει οριστεί από το λειτουργικό σύστημα.
- IsBackground - λαμβάνει ή ορίζει μια τιμή που δείχνει εάν ένα νήμα πρέπει να είναι μια διαδικασία φόντου ή προσκηνίου.
- Νήμα - περιγράφει την κατάσταση του νήματος.
Q # 42) Ποιες είναι οι διαφορετικές καταστάσεις ενός νήματος;
τι είναι ένα αρχείο .7z;
Απάντηση: Διαφορετικές καταστάσεις ενός νήματος είναι:
- Χωρίς έναρξη - Το νήμα δημιουργείται.
- Τρέξιμο - Το νήμα ξεκινά την εκτέλεση.
- WaitSleepJoin - Το νήμα καλεί σε αναστολή λειτουργίας, οι κλήσεις περιμένουν σε άλλο αντικείμενο και οι κλήσεις ενώνονται σε άλλο νήμα
- Ανασταλεί - Το νήμα έχει τεθεί σε αναστολή.
- Ματαιώθηκε - Το νήμα είναι νεκρό αλλά δεν έχει αλλάξει σε κατάσταση που έχει σταματήσει.
- Διακόπηκε - Το νήμα έχει σταματήσει.
Q # 43) Τι είναι το Async και το Await;
Απάντηση: Οι λέξεις-κλειδιά Async και Await χρησιμοποιούνται για τη δημιουργία ασύγχρονων μεθόδων στο C.
Ασύγχρονος προγραμματισμός σημαίνει ότι η διαδικασία εκτελείται ανεξάρτητα από τις κύριες ή άλλες διαδικασίες.
Η χρήση των Async και Await είναι όπως φαίνεται παρακάτω:
- Η λέξη-κλειδί Async χρησιμοποιείται για τη δήλωση μεθόδου.
- Η μέτρηση είναι μιας εργασίας τύπου int που καλεί τη μέθοδο CalculateCount ().
- Το Calculatecount () ξεκινά την εκτέλεση και υπολογίζει κάτι.
- Ανεξάρτητη δουλειά γίνεται στο νήμα μου και στη συνέχεια περιμένω να φτάσει η δήλωση μέτρησης.
- Εάν το Calculatecount δεν ολοκληρωθεί, το myMethod θα επιστρέψει στη μέθοδο κλήσης του, επομένως το κύριο νήμα δεν αποκλείεται.
- Εάν το Calculatecount έχει ήδη ολοκληρωθεί, τότε έχουμε το διαθέσιμο αποτέλεσμα όταν το στοιχείο ελέγχου φτάσει σε αναμονή. Έτσι, το επόμενο βήμα θα συνεχιστεί στο ίδιο νήμα. Ωστόσο, δεν είναι η περίπτωση στην παραπάνω περίπτωση όπου εμπλέκεται καθυστέρηση 1 δευτερολέπτου.
Q # 44) Τι είναι το αδιέξοδο;
Απάντηση: Ένα αδιέξοδο είναι μια κατάσταση όπου μια διαδικασία δεν είναι σε θέση να ολοκληρώσει την εκτέλεση της, επειδή δύο ή περισσότερες διεργασίες περιμένουν να ολοκληρώσουν η μία την άλλη. Αυτό συμβαίνει συνήθως σε πολλαπλές κλωστές.
Εδώ ένας κοινόχρηστος πόρος συγκρατείται από μια διαδικασία και μια άλλη διαδικασία περιμένει την πρώτη διαδικασία για να την απελευθερώσει και το νήμα που κρατά το κλειδωμένο στοιχείο περιμένει να ολοκληρωθεί μια άλλη διαδικασία.
Εξετάστε το παρακάτω παράδειγμα:
- Εκτελέστε εργασίες προσπέλασης objB και περιμένει 1 δευτερόλεπτο.
- Εν τω μεταξύ, το PerformtaskB προσπαθεί να αποκτήσει πρόσβαση στο ObjA.
- Μετά από 1 δευτερόλεπτο, το PeformtaskA προσπαθεί να αποκτήσει πρόσβαση στο ObjA το οποίο είναι κλειδωμένο από το PerformtaskB.
- Το PerformtaskB προσπαθεί να αποκτήσει πρόσβαση στο ObjB το οποίο είναι κλειδωμένο από το PerformtaskA.
Αυτό δημιουργεί αδιέξοδο.
Ε # 45) Εξηγήστε το L εντάξει , Οθόνες , και Σίγαση Αντικείμενο στο νήμα.
Απάντηση: Η λέξη κλειδί κλειδώματος διασφαλίζει ότι μόνο ένα νήμα μπορεί να εισαγάγει μια συγκεκριμένη ενότητα του κώδικα ανά πάσα στιγμή. Στα παραπάνω Παράδειγμα , κλείδωμα (ObjA) σημαίνει ότι το κλείδωμα τοποθετείται στο ObjA έως ότου αυτή η διαδικασία το απελευθερώσει, κανένα άλλο νήμα δεν μπορεί να έχει πρόσβαση στο ObjA.
Το Mutex είναι επίσης σαν κλειδαριά, αλλά μπορεί να λειτουργήσει σε πολλές διαδικασίες ταυτόχρονα. Το WaitOne () χρησιμοποιείται για το κλείδωμα και το ReleaseMutex () χρησιμοποιείται για την απελευθέρωση της κλειδαριάς. Αλλά το Mutex είναι πιο αργό από το κλείδωμα καθώς χρειάζεται χρόνος για την απόκτηση και την απελευθέρωσή του.
Monitor.Enter και Monitor.Exit ενσωματώνει κλειδαριά εσωτερικά. μια κλειδαριά είναι μια συντόμευση για οθόνες. κλείδωμα (objA) εσωτερικές κλήσεις.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Q # 46) Τι είναι μια κατάσταση αγώνων;
Χρόνια: Η κατάσταση του αγώνα εμφανίζεται όταν δύο νήματα έχουν πρόσβαση στον ίδιο πόρο και προσπαθούν να το αλλάξουν ταυτόχρονα. Το νήμα που θα μπορεί να έχει πρόσβαση στον πόρο πρώτα δεν μπορεί να προβλεφθεί.
Εάν έχουμε δύο νήματα, T1 και T2, και προσπαθούν να αποκτήσουν πρόσβαση σε έναν κοινόχρηστο πόρο που ονομάζεται X. Και αν και τα δύο νήματα προσπαθούν να γράψουν μια τιμή στο X, η τελευταία τιμή που γράφεται στο X θα αποθηκευτεί.
Q # 47) Τι είναι το Thread Pooling;
Χρόνια: Το Thread pool είναι μια συλλογή νημάτων. Αυτά τα νήματα μπορούν να χρησιμοποιηθούν για την εκτέλεση εργασιών χωρίς να διαταράσσεται το κύριο νήμα. Μόλις το νήμα ολοκληρώσει την εργασία, το νήμα επιστρέφει στην ομάδα.
Το System.Threading.ThreadPool namespace έχει κλάσεις που διαχειρίζονται τα νήματα στην ομάδα και τις λειτουργίες της.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Η παραπάνω γραμμή ουρά μια εργασία. Οι μέθοδοι SomeTask πρέπει να έχουν μια παράμετρο τύπου Object.
Q # 48) Τι είναι η σειριοποίηση;
Απάντηση: Η σειριοποίηση είναι μια διαδικασία μετατροπής κώδικα σε δυαδική μορφή. Μόλις μετατραπεί σε byte, μπορεί εύκολα να αποθηκευτεί και να γραφτεί σε δίσκο ή σε οποιαδήποτε τέτοια συσκευή αποθήκευσης. Οι σειριοποιήσεις είναι κυρίως χρήσιμες όταν δεν θέλουμε να χάσουμε την αρχική μορφή του κώδικα και μπορεί να ανακτηθεί οποιαδήποτε στιγμή στο μέλλον.
Κάθε κλάση που έχει επισημανθεί με το χαρακτηριστικό (Serializable) θα μετατραπεί σε δυαδική μορφή.
Η αντίστροφη διαδικασία επαναφοράς του κωδικού C # από τη δυαδική φόρμα ονομάζεται Deserialization.
Για να κάνετε σειριοποίηση ενός αντικειμένου χρειαζόμαστε το αντικείμενο να σειριοποιηθεί, μια ροή που μπορεί να περιέχει το σειριακό αντικείμενο και το namespace System.Runtime.Serialization μπορεί να περιέχει κλάσεις για σειριοποίηση.
Q # 49) Ποιοι είναι οι τύποι της σειράς;
Απάντηση: Οι διαφορετικοί τύποι σειριοποίησης είναι:
- Σειριοποίηση XML - Σειριοποιεί όλες τις δημόσιες ιδιότητες στο έγγραφο XML. Δεδομένου ότι τα δεδομένα είναι σε μορφή XML, μπορούν εύκολα να διαβαστούν και να χρησιμοποιηθούν σε διάφορες μορφές. Οι τάξεις βρίσκονται στο System.sml.Serialization.
- ΣΑΠΟΥΝΙ - Τα μαθήματα βρίσκονται στο System.Runtime.Serialization. Παρόμοιο με το XML αλλά παράγει έναν πλήρη φάκελο συμβατό με SOAP που μπορεί να χρησιμοποιηθεί από οποιοδήποτε σύστημα κατανοεί το SOAP.
- Δυαδική σειρά - Επιτρέπει τη μετατροπή τυχόν κωδικού στη δυαδική του μορφή. Μπορεί να σειριοποιήσει και να επαναφέρει δημόσιες και μη δημόσιες ιδιότητες. Είναι γρηγορότερο και καταλαμβάνει λιγότερο χώρο.
Q # 50) Τι είναι ένα αρχείο XSD;
Απάντηση: Ένα αρχείο XSD σημαίνει XML Schema Definition. Δίνει μια δομή για το αρχείο XML. Σημαίνει ότι αποφασίζει τα στοιχεία που πρέπει να έχει το XML και με ποια σειρά και ποιες ιδιότητες πρέπει να υπάρχουν. Χωρίς ένα αρχείο XSD που σχετίζεται με το XML, το XML μπορεί να έχει ετικέτες, χαρακτηριστικά και στοιχεία.
Το εργαλείο Xsd.exe μετατρέπει τα αρχεία σε μορφή XSD. Κατά τη σειριοποίηση του κώδικα C #, οι τάξεις μετατρέπονται σε μορφή συμβατή με XSD από το xsd.exe.
συμπέρασμα
Το C # αναπτύσσεται ραγδαία μέρα με τη μέρα και παίζει σημαντικό ρόλο στη βιομηχανία δοκιμών λογισμικού.
Είμαι βέβαιος ότι αυτό το άρθρο θα διευκολύνει την προετοιμασία σας για τη συνέντευξη και θα σας δώσει αρκετή γνώση για τα περισσότερα από τα θέματα C #.
Ελπίζω να είστε έτοιμοι να αντιμετωπίσετε οποιαδήποτε συνέντευξη C # με αυτοπεποίθηση !!
Συνιστώμενη ανάγνωση
- Ερωτήσεις και απαντήσεις συνέντευξης
- Ερωτήσεις και απαντήσεις συνέντευξης δοκιμών ETL
- Κορυφαίες 50 πιο δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης CCNA
- Κορυφαίες ερωτήσεις και απαντήσεις συνέντευξης Bootstrap 51
- Κορυφαίες ερωτήσεις και απαντήσεις συνέντευξης 20+ .NET
- Top 50+ ερωτήσεις και απαντήσεις συνέντευξης βάσης δεδομένων
- Μερικές δύσκολες μη αυτόματες ερωτήσεις και απαντήσεις
- 25 Καλύτερες Ερωτήσεις και Απαντήσεις Συνέντευξης για Ευέλικτη Δοκιμή