Fragenkatalog - astr0Nika/sledManagement GitHub Wiki
Fragenkatalog
Allgemeine Programmierung
1. Was ist der Unterschied zwischen einer for- und einer while-Schleife?
A: Beide schleifen haben eine Abbruchbedingung und sind kopfgesteuert. Bei der For-Schleife weiß man schon, wie oft die Itirierung ist und bei While-Schleife nicht.
2. Was bedeutet eine rekursive Funktion? Wann setzt man sie sinnvoll ein?
A: Eine rekursive Funktion ist eine selbstaufrufende Funktion. Die soll eine Abbruchbedingung beinhalten, weil wir nicht in eine endlose Rekursion landen wollen. Bei so einem Fall, kann es zum Stack Overflow kommen.
Wenn der Problem in kleinere Probleme gebrochen werden kann, sowie Fibonacci oder Summe alle natürlichen Zahlen. Rekursion wird meistens bei Baum-Problem, Sortierung, Backtracking Algorithmen benutzt.
3. Was ist eine Variable? Was ist ein Datentyp?
A: Eine Variable ist ein Werthalter bzw. ein Teil von Speicher wo der Wert gespeichert ist, dem man eine Name vergeben kann. Bei manchen Programmiersprachen muss eine Variable ein Datentyp haben. Der definiert wie der Wert aussieht. Int ist eine Nummer, string ist ein Text, boolean ist entweder 1 oder 0.
4. Was ist der Unterschied zwischen pass by value und pass by reference?
A: Pass by value, wird den Wert übergeben, quasi eine Copy weiter übergeben. Pass by reference, gibt die Speicherreferenz weiter somit egal wann der Wert geändert wird, die Referenz wird auch den geänderten Wert zeigen.
5. Erkläre den Unterschied zwischen == und === (z.B. JavaScript)?
The == operator will compare for equality after doing any necessary type conversions. The === operator will not do the conversion, so if two values are not the same type === will simply return false
A: In JavaScript probiert der == Vergleich die Werte auf gleichen Typ zu konvertieren und dann die Werte zu vergleichen. Der === Vergleich wird bei verschiedenen Datentypen nicht wahr sein.
6. Was ist ein Array und wie unterscheidet es sich von einer Liste?
A: In C# - Ein Array ist eine fixe Liste von Werten. Die Werte werden im Stack gespeichert und somit ist das finden von Werten performence efezient. Eine Liste kann vergrößert oder verkleinert werden, weil die Werte im Heap gespeichert werden. Eine Liste hat auch zusätzliche Funktionen so wie Sortieren und die kann im LINQ verwendet werden. Die Liste kann auch generisch erstellt werden.
7. Was ist ein Stack? Was ist ein Queue?
A: Stack - was als erstes gelegt wird, wird als letztes herausgeholt (LIFO);
Queue - was als erstes gelegt wird, wird als erstes herausgeholt (FIFO)
8. Was bedeutet Typensicherheit?
A: Jedes Objekt muss wissen, was für ein Datentyp es hat. Das wäre z.B. Typescript oder C#. Nicht stark Typisiert wäre JavaScript, wo ein Objekt alles sein kann und sich auch im Runtime ändern kann.
9. Was ist ein Algorithmus?
A: Algorithmus ist eine Sequenz von Befehlen, die ein Problem lösen. Paar bekannte Algorithmen sind Bubble-Sort, Merge-Sort, Binary-Search
Bubble sort: Es vergleicht zwei Werte. Wenn der Rechte kleiner ist, wird ein Tausch passieren. Das passiert so oft bis bei einem Durchgang kein Tausch passiert ist.
Merge sort: Zerlege den Array in kleinere Sub-Arrays, bis sie nur einen Wert haben dann vergleicht es zwei Subs mit einander und merged sie in der richtige Reinfolge. Den Merge-Prozess macht es so oft, bis alle Werte in einem Array sind.
Binary search: Nur für sortierte Arrays! Der Array wird in zwei zerteilt. Man überprüft ob der Wert größer oder kleiner ist wie die Werte in den zwei Arrays. Dann prüft man nur die näheren Werten. Man zerteilt die Arrays bis man den Wert findet. - O(log n)
10. Was ist eine Schnittstelle (Interface) und wie verwendet man sie?
???
Objektorientierte Programmierung (OOP)
1. Erkläre die 4 Grundprinzipien der OOP.
A: Abstraction, Polymophismus, Interfaces, Encapsulation