Softwareentwicklung Fachfragen Flashcards
Ist Vim und VI das gleichen?
Nein, aber viele Befehle sind sehr ähnlich
Wann ist Vim besonders nützlich?
- 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.
Wie öffnet man eine Textdatei mit VIM?
mdvim filename.md
Wie verlässt man VIM?
:q
Wie schreibt man die Changes in die Datei in VIM?
:w
Wie schreibt man Changes in die Datei und quitted VIM?
:wq
Wie verlässt man VIM ohne Changes zu speichern?
:q!
Wie geht man in den INSERT-Mode in VIM?
i
Wie verläst man den INSERT-Mode zum COMMAND-Mode in VIM?
ESC
Wie löscht man eine Zeile in VIM?
dd
Wieso gibt es HTTP-Codes (wie 402, 404, 403, 100)?
- 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.
Wofür steht HTTP-Code 404?
Not Found
Wofür stehen 2xx HTTP-Codes?
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)
Wofür stehen 3xx HTTP-Codes?
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)
Wofür stehen 4xx HTTP-Codes?
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)
Wofür stehen 5xx HTTP-Codes?
Fehler welche vom server kommen (we fucked up)
* 500 Internal Server Error (Backend oder Datenbank hat Fehler)
Was ist im Web das “Box-Model”?
- Content
- Padding
- Border
- Margin
div { height: 100px; width:100px; padding: 10px; border. 20px; margin: 30px; background-color: blue; }
Was macht in CSS die Eigenschaft “box-sizing: border-box”?
- 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
Was ist Spezifizität / Specificity?
- 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
Was hat höhere Spezifizitäten in CSS (HTML-Tag, ID, Klasse)?
- ID (Nur ein gleiches pro Seite)
- Klasse (Mehrere gleiche pro Seite)
- 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”
~~~
Azure?
- 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.
Was bedeutet SQL?
- Structured Query Language/SQL
- Eine Sprache zur Datenverwaltung in relationalen Datenbanksystemen
- Für Abfragen, Aktualisierungen und Strukturdefinitionen.
Was bedeutet CRUD?
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.
Was bedeutet ACID?
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).
Was ist der unterschied zwischen Var und VarChar?
- CHAR belegt festen Speicherplatz
- VARCHAR nutzt variablen Speicher je nach Datengröße z.B für Vor/Nachname oder Städte Namen) VARCHAR(200)
Was ist die Programmiersprache C#?
- 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)
Was ist Objektorientierung?
- 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))
Was ist .NET was von C# benutzt wird?
- 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.
Was ist deine Standardbibliothek?
- 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
Warum ist es gut wenn eine Programmiersprache eine große und gut gemachte Standardbibliothek besitzt?
- 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.
Was ist eine GUI?
- 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)
Was ist eine Webanwendung?
- 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)
Welche IDE / Editor solltest du benutzen wenn du C# mit .NET schreiben möchtest?
Ist VSCode eine Entwicklungsumgebung?
- 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
Welche Versionen von .NET sind gerade aktuell?
- .NET 7.0
- .NET 8.0 (LTS)
Wofür steht LTS wie bei Versionen von .NET oder Node.JS?
- 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.
Was ist eine Klasse in der Objektorientierung?
- 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
*
Wie schreibe ich in C# einen Output auf der Console (ConsoleLog)?
- 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
Schließt man Anweisungen/Zeilen in C# immer mit einem Semikolon ; ab?
- Ja
- Beispiel: Console.WriteLine(“Test”);
Was sind Anweisungen in der Programmierung?
- Direkte Befehle die man in eine Zeile schreibt die der Computer machen soll
- Beispiel: Console.WriteLine(“Test”);
Was sind Variablen und Datentypen in der Programmierung?
- 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.
Was sind Pipelines?
- 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
Wofür steht CI in CI/CD
- 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
Wofür steht CD in CI/CD?
- 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
Was sind Umgebungsvariablen?
- 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
Was ist ein Scope?
- 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.
Beschreibe diese Variable in C#
- 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”
Welche Datentypen gibt es in C#?
- Ganzzahlen (Integer) (1, 2)
- Fließkommazahlen (Floats) (1.2)
- Wahrheitswerte (Boolean) (true, false)
- Textwerte (String) (“Dominic”)
- Komplexe Datentypen (Klassen)
Welche mathematischen Operatoren gibt es in C#?
- 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
Nenne und erkläre 3 Ganzzahlen Datentypen in C#
- 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
Nenne und erkläre 2 Fließkommazahlen Datentypen in C#
- 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
Wie schreibst du in C# eine Variable is_adult die einen boolean Wert hat?
- bool is_adult = false;
Wie schreibt man in C# eine Variable name die deinen Namen hat und eine Variable character die nur ein Zeichen hat?
- string name = “Dominic”;
- char character = ‘D’;