Wie ich mich auf ein Interview # 1 vorbereitete

Manchmal kommt es vor, dass Sie den Job wechseln möchten. In diesem Fall haben wir mehrere Möglichkeiten:



  1. Fordern Sie eine Gehaltserhöhung an, um zusätzliche Motivation für die Arbeit zu erhalten
  2. Benötigen Sie einen Urlaub, um eine Pause von langweiligen Aufgaben zu machen und Kraft zu gewinnen.
  3. Wechseln Sie den Job, indem Sie Ihren Lebenslauf veröffentlichen, in der Hoffnung, dass Sie ein Angebot erhalten, das Sie zufriedenstellt.


Wenn Sie immer noch die dritte Option gewählt haben, haben Sie das getan, was ich getan habe. Und ich erhielt ein Traumangebot: meinen eigenen Stack (in letzter Zeit musste ich mein Lieblings-C # auf PHP und auch das Bitrix-Framework ändern), Fintech und eine Gehaltserhöhung. Natürlich habe ich mich zunächst entschlossen, mein Wissen zu aktualisieren. Dieser Text ist zuallererst mein Spickzettel, der aus dem freien Text für die Position des Middle .NET Engineer meiner Träume zusammengestellt wurde.



ORM - Entity Framework / NHibernate



Entity Framework und NHibernate sind Frameworks, die ORM-Technologie (objektorientiertes Mapping (Mapping)) verwenden, um Objekte (Klassen) Tabellen in der Datenbank zuzuordnen. Das heißt, ORM ist bedingt eine Schicht zwischen dem Code und der Datenbank, die im Programm erstellte Objekte ermöglicht Hinzufügen / Empfangen zu / von der Datenbank.



Vorteile von EF



  • Ermöglicht das Erstellen einer Tabelle per Code oder mit EF Designer und das Generieren einer neuen Datenbank
  • Sie können die Erstellung von Objekten "automatisieren" sowie Änderungen an diesen Objekten verfolgen und so die Aktualisierung der Datenbank vereinfachen
  • Verwenden einer einzelnen Syntax (LINQ) für alle Objektsammlungen, sei es Daten aus einer Datenbank oder nur eine Liste. es ist schnell genug, wenn es richtig verwendet wird, und auch einigermaßen lakonisch.
  • EF kann riesige Codestücke ersetzen, die Sie selbst schreiben würden.
  • Reduziert die Entwicklungszeit.
  • Unterstützt asynchrone Datenbankoperationen.


Nachteile von EF



  • Verwendung eines "unkonventionellen" Ansatzes zur Datenverarbeitung, der nicht für jede Datenbank verfügbar ist.
  • Bei Änderungen im Datenbankschema wird EF die Arbeit verweigern. Änderungen am Code sind erforderlich.
  • Der SQL-Code wird unkontrolliert generiert. Wir müssen den Entwicklern von EF selbst vertrauen.
  • .


NHibernate



  • .
  • .
  • Unit Of Work.
  • .
  • .
  • .


NHibernate



  • .
  • , , XML — .
  • , .


Writing unit tests frameworks



Mit Unit-Tests können Sie einzelne Komponenten einer Anwendung unabhängig vom Rest der Anwendung schnell und automatisch testen. Unit-Tests decken möglicherweise nicht immer den gesamten Anwendungscode ab, können jedoch die Anzahl der Fehler bereits in der Entwicklungsphase erheblich reduzieren.



Beliebte Frameworks:



  • xUnit.net
  • MS Test
  • NUnit


Ab Visual Studio 2019 wurden drei Arten von Projekten speziell für Tests hinzugefügt: xUnit-Testprojekt (.NET Core), MSTest-Testprojekt (.NET Core) und NUnit-Testprojekt (.NET Core).



Ich werde xUnit-



Tests in xUnit als definiert definieren Methoden, auf die die Attribute Fakt, Theorie angewendet werden.

Fakt ist ein separater Test ohne Parameter. Theorie - Ein Test, der Parameter akzeptiert, kann mehrere Szenarien haben.



Beispiel
[Fact]
    public void Should_do_somthing(){...}

    [Theory]
    [InlineData(20, 180, 80, ”good”)]
    [InlineData(20, 180, 50, ”bad”)]
    public void Should_measure_weight(int age, int height, decimal weight, string expected){...}

      
      







Es gibt ein ganzes Paradigma des Testens, das xUnit vollständig implementiert: Arrange-Act-Assert.



  • Anordnen: Legt die Anfangsbedingungen für die Testausführung fest
  • Act: Führt einen Test aus (repräsentiert normalerweise eine Codezeile)
  • Assert: Überprüft das Testergebnis


Arrange und Act sind regulärer C # -Code, während Assert eine separate Klasse mit einer Reihe statischer Methoden zur Überprüfung der Ergebnisse ist.



Grundlegende Methoden
  • Alle (Sammlung, Aktion): Diese Methode bestätigt, dass alle Elemente der Sammlungssammlung der Aktionsaktion entsprechen
  • Enthält (expectedSubString, actualString): Die Methode bestätigt, dass actualString expectedSubString enthält
  • DoesNotContain(expectedSubString, actualString): , actualString expectedSubString
  • DoesNotMatch(expectedRegexPattern, actualString): , actualString expectedRegexPattern
  • Matches(expectedRegexPattern, actualString): , actualString expectedRegexPattern
  • Equal(expected, result): result expected
  • NotEqual(expected, result): result expected
  • Empty(collection): , collection
  • NotEmpty(collection): , collection
  • True(result): , true
  • False(result): , false
  • IsType(expected, result): , expected
  • IsNotType(expected, result): , expected
  • IsNull(result): , null
  • IsNotNull(result): , null
  • InRange(result, low, high): , low high
  • NotInRange(result, low, high): , low high
  • Same(expected, actual): , expected actual
  • NotSame(expected, actual): , expected actual
  • Throws(exception, expression): , expression exception




Somit haben wir 2 der 7 Punkte der Zusammenfassung bestanden.



Im nächsten Teil:



  • DI-Frameworks
  • Verständnis für Anwendungsdesigns (n-Tier, Zwiebel).


Danke fürs Lesen, damit ich verstehe, dass ich nicht der einzige bin, der sich auf etwas vorbereitet;)



Materialien: eins , zwei , drei



All Articles