Softwareentwicklung Fachfragen Flashcards

1
Q

Ist Vim und VI das gleichen?

A

Nein, aber viele Befehle sind sehr ähnlich

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wann ist Vim besonders nützlich?

A
  • Wenn man auf einem Linux (Remote) Server arbeitet und dort etwas per Console editieren/erstellen muss.
  • Dort sind in der Regel keine Texteditoren oder IDEs installiert. Man hat nur Vim.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie öffnet man eine Textdatei mit VIM?

A

mdvim filename.md

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie verlässt man VIM?

A

:q

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie schreibt man die Changes in die Datei in VIM?

A

:w

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie schreibt man Changes in die Datei und quitted VIM?

A

:wq

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie verlässt man VIM ohne Changes zu speichern?

A

:q!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie geht man in den INSERT-Mode in VIM?

A

i

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie verläst man den INSERT-Mode zum COMMAND-Mode in VIM?

A

ESC

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie löscht man eine Zeile in VIM?

A

dd

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wieso gibt es HTTP-Codes (wie 402, 404, 403, 100)?

A
  • Damit ein Server und ein Browser in einer strukturiereten Art miteinander kommunizieren können und jeder direkt weiß, welche Art die Antwort hat.
  • Man erkennt sofort, ob es ein Fehler oder Info ist.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wofür steht HTTP-Code 404?

A

Not Found

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wofür stehen 2xx HTTP-Codes?

A

Der Request war erfolgreich
* 200 OK (Standard hat geklappt)
* 201 Created (Resource wie User/Bestellung/Konto etc erstellt)
* 202 Accepted (Akzeptiert)
* 204 No Content (Nichts zum zurückgeben)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wofür stehen 3xx HTTP-Codes?

A

Redirecten von Usern auf andere URLs
* 301 Moved Permanently (Permante URL verschoben)
* 307 Temporary Redirect
* 304 Not-Modified (Seit der letzten Anfrage hat sich die Seite/Daten nicht verändert und kann genau so neugeladen werden ohne neu vom Server Bandbreite/Anfragen zu senden)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wofür stehen 4xx HTTP-Codes?

A

Fehler welche vom Client / Anfrager (you fucked up) kommen
* 400 Bad Request (Deine Anfrage war falsch/kaputt)
* 401 Unauthorized (Erst einloggen)
* 403 Forbidden (Du bist eingeloggt aber darfst das nicht)
* 404 Not Found (Der Request hat nichts gefunden Seite/Daten)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wofür stehen 5xx HTTP-Codes?

A

Fehler welche vom server kommen (we fucked up)
* 500 Internal Server Error (Backend oder Datenbank hat Fehler)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Was ist im Web das “Box-Model”?

A
  • Content
  • Padding
  • Border
  • Margin
div {
height: 100px;
width:100px;
padding: 10px;
border. 20px;
margin: 30px;
background-color: blue;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was macht in CSS die Eigenschaft “box-sizing: border-box”?

A
  • Der Border wird ab nun Teil des Content des Box-Models
  • Der HTML-Container wird kleiner weil die Pixel des Borders nun zu ihm als Inhalt gehören
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist Spezifizität / Specificity?

A
  • HTML-Elemente können mit Selektoren selektiert werden
  • Entweder über Klassennamen (mehrere .button), ID (eine #button) oder ihr HTML-Tag Element selbst (div)
  • Via CSS kann die gleiche Einstellung wie eine rote Schriftfarbe mehrfach auf ein HTML-Element vergeben werden
  • CSS heißt (Cascading Style Sheet) da es “kaskadierend” schaut welcher Selektor/Regel nun die wichtigste ist und diese übernimmt und andere ignoriert
  • CSS wird immer den Selektor mit der höheren Spezifizität nehmen und wenn diese gleich sind den, welcher zuletzt (weiter unten) im Code steht
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was hat höhere Spezifizitäten in CSS (HTML-Tag, ID, Klasse)?

A
  1. ID (Nur ein gleiches pro Seite)
  2. Klasse (Mehrere gleiche pro Seite)
  3. HTML-Tag(Ganz viele gleiche pro Seite)

Wenn zwei gleich wichtige Regeln gelten wir die letztere genommen (hier Farbe grün)
~~~
<div class=”color-red color-green”
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Azure?

A
  • Microsoft Azure ist eine Cloud-Computing-Plattform
  • Bietet Dienste wie virtuelle Maschinen, Datenbanken, KI und maschinelles Lernen, sowie DevOps-Unterstützung, um effizient in der Cloud zu arbeiten.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Was bedeutet SQL?

A
  • Structured Query Language/SQL
  • Eine Sprache zur Datenverwaltung in relationalen Datenbanksystemen
  • Für Abfragen, Aktualisierungen und Strukturdefinitionen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Was bedeutet CRUD?

A

Create -> Read -> Update -> Delete

  • Dies sind die vier grundlegenden Operationen zur Erstellung und Verwaltung persistenter Datenelemente
  • Hauptsächlich in relationalen und NoSQL-Datenbanken zum Einsatz kommen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Was bedeutet ACID?

A

atomicity, consistency, isolation, durability/Atomarität, Konsistenz, Isolation, Dauerhaftigkeit; garantiert zuverlässige Transaktionen in Datenbanksystemen.
ACID-Prinzipien sichern Datenbanktransaktionen: Atomarität (ganz oder gar nicht), Konsistenz (Datenintegrität), Isolation (unabhängige Transaktionen), Dauerhaftigkeit (Beständigkeit nach Abschluss).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Was ist der unterschied zwischen Var und VarChar?

A
  • CHAR belegt festen Speicherplatz
  • VARCHAR nutzt variablen Speicher je nach Datengröße z.B für Vor/Nachname oder Städte Namen) VARCHAR(200)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Was ist die Programmiersprache C#?

A
  • Eine (große) Programmiersprache von vielen
  • Vollkommen objektorientierte Programmiersprache
  • Von Microsoft
  • Man kann damit fast alles programmieren (Desktop-Apps, Server/Konsolenprogramme/Skripte, Videospiele, Web-Anwendungen)
  • Ist eine etwas abstraktere/höhere/besser menschlich lesbare Sprache und wird daher noch für den Computer “übersetzt werden müssen”
  • Daher macht Dinge die extrem performant und nah am Computer sein sollen lieber nicht mit C# wie (Betriebssystem, Realtime-Trading-Bot, Industrie-Maschinen-Code, Chirurgie-Roboter)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Was ist Objektorientierung?

A
  • Ein Programmierparadigma also ein Stil
  • Es soll dem menschlichen Denken ähnlich sein
  • Man denkt über alles was man programmieren will nach als wäre es ein “Objekt” und überlegt sich dann was dieses so kann, wie es aussieht etc
  • Beispiel: Was kann ein Flugzeug alles? (Fliegen, Tanken, Bremsen, Starten) Wie sieht es aus? (Flügel, Cockpit, Sitzplätze, Klo, Essensbereich, Kofferbereich))
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Was ist .NET was von C# benutzt wird?

A
  • C# ist ein Teil von .NET
  • .NET ist eine Software-Entwicklungs-Plattform / Ökosystem von Microsoft
  • .NET beinhaltet sehr viele verschiedene Frameworks die schon fertige Baukästen für verschiedene Probleme und Anwendungsmöglichkeiten bereitstellt
  • Es gibt eine sehr große Standardbibiliothek und viele Frameworks wie die WPF für GUIs und Blazor für Webanwendungen
  • .NET ist plattformunabhängig damit geht der Code auf ALLEN Plattformen (Windows, Linux, Mac, iOS, Android) man braucht nicht immer neue Apps schreiben.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Was ist deine Standardbibliothek?

A
  • Das sind Klassen, Funktionen, Dinge welche eine Programmiersprache schon von selbst mitbringt
  • Z.B. das sortieren von Arrays .sort() oder umrechnen von Datum/Zeit
  • Programmiersprachen mit sehr großen und gut gemachten Standardbibliotheken mögen viele Leute
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Warum ist es gut wenn eine Programmiersprache eine große und gut gemachte Standardbibliothek besitzt?

A
  • Es stehen schon ganz viele Funktionen welche man brauchen könnte einfach per Befehl (.sort(), .reverse()) bereit
  • Man muss sich nicht überlegen ob man benötigte Funktionen/Dinge selber programmiert oder eine Library (fremder Code) aus dem Netz nimmt
  • Man hat auf jeden Fall keine Abhängigkeiten zu Code von anderen aus dem Netz, wo dann ein Virus drin sein kann oder der Code veraltet und nicht mehr richtig funktioniert
  • Standardbibliotheken sind extrem gut gepflegt und supportet weil sie zur Programmiersprache selbst gehören. Man kann eigentlich nicht damit rechnen, dass dort Dinge falsch funktionieren.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Was ist eine GUI?

A
  • Graphical User Interface (GUI)
  • Interaktiver Code der angezeigt wird und mit dem Menschen interagieren können
  • So bezeichnet man oft Desktop-Anwendungen mit Masken (Kassenterminal, Kiosk-Automaten)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Was ist eine Webanwendung?

A
  • Eine Anwendung/Software die im Web läuft
  • Die also einen Browser benötigt um angezeigt zu werden und zu funktionieren
  • Sie nutzt die Möglichkeiten welche das Web mit sich bringt (Gutes Styling mit CSS, Navigation Vor/Zurück, URLs, localStorage, sessionStorage, mit vielen Dateiformaten umgehen, extrem viel Wert auf Performanz/Schnelligkeit in der Interaktivität legen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Welche IDE / Editor solltest du benutzen wenn du C# mit .NET schreiben möchtest?

A
Visual Studio weil das am besten für .NET angepasst ist ALSO KEIN VSCODE!
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Ist VSCode eine Entwicklungsumgebung?

A
  • Nein VSCode ist ein Editor welche nicht direkt für eine Programmiersprache und dessen Frameworks/Umgebung angepasst ist
  • Daher sollte man wenn man eine Sprache mit viel Ökosystemen und eigenen Frameworks benutzen will (C#) lieber eine richtige Entwicklungsumgebung benutzen wie Visual Studio
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Welche Versionen von .NET sind gerade aktuell?

A
  • .NET 7.0
  • .NET 8.0 (LTS)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Wofür steht LTS wie bei Versionen von .NET oder Node.JS?

A
  • Long Term Support (LTS)
  • Es bedeutet das die Versionen noch lange supportet und gewartet werden
  • Wie beim Android-Handy wo nach x Jahren der Support aufhört und Handy nicht mehr updaten können werden hier Dinge imkompatibel. Aber während der LTS (beschlossen für X Jahre) noch gilt muss alles miteinander gehen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Was ist eine Klasse in der Objektorientierung?

A
  • Klassen sind Objekte
  • Diese Klassen besitzen Methoden mit denen Dinge verändert werden können
  • In der funktionalen Programmierung würden diese Methoden Funktionen genannt werden
    *
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Wie schreibe ich in C# einen Output auf der Console (ConsoleLog)?

A
  • Dafür muss man eine Anweisung/Zeile schreiben
  • Beispiel: Console.WriteLine(“Ich bin Dominic”);
  • Hierbei ist Console eine Klasse und bietet die Methode WriteLine an
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Schließt man Anweisungen/Zeilen in C# immer mit einem Semikolon ; ab?

A
  • Ja
  • Beispiel: Console.WriteLine(“Test”);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Was sind Anweisungen in der Programmierung?

A
  • Direkte Befehle die man in eine Zeile schreibt die der Computer machen soll
  • Beispiel: Console.WriteLine(“Test”);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Was sind Variablen und Datentypen in der Programmierung?

A
  • Das wichtigste Feature von jeder Programmiersprache
  • Es ist ein Speicherplatz im Code
  • Man kann damit also zur Laufzeit im Programm verschiedene Arten von Werten/Daten abspeichern
  • Werte/Daten können (Zahlen, Texte, Boolean (True/False), Datenobjekte (komplex) und vieles mehr sein
  • Das Konzept von Programmieren ist es eigentlich nur Daten durch Variablen in eine andere Struktur/Ordnung zu bringen, dafür muss man sich diese oft in Variablen zwischenspeichern. Dann verarbeitet man diese Daten irgendwie und erzeigt am Ende etwas damit.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Was sind Pipelines?

A
  • Pipelines sind automatisierte Abläufe die mittels gezielter Skripte auf Servern gemacht werden
  • Oftmals werden solche von DevOps (Beruf) erstellt, um den Softwareentwicklern zu helfen und Dinge zu automatisieren
  • CI / CD also Continuous Integration und Continuous Deployment nutzen Pipelines um zum Beispiel innerhalb es Merge Requests / Pull Requests sicherzustellen, dass die App noch funktioniert. Jedes Mal wenn jemand Code ändert startet die Pipeline auf dem eigenen Computer/Server die App und schaut ob sie noch geht.
  • Das sind Kleinigkeiten welche aber in 1000 facher Verwendung den Entwicklern viele kleine Nebenaufgaben abnehmen und Die Sicherheit und Lauffähigkeit von Anwendungen garantieren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Wofür steht CI in CI/CD

A
  • Continuous Integration
  • Es bedeutet, dass Code in kleinen Paketen/Stückchen kontinuierlich in einen Stand/Branch einer Software integriert werden kann
  • Oftmals werden dafür Pipelines genutzt, welche testen ob der neue Code in einem anderen Branch funktioniert oder ob die App abstürzt/Fehler erzeugt.
  • Einmal eingerichtet kann das voll automatisch laufen, dass man sich nicht mehr um das Hinzufügen von neuem Code und dessen Probleme kümmern muss
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Wofür steht CD in CI/CD?

A
  • Continuous Deployment
  • Es bedeutet das sichergestellt wird, dass neue Stände/Branches mit neuem Code auf einem Server bereitstellt und gestartet werden
  • Beispiele hierfür, welche man privat kennt, sind Netlify oder Vercel welche das Hosten von Webanwendungen auf Domains erlauben
  • Man muss nur sagen aus welchem Repository und Branch sich die Pipeline den Code nehmen soll, dann sagen wie die Pipeline die Software starten kann und ob es Umgebungsvariablen gibt und dann starte die Pipeline die App und macht sie auf einer Domain verfügbar für alle
  • Einmal eingerichtet kann das voll automatisch ablaufen ohne das man sich groß um Dinge, wie das Starten der neuen App kümmern muss
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

Was sind Umgebungsvariablen?

A
  • Umgebungsvariablen sind Variablen (also Zwischenspeicher für Daten) mit dem größten Scope
  • Der Scope ist so groß, dass dieser nicht mal mehr innerhalb der eigenen App liegt, sondern die Variable abhängig vom der Umgebung wird, in dem die App sich befindet (Also auf welchem Server/System/Computer/Einstellungen)
  • Die Umgebungsvariablen (oftmals .env) werden auf dem Computer wo der Code als Deployment liegt neben der App abgelegt und die App kann dann darauf zugreifen und sich unterschiedlich verhalten
  • Oftmals werden solche Umgebungsvariablen genutzt um Passwörter, API-Keys, Zugänge von außen in die App hineinzugeben. Aber man kann mit ihnen der App auch sagen ob sie sich gerade bei dem Kunden in der Produktion oder auf einem Test-Server befindet. Und die App kann dann entscheiden ob sie beispielsweise abstürzen darf bei Fehlern oder ob sie diese nur unterdrückt und die App laufen lässt.
  • Umgebungsvariablen dürfen niemals mit Git versioniert und auf Cloud-Plattformen wie GitHub oder GitLab hochgeladen werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

Was ist ein Scope?

A
  • Scope ist der Umfang in dem ein Name wie für eine Variable, Funktion, Methode, Klasse etc definiert und damit reserviert ist
  • Befindet man sich innerhalb einer Funktion/Methode und schreibst dort eine Variable mit dem Namen meinName hinein wird dieser Variablenname für diese Funktion/Methode gescoped und reserviert. Es darf ihn nur noch einmal darin geben und wenn du ihn benutzt wird diese Variable benutzt. Außerhalb dieser Funktion/Methode kannst du den selben Namen allerdings wieder benutzen und er steht für etwas ganz anderes und hat mit der anderen Variable nichts zu tun.
  • Es gibt auch größere Scopes wie Klasssenscopes über mehrere Funktionen/Methoden einer Klasse oder ApplicationScope über die gesamte App und auch Umgebungsvariablen welche sogar über die ganze App/Anwendung gescoped und damit komplett unique in ihrem Namen sind.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

Beschreibe diese Variable in C#

A
  • Datentyp ist String (Text) und stellt Sicherheit dar, dass nicht anderes hineinkommt, wie Zahlen etc
  • Name ist meinName, dadurch kann man die Variable später verwenden
  • Initialisierung ist als erste Wertzuweisung der Text “Janek”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

Welche Datentypen gibt es in C#?

A
  • Ganzzahlen (Integer) (1, 2)
  • Fließkommazahlen (Floats) (1.2)
  • Wahrheitswerte (Boolean) (true, false)
  • Textwerte (String) (“Dominic”)
  • Komplexe Datentypen (Klassen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

Welche mathematischen Operatoren gibt es in C#?

A
  • Addition (+)
  • Subtraktion (-)
  • Multiplikation (*)
  • Division (/)
  • Diese können wir überall benutzen und sie werden zur Laufzeit also wenn die App läuft in das Ergebnis umgewandelt/berechnet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Nenne und erkläre 3 Ganzzahlen Datentypen in C#

A
  • Je Datentyp gibt es verschiedene Bereiche an Zahlen welche darin gespeichert werden können
  • Können nur ganze Zahlen also ohne Komma speichern
  • Man könnte es sich leicht nehmen und immer den größten nehmen (sieht long) aber dann wird auch immer extrem viel Speicherplatz auf dem PC reserviert und unnötig belastet
  • Wenn man z.B. nur das Alter eines Menschen speichern möchte reicht vermutlich byte (0-255)
  • Meistens benutzt man aber einfach int weil der von 2Milliarden bis 2 Milliarden geht und für das meiste reicht aber nicht zu extrem viel Speicher wegnimmt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

Nenne und erkläre 2 Fließkommazahlen Datentypen in C#

A
  • Je Datentyp gibt es verschiedene Bereiche an Zahlen welche darin gespeichert werden können
  • Können Kommazahlen mit Nachkommastelle speichern
  • Hier ist nicht die Reichweise/Größe der Zahlen was die Datentypen unterscheidet, sondern eher die Genauigkeit also wie viele Stellen nach dem Komma wird gerundet oder noch genau die Zahl geschrieben
  • Das ist sehr wichtig wenn man z.B. einen Roboter im OP-Saal programmiert oder Flugzeug-Routen. Da sollte viele Stellen nach dem Komma alles noch genau sein. Ansonsten kann man meistens sich mit einem float der nur 6-9 Stellen nach dem Komma genau ist begnügen
  • Für Geldumrechnungen benutzt man den Datentyp decimal weil das der super genaueste ist
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

Wie schreibst du in C# eine Variable is_adult die einen boolean Wert hat?

A
  • bool is_adult = false;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

Wie schreibt man in C# eine Variable name die deinen Namen hat und eine Variable character die nur ein Zeichen hat?

A
  • string name = “Dominic”;
  • char character = ‘D’;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

Was ist eine Methode in C#?

A
  • Ein Code-Block / Abschnitt den man über einen Namen der Methode immer wieder ausführen kann und nicht neu schreiben muss
    *
55
Q

Wie ruft man eine Methode mit dem Namen meinTest die keinen Parameter hat in C# auf?

A
  • meinText();
56
Q

Wie ruft man eine Methode mit dem Namen setLieblingsFarbe mit einem Parameter farbe als string in C# auf?

A
  • setLieblingsFarbe(“blau”);
57
Q

Wie schreibe ich eine Methode in C# namens setLieblingsFarbe die ein Argument akzeptiert das ein string sein soll und dann diesen in der Console ausgibt?

A
  • ```
    void setLieblingsFarbe (string color)
    {
    Console.WriteLine(color)
    }
    ~~~
58
Q

Was ist ein Parameter?

A
  • Der Parameter ist bei einer Funktion/Methode der Teil wo man Daten hineingeben kann. Er ist bei der Definition der Funktion/Methode und nicht bei dem Aufruf/Verwendung davon!
  • setLieblingsFarbe (string PARAMETER)
  • Es ist ein eigener Name für die hereinkommenden Daten der in der Funktion/Methode danach gescoped und bekannt ist und wiederverwendet werden kann um damit zu arbeiten
59
Q

Was ist ein Argument?

A
  • Das Argument ist der tatsächliche Wert dem man einer Funktion/Methode bei ihrem Aufruf übergibt
  • setLieblingsFarbe(“blau”);
  • Hier ist das Argument was dann** zur Laufzeit des Programmes hineingegeben** wird der string “blau”
60
Q

Was ist eine Bibliothek/Library?

A
  • Eine Bibliothek ist eine kleine Sammlung an Code/Funktionen/Methoden/Klassen also Dingen die man sich nehmen und benutzen kann
  • Diese haben meist einen ganz bestimmten UseCase oder Ausrichtung wie das Umrechnen von Zeiten oder eine Erstellung von Karten für Google Maps
  • Wie in einer Bibliothek sucht man sich ein Buch/Library/Bibliothek heraus was einem gefällt und benutzt nur genau das daraus was man möchte
61
Q

Was ist ein Framework?

A
  • Ein Framework ist im Gegensatz zu einer Bibiliothek/Library sehr viel mehr
  • Es verbindet viele Dinge die verschiedene Libraries anbieten würde zu einem größeren System was einen Sinn / Usecase verfolgt
  • Dabei geht es meistens viele Kompromisse ein und ist eingeschränkter weil man manche Dinge eben genau so machen muss wie es das Framework vorgibt
  • Wenn man sich alles was so ein Framework als Gesamtsystem anbietet selber durch einzelne Libraries/Bibliotheken zusammenstecken würde könnte man flexibler sein und manche Entscheidungen anders treffen
  • Es bietet einem eine Plug and Play Lösung mit viel Komfort
62
Q

Was ist ein Rückgabewert einer Funktion/Methode?

A
  • Funktionen/Methoden können Daten entweder einfach via Parameter annehmen und damit arbeiten ohne etwas zurückzugeben
  • Oder sie können gleiche oder veränderte Daten anhand der übergebenen Daten zurückgeben
  • Um Daten aus einer Funktion/Methode zurückzugeben bentutzt man das return keyword
63
Q

Was ist ein keyword in einer Programmiersprache?

A
  • keywords sind bereits definierte und reservierte Worte die die Programmiersprache benutzt
  • Wie return oder string oder =
  • Diese kann man nicht überschreiben und eigene Klassen/Funktionen/Methoden/Variablen gleich nennen
  • Man erhält dann einen Fehler in der IDE/Editor
64
Q

Was ist eine IDE?

A
  • IDE’s bieten eine bessere Programmiererfahrung direkt Out-of-the-Box ohne Addons
  • Sie sind meist genau für eine Programmiersprache und dessen Frameworks und Spezialitäten abgestimmt
  • Man kann mit ihnen meist sehr einfach Code testen, previewen, refactoren oder debuggen
  • ** Visual Studio für C# ist eine IDE** und wird auch Entwicklungsumgebung genannt
65
Q

Was ist ein Editor?

A
  • Ein Editor ist weniger als eine IDE
  • Meist ist dieser einfach nur ein simpler Text-Editor ohne besondere Extra-Funktionen
  • Wenn man extra Features haben will wie refactoren, testen, debuggen etc muss man meist Addons installieren
  • Ein Editor ist meist sehr viel schlanker als eine IDE und kann wenn man es erweitert nur die Dinge haben, welche man auch wirklich benutzt
  • VSCode ist ein Editor
66
Q

Was unterscheidet Eingaben von Benutzern und Daten aus dem Backend gegenüber von allen andereren Daten mit der deine App arbeitet?

A
  • Eingaben von Benutzern und Daten aus dem Backend sind Runtime Daten
  • Sie kommen erst zur Laufzeit des App hinein und wir haben sehr wenig Kontrolle über diese und können schwerer abschätzen was sie genau sein werden
  • Compiler und die IDE/Editor können Fehler hier schwerer abfangen, anzeigen oder entdecken da sie ja erst auftauschen wenn wir unsere App auf einem Server deployed haben und in echt die Daten reinkommen
67
Q

Wie nennt man Daten welche nicht Runtime Daten wie Nutzer Eingaben oder Backend Daten sind?

A
  • Statische Daten
  • Wenn du statisch in den Code schreibst, dass eine Variable als “Dominic” gesetzt werden soll und dann diese in der Console ausgegeben wird haben wir ganz andere Kontrollmöglichkeiten darüber
  • Wir wissen schon bevor die App jemals läuft also zur Runtime übergeht, ganz genau was passieren wird
  • Die IDE kann Fehler in den Funktionen/Methoden abfangen und erkennen da sie sich vorstellen kann was alles passieren wird. Das könne wir mit Runtime Daten nicht, da die realen Daten die ein Nutzer eingibt für und unbekannt sind bis er es tut
68
Q

**Was ist if-Anweisungen?

A
  • Mit einer IF-Anweisung können Unterscheidungen und verschiedene Wege im Code gegangen werden abhängig davon welche Bedingung im IF erfüllt wird
  • Man kann manche Code-Blocke auslassen wenn etwas bestimmtes nicht zutrifft
  • IF benutzt Bedingungen und eine Bedingung ist immer ein boolischer Wert (wahr oder falsch)
  • Man kann Bedingungen komplex zusammenstecken aber wenn man sie herunterbricht ist es immer ein boolean
69
Q

Was kann ein if … else?

A
  • Wenn die Bedingung in einer IF-Anweisung nicht erfüllt ist wird ein alternativer Code-Block stattdessen ausgeführt
  • Diese allgemeine Alternative kann man mit else angeben
70
Q

Wie kann man in einem if mehrere Bedingungen zu einer größeren Bedingung verknüpfen?

A
  • Durch den || ODER Operatore oder durch den && UND Operator
71
Q

Was ist eine Switch Anweisung?

A
  • Eine Switch Anweisung macht es einfacher anhand einer Variable viele Bedingungen / Fälle zu unterscheiden und dann verschiedene Codes auszuführen
  • Es ersetzt quasi ganz viele IF IF IF IF ELSE mit einer leichter zu schreiben und zu lesenen Schreibweise
  • Wir vergleichen auch nicht ganz viele Bedingungen sondern eine Variable gegen ganz bestimmte konstante Werte
72
Q

Was ist ein Array?

A
  • Ein Array ist die einfachste Datenstruktur
  • Sie können Daten/Elemente in sich sammeln und organisieren sie durch einen Index
  • Normalerweise kann eine Variable nur einen Wert speichern, aber ein Array kann ganz viele Werte/Daten speichern
    * Array beginnen immer mit dem Index 0 also das erste Element ist 0!
73
Q

Beginnen Arrays mit dem Index 1 oder 0?

A
  • Ein Array speichert seinen ersten Wert/Element in den ** Index 0**
  • myArray[0] gibt das erste aus
74
Q

Was sind Schleifen?

A
  • Schleifen lassen Code-Blocke mehrfach hintereinander ausführen
  • Man kann z.B. Code so oft wiederholen bis ein bestimmtes Ergebnis erreicht wurde
    *
75
Q

Welche Arten von Schleifen gibt es in C#?

A
  • While
  • Do-While
  • For
  • Foreach
76
Q

Wie schreibt man eine While Schleife in C# und was macht es?

A
  • Der Code in der While Schleife wird so lange ausgeführt bis die Bedingung in den Klammern danach erreicht ist
  • Dann bricht die Schleife ab
77
Q

Was sind Gefahren von Schleifen?

A
  • Man muss sich ganz ganz sicher sein, dass diese auch wieder aufhören sonst wird die App sich aufhängen und Gerät heiß werden
  • Denn die Geräte können Milliarden Anweisungen und Schleifendurchläufe pro Sekunde schaffen aber wenn es keinen Abbruch/Ende gibt machen sie immer weiter
  • Das nennt man auch Infinity-Loop
78
Q

Was ist der Infinity-Loop?

A
  • Wenn aus einem Grund (meist schlechte Programmierung) eine Schleife nicht mehr abbrechen/beenden kann und unendlich oft in extremer Geschwindigkeit ausgeführt wird
  • Apps hängen sich auf / crashen und Geräte werden heiß
79
Q

Wie schreibt man eine Do-While Schleife in C# und was macht es?

A
  • Im Gegensatz zur While Schleife wird beim allerersten Durchlauf der Schleife noch keine Bedingung gefordert
  • Also wird die Schleife immer mindestens einmal durchlaufen und danach solange bis die Bedingung zum Abbruch erreich ist
80
Q

Wie schreibt man eine For Schleife in C# und was macht es?

A
  • For Schleife ist eine sehr besondere Schleife, die man am häufigsten benutzt
  • Die Syntax ist etwas schwieriger aber wenn man es versteht einfach
  • Zuerst erstellt man einen index/Variable welche beispielsweise bei 0 beginnt
  • Dann sagt man der For Schleife das sie solange weiter durchlaufen soll solange der index unter beispielsweise 10 ist
  • Danach sagt man der For-Schleife das sie im jedem Durchlauf selber diesen Index um 1 erhöhen soll
  • Man gibt also hier die Kontrolle darüber wie oft etwas durchläuft etwas mehr an die Schleife selbst ab und es ist immer auf einen Zahlenindex beschränkt, anstatt wie bei While auf eine Bedingung
81
Q

Wie schreibt man eine For-Each Schleife in C# und was macht es?

A
  • Die For-Each Schleife ist recht einfach zu verstehen
  • Mir For-Each geht man Stück für Stück Datenstrukturen wie einem Array durch
  • Man sagt einfach es soll für jedes Element/Wert im Array etwas gemacht werden und die Schleife hört auf wenn die Datenstruktur also Array zu Ende ist
82
Q

Was ist das funktionale Programmierparadigma?

A
  • Man denkt nicht in Objekten sondern in Funktionen
  • Alles was man machen will ist etwas was Daten erhält, damit etwas tut und ggf. Daten zurückgibt
  • Sehr viel weniger Overhead/unnötiger Code der sonst da wäre um alles für fast schon philosophische Objekte zu beschreiben
  • Ist wesentlich direkter aber ist auch für viele Programmiere schwerer zu verstehen und ist nicht die Denkweise wie Menschen Denken, wenn sie in der realen Welt nur mit Objekten (Tiger, Flugzeug, Auto) aufgewachsen sind
83
Q
  • Was ist das Programmierparadigma Objektorientierung?
A
  • Wir denken über alles was wir Programmieren nach als wäre es ein Objekt
  • Ein Objekt ist eine sogenannte Klasse (die nichts mit HTML-Klassen zu tun hat!)
  • Manche Programmiersprachen erlauben nur Objektoerientierung (C#) manche mehreres (JavaScript) manche nur Funktional (Haskell)
  • Man kann so Objekte aus der echten Welt abbilden aber auch eigene neue abstrakte Objekte bauen
  • Objekte besitzen eigene Methoden, Variablen und Eigenschaften und können miteinander kommunizieren
  • Ich hasse Objektorientierung
84
Q

Was sind Objekte in der Objektorientierung?

A
  • Objekte sind die real
85
Q

Was sind Klassen in der Objektorientierung?

A
  • Klassen sind die Baupläne für ein Objekt
  • Sie sind quasi ein ganz spezieller komplexer Datentyp
  • Man sagt also meine Menschklasse hat immer Vorname, Nachname, Alter
  • Aber meine Übermenschklasse hat noch IQ
  • Die aus den Klassen erstellten Objekte haben dann immer die Daten und die Typen wie du die Klassen aufgebaut hast
  • Anstatt string als Datentyp hast du jetzt deinen Mensch oder Übermensch als Datentyp
  • Klassen können Variablen, Eigenschaften, Methoden etc vorgeben wie so ein Übermensch-Objekt später aussehen soll
  • Man kann unendlich viele Objekte aus deiner Klasse erzeugen
86
Q

Sind Klassen und Objekte das gleiche in der Objektorientierung Programmierung?

A
  • Nein
  • Klassen sind Baupläne/Schemas für Objekte sie sind ein eigener ganz spezieller Datentyp
  • Aus Klassen kann man Objekte erstellen die dann die realen Werte der Klasse beinhalten
  • Also die Klasse gibt vor ein Mensch muss einen Vornamen haben aber Objekt 1 von Datentyp Mensch hat “Gustav” und Objekt 2 von Datentyp Mensch hat “Dominic” als Vornamen
  • Ist ein bisschen ähnlich wie Parameter und Argument. Wo Parameter ja der abstrakte Name für das was reinkommt ist und das Argument der reale Wert den man wirklich reingibt
87
Q

Was ist ein Objekt in der Objektorientierung?

A
  • Wenn man eine Klasse (Komplexer Datentyp) nutzt um ein Objekt zu erzeugen befüllt man diesen Bauplan mit Leben also realen Werten
  • Ein Objekt von Mensch könnte Vorname = “Dominic” Nachname = “Matte” haben
  • Es kann unendlich viele Objekte von einer Klasse geben. Genau wie du auch unendlich Variablen als string erzeugen kann. String wäre die Klasse und deine Variable das Objekt.
88
Q

Wann benutzen wir Klassen als Datentyp?

A
  • Klassen benutzen wir als Datentyp wenn wir mit Objekten arbeiten möchten die komplex sind
  • Viel komplexer als primitive Datentypen wie int string boolean. Mit diesen können wir niemals etwas spezielles wie einen IRIS Mitarbeiter abbilden.
  • Wir können uns eine Klasse eine IRIS Mitarbeiters bauen welcher in sich speichert wie viele Dokumente er schon gescannt hat. Alle erzeugen Objekte (Variablen für Mitarbeiter) haben dann diese Eigenschaft die sie über sich speichern könnnen
89
Q

Was ist ein Konstruktor für eine Klasse in der Objektorientierung?

A
  • Das ist die Initialisierung der Variaben/Eigenschaften einer Klasse also wenn sie das erste Mal “zum Leben gebracht” wird
  • Das ist wie bei einer Funktion wo man den Parameter definiert (1. Wert ist name, 2. Wert ist nachname) der reinkommt etc
  • Wenn man dann ein wirklich Objekt erstellt nutzt man den Kontruktor, um in den Klammern Werte in das Objekt zu übergeben
90
Q

Was ist eine Eigenschaft in einer Klasse der Objektorientierung?

A
  • Eigenschaften sind die Variablen einer Klasse
  • Solche Eigenschaften lassen sich durch Getter (get) auslesen/abfragen und durch Setter (set) überschreiben
    *
91
Q

Wie verwendet man eine foreach-Schleife in C#?

A

string[] farben = {“Rot”, “Grün”, “Blau”};
foreach (string farbe in farben)
{
Console.WriteLine(farbe);
}

Durchläuft das Array farben und gibt jede Farbe aus.

92
Q

Wie verwendet man eine switch-Anweisung in C#?

A

string ampel = “Rot”;
switch (ampel)
{
case “Rot”:
Console.WriteLine(“Stopp”);
break;
case “Gelb”:
Console.WriteLine(“Vorsicht”);
break;
case “Grün”:
Console.WriteLine(“Gehen”);
break;
default:
Console.WriteLine(“Ungültig”);
break;
}

Verwendet eine switch-Anweisung, um auf den Wert von ampel zu reagieren.

93
Q

Was ist Semantic Versioning (Semver)?

A

Semantic Versioning, kurz Semver, ist ein Versionierungsschema, das Softwareversionen in drei Teile gliedert: MAJOR.MINOR.PATCH. MAJOR steht für inkompatible Änderungen, MINOR für rückwärtskompatible Neuerungen und PATCH für rückwärtskompatible Fehlerbehebungen. Dieses Schema hilft Entwicklern und Nutzern, die Art der vorgenommenen Änderungen schnell zu verstehen.

94
Q

Was ist Linting in der Softwareentwicklung?

A

Linting ist der Prozess, bei dem spezielle Tools, sogenannte Linter, den Quellcode automatisch analysieren, um Stilfehler, Programmierfehler, verdächtige Konstrukte und andere Probleme zu identifizieren. Dies hilft Entwicklern, ihren Code sauber, konsistent und fehlerfrei zu halten, was die Lesbarkeit und Wartbarkeit verbessert.

95
Q

Was macht ein Compiler?

A

Ein Compiler ist ein Programm, das den in einer höheren Programmiersprache geschriebenen Quellcode in maschinenlesbaren Code (oft in Maschinensprache) übersetzt. Dieser Prozess umfasst mehrere Schritte, darunter die Analyse des Quellcodes und seine Umwandlung in eine ausführbare Datei. Compiler ermöglichen es, dass geschriebener Code auf Computern ausgeführt werden kann.

96
Q

Was ist ein Interpreter? (Nicht compiller)

A

Ein Interpreter ist ein Programm, das Quellcode liest und direkt ausführt, ohne ihn zuvor in eine maschinenlesbare Form zu übersetzen. Im Gegensatz zu einem Compiler, der den gesamten Code auf einmal übersetzt, analysiert und führt der Interpreter den Code Zeile für Zeile aus. Dies ermöglicht eine flexible Ausführung von Skripten und Programmen, kann aber langsamer sein als kompilierte Programme.

97
Q

Was ist Transpiling?

A

Transpiling ist der Prozess, bei dem Quellcode von einer Programmiersprache in eine andere übersetzt wird, die auf einem ähnlichen Abstraktionsniveau liegt. Dies wird oft verwendet, um moderne Programmiersprachen in ältere Versionen zu übersetzen, die von mehr Plattformen unterstützt werden, oder um spezielle Sprachen in allgemeinere zu übersetzen, die breiter einsetzbar sind.

98
Q

Was ist Git?

A

Git ist ein leistungsstarkes, verteiltes Versionskontrollsystem, das von Entwicklern verwendet wird, um Änderungen am Quellcode zu verfolgen, zu organisieren und mit anderen zusammenzuarbeiten. Es ermöglicht es Teams, an denselben Projekten zu arbeiten, ohne sich gegenseitig zu behindern, und bietet Werkzeuge zur Verwaltung von Änderungen und zur Wiederherstellung früherer Versionen.

99
Q

Nenne zwei grundlegende Git-Befehle.

A

git clone <repository-url> wird verwendet, um ein bestehendes Git-Repository zu kopieren und lokal zu speichern. git commit -m "Nachricht" speichert Änderungen im lokalen Repository mit einer begleitenden Nachricht, die den Inhalt der Änderung beschreibt. Diese Befehle sind grundlegend für die Arbeit mit Git.</repository-url>

100
Q

Was ist Agile Softwareentwicklung?

A

Agile Softwareentwicklung ist ein iterativer Ansatz, der Flexibilität, Kundenfeedback und kontinuierliche Verbesserung in den Mittelpunkt stellt. Teams arbeiten in kurzen Zyklen, sogenannten Sprints, an kleinen, verwaltbaren Teilen des Projekts, wobei sie regelmäßig Feedback einholen und Anpassungen vornehmen. Dieser Ansatz fördert eine schnelle Reaktion auf Veränderungen und verbessert die Kundenzufriedenheit.

101
Q

Was ist SAFe?

A

SAFe (Scaled Agile Framework) ist ein Framework für die Skalierung agiler Methoden auf Unternehmensebene. Es bietet strukturierte Anleitungen für Rollen, Verantwortlichkeiten und Werte, um Agilität über viele Teams hinweg zu fördern und zu unterstützen. SAFe basiert auf agiler Softwareentwicklung, Lean-Produktentwicklung und Systemdenken, um Unternehmen dabei zu helfen, besser auf Marktveränderungen zu reagieren

102
Q

Was sind Story Points?

A

Story Points sind eine Einheit zur Schätzung des Aufwands von User Stories in der agilen Softwareentwicklung. Sie berücksichtigen Faktoren wie Komplexität, Unsicherheit und Aufwand, um Teams zu helfen, die Arbeit besser zu planen und Prioritäten zu setzen, ohne sich auf spezifische Zeitangaben festzulegen

103
Q

Was sind Requirements?

A

Antwort: Requirements sind definierte Bedingungen oder Fähigkeiten, die ein System oder eine Software erfüllen muss, um einen Vertrag, eine Norm, eine Spezifikation oder andere formell aufgestellte Erwartungen zu erfüllen. Sie dienen als Grundlage für die Entwicklung und Bewertung des Produkts

104
Q

Was ist die Rolle eines Produkt Owners?

A

Der Produkt Owner ist verantwortlich für die Maximierung des Werts des Produkts und die Arbeit des Entwicklungsteams. Er oder sie verwaltet das Produkt-Backlog, definiert User Stories und setzt Prioritäten, um sicherzustellen, dass das Team an den wertvollsten Features arbeitet

105
Q

Was ist ein Kanban Board?

A

Antwort: Ein Kanban Board ist ein visuelles Management-Tool, das den Fortschritt von Aufgaben durch verschiedene Stadien eines Prozesses zeigt. Es hilft Teams, den Arbeitsfluss zu visualisieren, Engpässe zu identifizieren und die Effizienz zu steigern

106
Q

Frage: Was ist ein Sprint in SCRUM?

A

Antwort: Ein Sprint ist ein festgelegter Zeitraum, meist zwei bis vier Wochen, in dem das SCRUM-Team ein inkrementelles Produkt liefert. Sprints beinhalten Planung, Entwicklung, Überprüfung und retrospektive Phasen, um kontinuierliche Verbesserung zu fördern

107
Q

Frage: Was ist ein Product Increment?

A

Antwort: Ein Product Increment ist das Ergebnis eines Sprints und umfasst alle Produktänderungen, die während des Sprints vorgenommen wurden. Es sollte in einem auslieferbaren Zustand sein, der Wert für den Kunden schafft

108
Q

Frage: Was sind Software Tests?

A

Antwort: Software Tests sind Verfahren, die darauf abzielen, die Funktionalität, Zuverlässigkeit, Sicherheit und Leistung einer Softwareanwendung zu überprüfen und sicherzustellen, dass sie den spezifizierten Anforderungen entspricht

109
Q

Frage: Was ist ein Regressionstest?

A

Antwort: Ein Regressionstest überprüft, ob frühere Softwarefunktionen nach neuen Änderungen oder Verbesserungen weiterhin wie erwartet funktionieren. Ziel ist es, sicherzustellen, dass neue Änderungen keine unbeabsichtigten Effekte auf bestehende Funktionalitäten haben

110
Q

Frage: Was ist ein Smoke Test?

A

Antwort: Ein Smoke Test, auch als “Build Verification Test” bekannt, ist eine Reihe von grundlegenden Tests, die durchgeführt werden, um sicherzustellen, dass die wichtigsten Funktionen einer Softwareanwendung nach einem neuen Build oder Update korrekt funktionieren

111
Q

Frage: Was ist ein Black Box Test?

A

Antwort: Beim Black Box Test wird die Software nur von außen getestet, ohne Kenntnis des internen Codes oder der Struktur. Tester bewerten die Funktionalität basierend auf den Anforderungen und Spezifikationen

111
Q

Frage: Was ist ein End2End Test?

A

Antwort: Ein End2End Test überprüft den kompletten Ablauf einer Anwendung von Anfang bis Ende, um sicherzustellen, dass alle integrierten Komponenten wie erwartet zusammenarbeiten. Dieser Testtyp simuliert reale Benutzerszenarien

112
Q

Frage: Was ist ein Unit Test?

A

Antwort: Ein Unit Test ist eine Methode, die einzelne Teile des Codes, wie Funktionen oder Methoden, isoliert testet, um sicherzustellen, dass sie korrekt funktionieren. Unit Tests sind ein wichtiger Bestandteil der Testautomatisierung

113
Q

Frage: Was ist ein Integrationstest?

A

Antwort: Integrationstests überprüfen das Zusammenspiel mehrerer Komponenten oder Module eines Systems. Sie zielen darauf ab, Fehler in der Interaktion zwischen den getrennt entwickelten Teilen zu finden, die nicht durch Unit Tests identifiziert wurden. Diese Tests sind entscheidend, um sicherzustellen, dass die verschiedenen Teile der Software als ein kohärentes Ganzes funktionieren

114
Q

Frage: Was ist Debugging?

A

Antwort: Debugging ist der Prozess des Identifizierens, Lokalisierens und Behebens von Fehlern oder Bugs im Quellcode einer Software. Entwickler verwenden verschiedene Techniken und Tools, um Fehler zu finden und zu korrigieren, um die Funktionalität und Stabilität der Software zu gewährleisten.

115
Q

Frage: Was sind Break Points?

A

Antwort: Break Points sind Marker im Code, die Entwickler setzen, um die Ausführung eines Programms während des Debugging-Prozesses anzuhalten. Dies ermöglicht es, den Zustand der Anwendung zu diesem Zeitpunkt zu untersuchen und zu verstehen, wie sich Variablen und der Programmfluss verhalten.

116
Q

Frage: Was bedeutet Mapping in der Programmierung?

A

Antwort: Mapping in der Programmierung bezieht sich auf den Prozess der Zuordnung von Elementen einer Datenstruktur zu Elementen einer anderen. Dies kann beispielsweise die Zuordnung von Werten eines Arrays zu einem anderen Array oder die Umwandlung von Objekten eines Typs in Objekte eines anderen Typs umfassen. Mapping

117
Q

Frage: Was ist der Unterschied zwischen Software Engineering und Softwarearchitektur?

A

Antwort: Software Engineering umfasst die gesamte Entwicklung von Softwaresystemen, während Softwarearchitektur sich auf das hochrangige Design und die Struktur des Systems konzentriert

118
Q

Stack und Heap in der Programmierung
Was ist Stack?

A

Der Stack, auch Stapelspeicher oder Kellerspeicher genannt, ist eine wichtige Datenstruktur in der Programmierung, die dem Last-In-First-Out (LIFO) Prinzip folgt. Das bedeutet, dass das zuletzt hinzugefügte Element als erstes wieder entfernt wird. In der Praxis wird der Stack häufig für die Verwaltung von Funktionsaufrufen und lokalen Variablen verwendet. Wenn eine Funktion aufgerufen wird, werden ihre Parameter und lokalen Variablen auf dem Stack abgelegt. Nach Beendigung der Funktion werden diese Elemente in umgekehrter Reihenfolge wieder vom Stack entfernt

Der Stack ist ein spezieller Bereich im Arbeitsspeicher, der sehr schnell zugänglich ist. Die Verwaltung des Stacks wird automatisch von der CPU durchgeführt, was bedeutet, dass der Programmierer sich normalerweise nicht direkt um die Speicherverwaltung kümmern muss. Allerdings ist der Stack in seiner Größe begrenzt, und ein Überlauf des Stacks (Stack Overflow) kann auftreten, wenn zu viele Daten darauf abgelegt werden

Unterschiede und Anwendung
Zugriffsgeschwindigkeit: Der Stack ist schneller als der Heap, da der Zugriff auf den Stack durch die CPU optimiert ist

Speicherverwaltung: Der Stack wird automatisch verwaltet, während der Heap manuelle Verwaltung durch den Programmierer erfordert

Lebensdauer: Variablen auf dem Stack haben eine Lebensdauer, die an die Funktion gebunden ist, in der sie deklariert wurden. Objekte auf dem Heap können existieren, solange sie benötigt werden und bis sie explizit freigegeben werden

Größe: Der Stack hat eine feste Größe, die von der Umgebung des Programms abhängt, während der Heap flexibler ist und sich an die Speicheranforderungen des Programms anpassen kann

Risiken: Ein Überlauf des Stacks kann zu einem Programmabsturz führen, während unsachgemäße Verwendung des Heaps zu Speicherlecks und Fragmentierung führen kann

In der Praxis werden beide Speicherbereiche in komplementärer Weise genutzt, um die verschiedenen Anforderungen der Speicherverwaltung in Programmen zu erfüllen.

119
Q

Stack und Heap in der Programmierung
Was ist Heap?

A

Der Heap, auch dynamischer Speicher genannt, ist ein weiterer Speicherbereich, der zur Laufzeit von Programmen für die dynamische Speicherzuweisung genutzt wird. Im Gegensatz zum Stack, wo die Größe und Lebensdauer der Objekte im Voraus bekannt sind, kann der Heap Speicher für Objekte bereitstellen, deren Größe zur Kompilierzeit nicht bekannt ist oder die eine längere Lebensdauer als die aufrufende Funktion haben

Die Verwaltung des Heaps ist komplexer als die des Stacks. Der Programmierer ist für die Anforderung und Freigabe von Speicher auf dem Heap verantwortlich, was durch Funktionen wie malloc und free in C oder new und delete in C++ erfolgt. Da der Heap dynamisch verwaltet wird, kann es zu Fragmentierung kommen, und es besteht das Risiko von Speicherlecks, wenn der Speicher nicht ordnungsgemäß freigegeben wird

Unterschiede und Anwendung
Zugriffsgeschwindigkeit: Der Stack ist schneller als der Heap, da der Zugriff auf den Stack durch die CPU optimiert ist

Speicherverwaltung: Der Stack wird automatisch verwaltet, während der Heap manuelle Verwaltung durch den Programmierer erfordert

Lebensdauer: Variablen auf dem Stack haben eine Lebensdauer, die an die Funktion gebunden ist, in der sie deklariert wurden. Objekte auf dem Heap können existieren, solange sie benötigt werden und bis sie explizit freigegeben werden

Größe: Der Stack hat eine feste Größe, die von der Umgebung des Programms abhängt, während der Heap flexibler ist und sich an die Speicheranforderungen des Programms anpassen kann

Risiken: Ein Überlauf des Stacks kann zu einem Programmabsturz führen, während unsachgemäße Verwendung des Heaps zu Speicherlecks und Fragmentierung führen kann

In der Praxis werden beide Speicherbereiche in komplementärer Weise genutzt, um die verschiedenen Anforderungen der Speicherverwaltung in Programmen zu erfüllen.

120
Q

Was ist der Unterschied zwischen
Java
C++
Typescript
?

A
  • Java wird meist objektorientiert
  • TypeScript wird meist funktional genutzt
  • TypeScript ist eine Sprache die nach JavaScript transpiliert (konvertiert) wird und dort dann dem Browser übergeben wird. Das JavaScript wird dann intpretiert ausgeführt.
  • C++ ist hardwarenah und man (kann) dort sowas wie Pointer benutzen, um auf Speicheradressen zuzugreifen. Auch wenn modernes C++ das nicht mehr unbedingt tut
121
Q

Warum benutzt man TypeScript oder warum typisiert man Code in Sprachen generell?

A
  • Man macht keine Typen, damit mit stolzer auf den Code ist oder damit die IDE/Der Editor nichts rot anmalt sondern
  • Typisierung hilft sicherzustellen, dass in Variablen nur die Arten von Daten hineinkommen, die dort auch möglich sind
  • Eine Variable die speichert wie oft eine Atmungsmaschine dir Sauerstoff geben soll, sollte niemals einen Song von Michael Jackson abspeichern, anstatt die Zahl dafür
  • Variablen, Funktionen und Code generell zu typisieren hilft das man Logik-Fehler und Dinge die man übersehen würde schon findet, bevor man die App überhaupt startet
  • Schlimm wäre es, wenn man die Fehler der Beatmungsmaschine erst beim Patienten findet und er stirbt. Lieber beim Programmierer in seinem Editor. Es kann wirklich Leben retten.
  • Daher ist Typisierung nicht wegzudenken. Allerdings muss man unterscheiden zwischen statischer Typisierung, also der Editor/der Compiler guckt deinen Code durch und erkennt alle Zusammenhänge, versteht das in einer Variable NIEMALS etwas anders als eine Zahl reinkommen kann, weil du es nicht anders programmiert hast. Und dann gibt es noch Runtime/Laufzeit Typisierung. Das sind unbekannte Daten, die der Editor nicht kennen kann. Sie kommen entwender erste wenn die App oder Beatmungsmaschine wirklich am Patienten läuft, vom Backend oder anderen System gesendet oder ein Nutzer gibt manuell Daten in deine App erst komisch/unerwartet ein, wenn die App eben läuft. Das kann ein Compiler nicht finden bevor du die App startest.
  • Dennoch kann man die entsprechenden stellen wo solche Runtime Daten überhaupt reinkommen können, also wo du Daten aus dem Backend holst oder wo du HTML input eingaben hast, entsprechend kennzeichen und es gibt Tools, die dann zur Laufzeit also wenn die App läuft weiterhin auf Typen checken können und dann Bescheid geben durch console.logs, console.warn, eine Nachricht abschicken oder die App bewusst crashen lassen. So das man es dann weiß und nochmal die Bugs finden kann und z.B. Nutzereingaben ablehnt die nicht gehen.
122
Q

Warum gibt es Dependency Injection?

A
  • Durch die Dependency Injection fällt es einem leichter Software die voneinander abhängig ist noch zu einzeln zu verändern
  • Sowas ist ein Verfahren was oft in Java genutzt wird um Dinge zu Importieren/zu verlinken
123
Q
A
123
Q

Was ist der DOM?

A
124
Q

Was ist der Virtual DOM (VDOM)?

A
125
Q

Wofür benutzt man Redux in React?

A
126
Q

Was ist Global State Mangement

A
  • Global Statemanagement bedeutet das man die Daten für eine Frontend App zentral (global) an einem Ort speichert. Also z.B. die Anzahl der einloggten Nutzer als Variable “userLoggedInCount = 20” ist nur einmal in deiner App.
  • Danach hat dann die gesamte App auf diese Variable zugriff. Du kannst von überall dir den Wert holen und diesen in allen verschiedenen Components anzeigen lassen.
  • Der Vorteil ist hier, dass man nur eine Variable aktualisieren muss und alle anderen Components zeigen immer den richtigen Wert an
  • Das funktioniert auch ohne die via Props an Components zu geben. Meist hat man soetwas wie eine View/Page, diese verbindet sich zu dem Global State Management und den unique Daten. Diese gibt dann die Variablen an die Components von ihr via Props weiter. Dabei kann es viele Views/Pages geben die alle auf das Global State Management zugreifen und es an ihre Components weitergeben.
127
Q

Welche Arten von Global State Management kennst du aus React?

A
  • React Redux (Viel Template Code, Groß, Kann aber auch viel)
  • React Redux Toolkit (Kompromiss, der Redux schlanker macht und kürzer zu schreiben ist)
  • Zustand (sehr schlank, einfach, schnell)
128
Q

Wie kann man Daten an Components weitergeben in React?

A
  • Via Props einer Component
  • Mit dem useContext Hook auch über Component-Ebenen hinweg ohne Props zu benutzen
  • Mit einem Global Statemanagement wo eine View die Daten holt und an ihre Child-Component weitergibt via Props
129
Q

Wo wird das ausgeführt, was man in einer Web-App schreibt? Wir schreiben ja nur Code-Zeilen und später ist das irgendwie im Browser und Leute klicken da rum. Wo ist da was an Code und wo läuft das?

A
  • Am Beispiel von TypeScript
  • Der Entwickler schreibt Typescript Code für Typisierung in deinem IDE/Editor auf seinem Computer (lokal)
  • Der TypeScript Compiler transpiliert (konvertiert) das TypeScript zu einem minifizierten also minimal schmalen Bündel aus JavaScript, CSS und HTML. Das nennt man Production Build. Damit hat man eine klassische Website wie es sie seit 1980 oder so gibt die Browser benutzen können. Das liegt auch noch auf dem eigenen Computer (lokal).
  • Dann kann man dieses Production Build als Dateien auf einem Computer der Wahl legen, auch SERVER genannt. Dieser braucht bestimmte Vorraussetzungen, damit man die Dateien als Website öffnen oder erreichen kann.
  • Meist benutzt man eine Art Webserver (nginx, apache http server) der sorgt dafür, dass die Website erreichbar ist und die IP+Port zu den Dateien führen. Man kann auch via DNS eine Domain zu der IP+Port des SERVERS leiten, damit man es in der URL Leiste schreiben kann.
  • Dann können Leute diese Website via Domain oder IP+Port besuchen. Das machen sie mit ihrem eigenen Computer/Handy (Client). Also fragen sie den Server nach den Daten der Website und laden diese bei sich herunter. Das passiert alles im Hintergrund und der Browser regelt das.
  • Wenn die Dateien da sind, oftmals hat eine Website ja auch Bilder und Videos, dann zeigt der Browser die Website-Dateien auf dem EIGENEN Computer/Handy (Client) an. Deswegen kann man auch rechtklicks machen und Dinge aus der Website löschen, weil die Website bei dir selbst liegt.
  • Wenn man auf der Website dann z.B. ein Kontaktformular ausfüllt und abschickt, sendet der Website-Code auf DEINEM Computer/Handy (Client) einen Request an ein Backend auf einem SERVER ab und sorgt da für Veränderungen in der Datenbank.
  • DEIN Website-Code (Client) fragt dann z.B. den SERVER nach neuen Daten, um sie bei dir anzuzeigen.
130
Q

Was ist der Unterschied zwischen TypeScript und JavaScript?

A
  • TypeScript ist eine Sprache die typisiert ist und damit sicherer
  • TypeScript kann kein Browser sprechen/verstehen/anzeigen, es muss erst in JavaScript übersetzt werden
  • JavaScript können Browser nutzen um Interaktivität in Websiten also HTML + CSS zu bringen
131
Q

Warum gibt es in JavaScript / TypeScript den === Operator (3-fach) und den == Operator (2-fach) um zwei Dinge miteinander zu vergleichen?

A
  • Der == Operator (2-fach) ist schon vergeben gewesen und man hat für ein komisches Verhalten entschieden
  • ** “2” == 2 wird zu true** also gleich denn der == Operator (2-fach) benutzt coercion, um die Dinge gleich machen zu wollen für einen. Auch wenn das gar nicht will und es falsch wäre. Denn String 2 ist nicht Zahl 2 und könnte Leute töten in einer Maschine.
  • Aber mit dem === Operator (3-fach) ist es so wie in jeder anderen Programmiersprache und** “2” === 2 ist false** und nicht gleich
132
Q
A