Heim >Backend-Entwicklung >C#.Net-Tutorial >C#-Beispiel-Tutorials für einige Interviewfragen

C#-Beispiel-Tutorials für einige Interviewfragen

零下一度
零下一度Original
2017-06-23 14:30:291723Durchsuche

Kürzlich hat ein Freund, der in der NET-Entwicklung tätig war, gekündigt und wollte, dass ich ihm einige NET-bezogene Interviewfragen vorstelle, damit er sich auf neue Herausforderungen vorbereiten kann.

Ich habe schnell verschiedene Sammlungen und Testfragen gefunden, die ich zuvor durchsucht hatte, und heute werde ich die grundlegenden Wissenspunkte zu NET klären.

1. Die drei Hauptmerkmale objektorientierter Sprachen: Kapselung, Vererbung und Polymorphismus;

Was sind die Ähnlichkeiten und Unterschiede zwischen Schnittstellen und Klassen? Unterschiede:

 ①Schnittstelle kann nicht direkt instanziiert werden.

 ②Die Schnittstelle enthält nur die Deklaration von Methoden oder Attributen, jedoch nicht die Implementierung der Methode.

 ③Schnittstellen können mehrfach vererbt werden, Klassen können jedoch nur eine einzelne Vererbung haben.

 ④Die Schnittstelle definiert hauptsächlich eine Spezifikation und ruft Methoden einheitlich auf, dh Spezifikationsklassen und Einschränkungsklassen sind die Implementierung und Sammlung von Methodenfunktionen

Ähnliche Punkte:

 ①Schnittstellen, Klassen und Strukturen können alle von mehreren Schnittstellen erben.

 ②Eine Schnittstelle ähnelt einer abstrakten Basisklasse: Jeder nicht abstrakte Typ, der eine Schnittstelle erbt, muss alle Mitglieder der Schnittstelle implementieren.

 ③Sowohl Schnittstellen als auch Klassen können Ereignisse, Indexer, Methoden und Eigenschaften enthalten.

3. Was sind die Gemeinsamkeiten und Unterschiede zwischen abstrakten Klassen und Schnittstellen?

 ①Vererbung: Schnittstellen unterstützen Mehrfachvererbung; abstrakte Klassen können keine Mehrfachvererbung implementieren.

②Konzept ausgedrückt: Schnittstelle wird zur Spezifikation verwendet, mit mehr Betonung auf Vertrag, abstrakte Klasse wird für Gemeinsamkeit verwendet, wobei Eltern und Kind im Vordergrund stehen. Eine abstrakte Klasse ist ein hoher Grad an Aggregation einer Klasse von Dingen. Für Unterklassen, die abstrakte Klassen erben, gehört sie zur Beziehung „Ist A“, während Schnittstellen Verhaltensnormen definieren und die Beziehung „Kann tun“ betonen „Daher muss bei Unterklassen, die Schnittstellen implementieren, im Vergleich zu Schnittstellen „das Verhalten entsprechend der Schnittstelle vervollständigt werden.“

③Methodenimplementierung: Für Methoden in abstrakten Klassen kann der Implementierungsteil angegeben werden oder nicht; für Schnittstellenmethoden (abstrakte Regeln) kann der Implementierungsteil jedoch nicht angegeben werden und Methoden in Schnittstellen können nicht hinzugefügt werden.

④Umschreiben der Unterklasse: Die Vererbungsklasse verfügt über unterschiedliche Implementierungen der an den beiden beteiligten Methoden. Die geerbte Klasse muss die von der abstrakten Klasse definierten abstrakten Methoden nicht neu schreiben, das heißt, die Methoden der abstrakten Klasse können erweitert werden, während sie für die von der Schnittstellenklasse definierten Methoden oder Attribute in der Klasse neu geschrieben werden müssen Die entsprechenden Methoden und Eigenschaften werden implementiert.

 ⑤Die Auswirkungen neuer Methoden: Wenn in einer abstrakten Klasse eine neue Methode hinzugefügt wird, muss die geerbte Klasse nicht für die Verarbeitung verwendet werden; für Schnittstellen muss die geerbte Klasse geändert werden, um eine bereitzustellen neu definierte Methode.

 ⑥Schnittstellen können auf Werttypen reagieren (Aufzählungen können Schnittstellen implementieren) und Referenztypen können nur auf Referenztypen reagieren.

 ⑦Schnittstellen können keine Felder und implementierten Methoden enthalten. Schnittstellen enthalten nur Signaturen von Methoden, Eigenschaften, Indexern und Ereignissen.

4. Der Unterschied zwischen virtuell, versiegelt, überschreiben und abstrakt

 ①virtual deklariert das Schlüsselwort der virtuellen Methode und zeigt an, dass die Methode überschrieben werden kann

 ②sealed zeigt an, dass die Die Klasse kann nicht geerbt werden

 ③die Methode der Basisklasse überschreiben

 ④abstract deklariert die Schlüsselwörter abstrakter Klassen und abstrakte Methoden stellen keine Implementierung bereit und können nicht von Unterklassen implementiert werden instanziiert werden.

5. Was ist der Unterschied zwischen Override und Overload?

Überladung: Wenn eine Klasse zwei Klassen mit demselben Namen, aber unterschiedlichen Signaturen enthält (der Methodenname ist derselbe, aber die Parameterliste ist derselbe). different) ) Methode tritt auf, wenn eine Methodenüberladung auftritt. Verwenden Sie Methodenüberladung, um Methoden bereitzustellen, die dieselbe Semantik ausführen, aber unterschiedliche Funktionen haben. (Mehrere Methoden in einer Klasse)

Umschreiben: Bei der Klassenvererbung kann die Implementierung der virtuellen Methode der übergeordneten Klasse durch Überschreiben der Unterklassenmethode geändert werden. (Mehr als zwei Klassen)

6. Der Unterschied zwischen Strukturen und Klassen

① Strukturen sind Werttypen und Klassen sind Referenztypen

② Strukturen unterstützen keine freien Konstruktoren nicht unterstützt und kann nicht mit protected geändert werden;

③ Strukturen werden häufig für die Datenspeicherung verwendet, und Klassen werden hauptsächlich für das Verhalten verwendet. ④ Klassen müssen das Schlüsselwort new verwenden, um Objekte zu instanziieren, und struct muss dies nicht tun Verwenden Sie den neuen Schlüssel Word;
⑤ class kann eine abstrakte Klasse sein, struct unterstützt keine Abstraktion

7. Ähnlichkeiten und Unterschiede zwischen out und ref

①ref erfordert explizite Parameter Vor der Verwendung initialisiert, out Zur Initialisierung innerhalb der Methode;

②out eignet sich für den Einsatz, bei dem mehrere Rückgabewerte erneut ausgeführt werden müssen, während ref verwendet wird, wenn die aufgerufene Methode die Referenz des Aufrufers ändern muss.

③ref bedeutet rein und raus, out bedeutet nur rausgehen, aber nicht rein (ref kann den Wert des Parameters an die Funktion übergeben, aber out muss den Parameter löschen, was bedeutet, dass Sie keinen Wert übergeben können von out. Ja, nach der Eingabe von out ist der Wert des Parameters leer)

8. Der Unterschied zwischen Werttyp und Referenztyp

 ① Werttyp: Es handelt sich um eine Menge, die tatsächliche Daten enthält . Das heißt, beim Definieren einer Variablen vom Werttyp weist C# der Variablen basierend auf dem deklarierten Typ einen Speicherbereich mit geeigneter Größe zu. Nachfolgende Lese- oder Schreibvorgänge für diese Variable werden direkt in diesem Speicher ausgeführt Bereich. fortfahren;

 ②Referenztyp: Eine Referenztypvariable speichert nicht die tatsächlichen Daten, die sie darstellen, sondern einen Verweis auf die tatsächlichen Daten.
Der Referenztyp wird in zwei Schritten erstellt: Erstellen Sie zunächst eine Referenzvariable auf dem Stapel, erstellen Sie dann das Objekt selbst auf dem Heap und weisen Sie dann der Referenz das Handle dieses Speichers (auch die erste Adresse des Speichers) zu Variable;

9. Was ist Unboxing und Boxing?

Boxing → Werttyp in Referenztyp konvertieren, Unboxing → Referenztyp konvertieren zum Werttyp .

10. Welche Auswirkungen hat das Ein- und Auspacken auf die Leistung? Wie kann man es lösen?

 ①Auswirkungen: Beides beinhaltet die Speicherzuweisung und die Objekterstellung, die einen großen Einfluss auf die Leistung haben;

 ②Lösung: Verwenden Sie Generika

11. Handelt es sich bei der Veranstaltung um eine Provision?

 ①Delegate: ähnelt einem Funktionszeiger in C oder C++ und ermöglicht die Übergabe von Methoden als Parameter (Sie können eine Methode als Parameter durch eine andere Methode ersetzen)

 ②Ereignisse sind spezielle Delegationen. Ereignisse werden intern basierend auf der Delegation implementiert.

12. Kann der Konstruktor Konstruktor vererbt werden? Kann es überschrieben werden?

Der Konstruktor kann nicht vererbt werden, daher kann er nicht überschrieben werden, aber er kann überladen werden.

13 Kann die String-Klasse integriert werden?

Die String-Klasse ist eine letzte Klasse und kann daher die String-Klasse nicht erben.

14. Wenn ein Thread eine Methode eines Objekts betritt, können andere Threads die Methode betreten?

Nein, auf die Methoden eines Objekts kann nur ein Thread zugreifen.

15. Verwenden Sie die effektivste Methode, um zu berechnen, was 2 mal 8 ist?

 2<<3 (linke Multiplikation, rechte Division)

16. Was ist der Unterschied zwischen Fehler und Ausnahme?

Fehler bedeutet, dass die Wiederherstellung nicht unmöglich, aber sehr schwierig ist. Eine Ausnahme bedeutet ein praktisches oder Implementierungsproblem, was bedeutet, dass das Programm nicht normal ausgeführt werden kann.

17. Was sind die Gemeinsamkeiten und Unterschiede zwischen UDP- und TCP-Verbindungen?

 ①TCP ist ein Übertragungssteuerungsprotokoll. Es bietet verbindungsorientierte, zuverlässige Byte-Stream-Dienste und bietet Timeout-Wahlwiederholungs- und Datenüberprüfungsfunktionen.

 ②UDP ist das User Datagram Protocol. Es ist ein einfaches Datagramm-orientiertes Übertragungsprotokoll und eine unzuverlässige Verbindung.

18. Verwendung des neuen Schlüsselworts

 ①Der Operator „new“ wird zum Erstellen von Objekten und zum Aufrufen von Konstruktoren verwendet.

②new Modifikator wird verwendet, um geerbte Mitglieder vor Basisklassenmitgliedern zu verbergen.

③Neue Einschränkung wird verwendet, um die Parametertypen einzuschränken, die als Typparameter in einer generischen Deklaration verwendet werden können.

19. Verwendung des Schlüsselworts

 ①Referenz-Namespace;

 ②Alias ​​für Namespace oder Typ erstellen; (mit + Alias ​​= einschließlich detaillierter Namespace-Informationen Spezifischer Typ)

 ③ Ressourcen freigeben (Dateistream schließen);

20. Zugänglichkeitsstufen sind Welche Arten

 ①Öffentlicher Zugriff ist nicht eingeschränkt.

 ②Der geschützte Zugriff ist auf die enthaltende Klasse oder die von der enthaltenden Klasse abgeleiteten Typen beschränkt.

 ③Der interne Zugriff ist auf die aktuelle Baugruppe beschränkt.

 ④Der geschützte interne Zugriff ist auf die aktuelle Assembly oder den aktuellen Typ beschränkt, der von der enthaltenden Klasse abgeleitet ist.

 ⑤Der private Zugriff ist auf den enthaltenden Typ beschränkt.

21. Die Regeln für eine Zahlenspalte lauten wie folgt: 1, 1, 2, 3, 5, 8, 13, 21, 34... Finden Sie die 30. Ziffer und verwenden Sie einen rekursiven Algorithmus, um sie zu erreichen .

22. Blasensortierung

Das obige ist der detaillierte Inhalt vonC#-Beispiel-Tutorials für einige Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn